OpenTTD Source  20241121-master-g67a0fccfad
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. More...
 

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. More...
 
void GfxInitPalettes ()
 
uint8_t GetNearestColourIndex (uint8_t r, uint8_t g, uint8_t b)
 Get nearest colour palette index from an RGB colour. More...
 
uint8_t GetNearestColourIndex (const Colour colour)
 
bool IsValidColours (Colours colours)
 Checks if a Colours value is valid. More...
 
TextColour GetContrastColour (uint8_t background, uint8_t threshold=128)
 Determine a contrasty text colour for a coloured background. More...
 
uint8_t GetColourGradient (Colours colour, ColourShade shade)
 Get colour gradient palette index. More...
 
void SetColourGradient (Colours colour, ColourShade shade, uint8_t palette_colour)
 Set colour gradient palette index. More...
 

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.

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_Base::CheckPaletteAnim(), VideoDriver_SDL::CheckPaletteAnim(), VideoDriver_Win32Base::CheckPaletteAnim(), and VideoDriver_SDL_Base::ClientSizeChanged().

◆ GetColourGradient()

uint8_t GetColourGradient ( Colours  colour,
ColourShade  shade 
)

Get colour gradient palette index.

Parameters
colourColour.
shadeShade level from 1 to 7.
Returns
palette index of colour.

Definition at line 314 of file palette.cpp.

Referenced by NWidgetMatrix::Draw(), DrawCaption(), DrawFrame(), LinkGraphOverlay::DrawStationDots(), and GetDrawStringCompanyColour().

◆ 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, and Palette::palette.

◆ GetNearestColourIndex()

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.

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