OpenTTD Source: Blitter_40bppAnim Class Reference

OpenTTD Source 14.1

Public Member Functions | Static Protected Member Functions
Blitter_40bppAnim Class Reference

The optimized 40 bpp blitter (for OpenGL video driver). More...

`#include <40bpp_anim.hpp>`

Inheritance diagram for Blitter_40bppAnim:

## Public Member Functions
void | SetPixel (void *video, int x, int y, uint8_t colour) override
| Draw a pixel with a given colour on the video-buffer. More...
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. More...
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. More...
void | CopyFromBuffer (void *video, const void *src, int width, int height) override
| Copy from a buffer to the screen. More...
void | CopyToBuffer (const void *video, void *dst, int width, int height) override
| Copy from the screen to a buffer. More...
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. More...
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. More...
void | Draw (Blitter::BlitterParams *bp, BlitterMode mode, ZoomLevel zoom) override
| Draws a sprite to a (screen) buffer. More...
void | DrawColourMappingRect (void *dst, int width, int height, PaletteID pal) override
| Draw a colourtable to the screen. More...
Sprite * | Encode (const SpriteLoader::SpriteCollection &sprite, AllocatorProc *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. More...
Blitter::PaletteAnimation | UsePaletteAnimation () override
| Check if the blitter uses palette animation at all. More...
bool | NeedsAnimationBuffer () override
| Does this blitter require a separate animation buffer from the video backend?
const char * | 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. More...
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. More...
Public Member Functions inherited from Blitter_32bppBase
uint8_t | GetScreenDepth () override
| Get the screen depth this blitter works for. More...
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. More...
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'. More...
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. More...

## Static Protected Member Functions
static Colour | RealizeBlendedColour (uint8_t anim, Colour c)

## 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. More...
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. More...
static Colour | MakeTransparent (Colour colour, uint nom, uint denom=256)
| Make a pixel looks like it is transparent. More...
static uint8_t | MakeDark (uint8_t r, uint8_t g, uint8_t b)
| Make a colour dark grey, for specialized 32bpp remapping. More...
static Colour | MakeDark (Colour colour)
| Make a colour dark grey, for specialized 32bpp remapping. More...
static Colour | MakeGrey (Colour colour)
| Make a colour grey - based. More...
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
Protected Member Functions inherited from Blitter_32bppOptimized
template<bool Tpal_to_rgb>
Sprite * | EncodeInternal (const SpriteLoader::SpriteCollection &sprite, AllocatorProc *allocator)

## Detailed Description

The optimized 40 bpp blitter (for OpenGL video driver).

Definition at line 18 of file 40bpp_anim.hpp.

## Member Function Documentation

## ◆ BufferSize()

size_t Blitter_40bppAnim::BufferSize | ( | uint | width,
|  | uint | height
| ) |  |
| overridevirtual

Calculate how much memory there is needed for an image of this size in the video-buffer.

Parameters

  width | The width of the buffer-to-be.
  height | The height of the buffer-to-be.

Returns
  The size needed for the buffer.

Reimplemented from Blitter_32bppBase.

Definition at line 524 of file 40bpp_anim.cpp.

## ◆ CopyFromBuffer()

void Blitter_40bppAnim::CopyFromBuffer | ( | void * | video,
|  | const void * | src,
|  | int | width,
|  | int | height
| ) |  |
| overridevirtual

Copy from a buffer to the screen.

Parameters

  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.

Note
  You can not do anything with the content of the buffer, as the blitter can store non-pixel data in it too!

Reimplemented from Blitter_32bppBase.

Definition at line 406 of file 40bpp_anim.cpp.

References _screen_disable_anim.

## ◆ CopyImageToBuffer()

void Blitter_40bppAnim::CopyImageToBuffer | ( | const void * | video,
|  | void * | dst,
|  | int | width,
|  | int | height,
|  | int | dst_pitch
| ) |  |
| overridevirtual

Copy from the screen to a buffer in a palette format for 8bpp and RGBA format for 32bpp.

Parameters

  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 450 of file 40bpp_anim.cpp.

References Blitter_32bppBase::CopyImageToBuffer(), VideoDriver::GetAnimBuffer(), and VideoDriver::GetInstance().

## ◆ CopyToBuffer()

void Blitter_40bppAnim::CopyToBuffer | ( | const void * | video,
|  | void * | dst,
|  | int | width,
|  | int | height
| ) |  |
| overridevirtual

Copy from the screen to a buffer.

Parameters

  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.

Note
  You can not do anything with the content of the buffer, as the blitter can store non-pixel data in it too!

Reimplemented from Blitter_32bppBase.

Definition at line 428 of file 40bpp_anim.cpp.

References _screen_disable_anim.

## ◆ Draw() [1/2]

void Blitter_40bppAnim::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

Reimplemented from Blitter_32bppOptimized.

Definition at line 330 of file 40bpp_anim.cpp.

## ◆ Draw() [2/2]

template<BlitterMode mode>

void Blitter_40bppAnim::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 93 of file 40bpp_anim.cpp.

References Blitter_32bppOptimized::SpriteData::data, Blitter_32bppOptimized::SpriteData::offset, and Blitter::BlitterParams::sprite.

## ◆ DrawColourMappingRect()

void Blitter_40bppAnim::DrawColourMappingRect | ( | void * | dst,
|  | int | width,
|  | int | height,
|  | PaletteID | pal
| ) |  |
| 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.

Parameters

  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(), and VideoDriver::GetInstance().

## ◆ DrawLine()

void Blitter_40bppAnim::DrawLine | ( | void * | video,
|  | int | x,
|  | int | y,
|  | int | x2,
|  | int | y2,
|  | int | screen_width,
|  | int | screen_height,
|  | uint8_t | colour,
|  | int | width,
|  | int | dash
| ) |  |
| overridevirtual

Draw a line with a given colour.

Parameters

  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.
  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.

## ◆ DrawRect()

void Blitter_40bppAnim::DrawRect | ( | void * | video,
|  | int | width,
|  | int | height,
|  | uint8_t | colour
| ) |  |
| overridevirtual

Make a single horizontal line in a single colour on the video-buffer.

Parameters

  video | The destination pointer (video-buffer).
  width | The length of the line.
  height | The height of the line.
  colour | A 8bpp mapping colour.

Reimplemented from Blitter_32bppBase.

Definition at line 42 of file 40bpp_anim.cpp.

References _screen_disable_anim, Blitter_32bppBase::DrawRect(), and VideoDriver::GetInstance().

## ◆ ScrollBuffer()

void Blitter_40bppAnim::ScrollBuffer | ( | void * | video,
|  | int & | left,
|  | int & | top,
|  | int & | width,
|  | int & | height,
|  | int | scroll_x,
|  | int | scroll_y
| ) |  |
| overridevirtual

Scroll the videobuffer some 'x' and 'y' value.

Parameters

  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 472 of file 40bpp_anim.cpp.

References _screen_disable_anim.

## ◆ SetPixel()

void Blitter_40bppAnim::SetPixel | ( | void * | video,
|  | int | x,
|  | int | y,
|  | uint8_t | colour
| ) |  |
| overridevirtual

Draw a pixel with a given colour on the video-buffer.

Parameters

  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.

Reimplemented from Blitter_32bppBase.

Definition at line 30 of file 40bpp_anim.cpp.

## ◆ UsePaletteAnimation()

Blitter::PaletteAnimation Blitter_40bppAnim::UsePaletteAnimation | ( |  | ) |
| overridevirtual

Check if the blitter uses palette animation at all.

Returns
  True if it uses palette animation.

Reimplemented from Blitter_32bppBase.

Definition at line 529 of file 40bpp_anim.cpp.

References Blitter::PALETTE_ANIMATION_VIDEO_BACKEND.

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

- src/blitter/40bpp_anim.hpp
- src/blitter/40bpp_anim.cpp