Files @ r4003:da35251843ee
Branch filter:

Location: cpp/openttd-patchpack/source/gfx.h - annotation

miham
(svn r5213) [languages] reverted last change from tron
r2186:5ee653b1b5e1
r2186:5ee653b1b5e1
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r2062:c4c0326f1777
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r2062:c4c0326f1777
r0:d63b455452f6
r0:d63b455452f6
r193:6aa65dc5a4b4
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r3312:4a98cf52081a
r3312:4a98cf52081a
r3312:4a98cf52081a
r0:d63b455452f6
r3312:4a98cf52081a
r3312:4a98cf52081a
r3312:4a98cf52081a
r0:d63b455452f6
r3312:4a98cf52081a
r3312:4a98cf52081a
r3312:4a98cf52081a
r3312:4a98cf52081a
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r3798:2d0f061b855c
r3798:2d0f061b855c
r3798:2d0f061b855c
r3798:2d0f061b855c
r3798:2d0f061b855c
r3798:2d0f061b855c
r3798:2d0f061b855c
r3798:2d0f061b855c
r0:d63b455452f6
r0:d63b455452f6
r2097:498a22d4bee9
r2406:ca53e91ceee1
r2406:ca53e91ceee1
r2406:ca53e91ceee1
r2407:bc0da484827c
r2406:ca53e91ceee1
r2406:ca53e91ceee1
r2406:ca53e91ceee1
r2097:498a22d4bee9
r2113:600d6ea0d897
r2134:f272effb5e6e
r2097:498a22d4bee9
r2097:498a22d4bee9
r2097:498a22d4bee9
r2097:498a22d4bee9
r1323:29249e0649f7
r2097:498a22d4bee9
r2097:498a22d4bee9
r2097:498a22d4bee9
r2113:600d6ea0d897
r2097:498a22d4bee9
r2097:498a22d4bee9
r2097:498a22d4bee9
r2097:498a22d4bee9
r193:6aa65dc5a4b4
r193:6aa65dc5a4b4
r0:d63b455452f6
r2436:963efe8b84cc
r0:d63b455452f6
r1323:29249e0649f7
r1093:18f56ef2d029
r2634:a3ccca486bdf
r2634:a3ccca486bdf
r1093:18f56ef2d029
r0:d63b455452f6
r1093:18f56ef2d029
r0:d63b455452f6
r1093:18f56ef2d029
r0:d63b455452f6
r2548:9570bbbdacab
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r1914:63c34ade2fdf
r1093:18f56ef2d029
r1093:18f56ef2d029
r1093:18f56ef2d029
r1093:18f56ef2d029
r0:d63b455452f6
r1806:b8cc32d167b3
r1829:3dfbdb5a9e01
r0:d63b455452f6
r0:d63b455452f6
r1390:bd550d5f6790
r3798:2d0f061b855c
r3798:2d0f061b855c
r3798:2d0f061b855c
r3798:2d0f061b855c
r1391:4c60d2b628fd
r3798:2d0f061b855c
r3798:2d0f061b855c
r3798:2d0f061b855c
r3798:2d0f061b855c
r3798:2d0f061b855c
r3798:2d0f061b855c
r3798:2d0f061b855c
r3798:2d0f061b855c
r3798:2d0f061b855c
r3798:2d0f061b855c
r3798:2d0f061b855c
r3798:2d0f061b855c
r1391:4c60d2b628fd
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r0:d63b455452f6
r614:5ada491fc357
r614:5ada491fc357
r1991:24313d1020cd
r1991:24313d1020cd
r1991:24313d1020cd
r1991:24313d1020cd
r1991:24313d1020cd
r1991:24313d1020cd
r1991:24313d1020cd
r0:d63b455452f6
r657:a82164fd2bbd
r657:a82164fd2bbd
r657:a82164fd2bbd
r657:a82164fd2bbd
r657:a82164fd2bbd
r2649:e3cea2f1dbaf
r2649:e3cea2f1dbaf
r2649:e3cea2f1dbaf
r2649:e3cea2f1dbaf
r2436:963efe8b84cc
/* $Id$ */

#ifndef GFX_H
#define GFX_H

typedef byte Pixel;

typedef struct ColorList {
	byte unk0, unk1, unk2;
	byte window_color_1a, window_color_1b;
	byte window_color_bga, window_color_bgb;
	byte window_color_2;
} ColorList;

struct DrawPixelInfo {
	Pixel *dst_ptr;
	int left, top, width, height;
	int pitch;
	uint16 zoom;
};


typedef 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
	CursorID sprite; ///< current image of cursor

	int wheel;       ///< mouse wheel movement
	const CursorID *animate_list, *animate_cur; ///< in case of animated cursor, list of frames
	uint animate_timeout;                       ///< current frame in list of animated 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
} CursorVars;


typedef enum FontSizes {
	FS_NORMAL,
	FS_SMALL,
	FS_LARGE,
	FS_END,
} 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);


// XXX doesn't really belong here, but the only
// consumers always use it in conjunction with DoDrawString()
#define UPARROW   "\x80"
#define DOWNARROW "\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);

void DrawStringRightAligned(int x, int y, StringID str, uint16 color);
void DrawStringRightAlignedTruncated(int x, int y, StringID str, uint16 color, uint maxw);

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 DrawFrameRect(int left, int top, int right, int bottom, int color, int flags);
uint16 GetDrawStringPlayerColor(PlayerID player);

int GetStringWidth(const char *str);
void LoadStringWidthTable(void);
void DrawStringMultiCenter(int x, int y, StringID str, int maxw);
void DrawStringMultiLine(int x, int y, StringID str, int maxw);
void DrawDirtyBlocks(void);
void SetDirtyBlocks(int left, int top, int right, int bottom);
void MarkWholeScreenDirty(void);

void GfxInitPalettes(void);

bool FillDrawPixelInfo(DrawPixelInfo* n, const DrawPixelInfo* o, int left, int top, int width, int height);

/* window.c */
void DrawOverlappedWindowForAll(int left, int top, int right, int bottom);

void SetMouseCursor(uint cursor);
void SetAnimatedMouseCursor(const CursorID *table);
void CursorTick(void);
void DrawMouseCursor(void);
void ScreenSizeChanged(void);
void UndrawMouseCursor(void);
bool ChangeResInGame(int w, int h);
void SortResolutions(int count);
void ToggleFullScreen(bool fs);

/* gfx.c */
#define ASCII_LETTERSTART 32
extern FontSize _cur_fontsize;
extern byte _stringwidth_table[FS_END][224];

static inline byte GetCharacterWidth(FontSize size, byte key)
{
	assert(key >= ASCII_LETTERSTART);
	return _stringwidth_table[size][key - ASCII_LETTERSTART];
}

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 _screen;
VARDEF DrawPixelInfo *_cur_dpi;
VARDEF ColorList _color_list[16];
VARDEF CursorVars _cursor;

VARDEF int _pal_first_dirty;
VARDEF int _pal_last_dirty;

VARDEF bool _use_dos_palette;

typedef struct Colour {
	byte r;
	byte g;
	byte b;
} Colour;

extern Colour _cur_palette[256];


typedef enum StringColorFlags {
	IS_PALETTE_COLOR = 0x100, // color value is already a real palette color index, not an index of a StringColor
} StringColorFlags;

#ifdef _DEBUG
extern bool _dbg_screen_rect;
#endif

#endif /* GFX_H */