diff --git a/src/blitter/32bpp_anim.cpp b/src/blitter/32bpp_anim.cpp index 0533d9fbba..0b6e862302 100644 --- a/src/blitter/32bpp_anim.cpp +++ b/src/blitter/32bpp_anim.cpp @@ -1,8 +1,9 @@ /* $Id$ */ #include "../stdafx.h" -#include "../zoom.hpp" -#include "../gfx.h" +#include "../helpers.hpp" +#include "../gfx_func.h" +#include "../zoom_func.h" #include "../debug.h" #include "../table/sprites.h" #include "../video/video_driver.hpp" diff --git a/src/blitter/32bpp_base.cpp b/src/blitter/32bpp_base.cpp index ee1b76d1c8..0358ae5dcd 100644 --- a/src/blitter/32bpp_base.cpp +++ b/src/blitter/32bpp_base.cpp @@ -1,7 +1,7 @@ /* $Id$ */ #include "../stdafx.h" -#include "../gfx.h" +#include "../gfx_func.h" #include "32bpp_base.hpp" void *Blitter_32bppBase::MoveTo(const void *video, int x, int y) diff --git a/src/blitter/32bpp_optimized.cpp b/src/blitter/32bpp_optimized.cpp index 0535dd6400..2906158bed 100644 --- a/src/blitter/32bpp_optimized.cpp +++ b/src/blitter/32bpp_optimized.cpp @@ -1,8 +1,8 @@ /* $Id$ */ #include "../stdafx.h" -#include "../zoom.hpp" -#include "../gfx.h" +#include "../zoom_func.h" +#include "../gfx_func.h" #include "../debug.h" #include "../table/sprites.h" #include "32bpp_optimized.hpp" diff --git a/src/blitter/32bpp_simple.cpp b/src/blitter/32bpp_simple.cpp index f007890759..f5ecba8ad6 100644 --- a/src/blitter/32bpp_simple.cpp +++ b/src/blitter/32bpp_simple.cpp @@ -1,8 +1,8 @@ /* $Id$ */ #include "../stdafx.h" -#include "../zoom.hpp" -#include "../gfx.h" +#include "../gfx_func.h" +#include "../zoom_func.h" #include "../debug.h" #include "../table/sprites.h" #include "32bpp_simple.hpp" diff --git a/src/blitter/8bpp_base.cpp b/src/blitter/8bpp_base.cpp index 541e881762..7b813f6e72 100644 --- a/src/blitter/8bpp_base.cpp +++ b/src/blitter/8bpp_base.cpp @@ -1,7 +1,7 @@ /* $Id$ */ #include "../stdafx.h" -#include "../gfx.h" +#include "../gfx_func.h" #include "8bpp_base.hpp" void Blitter_8bppBase::DrawColorMappingRect(void *dst, int width, int height, int pal) diff --git a/src/blitter/8bpp_debug.cpp b/src/blitter/8bpp_debug.cpp index 3a9b52d2ab..da4b7998fc 100644 --- a/src/blitter/8bpp_debug.cpp +++ b/src/blitter/8bpp_debug.cpp @@ -3,8 +3,7 @@ /** @file 8bpp_debug.cpp */ #include "../stdafx.h" -#include "../zoom.hpp" -#include "../gfx.h" +#include "../zoom_func.h" #include "../functions.h" #include "8bpp_debug.hpp" diff --git a/src/blitter/8bpp_optimized.cpp b/src/blitter/8bpp_optimized.cpp index f6013fac29..b795e2891e 100644 --- a/src/blitter/8bpp_optimized.cpp +++ b/src/blitter/8bpp_optimized.cpp @@ -3,9 +3,9 @@ /** @file 8bpp_optimized.cpp */ #include "../stdafx.h" -#include "../zoom.hpp" -#include "../gfx.h" +#include "../zoom_func.h" #include "../debug.h" +#include "../helpers.hpp" #include "8bpp_optimized.hpp" static FBlitter_8bppOptimized iFBlitter_8bppOptimized; diff --git a/src/blitter/8bpp_simple.cpp b/src/blitter/8bpp_simple.cpp index 010066f8a8..77698cb1c2 100644 --- a/src/blitter/8bpp_simple.cpp +++ b/src/blitter/8bpp_simple.cpp @@ -3,8 +3,7 @@ /** @file 8bpp_simple.cpp */ #include "../stdafx.h" -#include "../zoom.hpp" -#include "../gfx.h" +#include "../zoom_func.h" #include "8bpp_simple.hpp" static FBlitter_8bppSimple iFBlitter_8bppSimple; diff --git a/src/blitter/base.hpp b/src/blitter/base.hpp index c9db1d9d47..cefaaa29f1 100644 --- a/src/blitter/base.hpp +++ b/src/blitter/base.hpp @@ -5,7 +5,7 @@ #include "../spritecache.h" #include "../spriteloader/spriteloader.hpp" -#include "../zoom.hpp" +#include "../zoom_type.h" enum BlitterMode { BM_NORMAL, diff --git a/src/bmp.cpp b/src/bmp.cpp index 59d559877b..dc6d11ef74 100644 --- a/src/bmp.cpp +++ b/src/bmp.cpp @@ -4,7 +4,6 @@ #include "stdafx.h" #include "openttd.h" -#include "gfx.h" #include "bmp.h" #include "core/bitmath_func.hpp" diff --git a/src/bmp.h b/src/bmp.h index d508078bc1..daf02c28dc 100644 --- a/src/bmp.h +++ b/src/bmp.h @@ -5,6 +5,8 @@ #ifndef BMP_H #define BMP_H +#include "gfx_type.h" + struct BmpInfo { uint32 offset; ///< offset of bitmap data from .bmp file begining uint32 width; ///< bitmap width diff --git a/src/bridge.h b/src/bridge.h index bd85356d68..628eb603e0 100644 --- a/src/bridge.h +++ b/src/bridge.h @@ -5,6 +5,8 @@ #ifndef BRIDGE_H #define BRIDGE_H +#include "gfx_type.h" + enum { MAX_BRIDGES = 13 }; diff --git a/src/cargotype.h b/src/cargotype.h index 56a974addd..fe55d90994 100644 --- a/src/cargotype.h +++ b/src/cargotype.h @@ -6,6 +6,7 @@ #define CARGOTYPE_H #include "cargo_type.h" +#include "gfx_type.h" typedef uint32 CargoLabel; diff --git a/src/command.cpp b/src/command.cpp index 1b9263b379..7cac47d156 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -17,6 +17,7 @@ #include "genworld.h" #include "newgrf_storage.h" #include "strings_func.h" +#include "gfx_func.h" const char *_cmd_text = NULL; diff --git a/src/command_type.h b/src/command_type.h index d2a7571e90..6a2aad3d01 100644 --- a/src/command_type.h +++ b/src/command_type.h @@ -7,6 +7,7 @@ #include "economy_type.h" #include "strings_type.h" +#include "tile_type.h" /** * Common return value for all commands. Wraps the cost and diff --git a/src/core/math_func.hpp b/src/core/math_func.hpp index 242b17b95d..c05e7ffebb 100644 --- a/src/core/math_func.hpp +++ b/src/core/math_func.hpp @@ -17,12 +17,6 @@ #undef abs #endif -/** - * The largest value that can be entered in a variable - * @param type the type of the variable - */ -#define MAX_UVALUE(type) ((type)~(type)0) - /** * Returns the maximum of two values. * diff --git a/src/engine.h b/src/engine.h index 6ee3d83767..9e28157409 100644 --- a/src/engine.h +++ b/src/engine.h @@ -10,6 +10,7 @@ #include "cargo_type.h" #include "vehicle_type.h" #include "command_type.h" +#include "gfx_type.h" #include "sound.h" enum RailVehicleTypes { diff --git a/src/fontcache.cpp b/src/fontcache.cpp index 81f68f0d8d..e693d0a7da 100644 --- a/src/fontcache.cpp +++ b/src/fontcache.cpp @@ -14,6 +14,7 @@ #include "helpers.hpp" #include "spriteloader/spriteloader.hpp" #include "blitter/factory.hpp" +#include "gfx_func.h" #ifdef WITH_FREETYPE diff --git a/src/fontcache.h b/src/fontcache.h index d5f283840b..8df1953186 100644 --- a/src/fontcache.h +++ b/src/fontcache.h @@ -3,7 +3,7 @@ #ifndef FONTCACHE_H #define FONTCACHE_H -#include "gfx.h" +#include "gfx_type.h" /** Get the SpriteID mapped to the given font size and key */ SpriteID GetUnicodeGlyph(FontSize size, uint32 key); diff --git a/src/functions.h b/src/functions.h index c4b42dc455..a1e136de97 100644 --- a/src/functions.h +++ b/src/functions.h @@ -8,6 +8,7 @@ #include "core/random_func.hpp" #include "command_type.h" #include "window_type.h" +#include "openttd.h" void UpdateTownMaxPass(Town *t); diff --git a/src/gfx.cpp b/src/gfx.cpp index 66043eec46..b84bf63b38 100644 --- a/src/gfx.cpp +++ b/src/gfx.cpp @@ -5,7 +5,7 @@ #include "stdafx.h" #include "openttd.h" #include "functions.h" -#include "gfx.h" +#include "gfx_func.h" #include "spritecache.h" #include "string.h" #include "table/palettes.h" @@ -15,7 +15,7 @@ #include "fontcache.h" #include "genworld.h" #include "debug.h" -#include "zoom.hpp" +#include "zoom_func.h" #include "texteff.hpp" #include "blitter/factory.hpp" #include "video/video_driver.hpp" @@ -41,6 +41,9 @@ int _pal_count_dirty; Colour _cur_palette[256]; byte _stringwidth_table[FS_END][224]; +DrawPixelInfo *_cur_dpi; +byte _colour_gradient[16][8]; +bool _use_dos_palette; static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub = NULL); @@ -561,7 +564,7 @@ Dimension GetStringBoundingBox(const char *str) * @param x offset from left side of the screen, if negative offset from the right side * @param y offset from top side of the screen, if negative offset from the bottom * @param real_color colour of the string, see _string_colormap in - * table/palettes.h or docs/ottd-colourtext-palette.png or the enum TextColour in gfx.h + * table/palettes.h or docs/ottd-colourtext-palette.png or the enum TextColour in gfx_type.h * @return the x-coordinates where the drawing has finished. If nothing is drawn * the originally passed x-coordinate is returned */ int DoDrawString(const char *string, int x, int y, uint16 real_color) diff --git a/src/gfx.h b/src/gfx_func.h similarity index 52% rename from src/gfx.h rename to src/gfx_func.h index a06a00d30c..837be1e0cb 100644 --- a/src/gfx.h +++ b/src/gfx_func.h @@ -1,6 +1,6 @@ /* $Id$ */ -/** @file gfx.h */ +/** @file gfx_func.h Functions related to the gfx engine. */ /** * @defgroup dirty Dirty @@ -32,150 +32,16 @@ */ -#ifndef GFX_H -#define GFX_H +#ifndef GFX_FUNC_H +#define GFX_FUNC_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 -}; +#include "gfx_type.h" +#include "strings_type.h" 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; @@ -211,26 +77,9 @@ 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 @@ -320,59 +169,14 @@ static inline byte GetCharacterHeight(FontSize size) } } -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, -}; +extern DrawPixelInfo *_cur_dpi; /** * All 16 colour gradients * 8 colours per gradient from darkest (0) to lightest (7) */ -VARDEF byte _colour_gradient[16][8]; +extern byte _colour_gradient[16][8]; -VARDEF bool _use_dos_palette; +extern 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 */ +#endif /* GFX_FUNC_H */ diff --git a/src/gfx_type.h b/src/gfx_type.h new file mode 100644 index 0000000000..4e6cf28ff9 --- /dev/null +++ b/src/gfx_type.h @@ -0,0 +1,210 @@ +/* $Id$ */ + +/** @file gfx_type.h Types related to the graphics and/or input devices. */ + +#ifndef GFX_TYPE_H +#define GFX_TYPE_H + +#include "core/enum_type.hpp" +#include "core/geometry_type.hpp" +#include "zoom_type.h" + +typedef uint32 SpriteID; ///< The number of a sprite, without mapping bits and colortables +struct PalSpriteID { + SpriteID sprite; + SpriteID pal; +}; +typedef int32 CursorID; + +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 +}; + +/** 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; +}; + +enum FontSize { + FS_NORMAL, + FS_SMALL, + FS_LARGE, + FS_END, +}; +DECLARE_POSTFIX_INCREMENT(FontSize); + +/** + * 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; +}; + +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, +}; + +enum StringColorFlags { + IS_PALETTE_COLOR = 0x100, ///< color value is already a real palette color index, not an index of a StringColor +}; + +#endif /* GFX_TYPE_H */ diff --git a/src/gfxinit.cpp b/src/gfxinit.cpp index a6694dece9..b98ea82230 100644 --- a/src/gfxinit.cpp +++ b/src/gfxinit.cpp @@ -16,6 +16,7 @@ #include "md5.h" #include "variables.h" #include "fontcache.h" +#include "gfx_func.h" #include struct MD5File { diff --git a/src/gfxinit.h b/src/gfxinit.h index a59cc62591..2ebeac69fe 100644 --- a/src/gfxinit.h +++ b/src/gfxinit.h @@ -5,6 +5,8 @@ #ifndef GFXINIT_H #define GFXINIT_H +#include "gfx_type.h" + void CheckExternalFiles(); void GfxLoadSprites(); void LoadSpritesIndexed(int file_index, uint *sprite_id, const SpriteID *index_tbl); diff --git a/src/gui.h b/src/gui.h index ad02b2ef50..d48e83ee1e 100644 --- a/src/gui.h +++ b/src/gui.h @@ -8,7 +8,7 @@ #include "string.h" #include "window_type.h" #include "vehicle_type.h" -#include "gfx.h" +#include "gfx_type.h" /* main_gui.cpp */ void CcPlaySound10(bool success, TileIndex tile, uint32 p1, uint32 p2); diff --git a/src/heightmap.cpp b/src/heightmap.cpp index b6a62edb47..b287748f6a 100644 --- a/src/heightmap.cpp +++ b/src/heightmap.cpp @@ -15,6 +15,7 @@ #include "saveload.h" #include "bmp.h" #include "helpers.hpp" +#include "gfx_func.h" /** * Convert RGB colors to Grayscale using 29.9% Red, 58.7% Green, 11.4% Blue diff --git a/src/main_gui.cpp b/src/main_gui.cpp index d511d197c2..a5505e2e50 100644 --- a/src/main_gui.cpp +++ b/src/main_gui.cpp @@ -50,6 +50,7 @@ #include "industry.h" #include "transparency.h" #include "strings_func.h" +#include "zoom_func.h" static int _rename_id = 1; static int _rename_what = -1; diff --git a/src/misc.cpp b/src/misc.cpp index 3742f971d0..1827f17d47 100644 --- a/src/misc.cpp +++ b/src/misc.cpp @@ -25,6 +25,7 @@ #include "group.h" #include "viewport.h" #include "economy_func.h" +#include "zoom_func.h" char _name_array[512][32]; diff --git a/src/misc/dbg_helpers.cpp b/src/misc/dbg_helpers.cpp index 2e95ee1b89..a07c5ce60a 100644 --- a/src/misc/dbg_helpers.cpp +++ b/src/misc/dbg_helpers.cpp @@ -2,6 +2,7 @@ /** @file dbg_helpers.cpp */ #include "../stdafx.h" +#include "../openttd.h" #include "../direction_type.h" #include "../rail.h" #include "../rail_map.h" diff --git a/src/misc_cmd.cpp b/src/misc_cmd.cpp index 2128a6f329..e8e0d76302 100644 --- a/src/misc_cmd.cpp +++ b/src/misc_cmd.cpp @@ -19,6 +19,7 @@ #include "player_face.h" #include "strings_func.h" #include "vehicle.h" +#include "gfx_func.h" /** Change the player's face. * @param tile unused diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index 94fb1ce255..9861c4d44e 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -40,6 +40,7 @@ #include "fileio.h" #include "fios.h" #include "tile_cmd.h" +#include "zoom_func.h" /* Variables to display file lists */ FiosItem *_fios_list; diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp index 81418592ea..20e8f18a9a 100644 --- a/src/network/network_gui.cpp +++ b/src/network/network_gui.cpp @@ -19,7 +19,6 @@ #include "../gui.h" #include "../window_gui.h" #include "../textbuf_gui.h" -#include "../gfx.h" #include "../variables.h" #include "network_server.h" #include "network_udp.h" diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 2520e6c019..8ad70d1752 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -47,6 +47,7 @@ #include "fios.h" #include "rail.h" #include "strings_func.h" +#include "gfx_func.h" /* TTDPatch extended GRF format codec * (c) Petr Baudis 2004 (GPL'd) diff --git a/src/newgrf_station.cpp b/src/newgrf_station.cpp index d0167c71bc..788a07207d 100644 --- a/src/newgrf_station.cpp +++ b/src/newgrf_station.cpp @@ -23,7 +23,7 @@ #include "cargotype.h" #include "town_map.h" #include "newgrf_town.h" -#include "gfx.h" +#include "gfx_func.h" static StationClass station_classes[STAT_CLASS_MAX]; diff --git a/src/oldloader.cpp b/src/oldloader.cpp index ba0ab61120..91711f3a1f 100644 --- a/src/oldloader.cpp +++ b/src/oldloader.cpp @@ -24,7 +24,7 @@ #include "newgrf_config.h" #include "ai/ai.h" #include "date.h" -#include "zoom.hpp" +#include "zoom_func.h" enum { HEADER_SIZE = 49, diff --git a/src/openttd.cpp b/src/openttd.cpp index cac5b908be..d1e85eb15b 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -64,6 +64,7 @@ #include "music/music_driver.hpp" #include "video/video_driver.hpp" #include "strings_func.h" +#include "zoom_func.h" #include "bridge_map.h" #include "clear_map.h" diff --git a/src/openttd.h b/src/openttd.h index 7ad6de5b90..3df5e7403e 100644 --- a/src/openttd.h +++ b/src/openttd.h @@ -26,12 +26,6 @@ struct DrawPixelInfo; struct Group; typedef byte VehicleOrderID; ///< The index of an order within its current vehicle (not pool related) typedef byte LandscapeID; -typedef uint32 SpriteID; ///< The number of a sprite, without mapping bits and colortables -struct PalSpriteID { - SpriteID sprite; - SpriteID pal; -}; -typedef int32 CursorID; typedef uint16 EngineID; typedef uint16 UnitID; diff --git a/src/os/macosx/splash.cpp b/src/os/macosx/splash.cpp index f342f32d50..747ea59b9f 100644 --- a/src/os/macosx/splash.cpp +++ b/src/os/macosx/splash.cpp @@ -5,7 +5,7 @@ #include "../../variables.h" #include "../../debug.h" #include "../../functions.h" -#include "../../gfx.h" +#include "../../gfx_func.h" #include "../../fileio.h" #include "../../blitter/factory.hpp" diff --git a/src/players.cpp b/src/players.cpp index b54ef6a6c8..320e8f0f05 100644 --- a/src/players.cpp +++ b/src/players.cpp @@ -29,7 +29,7 @@ #include "window_func.h" #include "tile_map.h" #include "strings_func.h" -#include "gfx.h" +#include "gfx_func.h" /** * Sets the local player and updates the patch settings that are set on a diff --git a/src/rail.h b/src/rail.h index bffda08e76..9975507fc8 100644 --- a/src/rail.h +++ b/src/rail.h @@ -8,9 +8,10 @@ #include "rail_type.h" #include "track_type.h" #include "vehicle_type.h" +#include "gfx_type.h" #include "core/bitmath_func.hpp" -#include "variables.h" #include "economy_func.h" +#include "variables.h" /** This struct contains all the info that is needed to draw and construct tracks. */ diff --git a/src/saveload.cpp b/src/saveload.cpp index 73e6887010..22cb8588dd 100644 --- a/src/saveload.cpp +++ b/src/saveload.cpp @@ -28,6 +28,7 @@ #include "table/strings.h" #include "window_func.h" #include "strings_func.h" +#include "gfx_func.h" #include extern const uint16 SAVEGAME_VERSION = 83; diff --git a/src/screenshot.cpp b/src/screenshot.cpp index f88c3b528b..c77dce7228 100644 --- a/src/screenshot.cpp +++ b/src/screenshot.cpp @@ -16,6 +16,7 @@ #include "blitter/factory.hpp" #include "fileio.h" #include "strings_func.h" +#include "zoom_func.h" char _screenshot_format_name[8]; uint _num_screenshot_formats; diff --git a/src/signs.cpp b/src/signs.cpp index 4ea465fb48..ba9e80786c 100644 --- a/src/signs.cpp +++ b/src/signs.cpp @@ -16,6 +16,7 @@ #include "misc/autoptr.hpp" #include "strings_func.h" #include "viewport.h" +#include "zoom_func.h" SignID _new_sign_id; uint _total_signs; diff --git a/src/smallmap_gui.cpp b/src/smallmap_gui.cpp index a5ba7d2058..0e6b340af0 100644 --- a/src/smallmap_gui.cpp +++ b/src/smallmap_gui.cpp @@ -27,6 +27,7 @@ #include "blitter/factory.hpp" #include "tunnelbridge_map.h" #include "strings_func.h" +#include "zoom_func.h" static const Widget _smallmap_widgets[] = { diff --git a/src/sprite.h b/src/sprite.h index 00ceed3ee1..686db5e75c 100644 --- a/src/sprite.h +++ b/src/sprite.h @@ -5,6 +5,8 @@ #ifndef SPRITE_H #define SPRITE_H +#include "gfx_type.h" + #define GENERAL_SPRITE_COLOR(color) ((color) + PALETTE_RECOLOR_START) #define PLAYER_SPRITE_COLOR(owner) (GENERAL_SPRITE_COLOR(_player_colors[owner])) diff --git a/src/spritecache.h b/src/spritecache.h index d264ae2106..371fc56017 100644 --- a/src/spritecache.h +++ b/src/spritecache.h @@ -5,6 +5,8 @@ #ifndef SPRITECACHE_H #define SPRITECACHE_H +#include "gfx_type.h" + struct Sprite { byte height; uint16 width; diff --git a/src/spriteloader/grf.cpp b/src/spriteloader/grf.cpp index e41732b505..e225ea52d2 100644 --- a/src/spriteloader/grf.cpp +++ b/src/spriteloader/grf.cpp @@ -3,7 +3,7 @@ /** @file grf.cpp */ #include "../stdafx.h" -#include "../gfx.h" +#include "../gfx_func.h" #include "../fileio.h" #include "../debug.h" #include "grf.hpp" diff --git a/src/spriteloader/png.cpp b/src/spriteloader/png.cpp index 7429dda686..0a626d5fe0 100644 --- a/src/spriteloader/png.cpp +++ b/src/spriteloader/png.cpp @@ -5,7 +5,7 @@ #ifdef WITH_PNG #include "../stdafx.h" -#include "../gfx.h" +#include "../gfx_func.h" #include "../fileio.h" #include "../variables.h" #include "../debug.h" diff --git a/src/station.cpp b/src/station.cpp index f9c56b7dda..e713ceee82 100644 --- a/src/station.cpp +++ b/src/station.cpp @@ -32,6 +32,7 @@ #include "cargotype.h" #include "roadveh.h" #include "station_gui.h" +#include "zoom_func.h" Station::Station(TileIndex tile) { diff --git a/src/stdafx.h b/src/stdafx.h index f3a277d5ed..90bd721cd8 100644 --- a/src/stdafx.h +++ b/src/stdafx.h @@ -374,4 +374,10 @@ assert_compile(sizeof(uint8) == 1); #define MAX_PATH 260 #endif +/** + * The largest value that can be entered in a variable + * @param type the type of the variable + */ +#define MAX_UVALUE(type) ((type)~(type)0) + #endif /* STDAFX_H */ diff --git a/src/table/sprites.h b/src/table/sprites.h index 2d352ebd20..02d931df32 100644 --- a/src/table/sprites.h +++ b/src/table/sprites.h @@ -32,6 +32,8 @@ * @todo Split the "Sprites" enum into smaller chunks and document them */ +#include "../gfx_type.h" + enum Sprites { SPR_SELECT_TILE = 752, SPR_DOT = 774, // corner marker for lower/raise land diff --git a/src/transparency.h b/src/transparency.h index fff77d70d0..3449467696 100644 --- a/src/transparency.h +++ b/src/transparency.h @@ -5,6 +5,8 @@ #ifndef TRANSPARENCY_H #define TRANSPARENCY_H +#include "gfx_func.h" + /** * Transparency option bits: which position in _transparency_opt stands for which transparency. * If you change the order, change the order of the ShowTransparencyToolbar() stuff in transparency_gui.cpp too. diff --git a/src/vehicle.cpp b/src/vehicle.cpp index 8cd999bf9a..79138d85c6 100644 --- a/src/vehicle.cpp +++ b/src/vehicle.cpp @@ -42,6 +42,7 @@ #include "group.h" #include "order.h" #include "strings_func.h" +#include "zoom_func.h" #define INVALID_COORD (0x7fffffff) #define GEN_HASH(x, y) ((GB((y), 6, 6) << 6) + GB((x), 7, 6)) diff --git a/src/vehicle.h b/src/vehicle.h index 0b7f35d67d..b5ba98a499 100644 --- a/src/vehicle.h +++ b/src/vehicle.h @@ -6,16 +6,17 @@ #define VEHICLE_H #include "vehicle_type.h" -#include "oldpool.h" -#include "order.h" #include "track_type.h" #include "rail_type.h" #include "road_type.h" #include "cargo_type.h" #include "window_type.h" +#include "gfx_type.h" +#include "command_type.h" +#include "oldpool.h" +#include "order.h" #include "cargopacket.h" #include "texteff.hpp" -#include "command_type.h" /** Road vehicle states */ enum RoadVehicleStates { diff --git a/src/video/dedicated_v.cpp b/src/video/dedicated_v.cpp index f2d2aecabb..70732bb73f 100644 --- a/src/video/dedicated_v.cpp +++ b/src/video/dedicated_v.cpp @@ -7,7 +7,7 @@ #include "../openttd.h" #include "../debug.h" #include "../functions.h" -#include "../gfx.h" +#include "../gfx_func.h" #include "../network/network.h" #include "../console.h" #include "../variables.h" diff --git a/src/video/null_v.cpp b/src/video/null_v.cpp index 2250cbaf0d..7d2fa512d4 100644 --- a/src/video/null_v.cpp +++ b/src/video/null_v.cpp @@ -2,7 +2,7 @@ #include "../stdafx.h" #include "../openttd.h" -#include "../gfx.h" +#include "../gfx_func.h" #include "../variables.h" #include "../debug.h" #include "../blitter/factory.hpp" diff --git a/src/video/sdl_v.cpp b/src/video/sdl_v.cpp index 9d4a7986ae..05fb771b7e 100644 --- a/src/video/sdl_v.cpp +++ b/src/video/sdl_v.cpp @@ -7,7 +7,7 @@ #include "../openttd.h" #include "../debug.h" #include "../functions.h" -#include "../gfx.h" +#include "../gfx_func.h" #include "../sdl.h" #include "../variables.h" #include "../blitter/factory.hpp" diff --git a/src/video/win32_v.cpp b/src/video/win32_v.cpp index 1fc344fac3..d3d80daee8 100644 --- a/src/video/win32_v.cpp +++ b/src/video/win32_v.cpp @@ -3,7 +3,7 @@ #include "../stdafx.h" #include "../openttd.h" #include "../functions.h" -#include "../gfx.h" +#include "../gfx_func.h" #include "../variables.h" #include "../win32.h" #include "../blitter/factory.hpp" diff --git a/src/viewport.cpp b/src/viewport.cpp index b3a7e7d202..78b7f03a9b 100644 --- a/src/viewport.cpp +++ b/src/viewport.cpp @@ -25,6 +25,7 @@ #include "blitter/factory.hpp" #include "transparency.h" #include "strings_func.h" +#include "zoom_func.h" #define VIEWPORT_DRAW_MEM (65536 * 2) diff --git a/src/viewport.h b/src/viewport.h index 451c0a42d2..32b0c50be0 100644 --- a/src/viewport.h +++ b/src/viewport.h @@ -5,10 +5,10 @@ #ifndef VIEWPORT_H #define VIEWPORT_H -#include "zoom.hpp" +#include "zoom_type.h" #include "window_type.h" #include "vehicle_type.h" -#include "gfx.h" +#include "gfx_func.h" struct ViewPort { int left,top; // screen coordinates for the viewport diff --git a/src/window.cpp b/src/window.cpp index 6df6609c4b..4a9a4e6006 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -17,6 +17,7 @@ #include "helpers.hpp" #include "blitter/factory.hpp" #include "window_gui.h" +#include "zoom_func.h" /* delta between mouse cursor and upper left corner of dragged window */ static Point _drag_delta; diff --git a/src/zoom.hpp b/src/zoom_func.h similarity index 66% rename from src/zoom.hpp rename to src/zoom_func.h index 56e3c6099b..4a4fe83ffd 100644 --- a/src/zoom.hpp +++ b/src/zoom_func.h @@ -2,41 +2,13 @@ /** @file zoom.hpp */ -#ifndef ZOOM_HPP -#define ZOOM_HPP +#ifndef ZOOM_FUNC_H +#define ZOOM_FUNC_H -#include "core/enum_type.hpp" - -enum ZoomLevel { - /* Our possible zoom-levels */ - ZOOM_LVL_BEGIN = 0, - ZOOM_LVL_NORMAL = 0, - ZOOM_LVL_OUT_2X, - ZOOM_LVL_OUT_4X, - ZOOM_LVL_OUT_8X, - ZOOM_LVL_END, - - /* Here we define in which zoom viewports are */ - ZOOM_LVL_VIEWPORT = ZOOM_LVL_NORMAL, - ZOOM_LVL_NEWS = ZOOM_LVL_NORMAL, - ZOOM_LVL_INDUSTRY = ZOOM_LVL_OUT_2X, - ZOOM_LVL_TOWN = ZOOM_LVL_OUT_2X, - ZOOM_LVL_AIRCRAFT = ZOOM_LVL_NORMAL, - ZOOM_LVL_SHIP = ZOOM_LVL_NORMAL, - ZOOM_LVL_TRAIN = ZOOM_LVL_NORMAL, - ZOOM_LVL_ROADVEH = ZOOM_LVL_NORMAL, - ZOOM_LVL_WORLD_SCREENSHOT = ZOOM_LVL_NORMAL, - - ZOOM_LVL_DETAIL = ZOOM_LVL_OUT_2X, ///< All zoomlevels below or equal to this, will result in details on the screen, like road-work, ... - - ZOOM_LVL_MIN = ZOOM_LVL_NORMAL, - ZOOM_LVL_MAX = ZOOM_LVL_OUT_8X, -}; +#include "zoom_type.h" extern ZoomLevel _saved_scrollpos_zoom; -DECLARE_POSTFIX_INCREMENT(ZoomLevel) - /** * Scale by zoom level, usually shift left (when zoom > ZOOM_LVL_NORMAL) * When shifting right, value is rounded up @@ -91,4 +63,4 @@ static inline int UnScaleByZoomLower(int value, ZoomLevel zoom) return (zoom > ZOOM_LVL_NORMAL) ? value >> izoom : value << -izoom; } -#endif /* ZOOM_HPP */ +#endif /* ZOOM_FUNC_H */ diff --git a/src/zoom_type.h b/src/zoom_type.h new file mode 100644 index 0000000000..2929e7309f --- /dev/null +++ b/src/zoom_type.h @@ -0,0 +1,37 @@ +/* $Id$ */ + +/** @file zoom_type.h Types related to zooming in and out. */ + +#ifndef ZOOM_TYPE_H +#define ZOOM_TYPE_H + +#include "core/enum_type.hpp" + +enum ZoomLevel { + /* Our possible zoom-levels */ + ZOOM_LVL_BEGIN = 0, + ZOOM_LVL_NORMAL = 0, + ZOOM_LVL_OUT_2X, + ZOOM_LVL_OUT_4X, + ZOOM_LVL_OUT_8X, + ZOOM_LVL_END, + + /* Here we define in which zoom viewports are */ + ZOOM_LVL_VIEWPORT = ZOOM_LVL_NORMAL, + ZOOM_LVL_NEWS = ZOOM_LVL_NORMAL, + ZOOM_LVL_INDUSTRY = ZOOM_LVL_OUT_2X, + ZOOM_LVL_TOWN = ZOOM_LVL_OUT_2X, + ZOOM_LVL_AIRCRAFT = ZOOM_LVL_NORMAL, + ZOOM_LVL_SHIP = ZOOM_LVL_NORMAL, + ZOOM_LVL_TRAIN = ZOOM_LVL_NORMAL, + ZOOM_LVL_ROADVEH = ZOOM_LVL_NORMAL, + ZOOM_LVL_WORLD_SCREENSHOT = ZOOM_LVL_NORMAL, + + ZOOM_LVL_DETAIL = ZOOM_LVL_OUT_2X, ///< All zoomlevels below or equal to this, will result in details on the screen, like road-work, ... + + ZOOM_LVL_MIN = ZOOM_LVL_NORMAL, + ZOOM_LVL_MAX = ZOOM_LVL_OUT_8X, +}; +DECLARE_POSTFIX_INCREMENT(ZoomLevel) + +#endif /* ZOOM_TYPE_H */