|
OpenTTD Source 20251117-master-g7398d2e290
|
The optimized 40 bpp blitter (for OpenGL video driver). More...
#include <40bpp_anim.hpp>
Public Member Functions | |
| void | SetPixel (void *video, int x, int y, PixelColour colour) override |
| Draw a pixel with a given colour on the video-buffer. | |
| void | DrawRect (void *video, int width, int height, PixelColour colour) override |
| Make a single horizontal line in a single colour on the video-buffer. | |
| void | DrawLine (void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, PixelColour colour, int width, int dash) override |
| Draw a line with a given colour. | |
| void | CopyFromBuffer (void *video, const void *src, int width, int height) override |
| Copy from a buffer to the screen. | |
| void | CopyToBuffer (const void *video, void *dst, int width, int height) override |
| Copy from the screen to a buffer. | |
| void | CopyImageToBuffer (const void *video, void *dst, int width, int height, int dst_pitch) override |
| Copy from the screen to a buffer in a palette format for 8bpp and RGBA format for 32bpp. | |
| void | ScrollBuffer (void *video, int &left, int &top, int &width, int &height, int scroll_x, int scroll_y) override |
| Scroll the videobuffer some 'x' and 'y' value. | |
| void | Draw (Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override |
| Draws a sprite to a (screen) buffer. | |
| void | DrawColourMappingRect (void *dst, int width, int height, PaletteID pal) override |
| Draw a colourtable to the screen. | |
| Sprite * | Encode (SpriteType sprite_type, const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) override |
| Convert a sprite from the loader to our own format. | |
| size_t | BufferSize (uint width, uint height) override |
| Calculate how much memory there is needed for an image of this size in the video-buffer. | |
| Blitter::PaletteAnimation | UsePaletteAnimation () override |
| Check if the blitter uses palette animation at all. | |
| bool | NeedsAnimationBuffer () override |
| Does this blitter require a separate animation buffer from the video backend? | |
| std::string_view | GetName () override |
| Get the name of the blitter, the same as the Factory-instance returns. | |
| template<BlitterMode mode> | |
| void | Draw (const Blitter::BlitterParams *bp, ZoomLevel zoom) |
| Draws a sprite to a (screen) buffer. | |
Public Member Functions inherited from Blitter_32bppOptimized | |
| template<BlitterMode mode, bool Tpal_to_rgb = false> | |
| void | Draw (const Blitter::BlitterParams *bp, ZoomLevel zoom) |
| Draws a sprite to a (screen) buffer. | |
Public Member Functions inherited from Blitter_32bppBase | |
| uint8_t | GetScreenDepth () override |
| Get the screen depth this blitter works for. | |
| void * | MoveTo (void *video, int x, int y) override |
| Move the destination pointer the requested amount x and y, keeping in mind any pitch and bpp of the renderer. | |
| void | PaletteAnimate (const Palette &palette) override |
| Called when the 8bpp palette is changed; you should redraw all pixels on the screen that are equal to the 8bpp palette indexes 'first_dirty' to 'first_dirty + count_dirty'. | |
Public Member Functions inherited from Blitter | |
| bool | Is32BppSupported () override |
| Can the sprite encoder make use of RGBA sprites? | |
| virtual void | PostResize () |
| Post resize event. | |
| template<typename SetPixelT > | |
| void | DrawLineGeneric (int x, int y, int x2, int y2, int screen_width, int screen_height, int width, int dash, SetPixelT set_pixel) |
Public Member Functions inherited from SpriteEncoder | |
| virtual uint | GetSpriteAlignment () |
| Get the value which the height and width on a sprite have to be aligned by. | |
Static Protected Member Functions | |
| static Colour | RealizeBlendedColour (uint8_t anim, Colour c) |
Additional Inherited Members | |
Public Types inherited from Blitter | |
| enum class | PaletteAnimation : uint8_t { None , VideoBackend , Blitter } |
| Types of palette animation. More... | |
Static Public Member Functions inherited from Blitter_32bppBase | |
| static Colour | LookupColourInPalette (uint index) |
| Look up the colour in the current palette. | |
| static Colour | ComposeColourRGBANoCheck (uint r, uint g, uint b, uint a, Colour current) |
| Compose a colour based on RGBA values and the current pixel value. | |
| static Colour | ComposeColourRGBA (uint r, uint g, uint b, uint a, Colour current) |
| Compose a colour based on RGBA values and the current pixel value. | |
| static Colour | ComposeColourPANoCheck (Colour colour, uint a, Colour current) |
| Compose a colour based on Pixel value, alpha value, and the current pixel value. | |
| static Colour | ComposeColourPA (Colour colour, uint a, Colour current) |
| Compose a colour based on Pixel value, alpha value, and the current pixel value. | |
| static Colour | MakeTransparent (Colour colour, uint nom, uint denom=256) |
| Make a pixel looks like it is transparent. | |
| static uint8_t | MakeDark (uint8_t r, uint8_t g, uint8_t b) |
| Make a colour dark grey, for specialized 32bpp remapping. | |
| static Colour | MakeDark (Colour colour) |
| Make a colour dark grey, for specialized 32bpp remapping. | |
| static Colour | MakeGrey (Colour colour) |
| Make a colour grey - based. | |
Static Public Member Functions inherited from Blitter | |
| template<typename T > | |
| static void | MovePixels (const T *src, T *dst, size_t width, size_t height, ptrdiff_t pitch) |
Protected Member Functions inherited from Blitter_32bppOptimized | |
| template<bool Tpal_to_rgb> | |
| Sprite * | EncodeInternal (SpriteType sprite_type, const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) |
The optimized 40 bpp blitter (for OpenGL video driver).
Definition at line 18 of file 40bpp_anim.hpp.
|
overridevirtual |
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. |
Reimplemented from Blitter_32bppBase.
Definition at line 517 of file 40bpp_anim.cpp.
|
overridevirtual |
Copy from a buffer to the screen.
| video | The destination 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. |
Reimplemented from Blitter_32bppBase.
Definition at line 409 of file 40bpp_anim.cpp.
References _screen_disable_anim, VideoDriver::GetAnimBuffer(), and VideoDriver::GetInstance().
|
overridevirtual |
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. |
Reimplemented from Blitter_32bppBase.
Definition at line 453 of file 40bpp_anim.cpp.
References Blitter_32bppBase::CopyImageToBuffer(), VideoDriver::GetAnimBuffer(), and VideoDriver::GetInstance().
|
overridevirtual |
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. |
Reimplemented from Blitter_32bppBase.
Definition at line 431 of file 40bpp_anim.cpp.
References _screen_disable_anim, VideoDriver::GetAnimBuffer(), and VideoDriver::GetInstance().
|
overridevirtual |
Draws a sprite to a (screen) buffer.
Calls adequate templated function.
| bp | further blitting parameters |
| mode | blitter mode |
| zoom | zoom level at which we are drawing |
Reimplemented from Blitter_32bppOptimized.
Definition at line 330 of file 40bpp_anim.cpp.
References _screen_disable_anim, BlackRemap, ColourRemap, CrashRemap, VideoDriver::GetInstance(), Normal, Transparent, and TransparentRemap.
|
inline |
Draws a sprite to a (screen) buffer.
It is templated to allow faster operation.
| mode | blitter mode |
| bp | further blitting parameters |
| zoom | zoom level at which we are drawing |
Definition at line 93 of file 40bpp_anim.cpp.
References BlackRemap, ColourRemap, Blitter_32bppBase::ComposeColourPANoCheck(), Blitter_32bppBase::ComposeColourRGBANoCheck(), CrashRemap, Blitter_32bppOptimized::SpriteData::data, Blitter::BlitterParams::dst, GB(), VideoDriver::GetAnimBuffer(), GetColourBrightness(), VideoDriver::GetInstance(), GetNearestColourIndex(), Blitter::BlitterParams::height, Blitter::BlitterParams::left, Blitter_32bppBase::LookupColourInPalette(), Blitter_32bppBase::MakeDark(), Blitter_32bppBase::MakeTransparent(), Blitter_32bppOptimized::SpriteData::offset, Blitter::BlitterParams::pitch, Blitter::BlitterParams::remap, Blitter::BlitterParams::skip_left, Blitter::BlitterParams::skip_top, Blitter::BlitterParams::sprite, Blitter::BlitterParams::top, Transparent, TransparentRemap, and Blitter::BlitterParams::width.
|
overridevirtual |
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. |
Reimplemented from Blitter_32bppSimple.
Definition at line 351 of file 40bpp_anim.cpp.
References _screen_disable_anim, Blitter_32bppSimple::DrawColourMappingRect(), VideoDriver::GetAnimBuffer(), GetColourBrightness(), VideoDriver::GetInstance(), Blitter_32bppBase::MakeGrey(), Blitter_32bppBase::MakeTransparent(), PALETTE_NEWSPAPER, PALETTE_TO_TRANSPARENT, and Recolour.
|
overridevirtual |
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 pixel colour. |
| width | Line width. |
| dash | Length of dashes for dashed lines. 0 means solid line. |
Reimplemented from Blitter_32bppBase.
Definition at line 68 of file 40bpp_anim.cpp.
References _screen_disable_anim, Blitter_32bppBase::DrawLine(), VideoDriver::GetAnimBuffer(), VideoDriver::GetInstance(), and PixelColour::p.
|
overridevirtual |
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 pixel colour. |
Reimplemented from Blitter_32bppBase.
Definition at line 42 of file 40bpp_anim.cpp.
References _screen_disable_anim, Blitter_32bppBase::DrawRect(), VideoDriver::GetAnimBuffer(), VideoDriver::GetInstance(), and PixelColour::p.
|
overridevirtual |
Convert a sprite from the loader to our own format.
Reimplemented from Blitter_32bppOptimized.
Definition at line 403 of file 40bpp_anim.cpp.
|
inlineoverridevirtual |
Get the name of the blitter, the same as the Factory-instance returns.
Reimplemented from Blitter_32bppOptimized.
Definition at line 35 of file 40bpp_anim.hpp.
|
overridevirtual |
Does this blitter require a separate animation buffer from the video backend?
Reimplemented from Blitter.
Definition at line 527 of file 40bpp_anim.cpp.
|
inlinestaticprotected |
Definition at line 40 of file 40bpp_anim.hpp.
|
overridevirtual |
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. |
Reimplemented from Blitter_32bppBase.
Definition at line 475 of file 40bpp_anim.cpp.
References _screen_disable_anim, VideoDriver::GetAnimBuffer(), VideoDriver::GetInstance(), and Blitter_32bppBase::ScrollBuffer().
|
overridevirtual |
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 pixel colour. |
Reimplemented from Blitter_32bppBase.
Definition at line 30 of file 40bpp_anim.cpp.
References _screen_disable_anim, VideoDriver::GetAnimBuffer(), VideoDriver::GetInstance(), PixelColour::p, and Blitter_32bppBase::SetPixel().
|
overridevirtual |
Check if the blitter uses palette animation at all.
Reimplemented from Blitter_32bppBase.
Definition at line 522 of file 40bpp_anim.cpp.
References Blitter::VideoBackend.