OpenTTD Source 20241224-master-gf74b0cf984
Blitter_32bppOptimized Class Reference

The optimised 32 bpp blitter (without palette animation). More...

#include <32bpp_optimized.hpp>

Inheritance diagram for Blitter_32bppOptimized:
Blitter_32bppSimple Blitter_32bppBase Blitter SpriteEncoder Blitter_32bppAnim Blitter_40bppAnim

Data Structures

struct  SpriteData
 Data stored about a (single) sprite. More...
 

Public Member Functions

void Draw (Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override
 Draws a sprite to a (screen) buffer.
 
SpriteEncode (const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) override
 Convert a sprite from the loader to our own format.
 
std::string_view GetName () override
 Get the name of the blitter, the same as the Factory-instance returns.
 
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_32bppSimple
void Draw (Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override
 Draw an image to the screen, given an amount of params defined above.
 
void DrawColourMappingRect (void *dst, int width, int height, PaletteID pal) override
 Draw a colourtable to the screen.
 
SpriteEncode (const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) override
 Convert a sprite from the loader to our own format.
 
std::string_view GetName () override
 Get the name of the blitter, the same as the Factory-instance returns.
 
- 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 SetPixel (void *video, int x, int y, uint8_t colour) override
 Draw a pixel with a given colour on the video-buffer.
 
void DrawLine (void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, uint8_t colour, int width, int dash) override
 Draw a line with a given colour.
 
void DrawRect (void *video, int width, int height, uint8_t colour) override
 Make a single horizontal line in a single colour on the video-buffer.
 
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.
 
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.
 
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'.
 
Blitter::PaletteAnimation UsePaletteAnimation () override
 Check if the blitter uses palette animation at all.
 
- Public Member Functions inherited from Blitter
bool Is32BppSupported () override
 Can the sprite encoder make use of RGBA sprites?
 
virtual bool NeedsAnimationBuffer ()
 Does this blitter require a separate animation buffer from the video backend?
 
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.
 

Protected Member Functions

template<bool Tpal_to_rgb>
void Draw (Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom)
 Draw an image to the screen, given an amount of params defined above.
 
template<bool Tpal_to_rgb>
SpriteEncodeInternal (const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator)
 

Additional Inherited Members

- Public Types inherited from Blitter
enum  PaletteAnimation { PALETTE_ANIMATION_NONE , PALETTE_ANIMATION_VIDEO_BACKEND , PALETTE_ANIMATION_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 Colour ReallyAdjustBrightness (Colour colour, uint8_t brightness)
 
static Colour AdjustBrightness (Colour colour, uint8_t brightness)
 
static uint8_t GetColourBrightness (Colour colour)
 
- Static Public Attributes inherited from Blitter_32bppBase
static const int DEFAULT_BRIGHTNESS = 128
 

Detailed Description

The optimised 32 bpp blitter (without palette animation).

Definition at line 16 of file 32bpp_optimized.hpp.

Member Function Documentation

◆ Draw() [1/3]

template<bool Tpal_to_rgb>
void Blitter_32bppOptimized::Draw ( Blitter::BlitterParams bp,
BlitterMode  mode,
ZoomLevel  zoom 
)
protectedvirtual

Draw an image to the screen, given an amount of params defined above.

Implements Blitter.

Reimplemented in Blitter_40bppAnim.

Definition at line 260 of file 32bpp_optimized.cpp.

References BM_BLACK_REMAP, BM_COLOUR_REMAP, BM_CRASH_REMAP, BM_NORMAL, BM_TRANSPARENT, and BM_TRANSPARENT_REMAP.

◆ Draw() [2/3]

void Blitter_32bppOptimized::Draw ( Blitter::BlitterParams bp,
BlitterMode  mode,
ZoomLevel  zoom 
)
overridevirtual

Draws a sprite to a (screen) buffer.

Calls adequate templated function.

Parameters
bpfurther blitting parameters
modeblitter mode
zoomzoom level at which we are drawing

Implements Blitter.

Reimplemented in Blitter_40bppAnim.

Definition at line 283 of file 32bpp_optimized.cpp.

Referenced by Blitter_32bppAnim::Draw().

◆ Draw() [3/3]

◆ Encode()

Sprite * Blitter_32bppOptimized::Encode ( const SpriteLoader::SpriteCollection sprite,
SpriteAllocator allocator 
)
overridevirtual

Convert a sprite from the loader to our own format.

Implements SpriteEncoder.

Reimplemented in Blitter_40bppAnim.

Definition at line 444 of file 32bpp_optimized.cpp.

◆ EncodeInternal()

template<bool Tpal_to_rgb>
template Sprite * Blitter_32bppOptimized::EncodeInternal< false > ( const SpriteLoader::SpriteCollection sprite,
SpriteAllocator allocator 
)
protected

Definition at line 288 of file 32bpp_optimized.cpp.

◆ GetName()

std::string_view Blitter_32bppOptimized::GetName ( )
inlineoverridevirtual

Get the name of the blitter, the same as the Factory-instance returns.

Implements Blitter.

Reimplemented in Blitter_40bppAnim.

Definition at line 27 of file 32bpp_optimized.hpp.


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