OpenTTD Source: Blitter_32bppOptimized Class Reference

OpenTTD Source 15.0-beta1

Data Structures | Public Member Functions | Protected Member Functions
Blitter_32bppOptimized Class Reference

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

`#include <32bpp_optimized.hpp>`

Inheritance diagram for Blitter_32bppOptimized:

## 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.
Sprite * | Encode (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.
Sprite * | Encode (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>
Sprite * | EncodeInternal (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

  bp | further blitting parameters
  mode | blitter mode
  zoom | zoom 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]

template<BlitterMode mode, bool Tpal_to_rgb>

void Blitter_32bppOptimized::Draw | ( | const Blitter::BlitterParams * | bp,
|  | ZoomLevel | zoom
| ) |  |
| inline

Draws a sprite to a (screen) buffer.

It is templated to allow faster operation.

Template Parameters

  mode | blitter mode

Parameters

  bp | further blitting parameters
  zoom | zoom level at which we are drawing

Definition at line 29 of file 32bpp_optimized.cpp.

References Colour::b, BM_BLACK_REMAP, BM_COLOUR_REMAP, BM_CRASH_REMAP, BM_TRANSPARENT, BM_TRANSPARENT_REMAP, Blitter_32bppBase::ComposeColourPANoCheck(), Blitter_32bppBase::ComposeColourRGBA(), Blitter_32bppBase::ComposeColourRGBANoCheck(), Blitter_32bppOptimized::SpriteData::data, Colour::data, Blitter::BlitterParams::dst, GB(), 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, and Blitter::BlitterParams::width.

## ◆ 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:

- src/blitter/32bpp_optimized.hpp
- src/blitter/32bpp_optimized.cpp