|
OpenTTD Source
14.0-beta1
|
#include "stdafx.h"#include "gfx_layout.h"#include "progress.h"#include "zoom_func.h"#include "blitter/factory.hpp"#include "video/video_driver.hpp"#include "strings_func.h"#include "settings_type.h"#include "network/network.h"#include "network/network_func.h"#include "window_gui.h"#include "window_func.h"#include "newgrf_debug.h"#include "core/backup_type.hpp"#include "core/container_func.hpp"#include "viewport_func.h"#include "table/string_colours.h"#include "table/sprites.h"#include "table/control_codes.h"#include "safeguards.h"Go to the source code of this file.
Typedefs | |
| typedef std::pair< Point, Point > | LineSegment |
Functions | |
| static void | GfxMainBlitterViewport (const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub=nullptr, SpriteID sprite_id=SPR_CURSOR_MOUSE) |
| static void | GfxMainBlitter (const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub=nullptr, SpriteID sprite_id=SPR_CURSOR_MOUSE, ZoomLevel zoom=ZOOM_LVL_NORMAL) |
| void | GfxScroll (int left, int top, int width, int height, int xo, int yo) |
| void | GfxFillRect (int left, int top, int right, int bottom, int colour, FillRectMode mode) |
| Applies a certain FillRectMode-operation to a rectangle [left, right] x [top, bottom] on the screen. More... | |
| static std::vector< LineSegment > | MakePolygonSegments (const std::vector< Point > &shape, Point offset) |
| Make line segments from a polygon defined by points, translated by an offset. More... | |
| void | GfxFillPolygon (const std::vector< Point > &shape, int colour, FillRectMode mode) |
| Fill a polygon with colour. More... | |
| static void | GfxDoDrawLine (void *video, int x, int y, int x2, int y2, int screen_width, int screen_height, uint8_t colour, int width, int dash=0) |
| Check line clipping by using a linear equation and draw the visible part of the line given by x/y and x2/y2. More... | |
| static bool | GfxPreprocessLine (DrawPixelInfo *dpi, int &x, int &y, int &x2, int &y2, int width) |
| Align parameters of a line to the given DPI and check simple clipping. More... | |
| void | GfxDrawLine (int x, int y, int x2, int y2, int colour, int width, int dash) |
| void | GfxDrawLineUnscaled (int x, int y, int x2, int y2, int colour) |
| void | DrawBox (int x, int y, int dx1, int dy1, int dx2, int dy2, int dx3, int dy3) |
| Draws the projection of a parallelepiped. More... | |
| void | DrawRectOutline (const Rect &r, int colour, int width, int dash) |
| Draw the outline of a Rect. More... | |
| static void | SetColourRemap (TextColour colour) |
| Set the colour remap to be for the given colour. More... | |
| static int | DrawLayoutLine (const ParagraphLayouter::Line &line, int y, int left, int right, StringAlignment align, bool underline, bool truncation) |
| Drawing routine for drawing a laid out line of text. More... | |
| int | DrawString (int left, int right, int top, std::string_view str, TextColour colour, StringAlignment align, bool underline, FontSize fontsize) |
| Draw string, possibly truncated to make it fit in its allocated space. More... | |
| int | DrawString (int left, int right, int top, StringID str, TextColour colour, StringAlignment align, bool underline, FontSize fontsize) |
| Draw string, possibly truncated to make it fit in its allocated space. More... | |
| int | GetStringHeight (std::string_view str, int maxw, FontSize fontsize) |
| Calculates height of string (in pixels). More... | |
| int | GetStringHeight (StringID str, int maxw) |
| Calculates height of string (in pixels). More... | |
| int | GetStringLineCount (StringID str, int maxw) |
| Calculates number of lines of string. More... | |
| Dimension | GetStringMultiLineBoundingBox (StringID str, const Dimension &suggestion) |
| Calculate string bounding box for multi-line strings. More... | |
| Dimension | GetStringMultiLineBoundingBox (std::string_view str, const Dimension &suggestion) |
| Calculate string bounding box for multi-line strings. More... | |
| int | DrawStringMultiLine (int left, int right, int top, int bottom, std::string_view str, TextColour colour, StringAlignment align, bool underline, FontSize fontsize) |
| Draw string, possibly over multiple lines. More... | |
| int | DrawStringMultiLine (int left, int right, int top, int bottom, StringID str, TextColour colour, StringAlignment align, bool underline, FontSize fontsize) |
| Draw string, possibly over multiple lines. More... | |
| Dimension | GetStringBoundingBox (std::string_view str, FontSize start_fontsize) |
| Return the string dimension in pixels. More... | |
| Dimension | GetStringBoundingBox (StringID strid, FontSize start_fontsize) |
| Get bounding box of a string. More... | |
| uint | GetStringListWidth (const StringID *list, FontSize fontsize) |
| Get maximum width of a list of strings. More... | |
| Point | GetCharPosInString (std::string_view str, const char *ch, FontSize start_fontsize) |
| Get the leading corner of a character in a single-line string relative to the start of the string. More... | |
| ptrdiff_t | GetCharAtPosition (std::string_view str, int x, FontSize start_fontsize) |
| Get the character from a string that is drawn at a specific position. More... | |
| void | DrawCharCentered (char32_t c, const Rect &r, TextColour colour) |
| Draw single character horizontally centered around (x,y) More... | |
| Dimension | GetSpriteSize (SpriteID sprid, Point *offset, ZoomLevel zoom) |
| Get the size of a sprite. More... | |
| static BlitterMode | GetBlitterMode (PaletteID pal) |
| Helper function to get the blitter mode for different types of palettes. More... | |
| void | DrawSpriteViewport (SpriteID img, PaletteID pal, int x, int y, const SubSprite *sub) |
| Draw a sprite in a viewport. More... | |
| void | DrawSprite (SpriteID img, PaletteID pal, int x, int y, const SubSprite *sub, ZoomLevel zoom) |
| Draw a sprite, not in a viewport. More... | |
| template<int ZOOM_BASE, bool SCALED_XY> | |
| static void | GfxBlitter (const Sprite *const sprite, int x, int y, BlitterMode mode, const SubSprite *const sub, SpriteID sprite_id, ZoomLevel zoom, const DrawPixelInfo *dst=nullptr) |
| The code for setting up the blitter mode and sprite information before finally drawing the sprite. More... | |
| std::unique_ptr< uint32_t[]> | DrawSpriteToRgbaBuffer (SpriteID spriteId, ZoomLevel zoom) |
| Draws a sprite to a new RGBA buffer (see Colour union) instead of drawing to the screen. More... | |
| void | LoadStringWidthTable (bool monospace) |
| Initialize _stringwidth_table cache. More... | |
| byte | GetCharacterWidth (FontSize size, char32_t key) |
| Return width of character glyph. More... | |
| byte | GetDigitWidth (FontSize size) |
| Return the maximum width of single digit. More... | |
| void | GetBroadestDigit (uint *front, uint *next, FontSize size) |
| Determine the broadest digits for guessing the maximum width of a n-digit number. More... | |
| void | ScreenSizeChanged () |
| void | UndrawMouseCursor () |
| void | DrawMouseCursor () |
| void | RedrawScreenRect (int left, int top, int right, int bottom) |
| Repaints a specific rectangle of the screen. More... | |
| void | DrawDirtyBlocks () |
| Repaints the rectangle blocks which are marked as 'dirty'. More... | |
| void | AddDirtyBlock (int left, int top, int right, int bottom) |
| Extend the internal _invalid_rect rectangle to contain the rectangle defined by the given parameters. More... | |
| void | MarkWholeScreenDirty () |
| This function mark the whole screen as dirty. More... | |
| bool | FillDrawPixelInfo (DrawPixelInfo *n, int left, int top, int width, int height) |
| Set up a clipping area for only drawing into a certain area. More... | |
| void | UpdateCursorSize () |
| Update cursor dimension. More... | |
| static void | SetCursorSprite (CursorID cursor, PaletteID pal) |
| Switch cursor to different sprite. More... | |
| static void | SwitchAnimatedCursor () |
| void | CursorTick () |
| void | SetMouseCursorBusy (bool busy) |
| Set or unset the ZZZ cursor. More... | |
| void | SetMouseCursor (CursorID sprite, PaletteID pal) |
| Assign a single non-animated sprite to the cursor. More... | |
| void | SetAnimatedMouseCursor (const AnimCursor *table) |
| Assign an animation to the cursor. More... | |
| bool | ChangeResInGame (int width, int height) |
| bool | ToggleFullScreen (bool fs) |
| void | SortResolutions () |
| void | UpdateGUIZoom () |
| Resolve GUI zoom level, if auto-suggestion is requested. | |
| bool | AdjustGUIZoom (bool automatic) |
| Resolve GUI zoom level and adjust GUI to new zoom, if auto-suggestion is requested. More... | |
| void | ChangeGameSpeed (bool enable_fast_forward) |
Variables | |
| byte | _dirkeys |
| 1 = left, 2 = up, 4 = right, 8 = down | |
| bool | _fullscreen |
| byte | _support8bpp |
| CursorVars | _cursor |
| bool | _ctrl_pressed |
| Is Ctrl pressed? | |
| bool | _shift_pressed |
| Is Shift pressed? | |
| uint16_t | _game_speed = 100 |
| Current game-speed; 100 is 1x, 0 is infinite. | |
| bool | _left_button_down |
| Is left mouse button pressed? | |
| bool | _left_button_clicked |
| Is left mouse button clicked? | |
| bool | _right_button_down |
| Is right mouse button pressed? | |
| bool | _right_button_clicked |
| Is right mouse button clicked? | |
| DrawPixelInfo | _screen |
| bool | _screen_disable_anim = false |
| Disable palette animation (important for 32bpp-anim blitter during giant screenshot) | |
| std::atomic< bool > | _exit_game |
| GameMode | _game_mode |
| SwitchMode | _switch_mode |
| The next mainloop command. | |
| std::chrono::steady_clock::time_point | _switch_mode_time |
| The time when the switch mode was requested. | |
| PauseMode | _pause_mode |
| The current pause mode. | |
| static byte | _stringwidth_table [FS_END][224] |
| Cache containing width of often used characters. More... | |
| DrawPixelInfo * | _cur_dpi |
| static ReusableBuffer< uint8_t > | _cursor_backup |
| ZoomLevel | _gui_zoom = ZOOM_LVL_OUT_4X |
| GUI Zoom level. | |
| ZoomLevel | _font_zoom = _gui_zoom |
| Sprite font Zoom level (not clamped) | |
| int | _gui_scale = MIN_INTERFACE_SCALE |
| GUI scale, 100 is 100%. | |
| int | _gui_scale_cfg |
| GUI scale in config. | |
| static Rect | _invalid_rect |
| The rect for repaint. More... | |
| static const byte * | _colour_remap_ptr |
| static byte | _string_colourremap [3] |
| Recoloursprite for stringdrawing. The grf loader ensures that SpriteType::Font sprites only use colours 0 to 2. | |
| static const uint | DIRTY_BLOCK_HEIGHT = 8 |
| static const uint | DIRTY_BLOCK_WIDTH = 64 |
| static uint | _dirty_bytes_per_line = 0 |
| static byte * | _dirty_blocks = nullptr |
| uint | _dirty_block_colour |
Handling of drawing text and other gfx related stuff.
Definition in file gfx.cpp.
| bool AdjustGUIZoom | ( | bool | automatic | ) |
Resolve GUI zoom level and adjust GUI to new zoom, if auto-suggestion is requested.
| automatic | Set if the change is occuring due to OS DPI scaling being changed. |
Definition at line 1814 of file gfx.cpp.
References _font_zoom, _gui_scale, _gui_zoom, VideoDriver::ClearSystemSprites(), VideoDriver::GetInstance(), GfxClearFontSpriteCache(), UpdateCursorSize(), and UpdateGUIZoom().
Referenced by GameOptionsWindow::OnMouseLoop().
| void DrawBox | ( | int | x, |
| int | y, | ||
| int | dx1, | ||
| int | dy1, | ||
| int | dx2, | ||
| int | dy2, | ||
| int | dx3, | ||
| int | dy3 | ||
| ) |
Draws the projection of a parallelepiped.
This can be used to draw boxes in world coordinates.
| x | Screen X-coordinate of top front corner. |
| y | Screen Y-coordinate of top front corner. |
| dx1 | Screen X-length of first edge. |
| dy1 | Screen Y-length of first edge. |
| dx2 | Screen X-length of second edge. |
| dy2 | Screen Y-length of second edge. |
| dx3 | Screen X-length of third edge. |
| dy3 | Screen Y-length of third edge. |
Definition at line 417 of file gfx.cpp.
Referenced by ViewportDrawBoundingBoxes().
| void DrawCharCentered | ( | char32_t | c, |
| const Rect & | r, | ||
| TextColour | colour | ||
| ) |
Draw single character horizontally centered around (x,y)
| c | Character (glyph) to draw |
| r | Rectangle to draw character within |
| colour | Colour to use, for details see _string_colourmap in table/palettes.h or docs/ottd-colourtext-palette.png or the enum TextColour in gfx_type.h |
Definition at line 924 of file gfx.cpp.
References SetColourRemap().
|
static |
Drawing routine for drawing a laid out line of text.
| line | String to draw. |
| y | The top most position to draw on. |
| left | The left most position to draw on. |
| right | The right most position to draw on. |
| align | The alignment of the string when drawing left-to-right. In the case a right-to-left language is chosen this is inverted so it will be drawn in the right direction. |
| underline | Whether to underline what has been drawn or not. |
| truncation | Whether to perform string truncation or not. |
| void DrawRectOutline | ( | const Rect & | r, |
| int | colour, | ||
| int | width, | ||
| int | dash | ||
| ) |
| void DrawSprite | ( | SpriteID | img, |
| PaletteID | pal, | ||
| int | x, | ||
| int | y, | ||
| const SubSprite * | sub, | ||
| ZoomLevel | zoom | ||
| ) |
Draw a sprite, not in a viewport.
| img | Image number to draw |
| pal | Palette to use. |
| x | Left coordinate of image in pixels |
| y | Top coordinate of image in pixels |
| sub | If available, draw only specified part of the sprite |
| zoom | Zoom level of sprite |
Definition at line 1007 of file gfx.cpp.
Referenced by StoryBookWindow::DrawActionElement().
Draws a sprite to a new RGBA buffer (see Colour union) instead of drawing to the screen.
| spriteId | The sprite to draw. |
| zoom | The zoom level at which to draw the sprites. |
Definition at line 1163 of file gfx.cpp.
References _settings_client, GB(), BlitterFactory::GetCurrentBlitter(), Blitter::GetScreenDepth(), ClientSettings::gui, SPRITE_WIDTH, and GUISettings::zoom_max.
| int DrawString | ( | int | left, |
| int | right, | ||
| int | top, | ||
| std::string_view | str, | ||
| TextColour | colour, | ||
| StringAlignment | align, | ||
| bool | underline, | ||
| FontSize | fontsize | ||
| ) |
Draw string, possibly truncated to make it fit in its allocated space.
| left | The left most position to draw on. |
| right | The right most position to draw on. |
| top | The top most position to draw on. |
| str | String to draw. |
| colour | Colour used for drawing the string, for details see _string_colourmap in table/palettes.h or docs/ottd-colourtext-palette.png or the enum TextColour in gfx_type.h |
| align | The alignment of the string when drawing left-to-right. In the case a right-to-left language is chosen this is inverted so it will be drawn in the right direction. |
| underline | Whether to underline what has been drawn or not. |
| fontsize | The size of the initial characters. |
Definition at line 658 of file gfx.cpp.
References FS_LARGE, FS_MONO, FS_NORMAL, FS_SMALL, and GetCharacterHeight().
Referenced by CargoesField::Draw(), TownAuthorityWindow::DrawActions(), DrawCaption(), StationViewWindow::DrawCargoRatings(), DrawCategory(), NetworkContentListWindow::DrawDetails(), DrawFrame(), IndustryViewWindow::DrawInfo(), DrawInset(), GoalListWindow::DrawListColumn(), DrawPrice(), TownAuthorityWindow::DrawRatings(), DrawString(), TimetableWindow::DrawSummaryPanel(), and DrawText().
| int DrawString | ( | int | left, |
| int | right, | ||
| int | top, | ||
| StringID | str, | ||
| TextColour | colour, | ||
| StringAlignment | align, | ||
| bool | underline, | ||
| FontSize | fontsize | ||
| ) |
Draw string, possibly truncated to make it fit in its allocated space.
| left | The left most position to draw on. |
| right | The right most position to draw on. |
| top | The top most position to draw on. |
| str | String to draw. |
| colour | Colour used for drawing the string, for details see _string_colourmap in table/palettes.h or docs/ottd-colourtext-palette.png or the enum TextColour in gfx_type.h |
| align | The alignment of the string when drawing left-to-right. In the case a right-to-left language is chosen this is inverted so it will be drawn in the right direction. |
| underline | Whether to underline what has been drawn or not. |
| fontsize | The size of the initial characters. |
Definition at line 694 of file gfx.cpp.
References DrawString(), and GetString().
| int DrawStringMultiLine | ( | int | left, |
| int | right, | ||
| int | top, | ||
| int | bottom, | ||
| std::string_view | str, | ||
| TextColour | colour, | ||
| StringAlignment | align, | ||
| bool | underline, | ||
| FontSize | fontsize | ||
| ) |
Draw string, possibly over multiple lines.
| left | The left most position to draw on. |
| right | The right most position to draw on. |
| top | The top most position to draw on. |
| bottom | The bottom most position to draw on. |
| str | String to draw. |
| colour | Colour used for drawing the string, for details see _string_colourmap in table/palettes.h or docs/ottd-colourtext-palette.png or the enum TextColour in gfx_type.h |
| align | The horizontal and vertical alignment of the string. |
| underline | Whether to underline all strings |
| fontsize | The size of the initial characters. |
Definition at line 775 of file gfx.cpp.
References Layouter::GetBounds().
Referenced by StationViewWindow::DrawAcceptedCargo(), StationViewWindow::DrawCargoRatings(), DrawStringMultiLine(), IConsoleWindow::OnPaint(), and HighScoreWindow::OnPaint().
| int DrawStringMultiLine | ( | int | left, |
| int | right, | ||
| int | top, | ||
| int | bottom, | ||
| StringID | str, | ||
| TextColour | colour, | ||
| StringAlignment | align, | ||
| bool | underline, | ||
| FontSize | fontsize | ||
| ) |
Draw string, possibly over multiple lines.
| left | The left most position to draw on. |
| right | The right most position to draw on. |
| top | The top most position to draw on. |
| bottom | The bottom most position to draw on. |
| str | String to draw. |
| colour | Colour used for drawing the string, for details see _string_colourmap in table/palettes.h or docs/ottd-colourtext-palette.png or the enum TextColour in gfx_type.h |
| align | The horizontal and vertical alignment of the string. |
| underline | Whether to underline all strings |
| fontsize | The size of the initial characters. |
Definition at line 837 of file gfx.cpp.
References DrawStringMultiLine(), and GetString().
| bool FillDrawPixelInfo | ( | DrawPixelInfo * | n, |
| int | left, | ||
| int | top, | ||
| int | width, | ||
| int | height | ||
| ) |
Set up a clipping area for only drawing into a certain area.
To do this, Fill a DrawPixelInfo object with the supplied relative rectangle, backup the original (calling) _cur_dpi and assign the just returned DrawPixelInfo _cur_dpi. When you are done, give restore _cur_dpi's original value
| *n | the DrawPixelInfo that will be the clipping rectangle box allowed for drawing |
| left,top,width,height | the relative coordinates of the clipping rectangle relative to the current _cur_dpi. This will most likely be the offset from the calling window coordinates |
Definition at line 1571 of file gfx.cpp.
References BlitterFactory::GetCurrentBlitter().
Referenced by NWidgetMatrix::Draw(), NWidgetLeaf::Draw(), DrawRoadVehImage(), DrawTrainImage(), and ScriptDebugWindow::DrawWidgetLog().
|
static |
| void GetBroadestDigit | ( | uint * | front, |
| uint * | next, | ||
| FontSize | size | ||
| ) |
Determine the broadest digits for guessing the maximum width of a n-digit number.
| [out] | front | Broadest digit, which is not 0. (Use this digit as first digit for numbers with more than one digit.) |
| [out] | next | Broadest digit, including 0. (Use this digit for all digits, except the first one; or for numbers with only one digit.) |
| size | Font of the digit |
Definition at line 1278 of file gfx.cpp.
References GetCharacterWidth().
Referenced by SetDParamMaxDigits().
| byte GetCharacterWidth | ( | FontSize | size, |
| char32_t | key | ||
| ) |
Return width of character glyph.
| size | Font of the character |
| key | Character code glyph |
Definition at line 1250 of file gfx.cpp.
References _stringwidth_table, and GetGlyphWidth().
Referenced by GetBroadestDigit(), and GetDigitWidth().
| ptrdiff_t GetCharAtPosition | ( | std::string_view | str, |
| int | x, | ||
| FontSize | start_fontsize | ||
| ) |
Get the character from a string that is drawn at a specific position.
| str | String to test. |
| x | Position relative to the start of the string. |
| start_fontsize | Font size to start the text with. |
Get the leading corner of a character in a single-line string relative to the start of the string.
| str | String containing the character. |
| ch | Pointer to the character in the string. |
| start_fontsize | Font size to start the text with. |
Definition at line 892 of file gfx.cpp.
Referenced by Textbuf::UpdateCaretPosition(), and Textbuf::UpdateMarkedText().
| byte GetDigitWidth | ( | FontSize | size | ) |
Return the maximum width of single digit.
| size | Font of the digit |
Definition at line 1263 of file gfx.cpp.
References GetCharacterWidth().
Get the size of a sprite.
| sprid | Sprite to examine. | |
| [out] | offset | Optionally returns the sprite position offset. |
| zoom | The zoom level applicable to the sprite. |
Definition at line 941 of file gfx.cpp.
Referenced by VehicleGroupWindow::ComputeGroupInfoSize(), StoryBookWindow::DrawActionElement(), NetworkClientListWindow::DrawCompany(), DrawCompanyManagerFace(), BuildSignalWindow::DrawSignalSprite(), TimetableWindow::DrawTimetablePanel(), BaseVehicleListWindow::DrawVehicleListItems(), DrawVehicleRefitWindow(), GetLargestCargoIconSize(), StoryBookWindow::GetPageElementHeight(), GetScaledSpriteSize(), MakeCompanyButtonRows(), MakeNWidgetCompanyLines(), TownAuthorityWindow::OnInit(), CheatWindow::OnInit(), NetworkGameWindow::OnInit(), NetworkContentListWindow::OnInit(), SelectCompanyManagerFaceWindow::OnInit(), and GameSettingsWindow::OnInit().
Return the string dimension in pixels.
The height and width are returned in a single Dimension value. TINYFONT, BIGFONT modifiers are only supported as the first character of the string. The returned dimensions are therefore a rough estimation correct for all the current strings but not every possible combination
| str | string to calculate pixel-width |
| start_fontsize | Fontsize to start the text with |
Definition at line 852 of file gfx.cpp.
Referenced by DrawCaption(), DrawText(), TimetableWindow::DrawTimetablePanel(), BaseVehicleListWindow::GetActionDropdownSize(), IndustryDirectoryWindow::GetIndustryListWidth(), ExpensesList::GetListWidth(), GetMaxCategoriesWidth(), StoryBookWindow::GetPageElementFloatWidth(), StoryBookWindow::GetPageElementHeight(), GetStringBoundingBox(), GetStringListWidth(), BaseGraphWindow::GetYLabelWidth(), TextfileWindow::LoadText(), BaseVehicleListWindow::OnInit(), IConsoleWindow::OnInit(), SelectCompanyManagerFaceWindow::OnInit(), IndustryCargoesWindow::OnInit(), RefitWindow::OnInvalidateData(), ScriptDebugWindow::OnInvalidateData(), GoalListWindow::OnPaint(), NWidgetBackground::SetupSmallestSize(), ViewportSign::UpdatePosition(), and Textbuf::UpdateWidth().
Get bounding box of a string.
Uses parameters set by SetDParam if needed. Has the same restrictions as GetStringBoundingBox(std::string_view str, FontSize start_fontsize).
| strid | String to examine. |
Definition at line 864 of file gfx.cpp.
References GetString(), and GetStringBoundingBox().
| int GetStringHeight | ( | std::string_view | str, |
| int | maxw, | ||
| FontSize | fontsize | ||
| ) |
Calculates height of string (in pixels).
The string is changed to a multiline string if needed.
| str | string to check |
| maxw | maximum string width |
Definition at line 705 of file gfx.cpp.
Referenced by StoryBookWindow::GetHeadHeight(), SettingEntry::GetMaxHelpHeight(), StoryBookWindow::GetPageElementHeight(), GetStringHeight(), and TextfileWindow::ReflowContent().
| int GetStringHeight | ( | StringID | str, |
| int | maxw | ||
| ) |
Calculates height of string (in pixels).
The string is changed to a multiline string if needed.
| str | string to check |
| maxw | maximum string width |
Definition at line 718 of file gfx.cpp.
References GetString(), and GetStringHeight().
| int GetStringLineCount | ( | StringID | str, |
| int | maxw | ||
| ) |
Calculates number of lines of string.
The string is changed to a multiline string if needed.
| str | string to check |
| maxw | maximum string width |
Definition at line 729 of file gfx.cpp.
References GetString().
Get maximum width of a list of strings.
| list | List of strings, terminated with INVALID_STRING_ID. |
| fontsize | Font size to use. |
Definition at line 875 of file gfx.cpp.
References GetStringBoundingBox(), and INVALID_STRING_ID.
|
static |
The code for setting up the blitter mode and sprite information before finally drawing the sprite.
| sprite | The sprite to draw. |
| x | The X location to draw. |
| y | The Y location to draw. |
| mode | The settings for the blitter to pass. |
| sub | Whether to only draw a sub set of the sprite. |
| zoom | The zoom level at which to draw the sprites. |
| dst | Optional parameter for a different blitting destination. |
| ZOOM_BASE | The factor required to get the sub sprite information into the right size. |
| SCALED_XY | Whether the X and Y are scaled or unscaled. |
|
inlinestatic |
Check line clipping by using a linear equation and draw the visible part of the line given by x/y and x2/y2.
| video | Destination pointer to draw into. |
| x | X coordinate of first point. |
| y | Y coordinate of first point. |
| x2 | X coordinate of second point. |
| y2 | Y coordinate of second point. |
| screen_width | With of the screen to check clipping against. |
| screen_height | Height of the screen to check clipping against. |
| colour | Colour of the line. |
| width | Width of the line. |
| dash | Length of dashes for dashed lines. 0 means solid line. |
| void GfxFillPolygon | ( | const std::vector< Point > & | shape, |
| int | colour, | ||
| FillRectMode | mode | ||
| ) |
Fill a polygon with colour.
The odd-even winding rule is used, i.e. self-intersecting polygons will have holes in them. Left and top edges are inclusive, right and bottom edges are exclusive.
| shape | List of points on the polygon. |
| colour | An 8 bit palette index (FILLRECT_OPAQUE and FILLRECT_CHECKER) or a recolour spritenumber (FILLRECT_RECOLOUR). |
| mode | FILLRECT_OPAQUE: Fill the polygon with the specified colour. FILLRECT_CHECKER: Fill every other pixel with the specified colour, in a checkerboard pattern. FILLRECT_RECOLOUR: Apply a recolour sprite to every pixel in the polygon. |
Definition at line 209 of file gfx.cpp.
References BlitterFactory::GetCurrentBlitter().
| void GfxFillRect | ( | int | left, |
| int | top, | ||
| int | right, | ||
| int | bottom, | ||
| int | colour, | ||
| FillRectMode | mode | ||
| ) |
Applies a certain FillRectMode-operation to a rectangle [left, right] x [top, bottom] on the screen.
| left | Minimum X (inclusive) |
| top | Minimum Y (inclusive) |
| right | Maximum X (inclusive) |
| bottom | Maximum Y (inclusive) |
| colour | A 8 bit palette index (FILLRECT_OPAQUE and FILLRECT_CHECKER) or a recolour spritenumber (FILLRECT_RECOLOUR) |
| mode | FILLRECT_OPAQUE: Fill the rectangle with the specified colour FILLRECT_CHECKER: Like FILLRECT_OPAQUE, but only draw every second pixel (used to grey out things) FILLRECT_RECOLOUR: Apply a recolour sprite to every pixel in the rectangle currently on screen |
Definition at line 113 of file gfx.cpp.
References BlitterFactory::GetCurrentBlitter().
Referenced by NWidgetMatrix::Draw(), NWidgetViewport::Draw(), NWidgetToolbarContainer::Draw(), DrawCaption(), NetworkContentListWindow::DrawDetails(), DrawFrame(), NetworkContentListWindow::DrawMatrix(), and IConsoleWindow::OnPaint().
|
inlinestatic |
Align parameters of a line to the given DPI and check simple clipping.
| dpi | Screen parameters to align with. |
| x | X coordinate of first point. |
| y | Y coordinate of first point. |
| x2 | X coordinate of second point. |
| y2 | Y coordinate of second point. |
| width | Width of the line. |
| void LoadStringWidthTable | ( | bool | monospace | ) |
Initialize _stringwidth_table cache.
| monospace | Whether to load the monospace cache or the normal fonts. |
Definition at line 1233 of file gfx.cpp.
Referenced by ReloadNewGRFData().
|
static |
Make line segments from a polygon defined by points, translated by an offset.
Entirely horizontal lines (start and end at same Y coordinate) are skipped, as they are irrelevant to scanline conversion algorithms. Generated line segments always have the lowest Y coordinate point first, i.e. original direction is lost.
| shape | The polygon to convert. |
| offset | Offset vector subtracted from all coordinates in the shape. |
| void SetAnimatedMouseCursor | ( | const AnimCursor * | table | ) |
Assign an animation to the cursor.
| table | Array of animation states. |
|
static |
Set the colour remap to be for the given colour.
| colour | the new colour of the remap. |
Definition at line 467 of file gfx.cpp.
Referenced by DrawCharCentered().
Assign a single non-animated sprite to the cursor.
| void SetMouseCursorBusy | ( | bool | busy | ) |
Set or unset the ZZZ cursor.
| busy | Whether to show the ZZZ cursor. |
Definition at line 1693 of file gfx.cpp.
Referenced by CleanupGeneration(), SaveFileDone(), and SaveFileStart().
| void UpdateCursorSize | ( | ) |
Update cursor dimension.
Called when changing cursor sprite resp. reloading grfs.
Definition at line 1621 of file gfx.cpp.
References GetMaxSpriteID(), and lengthof.
Referenced by AdjustGUIZoom().
|
static |
Cache containing width of often used characters.
Definition at line 52 of file gfx.cpp.
Referenced by GetCharacterWidth().