34 #ifndef AGS_ENGINE_GFX_ALI_3D_SCUMMVM_H 35 #define AGS_ENGINE_GFX_ALI_3D_SCUMMVM_H 37 #include "common/std/memory.h" 38 #include "common/std/vector.h" 39 #include "ags/shared/core/platform.h" 40 #include "ags/shared/gfx/bitmap.h" 41 #include "ags/engine/gfx/ddb.h" 42 #include "ags/engine/gfx/gfx_driver_factory_base.h" 43 #include "ags/engine/gfx/gfx_driver_base.h" 50 class ScummVMRendererGraphicsDriver;
51 class ScummVMRendererGfxFilter;
52 using AGS::Shared::Bitmap;
55 FLIP_NONE = 0x00000000,
56 FLIP_HORIZONTAL = 0x00000001,
57 FLIP_VERTICAL = 0x00000002
62 uint32_t GetRefID()
const override {
return UINT32_MAX ; }
64 int GetAlpha()
const override {
67 void SetAlpha(
int alpha)
override {
70 void SetFlippedLeftRight(
bool isFlipped)
override {
73 void SetStretch(
int width,
int height,
bool )
override {
74 _stretchToWidth = width;
75 _stretchToHeight = height;
77 void SetLightLevel(
int )
override {}
78 void SetTint(
int ,
int ,
int ,
int )
override {}
81 bool _flipped =
false;
82 int _stretchToWidth = 0, _stretchToHeight = 0;
88 _colDepth = color_depth;
90 _stretchToWidth = _width;
91 _stretchToHeight = _height;
96 _width = bmp->GetWidth();
97 _height = bmp->GetHeight();
98 _colDepth = bmp->GetColorDepth();
100 _hasAlpha = has_alpha;
101 _stretchToWidth = _width;
102 _stretchToHeight = _height;
105 int GetWidthToRender() {
106 return _stretchToWidth;
108 int GetHeightToRender() {
109 return _stretchToHeight;
122 int GetModeCount()
const override {
123 return _modes.size();
126 bool GetMode(
int index,
DisplayMode &mode)
const override {
127 if (index >= 0 && (
size_t)index < _modes.size()) {
128 mode = _modes[index];
151 bool IsParentRegion =
false;
163 const char *GetDriverID()
override {
167 bool RequiresFullRedrawEachFrame()
override {
return false; }
168 bool HasAcceleratedTransform()
override {
return false; }
169 bool UsesMemoryBackBuffer()
override {
return true; }
170 bool ShouldReleaseRenderTargets()
override {
return false; }
172 const char *GetDriverName()
override {
173 return "ScummVM 2D renderer";
176 void SetTintMethod(TintMethod )
override;
177 bool SetDisplayMode(
const DisplayMode &mode)
override;
178 void UpdateDeviceScreen(
const Size &screen_sz)
override;
180 bool SetRenderFrame(
const Rect &dst_rect)
override;
181 bool IsModeSupported(
const DisplayMode &mode)
override;
182 int GetDisplayDepthForNativeDepth(
int native_color_depth)
const override;
183 IGfxModeList *GetSupportedModeList(
int color_depth)
override;
184 PGfxFilter GetGraphicsFilter()
const override;
187 void ClearRectangle(
int x1,
int y1,
int x2,
int y2,
RGB *colorToUse)
override;
188 int GetCompatibleBitmapFormat(
int color_depth)
override;
189 size_t GetAvailableTextureMemory()
override {
195 IDriverDependantBitmap *CreateRenderTargetDDB(
int width,
int height,
int color_depth,
bool opaque)
override;
200 Bitmap *bitmap,
bool has_alpha,
bool opaque)
override {
202 return CreateDDBFromBitmap(bitmap, has_alpha, opaque);
205 void UpdateSharedDDB(uint32_t ,
Bitmap *,
bool ,
bool )
override {
208 void ClearSharedDDB(uint32_t )
override {
213 void SetScreenFade(
int red,
int green,
int blue)
override;
214 void SetScreenTint(
int red,
int green,
int blue)
override;
215 void SetStageScreen(
const Size &sz,
int x = 0,
int y = 0)
override;
217 void RenderToBackBuffer()
override;
218 void Render()
override;
219 void Render(
int xoff,
int yoff, Shared::GraphicFlip flip)
override;
221 uint32_t batch_skip_filter = 0u)
override;
222 void FadeOut(
int speed,
int targetColourRed,
int targetColourGreen,
int targetColourBlue,
223 uint32_t batch_skip_filter = 0u)
override;
224 void FadeIn(
int speed, PALETTE pal,
int targetColourRed,
int targetColourGreen,
int targetColourBlue,
225 uint32_t batch_skip_filter = 0u)
override;
226 void BoxOutEffect(
bool blackingOut,
int speed,
int delay, uint32_t batch_skip_filter = 0u)
override;
227 bool SupportsGammaControl()
override;
228 void SetGamma(
int newGamma)
override;
229 void UseSmoothScaling(
bool )
override {}
230 bool DoesSupportVsyncToggle()
override;
231 void RenderSpritesAtScreenResolution(
bool )
override {}
232 Bitmap *GetMemoryBackBuffer()
override;
233 void SetMemoryBackBuffer(
Bitmap *backBuffer)
override;
234 Bitmap *GetStageBackBuffer(
bool mark_dirty)
override;
235 void SetStageBackBuffer(
Bitmap *backBuffer)
override;
242 void SetGraphicsFilter(PSDLRenderFilter filter);
245 bool SetVsyncImpl(
bool vsync,
bool &vsync_res)
override;
246 size_t GetLastDrawEntryIndex()
override {
247 return _spriteList.size();
252 PSDLRenderFilter _filter;
254 bool _hasGamma =
false;
256 uint16 _defaultGammaRed[256] {};
257 uint16 _defaultGammaGreen[256] {};
258 uint16 _defaultGammaBlue[256] {};
265 BITMAP *_fakeTexBitmap =
nullptr;
266 unsigned char *_lastTexPixels =
nullptr;
267 int _lastTexPitch = -1;
278 Bitmap *_stageVirtualScreen;
279 int _tint_red, _tint_green, _tint_blue;
282 ALSpriteBatches _spriteBatches;
286 void InitSpriteBatch(
size_t index,
const SpriteBatchDesc &desc)
override;
287 void ResetAllBatches()
override;
290 void CreateVirtualScreen();
291 void DestroyVirtualScreen();
293 void ReleaseDisplayMode();
297 void highcolor_fade_in(
Bitmap *vs,
void(*draw_callback)(),
int speed,
int targetColourRed,
int targetColourGreen,
int targetColourBlue);
298 void highcolor_fade_out(
Bitmap *vs,
void(*draw_callback)(),
int speed,
int targetColourRed,
int targetColourGreen,
int targetColourBlue);
299 void __fade_from_range(PALETTE source, PALETTE dest,
int speed,
int from,
int to);
300 void __fade_out_range(
int speed,
int from,
int to,
int targetColourRed,
int targetColourGreen,
int targetColourBlue);
304 void Present(
int xoff = 0,
int yoff = 0, Shared::GraphicFlip flip = Shared::kFlip_None);
312 size_t GetFilterCount()
const override;
313 const GfxFilterInfo *GetFilterInfo(
size_t index)
const override;
314 String GetDefaultFilterID()
const override;
Definition: achievements_tables.h:27
Definition: allegro_bitmap.h:44
Definition: ali_3d_scummvm.h:60
Definition: ali_3d_scummvm.h:308
Definition: gfx_driver_base.h:199
Definition: ali_3d_scummvm.h:141
Definition: ali_3d_scummvm.h:116
Definition: gfxfilter_scummvm_renderer.h:39
Definition: gfx_defines.h:60
Definition: viewport.h:128
Definition: gfxfilter.h:41
Definition: gfx_driver_base.h:47
Definition: gfx_driver_factory_base.h:44
Definition: surface.h:329
Definition: geometry.h:219
Definition: ali_3d_scummvm.h:158
Definition: geometry.h:148
Definition: gfx_defines.h:33
Definition: gfx_mode_list.h:38
Definition: gfx_driver_base.h:97
Definition: graphics_driver.h:85
Definition: gfx_driver_base.h:78