viewport.h
author matthijs
Wed, 22 Mar 2006 22:26:16 +0000
branch0.4.5
changeset 9958 bed516c67d61
parent 2817 58dcead3f545
child 4344 5d0e40cd67b9
permissions -rw-r--r--
(svn r4041) [Debian] Change next version number to 0.4.6 instead of 0.4.5.1.
2186
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2116
diff changeset
     1
/* $Id$ */
461a2aff3486 (svn r2701) Insert Id tags into all source files
tron
parents: 2116
diff changeset
     2
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     3
#ifndef VIEWPORT_H
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     4
#define VIEWPORT_H
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     5
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     6
struct ViewPort {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     7
	int left,top;												// screen coordinates for the viewport
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     8
	int width, height;									// screen width/height for the viewport
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     9
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    10
	int virtual_left, virtual_top;			// virtual coordinates
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    11
	int virtual_width, virtual_height;	// these are just width << zoom, height << zoom
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    12
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 152
diff changeset
    13
	byte zoom;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    14
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    15
1990
90eb49e87b90 (svn r2496) -Fix: [1179933] When toggling build/remove via keyboard the selection wasn't correctly redrawn
tron
parents: 1977
diff changeset
    16
void SetSelectionRed(bool);
90eb49e87b90 (svn r2496) -Fix: [1179933] When toggling build/remove via keyboard the selection wasn't correctly redrawn
tron
parents: 1977
diff changeset
    17
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    18
/* viewport.c */
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 152
diff changeset
    19
void AssignWindowViewport(Window *w, int x, int y,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    20
	int width, int height, uint32 follow_flags, byte zoom);
2116
cdfc27b696b7 (svn r2626) static, const, misc.
tron
parents: 1990
diff changeset
    21
ViewPort *IsPtInWindowViewport(const Window *w, int x, int y);
1093
e8d26c7dc42f (svn r1594) Convert all undefined parameter lists to (void) and add the appropriate warning flags in the Makefile
tron
parents: 1070
diff changeset
    22
Point GetTileBelowCursor(void);
152
c3964b43943e (svn r153) -Feature: [1009710] Extra Viewport. In the minimap dropdown menu, open a new viewport to have a quick look at your favorite map-positions. Independent zoom and quick jump to/from viewport (Dribbel)
darkvater
parents: 133
diff changeset
    23
void ZoomInOrOutToCursorWindow(bool in, Window * w);
c3964b43943e (svn r153) -Feature: [1009710] Extra Viewport. In the minimap dropdown menu, open a new viewport to have a quick look at your favorite map-positions. Independent zoom and quick jump to/from viewport (Dribbel)
darkvater
parents: 133
diff changeset
    24
Point GetTileZoomCenterWindow(bool in, Window * w);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    25
void UpdateViewportPosition(Window *w);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    26
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    27
void OffsetGroundSprite(int x, int y);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    28
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    29
void DrawGroundSprite(uint32 image);
849
c6223dbdb202 (svn r1330) Increase size of some vars from int16 to int32 to guard against future overflows
tron
parents: 835
diff changeset
    30
void DrawGroundSpriteAt(uint32 image, int32 x, int32 y, byte z);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    31
void AddSortableSpriteToDraw(uint32 image, int x, int y, int w, int h, byte dz, byte z);
835
a22d6bc16a51 (svn r1312) -Add: Patch which is on by default: population in label of the town
truelight
parents: 771
diff changeset
    32
void *AddStringToDraw(int x, int y, StringID string, uint32 params_1, uint32 params_2, uint32 params_3);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    33
void AddChildSpriteScreen(uint32 image, int x, int y);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    34
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    35
1093
e8d26c7dc42f (svn r1594) Convert all undefined parameter lists to (void) and add the appropriate warning flags in the Makefile
tron
parents: 1070
diff changeset
    36
void StartSpriteCombine(void);
e8d26c7dc42f (svn r1594) Convert all undefined parameter lists to (void) and add the appropriate warning flags in the Makefile
tron
parents: 1070
diff changeset
    37
void EndSpriteCombine(void);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    38
2116
cdfc27b696b7 (svn r2626) static, const, misc.
tron
parents: 1990
diff changeset
    39
void HandleViewportClicked(const ViewPort *vp, int x, int y);
1093
e8d26c7dc42f (svn r1594) Convert all undefined parameter lists to (void) and add the appropriate warning flags in the Makefile
tron
parents: 1070
diff changeset
    40
void PlaceObject(void);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    41
void SetRedErrorSquare(TileIndex tile);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    42
void SetTileSelectSize(int w, int h);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    43
void SetTileSelectBigSize(int ox, int oy, int sx, int sy);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    44
1977
4392ae3d8e31 (svn r2483) Replace almost 500 "uint tile" (and variants) with "TileIndex tile"
tron
parents: 1863
diff changeset
    45
void VpStartPlaceSizing(TileIndex tile, int user);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    46
void VpSetPresizeRange(uint from, uint to);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    47
void VpSetPlaceSizingLimit(int limit);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    48
1093
e8d26c7dc42f (svn r1594) Convert all undefined parameter lists to (void) and add the appropriate warning flags in the Makefile
tron
parents: 1070
diff changeset
    49
Vehicle *CheckMouseOverVehicle(void);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    50
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    51
enum {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    52
	VPM_X_OR_Y = 0,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    53
	VPM_FIX_X = 1,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    54
	VPM_FIX_Y = 2,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    55
	VPM_RAILDIRS = 3,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    56
	VPM_X_AND_Y = 4,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    57
	VPM_X_AND_Y_LIMITED = 5,
1070
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    58
	VPM_SIGNALDIRS = 6
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    59
};
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    60
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    61
// viewport highlight mode (for highlighting tiles below cursor)
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    62
enum {
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    63
	VHM_NONE = 0,    // default
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    64
	VHM_RECT = 1,    // rectangle (stations, depots, ...)
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    65
	VHM_POINT = 2,   // point (lower land, raise land, level land, ...)
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    66
	VHM_SPECIAL = 3, // special mode used for highlighting while dragging (and for tunnels/docks)
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    67
	VHM_DRAG = 4,    // dragging items in the depot windows
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    68
	VHM_RAIL = 5,    // rail pieces
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    69
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    70
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    71
void VpSelectTilesWithMethod(int x, int y, int method);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    72
1070
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    73
// highlighting draw styles
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    74
enum {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    75
	HT_NONE = 0,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    76
	HT_RECT = 0x80,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    77
	HT_POINT = 0x40,
1070
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    78
	HT_LINE = 0x20, /* used for autorail highlighting (longer streches)
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    79
									 * (uses lower bits to indicate direction) */
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    80
	HT_RAIL = 0x10, /* autorail (one piece)
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    81
									 * (uses lower bits to indicate direction) */
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    82
1109
1bab892228cd (svn r1610) Remove trailing whitespace (last time ever, i hope)
tron
parents: 1093
diff changeset
    83
	/* lower bits (used with HT_LINE and HT_RAIL):
1070
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    84
	 * (see ASCII art in autorail.h for a visual interpretation) */
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    85
	HT_DIR_X = 0,  // X direction
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    86
	HT_DIR_Y = 1,  // Y direction
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    87
	HT_DIR_HU = 2, // horizontal upper
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    88
	HT_DIR_HL = 3, // horizontal lower
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    89
	HT_DIR_VL = 4, // vertical left
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
    90
	HT_DIR_VR = 5, // vertical right
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    91
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    92
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    93
typedef struct TileHighlightData {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    94
	Point size;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    95
	Point outersize;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    96
	Point pos;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    97
	Point offs;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    98
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    99
	Point new_pos;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   100
	Point new_size;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   101
	Point new_outersize;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   102
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   103
	Point selend, selstart;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   104
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   105
	byte dirty;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   106
	byte sizelimit;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   107
1070
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
   108
	byte drawstyle;      // lower bits 0-3 are reserved for detailed highlight information information
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
   109
	byte new_drawstyle;  // only used in UpdateTileSelection() to as a buffer to compare if there was a change between old and new
bef634a62323 (svn r1571) Feature: Visually enhanced autorail placing
dominik
parents: 873
diff changeset
   110
	byte next_drawstyle; // queued, but not yet drawn style
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   111
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   112
	byte place_mode;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   113
	bool make_square_red;
873
46e892485be3 (svn r1354) Use WindowClass/WindowNumber to store/pass window class/number, not some arbitrary data types
tron
parents: 849
diff changeset
   114
	WindowClass window_class;
46e892485be3 (svn r1354) Use WindowClass/WindowNumber to store/pass window class/number, not some arbitrary data types
tron
parents: 849
diff changeset
   115
	WindowNumber window_number;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   116
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   117
	int userdata;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   118
	TileIndex redsq;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   119
} TileHighlightData;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   120
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   121
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   122
// common button handler
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   123
bool HandlePlacePushButton(Window *w, int widget, uint32 cursor, int mode, PlaceProc *placeproc);
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   124
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   125
/* viewport.c */
771
837aa06c7461 (svn r1237) -Fix: Viewports crash when too many viewports are open. Their amount was not updated to reflect the updated windows amount (thx lefti)
darkvater
parents: 513
diff changeset
   126
// XXX - maximum viewports is maximum windows - 2 (main toolbar + status bar)
837aa06c7461 (svn r1237) -Fix: Viewports crash when too many viewports are open. Their amount was not updated to reflect the updated windows amount (thx lefti)
darkvater
parents: 513
diff changeset
   127
VARDEF ViewPort _viewports[25 - 2];
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   128
VARDEF uint32 _active_viewports;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   129
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   130
VARDEF Point _tile_fract_coords;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   131
1863
610acc8bc189 (svn r2369) Remove _thd_ptr: It always holds the address of _thd
tron
parents: 1109
diff changeset
   132
extern TileHighlightData _thd;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   133
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   134
430
75820dedf4f1 (svn r631) Merge r440, r444, r485, r630 to trunk:
tron
parents: 193
diff changeset
   135
void ViewportDoDraw(const ViewPort *vp, int left, int top, int right, int bottom);
75820dedf4f1 (svn r631) Merge r440, r444, r485, r630 to trunk:
tron
parents: 193
diff changeset
   136
75820dedf4f1 (svn r631) Merge r440, r444, r485, r630 to trunk:
tron
parents: 193
diff changeset
   137
#endif /* VIEWPORT_H */