ScummVM API documentation
Wintermute::BaseRenderOSystem Class Reference

#include <base_render_osystem.h>

Inheritance diagram for Wintermute::BaseRenderOSystem:
Wintermute::BaseRenderer Wintermute::BaseClass

Public Types

typedef Common::List< RenderTicket * >::iterator RenderQueueIterator
 

Public Member Functions

 BaseRenderOSystem (BaseGame *inGame)
 
Common::String getName () const override
 
bool initRenderer (int width, int height, bool windowed) override
 
bool flip () override
 
bool indicatorFlip () override
 
bool forcedFlip () override
 
bool fill (byte r, byte g, byte b, Common::Rect *rect=nullptr) override
 
Graphics::PixelFormat getPixelFormat () const override
 
void fade (uint16 alpha) override
 
void fadeToColor (byte r, byte g, byte b, byte a) override
 
bool drawLine (int x1, int y1, int x2, int y2, uint32 color) override
 
BaseImagetakeScreenshot () override
 
void onWindowChange () override
 
void setWindowed (bool windowed) override
 
void invalidateTicket (RenderTicket *renderTicket)
 
void invalidateTicketsFromSurface (BaseSurfaceOSystem *surf)
 
void drawFromTicket (RenderTicket *renderTicket)
 
void drawFromQueuedTicket (const RenderQueueIterator &ticket)
 
bool setViewport (int left, int top, int right, int bottom) override
 
bool setViewport (Rect32 *rect) override
 
void modTargetRect (Common::Rect *rect)
 
void pointFromScreen (Point32 *point)
 
void pointToScreen (Point32 *point)
 
void dumpData (const char *filename) override
 
float getScaleRatioX () const override
 
float getScaleRatioY () const override
 
bool startSpriteBatch () override
 
bool endSpriteBatch () override
 
void endSaveLoad () override
 
void drawSurface (BaseSurfaceOSystem *owner, const Graphics::Surface *surf, Common::Rect *srcRect, Common::Rect *dstRect, Graphics::TransformStruct &transform)
 
BaseSurfacecreateSurface () override
 
- Public Member Functions inherited from Wintermute::BaseRenderer
virtual bool setScreenViewport ()
 
virtual bool drawRect (int x1, int y1, int x2, int y2, uint32 color, int width=1)
 
 BaseRenderer (BaseGame *inGame=nullptr)
 
virtual bool setProjection ()
 
virtual bool windowedBlt ()
 
virtual void initLoop ()
 
virtual bool setup2D (bool force=false)
 
virtual bool setupLines ()
 
virtual bool displayDebugInfo ()
 
virtual bool drawShaderQuad ()
 
bool clipCursor ()
 
bool unclipCursor ()
 
BaseObjectgetObjectAt (int x, int y)
 
void deleteRectList ()
 
bool pointInViewport (Point32 *P)
 
bool isReady () const
 
bool isWindowed () const
 
int32 getBPP () const
 
void addRectToList (BaseActiveRect *rect)
 
void initIndicator ()
 
void setIndicatorVal (int value)
 
void setIndicator (int width, int height, int x, int y, uint32 color)
 
void persistSaveLoadImages (BasePersistenceManager *persistMgr)
 
void initSaveLoad (bool isSaving, bool quickSave=false)
 
void setLoadingScreen (const char *filename, int x, int y)
 
void setSaveImage (const char *filename, int x, int y)
 
bool displayIndicator ()
 
int32 getWidth () const
 
int32 getHeight () const
 
- Public Member Functions inherited from Wintermute::BaseClass
bool setEditorProp (const Common::String &propName, const Common::String &propValue)
 
Common::String getEditorProp (const Common::String &propName, const Common::String &initVal=Common::String())
 
 BaseClass (TDynamicConstructor, TDynamicConstructor)
 
bool parseEditorProperty (char *buffer, bool complete=true)
 
virtual bool saveAsText (BaseDynamicBuffer *buffer, int indent=0)
 
 BaseClass (BaseGame *GameOwner)
 
virtual const char * getClassName ()
 
virtual bool persist (BasePersistenceManager *persistMgr)
 

Additional Inherited Members

- Public Attributes inherited from Wintermute::BaseRenderer
int _realWidth
 
int _realHeight
 
int _drawOffsetX
 
int _drawOffsetY
 
bool _active
 
bool _ready
 
uint32 _window
 
uint32 _forceAlphaColor
 
- Public Attributes inherited from Wintermute::BaseClass
bool _persistable
 
BaseGame_gameRef
 
- Protected Attributes inherited from Wintermute::BaseRenderer
int32 _height
 
int32 _width
 
bool _windowed
 
int32 _bPP
 
Common::String _loadImageName
 
Common::String _saveImageName
 
int32 _saveImageX
 
int32 _saveImageY
 
int32 _loadImageX
 
int32 _loadImageY
 
BaseSurface_saveLoadImage
 
bool _hasDrawnSaveLoadImage
 
int32 _indicatorWidthDrawn
 
uint32 _indicatorColor
 
int32 _indicatorX
 
int32 _indicatorY
 
int32 _indicatorWidth
 
int32 _indicatorHeight
 
bool _loadInProgress
 
bool _indicatorDisplay
 
int32 _indicatorProgress
 
uint32 _clipperWindow
 
Rect32 _windowRect
 
Rect32 _viewportRect
 
Rect32 _screenRect
 
Rect32 _monitorRect
 
- Protected Attributes inherited from Wintermute::BaseClass
Common::HashMap< Common::String, Common::String_editorProps
 
Common::HashMap< Common::String, Common::String >::iterator _editorPropsIter
 

Detailed Description

A 2D-renderer implementation for WME. This renderer makes use of a "ticket"-system, where all draw-calls are stored as tickets until flip() is called, and compared against the tickets from last frame, to determine which calls were the same as last round (i.e. in the exact same order, with the exact same arguments), and thus figure out which parts of the screen need to be redrawn.

Important concepts to handle here, is the ordered number of any ticket which is called the "drawNum", every frame this starts from scratch, and then the incoming tickets created from the draw-calls are checked to see whether they came before, on, or after the drawNum they had last frame. Everything else being equal, this information is then used to check whether the draw order changed, which will then create a need for redrawing, as we draw with an alpha-channel here.

There is also a draw path that draws without tickets, for debugging purposes, as well as to accommodate situations with large enough amounts of draw calls, that there will be too much overhead involved with comparing the generated tickets.

Member Function Documentation

◆ getName()

Common::String Wintermute::BaseRenderOSystem::getName ( ) const
overridevirtual

Get the name of the current renderer

Returns
the name of the renderer.

Implements Wintermute::BaseRenderer.

◆ flip()

bool Wintermute::BaseRenderOSystem::flip ( )
overridevirtual

Flip the backbuffer onto the screen-buffer The screen will NOT be updated before calling this function.

Returns
true if successful, false on error.

Implements Wintermute::BaseRenderer.

◆ indicatorFlip()

bool Wintermute::BaseRenderOSystem::indicatorFlip ( )
overridevirtual

Special flip for the indicator drawn during save/load essentially, just copies the region defined by the _indicator-variables.

Implements Wintermute::BaseRenderer.

◆ fill()

bool Wintermute::BaseRenderOSystem::fill ( byte  r,
byte  g,
byte  b,
Common::Rect rect = nullptr 
)
overridevirtual

Fill a portion of the screen with a specified color

Parameters
rthe red component to fill with.
gthe green component to fill with.
bthe blue component to fill with.

Implements Wintermute::BaseRenderer.

◆ fade()

void Wintermute::BaseRenderOSystem::fade ( uint16  alpha)
overridevirtual

Fade the screen to black

Parameters
alphaamount to fade by (alpha value of black)

Implements Wintermute::BaseRenderer.

◆ fadeToColor()

void Wintermute::BaseRenderOSystem::fadeToColor ( byte  r,
byte  g,
byte  b,
byte  a 
)
overridevirtual

Fade a portion of the screen to a specific color

Parameters
rthe red component to fade too.
gthe green component to fade too.
bthe blue component to fade too.
athe alpha component to fade too.
rectthe portion of the screen to fade (if nullptr, the entire screen will be faded).

Implements Wintermute::BaseRenderer.

◆ takeScreenshot()

BaseImage* Wintermute::BaseRenderOSystem::takeScreenshot ( )
overridevirtual

Take a screenshot of the current screenstate

Returns
a BaseImage containing the current screen-buffer.

Implements Wintermute::BaseRenderer.

◆ drawFromTicket()

void Wintermute::BaseRenderOSystem::drawFromTicket ( RenderTicket renderTicket)

Insert a new ticket into the queue, adding a dirty rect

Parameters
renderTicketthe ticket to be added.

◆ drawFromQueuedTicket()

void Wintermute::BaseRenderOSystem::drawFromQueuedTicket ( const RenderQueueIterator ticket)

Re-insert an existing ticket into the queue, adding a dirty rect out-of-order from last draw from the ticket.

Parameters
ticketiterator pointing to the ticket to be added.

◆ createSurface()

BaseSurface* Wintermute::BaseRenderOSystem::createSurface ( )
overridevirtual

Create a Surface fit for use with the renderer. As diverse implementations of BaseRenderer might have different solutions for storing surfaces this allows for a common interface for creating surface-handles. (Mostly useful to ease future implementation of hw-accelerated rendering, or readding 3D-support at some point).

Returns
a surface that can be used with this renderer

Implements Wintermute::BaseRenderer.


The documentation for this class was generated from the following file: