OpenTTD: Blitter_32bppBase Class Reference

OpenTTD

- Main Page
- Related Pages
- Modules
- Namespaces
- Data Structures
- Files

- Data Structures
- Class Hierarchy
- Data Fields

Public Member Functions | Static Public Member Functions | Static Public Attributes
Blitter_32bppBase Class Reference

Base for all 32bpp blitters. More...

`#include <32bpp_base.hpp>`

Inheritance diagram for Blitter_32bppBase:

## Public Member Functions
uint8 | GetScreenDepth ()
| Get the screen depth this blitter works for.
void * | MoveTo (void *video, int x, int y)
| 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 colour)
| Draw a pixel with a given colour on the video-buffer.
void | DrawRect (void *video, int width, int height, uint8 colour)
| Make a single horizontal line in a single colour on the video-buffer.
void | CopyFromBuffer (void *video, const void *src, int width, int height)
| Copy from a buffer to the screen.
void | CopyToBuffer (const void *video, void *dst, int width, int height)
| Copy from the screen to a buffer.
void | CopyImageToBuffer (const void *video, void *dst, int width, int height, int dst_pitch)
| 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)
| Scroll the videobuffer some 'x' and 'y' value.
int | BufferSize (int width, int height)
| Calculate how much memory there is needed for an image of this size in the video-buffer.
void | PaletteAnimate (const Palette &palette)
| 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 ()
| Check if the blitter uses palette animation at all.
int | GetBytesPerPixel ()
| Get how many bytes are needed to store a pixel.
Public Member Functions inherited from Blitter
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 (const SpriteLoader::Sprite *sprite, AllocatorProc *allocator)=0
| Convert a sprite from the loader to our own format.
virtual void | DrawLine (void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, uint8 colour, int width, int dash=0)
| Draw a line with a given colour.
virtual const char * | GetName ()=0
| Get the name of the blitter, the same as the Factory-instance returns.
virtual void | PostResize ()
| Post resize event.

## Static Public Member Functions
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 | MakeDark (uint8 r, uint8 g, uint8 b)
| Make a colour dark grey, for specialized 32bpp remapping.
static Colour | MakeGrey (Colour colour)
| Make a colour grey - based.
static Colour | AdjustBrightness (Colour colour, uint8 brightness)

## Static Public Attributes
static const int | DEFAULT_BRIGHTNESS = 128

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

## Detailed Description

Base for all 32bpp blitters.

Definition at line 21 of file 32bpp_base.hpp.

## Member Function Documentation

int Blitter_32bppBase::BufferSize | ( | int | width,
|  | int | height
| ) |  |
| virtual

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.

Implements Blitter.

Reimplemented in Blitter_32bppAnim.

Definition at line 136 of file 32bpp_base.cpp.

static Colour Blitter_32bppBase::ComposeColourPA | ( | Colour | colour,
|  | uint | a,
|  | Colour | current
| ) |  |
| inlinestatic

Compose a colour based on Pixel value, alpha value, and the current pixel value.

Handles fully transparent and solid pixels in a special (faster) way.

Definition at line 88 of file 32bpp_base.hpp.

References Colour::a, and ComposeColourPANoCheck().

Referenced by Blitter_32bppSimple::Draw().

static Colour Blitter_32bppBase::ComposeColourRGBA | ( | uint | r,
|  | uint | g,
|  | uint | b,
|  | uint | a,
|  | Colour | current
| ) |  |
| inlinestatic

Compose a colour based on RGBA values and the current pixel value.

Handles fully transparent and solid pixels in a special (faster) way.

Definition at line 64 of file 32bpp_base.hpp.

References ComposeColourRGBANoCheck().

Referenced by Blitter_32bppSimple::Draw(), Blitter_32bppOptimized::Draw(), and Blitter_32bppAnim::Draw().

void Blitter_32bppBase::CopyFromBuffer | ( | void * | video,
|  | const void * | src,
|  | int | width,
|  | int | height
| ) |  |
| virtual

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!

Implements Blitter.

Reimplemented in Blitter_32bppAnim.

Definition at line 41 of file 32bpp_base.cpp.

void Blitter_32bppBase::CopyImageToBuffer | ( | const void * | video,
|  | void * | dst,
|  | int | width,
|  | int | height,
|  | int | dst_pitch
| ) |  |
| virtual

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.

Implements Blitter.

Definition at line 65 of file 32bpp_base.cpp.

void Blitter_32bppBase::CopyToBuffer | ( | const void * | video,
|  | void * | dst,
|  | int | width,
|  | int | height
| ) |  |
| virtual

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!

Implements Blitter.

Reimplemented in Blitter_32bppAnim.

Definition at line 53 of file 32bpp_base.cpp.

void Blitter_32bppBase::DrawRect | ( | void * | video,
|  | int | width,
|  | int | height,
|  | uint8 | colour
| ) |  |
| virtual

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.

Implements Blitter.

Reimplemented in Blitter_32bppAnim.

Definition at line 27 of file 32bpp_base.cpp.

References LookupColourInPalette().

uint8 Blitter_32bppBase::GetScreenDepth | ( |  | ) |
| inlinevirtual

Get the screen depth this blitter works for.

This is either: 8, 16, 24 or 32.

Implements Blitter.

Definition at line 23 of file 32bpp_base.hpp.

static uint8 Blitter_32bppBase::MakeDark | ( | uint8 | r,
|  | uint8 | g,
|  | uint8 | b
| ) |  |
| inlinestatic

Make a colour dark grey, for specialized 32bpp remapping.

Parameters

  r | red component
  g | green component
  b | blue component

Returns
  the brightness value of the new colour, now dark grey.

Definition at line 122 of file 32bpp_base.hpp.

Referenced by Blitter_32bppSimple::Draw(), Blitter_32bppOptimized::Draw(), and Blitter_32bppAnim::Draw().

static Colour Blitter_32bppBase::MakeGrey | ( | Colour | colour | ) |
| inlinestatic

Make a colour grey - based.

Parameters

  colour | the colour to make grey.

Returns
  the new colour, now grey.

Definition at line 133 of file 32bpp_base.hpp.

Referenced by Blitter_32bppSimple::DrawColourMappingRect(), and Blitter_32bppAnim::DrawColourMappingRect().

static Colour Blitter_32bppBase::MakeTransparent | ( | Colour | colour,
|  | uint | nom,
|  | uint | denom = `256`
| ) |  |
| inlinestatic

Make a pixel looks like it is transparent.

Parameters

  colour | the colour already on the screen.
  nom | the amount of transparency, nominator, makes colour lighter.
  denom | denominator, makes colour darker.

Returns
  the new colour for the screen.

Definition at line 106 of file 32bpp_base.hpp.

Referenced by Blitter_32bppSimple::Draw(), Blitter_32bppOptimized::Draw(), Blitter_32bppAnim::Draw(), Blitter_32bppSimple::DrawColourMappingRect(), and Blitter_32bppAnim::DrawColourMappingRect().

void * Blitter_32bppBase::MoveTo | ( | void * | video,
|  | int | x,
|  | int | y
| ) |  |
| virtual

Move the destination pointer the requested amount x and y, keeping in mind any pitch and bpp of the renderer.

Parameters

  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.

Returns
  A new destination pointer moved the the requested place.

Implements Blitter.

Definition at line 17 of file 32bpp_base.cpp.

void Blitter_32bppBase::PaletteAnimate | ( | const Palette & | palette | ) |
| virtual

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

Parameters

  palette | The new palette.

Implements Blitter.

Reimplemented in Blitter_32bppAnim.

Definition at line 141 of file 32bpp_base.cpp.

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

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.

Implements Blitter.

Reimplemented in Blitter_32bppAnim.

Definition at line 77 of file 32bpp_base.cpp.

void Blitter_32bppBase::SetPixel | ( | void * | video,
|  | int | x,
|  | int | y,
|  | uint8 | colour
| ) |  |
| virtual

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.

Implements Blitter.

Reimplemented in Blitter_32bppAnim.

Definition at line 22 of file 32bpp_base.cpp.

References LookupColourInPalette().

Blitter::PaletteAnimation Blitter_32bppBase::UsePaletteAnimation | ( |  | ) |
| virtual

Check if the blitter uses palette animation at all.

Returns
  True if it uses palette animation.

Implements Blitter.

Reimplemented in Blitter_32bppAnim.

Definition at line 146 of file 32bpp_base.cpp.

References Blitter::PALETTE_ANIMATION_NONE.

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

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