How all blitters should look like. More...
#include <base.hpp>
Data Structures | |
| struct | BlitterParams |
Public Types | |
| enum | PaletteAnimation { PALETTE_ANIMATION_NONE, PALETTE_ANIMATION_VIDEO_BACKEND, PALETTE_ANIMATION_BLITTER } |
Public Member Functions | |
| virtual uint8 | GetScreenDepth ()=0 |
| Get the screen depth this blitter works for. | |
| virtual void | Draw (Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)=0 |
| Draw an image to the screen, given an amount of params defined above. | |
| virtual void | DrawColourMappingRect (void *dst, int width, int height, PaletteID pal)=0 |
| Draw a colourtable to the screen. | |
| virtual Sprite * | Encode (SpriteLoader::Sprite *sprite, AllocatorProc *allocator)=0 |
| Convert a sprite from the loader to our own format. | |
| virtual void * | MoveTo (const void *video, int x, int y)=0 |
| Move the destination pointer the requested amount x and y, keeping in mind any pitch and bpp of the renderer. | |
| virtual void | SetPixel (void *video, int x, int y, uint8 colour)=0 |
| Draw a pixel with a given colour on the video-buffer. | |
| virtual void | DrawRect (void *video, int width, int height, uint8 colour)=0 |
| Make a single horizontal line in a single colour on the video-buffer. | |
| virtual void | DrawLine (void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, uint8 colour)=0 |
| Draw a line with a given colour. | |
| virtual void | CopyFromBuffer (void *video, const void *src, int width, int height)=0 |
| Copy from a buffer to the screen. | |
| virtual void | CopyToBuffer (const void *video, void *dst, int width, int height)=0 |
| Copy from the screen to a buffer. | |
| virtual void | CopyImageToBuffer (const void *video, void *dst, int width, int height, int dst_pitch)=0 |
| Copy from the screen to a buffer in a palette format for 8bpp and RGBA format for 32bpp. | |
| virtual void | ScrollBuffer (void *video, int &left, int &top, int &width, int &height, int scroll_x, int scroll_y)=0 |
| Scroll the videobuffer some 'x' and 'y' value. | |
| virtual int | BufferSize (int width, int height)=0 |
| Calculate how much memory there is needed for an image of this size in the video-buffer. | |
| virtual void | PaletteAnimate (uint start, uint count)=0 |
| Called when the 8bpp palette is changed; you should redraw all pixels on the screen that are equal to the 8bpp palette indexes 'start' to 'start + count'. | |
| virtual Blitter::PaletteAnimation | UsePaletteAnimation ()=0 |
| Check if the blitter uses palette animation at all. | |
| virtual const char * | GetName ()=0 |
| Get the name of the blitter, the same as the Factory-instance returns. | |
| virtual int | GetBytesPerPixel ()=0 |
| Get how many bytes are needed to store a pixel. | |
| virtual void | PostResize () |
| Post resize event. | |
How all blitters should look like.
Extend this class to make your own.
Definition at line 27 of file base.hpp.
| virtual int Blitter::BufferSize | ( | int | width, | |
| int | height | |||
| ) | [pure virtual] |
Calculate how much memory there is needed for an image of this size in the video-buffer.
| width | The width of the buffer-to-be. | |
| height | The height of the buffer-to-be. |
Implemented in Blitter_32bppAnim, Blitter_32bppBase, Blitter_8bppBase, and Blitter_Null.
Referenced by NetworkDrawChatMessage().
| virtual void Blitter::CopyFromBuffer | ( | void * | video, | |
| const void * | src, | |||
| int | width, | |||
| int | height | |||
| ) | [pure virtual] |
Copy from a buffer to the screen.
| video | The destionation pointer (video-buffer). | |
| src | The buffer from which the data will be read. | |
| width | The width of the buffer. | |
| height | The height of the buffer. |
Implemented in Blitter_32bppAnim, Blitter_32bppBase, Blitter_8bppBase, and Blitter_Null.
Referenced by NetworkUndrawChatMessage().
| virtual void Blitter::CopyImageToBuffer | ( | const void * | video, | |
| void * | dst, | |||
| int | width, | |||
| int | height, | |||
| int | dst_pitch | |||
| ) | [pure virtual] |
Copy from the screen to a buffer in a palette format for 8bpp and RGBA format for 32bpp.
| video | The destination pointer (video-buffer). | |
| dst | The buffer in which the data will be stored. | |
| width | The width of the buffer. | |
| height | The height of the buffer. | |
| dst_pitch | The pitch (byte per line) of the destination buffer. |
Implemented in Blitter_32bppBase, Blitter_8bppBase, and Blitter_Null.
| virtual void Blitter::CopyToBuffer | ( | const void * | video, | |
| void * | dst, | |||
| int | width, | |||
| int | height | |||
| ) | [pure virtual] |
Copy from the screen to a buffer.
| video | The destination pointer (video-buffer). | |
| dst | The buffer in which the data will be stored. | |
| width | The width of the buffer. | |
| height | The height of the buffer. |
Implemented in Blitter_32bppAnim, Blitter_32bppBase, Blitter_8bppBase, and Blitter_Null.
Referenced by NetworkDrawChatMessage().
| virtual void Blitter::DrawColourMappingRect | ( | void * | dst, | |
| int | width, | |||
| int | height, | |||
| PaletteID | pal | |||
| ) | [pure virtual] |
Draw a colourtable to the screen.
This is: the colour of the screen is read and is looked-up in the palette to match a new colour, which then is put on the screen again.
| dst | the destination pointer (video-buffer). | |
| width | the width of the buffer. | |
| height | the height of the buffer. | |
| pal | the palette to use. |
Implemented in Blitter_32bppAnim, Blitter_32bppSimple, Blitter_8bppBase, and Blitter_Null.
Referenced by GfxFillRect().
| virtual void Blitter::DrawLine | ( | void * | video, | |
| int | x, | |||
| int | y, | |||
| int | x2, | |||
| int | y2, | |||
| int | screen_width, | |||
| int | screen_height, | |||
| uint8 | colour | |||
| ) | [pure virtual] |
Draw a line with a given colour.
| video | The destination pointer (video-buffer). | |
| x | The x coordinate from where the line starts. | |
| y | The y coordinate from where the line starts. | |
| x2 | The x coordinate to where the line goes. | |
| y2 | The y coordinate to where the lines goes. | |
| screen_width | The width of the screen you are drawing in (to avoid buffer-overflows). | |
| screen_height | The height of the screen you are drawing in (to avoid buffer-overflows). | |
| colour | A 8bpp mapping colour. |
Implemented in Blitter_32bppBase, Blitter_8bppBase, and Blitter_Null.
| virtual void Blitter::DrawRect | ( | void * | video, | |
| int | width, | |||
| int | height, | |||
| uint8 | colour | |||
| ) | [pure virtual] |
Make a single horizontal line in a single colour on the video-buffer.
| video | The destination pointer (video-buffer). | |
| width | The length of the line. | |
| height | The height of the line. | |
| colour | A 8bpp mapping colour. |
Implemented in Blitter_32bppAnim, Blitter_32bppBase, Blitter_8bppBase, and Blitter_Null.
Referenced by GfxFillRect().
| virtual uint8 Blitter::GetScreenDepth | ( | ) | [pure virtual] |
Get the screen depth this blitter works for.
This is either: 8, 16, 24 or 32.
Implemented in Blitter_32bppBase, Blitter_8bppBase, and Blitter_Null.
Referenced by MakeSmallScreenshot(), MakeWorldScreenshot(), and MakeZoomedInScreenshot().
| virtual void* Blitter::MoveTo | ( | const void * | video, | |
| int | x, | |||
| int | y | |||
| ) | [pure virtual] |
Move the destination pointer the requested amount x and y, keeping in mind any pitch and bpp of the renderer.
| video | The destination pointer (video-buffer) to scroll. | |
| x | How much you want to scroll to the right. | |
| y | How much you want to scroll to the bottom. |
Implemented in Blitter_32bppBase, Blitter_8bppBase, and Blitter_Null.
Referenced by DrawOverlappedWindow(), SmallMapWindow::DrawSmallMap(), SmallMapWindow::DrawSmallMapColumn(), FillDrawPixelInfo(), GfxFillRect(), HandleMouseEvents(), NetworkDrawChatMessage(), and NetworkUndrawChatMessage().
| virtual void Blitter::PaletteAnimate | ( | uint | start, | |
| uint | count | |||
| ) | [pure virtual] |
Called when the 8bpp palette is changed; you should redraw all pixels on the screen that are equal to the 8bpp palette indexes 'start' to 'start + count'.
| start | The start index in the 8bpp palette. | |
| count | The amount of indexes that are (possible) changed. |
Implemented in Blitter_32bppAnim, Blitter_32bppBase, Blitter_8bppBase, and Blitter_Null.
| virtual void Blitter::ScrollBuffer | ( | void * | video, | |
| int & | left, | |||
| int & | top, | |||
| int & | width, | |||
| int & | height, | |||
| int | scroll_x, | |||
| int | scroll_y | |||
| ) | [pure virtual] |
Scroll the videobuffer some 'x' and 'y' value.
| video | The buffer to scroll into. | |
| left | The left value of the screen to scroll. | |
| top | The top value of the screen to scroll. | |
| width | The width of the screen to scroll. | |
| height | The height of the screen to scroll. | |
| scroll_x | How much to scroll in X. | |
| scroll_y | How much to scroll in Y. |
Implemented in Blitter_32bppAnim, Blitter_32bppBase, Blitter_8bppBase, and Blitter_Null.
| virtual void Blitter::SetPixel | ( | void * | video, | |
| int | x, | |||
| int | y, | |||
| uint8 | colour | |||
| ) | [pure virtual] |
Draw a pixel with a given colour on the video-buffer.
| video | The destination pointer (video-buffer). | |
| x | The x position within video-buffer. | |
| y | The y position within video-buffer. | |
| colour | A 8bpp mapping colour. |
Implemented in Blitter_32bppAnim, Blitter_32bppBase, Blitter_8bppBase, and Blitter_Null.
Referenced by SmallMapWindow::DrawSmallMapColumn(), SmallMapWindow::DrawVehicles(), and GfxFillRect().
| virtual Blitter::PaletteAnimation Blitter::UsePaletteAnimation | ( | ) | [pure virtual] |
Check if the blitter uses palette animation at all.
Implemented in Blitter_32bppAnim, Blitter_32bppBase, Blitter_8bppBase, and Blitter_Null.
1.7.1