OpenTTD Source 20241224-master-gf74b0cf984
palette_func.h File Reference

Functions related to palettes. More...

#include "core/enum_type.hpp"
#include "gfx_type.h"
#include "strings_type.h"
#include "string_type.h"

Go to the source code of this file.

Macros

#define GREY_SCALE(level)   (level)
 Return the colour for a particular greyscale level.
 

Enumerations

enum  ColourShade : uint8_t {
  SHADE_BEGIN = 0 , SHADE_DARKEST = SHADE_BEGIN , SHADE_DARKER , SHADE_DARK ,
  SHADE_NORMAL , SHADE_LIGHT , SHADE_LIGHTER , SHADE_LIGHTEST ,
  SHADE_LIGHTEREST , SHADE_END
}
 

Functions

bool CopyPalette (Palette &local_palette, bool force_copy=false)
 Copy the current palette if the palette was updated.
 
void GfxInitPalettes ()
 
uint8_t GetNearestColourIndex (uint8_t r, uint8_t g, uint8_t b)
 Get nearest colour palette index from an RGB colour.
 
uint8_t GetNearestColourIndex (const Colour colour)
 
bool IsValidColours (Colours colours)
 Checks if a Colours value is valid.
 
TextColour GetContrastColour (uint8_t background, uint8_t threshold=128)
 Determine a contrasty text colour for a coloured background.
 
uint8_t GetColourGradient (Colours colour, ColourShade shade)
 Get colour gradient palette index.
 
void SetColourGradient (Colours colour, ColourShade shade, uint8_t palette_colour)
 Set colour gradient palette index.
 

Variables

Palette _cur_palette
 Current palette.
 
static const uint8_t PC_BLACK = GREY_SCALE(1)
 Black palette colour.
 
static const uint8_t PC_DARK_GREY = GREY_SCALE(6)
 Dark grey palette colour.
 
static const uint8_t PC_GREY = GREY_SCALE(10)
 Grey palette colour.
 
static const uint8_t PC_WHITE = GREY_SCALE(15)
 White palette colour.
 
static const uint8_t PC_VERY_DARK_RED = 0xB2
 Almost-black red palette colour.
 
static const uint8_t PC_DARK_RED = 0xB4
 Dark red palette colour.
 
static const uint8_t PC_RED = 0xB8
 Red palette colour.
 
static const uint8_t PC_VERY_DARK_BROWN = 0x56
 Almost-black brown palette colour.
 
static const uint8_t PC_ORANGE = 0xC2
 Orange palette colour.
 
static const uint8_t PC_YELLOW = 0xBF
 Yellow palette colour.
 
static const uint8_t PC_LIGHT_YELLOW = 0x44
 Light yellow palette colour.
 
static const uint8_t PC_VERY_LIGHT_YELLOW = 0x45
 Almost-white yellow palette colour.
 
static const uint8_t PC_GREEN = 0xD0
 Green palette colour.
 
static const uint8_t PC_VERY_DARK_BLUE = 0x9A
 Almost-black blue palette colour.
 
static const uint8_t PC_DARK_BLUE = 0x9D
 Dark blue palette colour.
 
static const uint8_t PC_LIGHT_BLUE = 0x98
 Light blue palette colour.
 
static const uint8_t PC_ROUGH_LAND = 0x52
 Dark green palette colour for rough land.
 
static const uint8_t PC_GRASS_LAND = 0x54
 Dark green palette colour for grass land.
 
static const uint8_t PC_BARE_LAND = 0x37
 Brown palette colour for bare land.
 
static const uint8_t PC_RAINFOREST = 0x5C
 Pale green palette colour for rainforest.
 
static const uint8_t PC_FIELDS = 0x25
 Light brown palette colour for fields.
 
static const uint8_t PC_TREES = 0x57
 Green palette colour for trees.
 
static const uint8_t PC_WATER = 0xC9
 Dark blue palette colour for water.
 

Detailed Description

Functions related to palettes.

Definition in file palette_func.h.

Macro Definition Documentation

◆ GREY_SCALE

#define GREY_SCALE (   level)    (level)

Return the colour for a particular greyscale level.

Parameters
levelIntensity, 0 = black, 15 = white
Returns
colour

Definition at line 65 of file palette_func.h.

Enumeration Type Documentation

◆ ColourShade

enum ColourShade : uint8_t

Definition at line 43 of file palette_func.h.

Function Documentation

◆ CopyPalette()

bool CopyPalette ( Palette local_palette,
bool  force_copy 
)

Copy the current palette if the palette was updated.

Used by video-driver to get a current up-to-date version of the palette, to avoid two threads accessing the same piece of memory (with a good chance one is already updating the palette while the other is drawing based on it).

Parameters
local_paletteThe location to copy the palette to.
force_copyWhether to ignore if there is an update for the palette.
Returns
True iff a copy was done.

Definition at line 152 of file palette.cpp.

References _cur_palette, _palette_mutex, Palette::count_dirty, Palette::first_dirty, and lock.

Referenced by VideoDriver_SDL_OpenGL::AllocateBackingStore(), VideoDriver_SDL_Base::CheckPaletteAnim(), VideoDriver_SDL::CheckPaletteAnim(), VideoDriver_Win32Base::CheckPaletteAnim(), and VideoDriver_SDL_Base::ClientSizeChanged().

◆ GetColourGradient()

◆ GetContrastColour()

TextColour GetContrastColour ( uint8_t  background,
uint8_t  threshold 
)

Determine a contrasty text colour for a coloured background.

Parameters
backgroundBackground colour.
thresholdBackground colour brightness threshold below which the background is considered dark and TC_WHITE is returned, range: 0 - 255, default 128.
Returns
TC_BLACK or TC_WHITE depending on what gives a better contrast.

Definition at line 287 of file palette.cpp.

References _cur_palette, Colour::b, and Palette::palette.

Referenced by LinkGraphLegendWindow::DrawWidget(), and StationsWndShowStationRating().

◆ GetNearestColourIndex() [1/2]

uint8_t GetNearestColourIndex ( const Colour  colour)
inline

Definition at line 25 of file palette_func.h.

◆ GetNearestColourIndex() [2/2]

uint8_t GetNearestColourIndex ( uint8_t  r,
uint8_t  g,
uint8_t  b 
)

Get nearest colour palette index from an RGB colour.

A search is performed if this colour is not already in the lookup table.

Parameters
rRed component.
gGreen component.
bBlue component.
Returns
nearest colour palette index.

Definition at line 127 of file palette.cpp.

References FindNearestColourIndex(), and PALETTE_BITS.

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

◆ GfxInitPalettes()

void GfxInitPalettes ( )

Definition at line 136 of file palette.cpp.

◆ IsValidColours()

bool IsValidColours ( Colours  colours)
inline

Checks if a Colours value is valid.

Parameters
coloursThe value to check
Returns
true if the given value is a valid Colours.

Definition at line 36 of file palette_func.h.

Referenced by StoryPageButtonData::GetColour().

◆ SetColourGradient()

void SetColourGradient ( Colours  colour,
ColourShade  shade,
uint8_t  palette_index 
)

Set colour gradient palette index.

Parameters
colourColour.
shadeShade level from 1 to 7.
palette_indexPalette index to set.

Definition at line 325 of file palette.cpp.

Referenced by HandleBootstrap(), and SetupColoursAndInitialWindow().

Variable Documentation

◆ _cur_palette

Palette _cur_palette
extern

Current palette.

Definition at line 24 of file palette.cpp.

Referenced by CopyPalette(), and GetContrastColour().

◆ PC_BARE_LAND

const uint8_t PC_BARE_LAND = 0x37
static

Brown palette colour for bare land.

Definition at line 92 of file palette_func.h.

Referenced by GetSmallMapVegetationPixels().

◆ PC_BLACK

◆ PC_DARK_BLUE

const uint8_t PC_DARK_BLUE = 0x9D
static

◆ PC_DARK_GREY

const uint8_t PC_DARK_GREY = GREY_SCALE(6)
static

Dark grey palette colour.

Definition at line 68 of file palette_func.h.

Referenced by FrametimeGraphWindow::DrawWidget(), NewGRFWindow::DrawWidget(), and GetSmallMapOwnerPixels().

◆ PC_DARK_RED

const uint8_t PC_DARK_RED = 0xB4
static

◆ PC_FIELDS

const uint8_t PC_FIELDS = 0x25
static

Light brown palette colour for fields.

Definition at line 94 of file palette_func.h.

◆ PC_GRASS_LAND

const uint8_t PC_GRASS_LAND = 0x54
static

Dark green palette colour for grass land.

Definition at line 91 of file palette_func.h.

Referenced by GetSmallMapVegetationPixels().

◆ PC_GREEN

const uint8_t PC_GREEN = 0xD0
static

Green palette colour.

Definition at line 84 of file palette_func.h.

Referenced by GetSmallMapVegetationPixels(), and StationsWndShowStationRating().

◆ PC_GREY

const uint8_t PC_GREY = GREY_SCALE(10)
static

◆ PC_LIGHT_BLUE

const uint8_t PC_LIGHT_BLUE = 0x98
static

Light blue palette colour.

Definition at line 88 of file palette_func.h.

Referenced by SpriteAlignerWindow::DrawWidget(), GetSmallMapRoutesPixels(), and GetSmallMapVegetationPixels().

◆ PC_LIGHT_YELLOW

const uint8_t PC_LIGHT_YELLOW = 0x44
static

Light yellow palette colour.

Definition at line 81 of file palette_func.h.

Referenced by TooltipsWindow::DrawWidget().

◆ PC_ORANGE

const uint8_t PC_ORANGE = 0xC2
static

Orange palette colour.

Definition at line 78 of file palette_func.h.

Referenced by GetSmallMapRoutesPixels(), and GetSmallMapVegetationPixels().

◆ PC_RAINFOREST

const uint8_t PC_RAINFOREST = 0x5C
static

Pale green palette colour for rainforest.

Definition at line 93 of file palette_func.h.

Referenced by GetSmallMapVegetationPixels().

◆ PC_RED

const uint8_t PC_RED = 0xB8
static

Red palette colour.

Definition at line 74 of file palette_func.h.

Referenced by GetSmallMapRoutesPixels(), and StationsWndShowStationRating().

◆ PC_ROUGH_LAND

const uint8_t PC_ROUGH_LAND = 0x52
static

Dark green palette colour for rough land.

Definition at line 90 of file palette_func.h.

◆ PC_TREES

const uint8_t PC_TREES = 0x57
static

Green palette colour for trees.

Definition at line 95 of file palette_func.h.

Referenced by GetSmallMapVegetationPixels().

◆ PC_VERY_DARK_BLUE

const uint8_t PC_VERY_DARK_BLUE = 0x9A
static

Almost-black blue palette colour.

Definition at line 86 of file palette_func.h.

Referenced by SaveLoadWindow::DrawWidget().

◆ PC_VERY_DARK_BROWN

const uint8_t PC_VERY_DARK_BROWN = 0x56
static

Almost-black brown palette colour.

Definition at line 76 of file palette_func.h.

Referenced by GetSmallMapRoutesPixels().

◆ PC_VERY_DARK_RED

const uint8_t PC_VERY_DARK_RED = 0xB2
static

Almost-black red palette colour.

Definition at line 72 of file palette_func.h.

Referenced by NWidgetToolbarContainer::Draw().

◆ PC_VERY_LIGHT_YELLOW

const uint8_t PC_VERY_LIGHT_YELLOW = 0x45
static

Almost-white yellow palette colour.

Definition at line 82 of file palette_func.h.

Referenced by SmallMapWindow::DrawHorizMapIndicator(), and SmallMapWindow::DrawVertMapIndicator().

◆ PC_WATER

const uint8_t PC_WATER = 0xC9
static

Dark blue palette colour for water.

Definition at line 96 of file palette_func.h.

Referenced by GetSmallMapOwnerPixels().

◆ PC_WHITE

◆ PC_YELLOW

const uint8_t PC_YELLOW = 0xBF
static

Yellow palette colour.

Definition at line 80 of file palette_func.h.

Referenced by GetSmallMapRoutesPixels().