summaryrefslogtreecommitdiff
path: root/src/gfx.h
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-12-23 10:56:02 +0000
committerrubidium <rubidium@openttd.org>2007-12-23 10:56:02 +0000
commita773d45885eac803e794c622a4dfae3f03cc5cb1 (patch)
tree38db428e795daef4055965543d541fc03dc4b9d8 /src/gfx.h
parent82d240e300e6fb01b79a90c5948942466b6a442d (diff)
downloadopenttd-a773d45885eac803e794c622a4dfae3f03cc5cb1.tar.xz
(svn r11684) -Codechange: split gfx.h in a type and functional header.
Diffstat (limited to 'src/gfx.h')
-rw-r--r--src/gfx.h378
1 files changed, 0 insertions, 378 deletions
diff --git a/src/gfx.h b/src/gfx.h
deleted file mode 100644
index a06a00d30..000000000
--- a/src/gfx.h
+++ /dev/null
@@ -1,378 +0,0 @@
-/* $Id$ */
-
-/** @file gfx.h */
-
-/**
- * @defgroup dirty Dirty
- *
- * Handles the repaint of some part of the screen.
- *
- * Some places in the code are called functions which makes something "dirty".
- * This has nothing to do with making a Tile or Window darker or less visible.
- * This term comes from memory caching and is used to define an object must
- * be repaint. If some data of an object (like a Tile, Window, Vehicle, whatever)
- * are changed which are so extensive the object must be repaint its marked
- * as "dirty". The video driver repaint this object instead of the whole screen
- * (this is btw. also possible if needed). This is used to avoid a
- * flickering of the screen by the video driver constantly repainting it.
- *
- * This whole mechanism is controlled by an rectangle defined in #_invalid_rect. This
- * rectangle defines the area on the screen which must be repaint. If a new object
- * needs to be repainted this rectangle is extended to 'catch' the object on the
- * screen. At some point (which is normaly uninteressted for patch writers) this
- * rectangle is send to the video drivers method
- * VideoDriver::MakeDirty and it is truncated back to an empty rectangle. At some
- * later point (which is uninteressted, too) the video driver
- * repaints all these saved rectangle instead of the whole screen and drop the
- * rectangle informations. Then a new round begins by marking objects "dirty".
- *
- * @see VideoDriver::MakeDirty
- * @see _invalid_rect
- * @see _screen
- */
-
-
-#ifndef GFX_H
-#define GFX_H
-
-#include "openttd.h"
-#include "core/math_func.hpp"
-#include "core/geometry_type.hpp"
-#include "core/enum_type.hpp"
-#include "zoom.hpp"
-
-enum WindowKeyCodes {
- WKC_SHIFT = 0x8000,
- WKC_CTRL = 0x4000,
- WKC_ALT = 0x2000,
- WKC_META = 0x1000,
-
- /* Special ones */
- WKC_NONE = 0,
- WKC_ESC = 1,
- WKC_BACKSPACE = 2,
- WKC_INSERT = 3,
- WKC_DELETE = 4,
-
- WKC_PAGEUP = 5,
- WKC_PAGEDOWN = 6,
- WKC_END = 7,
- WKC_HOME = 8,
-
- /* Arrow keys */
- WKC_LEFT = 9,
- WKC_UP = 10,
- WKC_RIGHT = 11,
- WKC_DOWN = 12,
-
- /* Return & tab */
- WKC_RETURN = 13,
- WKC_TAB = 14,
-
- /* Space */
- WKC_SPACE = 32,
-
- /* Function keys */
- WKC_F1 = 33,
- WKC_F2 = 34,
- WKC_F3 = 35,
- WKC_F4 = 36,
- WKC_F5 = 37,
- WKC_F6 = 38,
- WKC_F7 = 39,
- WKC_F8 = 40,
- WKC_F9 = 41,
- WKC_F10 = 42,
- WKC_F11 = 43,
- WKC_F12 = 44,
-
- /* Backquote is the key left of "1"
- * we only store this key here, no matter what character is really mapped to it
- * on a particular keyboard. (US keyboard: ` and ~ ; German keyboard: ^ and °) */
- WKC_BACKQUOTE = 45,
- WKC_PAUSE = 46,
-
- /* 0-9 are mapped to 48-57
- * A-Z are mapped to 65-90
- * a-z are mapped to 97-122 */
-
- /* Numerical keyboard */
- WKC_NUM_0 = 128,
- WKC_NUM_1 = 129,
- WKC_NUM_2 = 130,
- WKC_NUM_3 = 131,
- WKC_NUM_4 = 132,
- WKC_NUM_5 = 133,
- WKC_NUM_6 = 134,
- WKC_NUM_7 = 135,
- WKC_NUM_8 = 136,
- WKC_NUM_9 = 137,
- WKC_NUM_DIV = 138,
- WKC_NUM_MUL = 139,
- WKC_NUM_MINUS = 140,
- WKC_NUM_PLUS = 141,
- WKC_NUM_ENTER = 142,
- WKC_NUM_DECIMAL = 143,
-
- /* Other keys */
- WKC_SLASH = 144, ///< / Forward slash
- WKC_SEMICOLON = 145, ///< ; Semicolon
- WKC_EQUALS = 146, ///< = Equals
- WKC_L_BRACKET = 147, ///< [ Left square bracket
- WKC_BACKSLASH = 148, ///< \ Backslash
- WKC_R_BRACKET = 149, ///< ] Right square bracket
- WKC_SINGLEQUOTE = 150, ///< ' Single quote
- WKC_COMMA = 151, ///< , Comma
- WKC_PERIOD = 152, ///< . Period
- WKC_MINUS = 153, ///< - Minus
-};
-
-void GameLoop();
-
-void CreateConsole();
-
-/** A single sprite of a list of animated cursors */
-struct AnimCursor {
- static const CursorID LAST = MAX_UVALUE(CursorID);
- CursorID sprite; ///< Must be set to LAST_ANIM when it is the last sprite of the loop
- byte display_time; ///< Amount of ticks this sprite will be shown
-};
-
-struct CursorVars {
- Point pos, size, offs, delta; ///< position, size, offset from top-left, and movement
- Point draw_pos, draw_size; ///< position and size bounding-box for drawing
- SpriteID sprite; ///< current image of cursor
- SpriteID pal;
-
- int wheel; ///< mouse wheel movement
-
- /* We need two different vars to keep track of how far the scrollwheel moved.
- * OSX uses this for scrolling around the map. */
- int v_wheel;
- int h_wheel;
-
- const AnimCursor *animate_list; ///< in case of animated cursor, list of frames
- const AnimCursor *animate_cur; ///< in case of animated cursor, current frame
- uint animate_timeout; ///< in case of animated cursor, number of ticks to show the current cursor
-
- bool visible; ///< cursor is visible
- bool dirty; ///< the rect occupied by the mouse is dirty (redraw)
- bool fix_at; ///< mouse is moving, but cursor is not (used for scrolling)
- bool in_window; ///< mouse inside this window, determines drawing logic
-};
-
-struct DrawPixelInfo {
- void *dst_ptr;
- int left, top, width, height;
- int pitch;
- ZoomLevel zoom;
-};
-
-struct Colour {
- byte r;
- byte g;
- byte b;
-};
-
-
-
-extern byte _dirkeys; ///< 1 = left, 2 = up, 4 = right, 8 = down
-extern bool _fullscreen;
-extern CursorVars _cursor;
-extern bool _ctrl_pressed; ///< Is Ctrl pressed?
-extern bool _shift_pressed; ///< Is Shift pressed?
-extern byte _fast_forward;
-
-extern bool _left_button_down;
-extern bool _left_button_clicked;
-extern bool _right_button_down;
-extern bool _right_button_clicked;
-
-extern DrawPixelInfo _screen;
-
-extern int _pal_first_dirty;
-extern int _pal_count_dirty;
-extern int _num_resolutions;
-extern uint16 _resolutions[32][2];
-extern uint16 _cur_resolution[2];
-extern Colour _cur_palette[256];
-
-void HandleKeypress(uint32 key);
-void HandleMouseEvents();
-void CSleep(int milliseconds);
-void UpdateWindows();
-
-uint32 InteractiveRandom(); //< Used for random sequences that are not the same on the other end of the multiplayer link
-uint InteractiveRandomRange(uint max);
-void DrawChatMessage();
-void DrawMouseCursor();
-void ScreenSizeChanged();
-void HandleExitGameRequest();
-void GameSizeChanged();
-void UndrawMouseCursor();
-
-enum FontSize {
- FS_NORMAL,
- FS_SMALL,
- FS_LARGE,
- FS_END,
-};
-DECLARE_POSTFIX_INCREMENT(FontSize);
-
-void RedrawScreenRect(int left, int top, int right, int bottom);
-void GfxScroll(int left, int top, int width, int height, int xo, int yo);
-
-/**
- * Used to only draw a part of the sprite.
- * Draw the subsprite in the rect (sprite_x_offset + left, sprite_y_offset + top) to (sprite_x_offset + right, sprite_y_offset + bottom).
- * Both corners are included in the drawing area.
- */
-struct SubSprite {
- int left, top, right, bottom;
-};
-
-void DrawSprite(SpriteID img, SpriteID pal, int x, int y, const SubSprite *sub = NULL);
-
-/* XXX doesn't really belong here, but the only
- * consumers always use it in conjunction with DoDrawString() */
-#define UPARROW "\xEE\x8A\x80"
-#define DOWNARROW "\xEE\x8A\xAA"
-
-
-int DrawStringCentered(int x, int y, StringID str, uint16 color);
-int DrawStringCenteredTruncated(int xl, int xr, int y, StringID str, uint16 color);
-int DoDrawStringCentered(int x, int y, const char *str, uint16 color);
-
-int DrawString(int x, int y, StringID str, uint16 color);
-int DrawStringTruncated(int x, int y, StringID str, uint16 color, uint maxw);
-
-int DoDrawString(const char *string, int x, int y, uint16 color);
-int DoDrawStringTruncated(const char *str, int x, int y, uint16 color, uint maxw);
-
-void DrawStringCenterUnderline(int x, int y, StringID str, uint16 color);
-void DrawStringCenterUnderlineTruncated(int xl, int xr, int y, StringID str, uint16 color);
-
-int DrawStringRightAligned(int x, int y, StringID str, uint16 color);
-void DrawStringRightAlignedTruncated(int x, int y, StringID str, uint16 color, uint maxw);
-void DrawStringRightAlignedUnderline(int x, int y, StringID str, uint16 color);
-
-void GfxFillRect(int left, int top, int right, int bottom, int color);
-void GfxDrawLine(int left, int top, int right, int bottom, int color);
-void DrawBox(int x, int y, int dx1, int dy1, int dx2, int dy2, int dx3, int dy3);
-
-Dimension GetStringBoundingBox(const char *str);
-uint32 FormatStringLinebreaks(char *str, int maxw);
-void LoadStringWidthTable();
-void DrawStringMultiCenter(int x, int y, StringID str, int maxw);
-uint DrawStringMultiLine(int x, int y, StringID str, int maxw, int maxh = -1);
-
-/**
- * Let the dirty blocks repainting by the video driver.
- *
- * @ingroup dirty
- */
-void DrawDirtyBlocks();
-
-/**
- * Set a new dirty block.
- *
- * @ingroup dirty
- */
-void SetDirtyBlocks(int left, int top, int right, int bottom);
-
-/**
- * Marks the whole screen as dirty.
- *
- * @ingroup dirty
- */
-void MarkWholeScreenDirty();
-
-void GfxInitPalettes();
-
-bool FillDrawPixelInfo(DrawPixelInfo* n, int left, int top, int width, int height);
-
-/* window.cpp */
-void DrawOverlappedWindowForAll(int left, int top, int right, int bottom);
-
-void SetMouseCursor(SpriteID sprite, SpriteID pal);
-void SetAnimatedMouseCursor(const AnimCursor *table);
-void CursorTick();
-void DrawMouseCursor();
-void ScreenSizeChanged();
-void UndrawMouseCursor();
-bool ChangeResInGame(int w, int h);
-void SortResolutions(int count);
-void ToggleFullScreen(bool fs);
-
-/* gfx.cpp */
-#define ASCII_LETTERSTART 32
-extern FontSize _cur_fontsize;
-
-byte GetCharacterWidth(FontSize size, uint32 key);
-
-static inline byte GetCharacterHeight(FontSize size)
-{
- switch (size) {
- default: NOT_REACHED();
- case FS_NORMAL: return 10;
- case FS_SMALL: return 6;
- case FS_LARGE: return 18;
- }
-}
-
-VARDEF DrawPixelInfo *_cur_dpi;
-
-enum {
- COLOUR_DARK_BLUE,
- COLOUR_PALE_GREEN,
- COLOUR_PINK,
- COLOUR_YELLOW,
- COLOUR_RED,
- COLOUR_LIGHT_BLUE,
- COLOUR_GREEN,
- COLOUR_DARK_GREEN,
- COLOUR_BLUE,
- COLOUR_CREAM,
- COLOUR_MAUVE,
- COLOUR_PURPLE,
- COLOUR_ORANGE,
- COLOUR_BROWN,
- COLOUR_GREY,
- COLOUR_WHITE
-};
-
-/** Colour of the strings, see _string_colormap in table/palettes.h or docs/ottd-colourtext-palette.png */
-enum TextColour {
- TC_FROMSTRING = 0x00,
- TC_BLUE = 0x00,
- TC_SILVER = 0x01,
- TC_GOLD = 0x02,
- TC_RED = 0x03,
- TC_PURPLE = 0x04,
- TC_LIGHT_BROWN = 0x05,
- TC_ORANGE = 0x06,
- TC_GREEN = 0x07,
- TC_YELLOW = 0x08,
- TC_DARK_GREEN = 0x09,
- TC_CREAM = 0x0A,
- TC_BROWN = 0x0B,
- TC_WHITE = 0x0C,
- TC_LIGHT_BLUE = 0x0D,
- TC_GREY = 0x0E,
- TC_DARK_BLUE = 0x0F,
- TC_BLACK = 0x10,
-};
-
-/**
- * All 16 colour gradients
- * 8 colours per gradient from darkest (0) to lightest (7)
- */
-VARDEF byte _colour_gradient[16][8];
-
-VARDEF bool _use_dos_palette;
-
-enum StringColorFlags {
- IS_PALETTE_COLOR = 0x100, ///< color value is already a real palette color index, not an index of a StringColor
-};
-
-#endif /* GFX_H */