src/smallmap_gui.cpp
author bjarni
Thu, 19 Jun 2008 17:54:23 +0000
changeset 9561 f236daaaf93a
parent 9413 7042a8ec3fa8
child 9659 187142ff9b6c
permissions -rw-r--r--
(svn r13584) -Fix: [OSX] Fixed issue where 10.5 failed to switch to fullscreen
This is done by selecting the 32bpp-anim blitter by default as it seems Apple removed some 8bpp support
Since this is done at runtime the same binary will still select 8bpp on 10.3 and 10.4
2186
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 2163
diff changeset
     1
/* $Id$ */
db48cf29b983 (svn r2701) Insert Id tags into all source files
tron
parents: 2163
diff changeset
     2
9111
48ce04029fe4 (svn r12971) -Documentation: add @file in files that missed them and add something more than whitespace as description of files that don't have a description.
rubidium
parents: 9094
diff changeset
     3
/** @file smallmap_gui.cpp GUI that shows a small map of the world with metadata like owner or height. */
6420
456c275f3313 (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas
parents: 6357
diff changeset
     4
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
     5
#include "stdafx.h"
1891
862800791170 (svn r2397) - CodeChange: rename all "ttd" files to "openttd" files.
Darkvater
parents: 1815
diff changeset
     6
#include "openttd.h"
3234
a2791a480b71 (svn r3907) Replace many bridge related direct map accesses with calls to shiny new functions and mark some strange constructs with XXX
tron
parents: 3184
diff changeset
     7
#include "bridge_map.h"
3144
33e42feae531 (svn r3763) Adapt to the new 'map accessors go in foo_map.h'-scheme
tron
parents: 2989
diff changeset
     8
#include "clear_map.h"
3391
3c8a6643ed15 (svn r4199) - Codechange: Use industry map accessors to get industry graphics type.
peter1138
parents: 3338
diff changeset
     9
#include "industry_map.h"
7921
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
    10
#include "industry.h"
3338
7cff208f0446 (svn r4120) Use the new station functions where appropriate
tron
parents: 3326
diff changeset
    11
#include "station_map.h"
6453
226bcddeba32 (svn r9609) -Codechange: Move some function prototypes out of functions.h and into landscape.h, and add a few where they didn't exist.
maedhros
parents: 6441
diff changeset
    12
#include "landscape.h"
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: 12
diff changeset
    13
#include "gui.h"
8107
bb7deea89175 (svn r11668) -Codechange: more refactoring aimed at reducing compile time and making it more logic where function definitions can be found.
rubidium
parents: 8106
diff changeset
    14
#include "window_gui.h"
3144
33e42feae531 (svn r3763) Adapt to the new 'map accessors go in foo_map.h'-scheme
tron
parents: 2989
diff changeset
    15
#include "tree_map.h"
3180
9c87ee130147 (svn r3820) Be a bit more strict with types: use special types instead of generic byte and don't fill arbitrary data into inappropriate types
tron
parents: 3144
diff changeset
    16
#include "tunnel_map.h"
8224
c5a64d87cc54 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium
parents: 8157
diff changeset
    17
#include "viewport_func.h"
c5a64d87cc54 (svn r11787) -Codechange: more header rewrites. This time related to viewport.h.
rubidium
parents: 8157
diff changeset
    18
#include "gfx_func.h"
8254
1496654ca5e7 (svn r11818) -Codechange: split player.h into smaller pieces.
rubidium
parents: 8224
diff changeset
    19
#include "player_base.h"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    20
#include "town.h"
2159
f6284cf5fab0 (svn r2669) Shuffle some more stuff around to reduce dependencies
tron
parents: 2062
diff changeset
    21
#include "variables.h"
6937
40c760fcf1f6 (svn r10190) -Codechange: merged renderer and blitter to one single class API: blitter
truelight
parents: 6878
diff changeset
    22
#include "blitter/factory.hpp"
8083
ad22eade501f (svn r11644) -Codechange: merge some functions from tunnel_map.h and bridge_map.h into tunnelbridge_map.h
smatz
parents: 8082
diff changeset
    23
#include "tunnelbridge_map.h"
8114
dd6d21dc99c1 (svn r11675) -Codechange: split the string types from the string functions.
rubidium
parents: 8108
diff changeset
    24
#include "strings_func.h"
8123
ce31d2843a95 (svn r11684) -Codechange: split gfx.h in a type and functional header.
rubidium
parents: 8121
diff changeset
    25
#include "zoom_func.h"
8132
f4c7a8e4f25a (svn r11694) -Codechange: move more endianness related stuff to endian_func.hpp.
rubidium
parents: 8131
diff changeset
    26
#include "core/endian_func.hpp"
8144
65cec0877b78 (svn r11706) -Codechange: split vehicle.h and remove another bunch of useless includes.
rubidium
parents: 8139
diff changeset
    27
#include "vehicle_base.h"
8157
1505def01945 (svn r11719) -Codechange: split sound.h in a header with types and one with functions.
rubidium
parents: 8144
diff changeset
    28
#include "sound_func.h"
8270
e7c342f6b14c (svn r11834) -Codechange: only include settings_type.h if needed.
rubidium
parents: 8264
diff changeset
    29
#include "settings_type.h"
9117
87f472043e9e (svn r12977) -Codechange: remove quite some redundant (duplicate) function declarations.
rubidium
parents: 9116
diff changeset
    30
#include "window_func.h"
8083
ad22eade501f (svn r11644) -Codechange: merge some functions from tunnel_map.h and bridge_map.h into tunnelbridge_map.h
smatz
parents: 8082
diff changeset
    31
8264
b1e85998c7d3 (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8254
diff changeset
    32
#include "table/strings.h"
b1e85998c7d3 (svn r11828) -Codechange: include table/* as the last includes and remove an unneeded include from openttd.h.
rubidium
parents: 8254
diff changeset
    33
#include "table/sprites.h"
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    34
867
dffd33233237 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 856
diff changeset
    35
static const Widget _smallmap_widgets[] = {
2725
775e3e14ca46 (svn r3270) Correct all (mis)uses of WWT_CLOSEBOX / WWT_TEXTBTN to reflect their actual use, and add "Close Window" tooltip where missing.
peter1138
parents: 2635
diff changeset
    36
{  WWT_CLOSEBOX,   RESIZE_NONE,    13,     0,    10,     0,    13, STR_00C5,                STR_018B_CLOSE_WINDOW},
7345
9770fd47a675 (svn r10708) -Codechange: allow automatic downsizing of the smallmap window in case of low resolutions; one could already make the window smaller, but the resize button was unreachable.
rubidium
parents: 7341
diff changeset
    37
{   WWT_CAPTION,  RESIZE_RIGHT,    13,    11,   337,     0,    13, STR_00B0_MAP,            STR_018C_WINDOW_TITLE_DRAG_THIS},
9770fd47a675 (svn r10708) -Codechange: allow automatic downsizing of the smallmap window in case of low resolutions; one could already make the window smaller, but the resize button was unreachable.
rubidium
parents: 7341
diff changeset
    38
{ WWT_STICKYBOX,     RESIZE_LR,    13,   338,   349,     0,    13, 0x0,                     STR_STICKY_BUTTON},
9770fd47a675 (svn r10708) -Codechange: allow automatic downsizing of the smallmap window in case of low resolutions; one could already make the window smaller, but the resize button was unreachable.
rubidium
parents: 7341
diff changeset
    39
{     WWT_PANEL,     RESIZE_RB,    13,     0,   349,    14,   157, 0x0,                     STR_NULL},
9770fd47a675 (svn r10708) -Codechange: allow automatic downsizing of the smallmap window in case of low resolutions; one could already make the window smaller, but the resize button was unreachable.
rubidium
parents: 7341
diff changeset
    40
{     WWT_INSET,     RESIZE_RB,    13,     2,   347,    16,   155, 0x0,                     STR_NULL},
9770fd47a675 (svn r10708) -Codechange: allow automatic downsizing of the smallmap window in case of low resolutions; one could already make the window smaller, but the resize button was unreachable.
rubidium
parents: 7341
diff changeset
    41
{    WWT_IMGBTN,   RESIZE_LRTB,    13,   284,   305,   158,   179, SPR_IMG_SHOW_COUNTOURS,  STR_0191_SHOW_LAND_CONTOURS_ON_MAP},
9770fd47a675 (svn r10708) -Codechange: allow automatic downsizing of the smallmap window in case of low resolutions; one could already make the window smaller, but the resize button was unreachable.
rubidium
parents: 7341
diff changeset
    42
{    WWT_IMGBTN,   RESIZE_LRTB,    13,   306,   327,   158,   179, SPR_IMG_SHOW_VEHICLES,   STR_0192_SHOW_VEHICLES_ON_MAP},
9770fd47a675 (svn r10708) -Codechange: allow automatic downsizing of the smallmap window in case of low resolutions; one could already make the window smaller, but the resize button was unreachable.
rubidium
parents: 7341
diff changeset
    43
{    WWT_IMGBTN,   RESIZE_LRTB,    13,   328,   349,   158,   179, SPR_IMG_INDUSTRY,        STR_0193_SHOW_INDUSTRIES_ON_MAP},
9770fd47a675 (svn r10708) -Codechange: allow automatic downsizing of the smallmap window in case of low resolutions; one could already make the window smaller, but the resize button was unreachable.
rubidium
parents: 7341
diff changeset
    44
{    WWT_IMGBTN,   RESIZE_LRTB,    13,   284,   307,   180,   201, SPR_IMG_SHOW_ROUTES,     STR_0194_SHOW_TRANSPORT_ROUTES_ON},
9770fd47a675 (svn r10708) -Codechange: allow automatic downsizing of the smallmap window in case of low resolutions; one could already make the window smaller, but the resize button was unreachable.
rubidium
parents: 7341
diff changeset
    45
{    WWT_IMGBTN,   RESIZE_LRTB,    13,   306,   327,   180,   201, SPR_IMG_PLANTTREES,      STR_0195_SHOW_VEGETATION_ON_MAP},
9770fd47a675 (svn r10708) -Codechange: allow automatic downsizing of the smallmap window in case of low resolutions; one could already make the window smaller, but the resize button was unreachable.
rubidium
parents: 7341
diff changeset
    46
{    WWT_IMGBTN,   RESIZE_LRTB,    13,   328,   349,   180,   201, SPR_IMG_COMPANY_GENERAL, STR_0196_SHOW_LAND_OWNERS_ON_MAP},
9770fd47a675 (svn r10708) -Codechange: allow automatic downsizing of the smallmap window in case of low resolutions; one could already make the window smaller, but the resize button was unreachable.
rubidium
parents: 7341
diff changeset
    47
{    WWT_IMGBTN,   RESIZE_LRTB,    13,   262,   283,   158,   179, SPR_IMG_SMALLMAP,        STR_SMALLMAP_CENTER},
9770fd47a675 (svn r10708) -Codechange: allow automatic downsizing of the smallmap window in case of low resolutions; one could already make the window smaller, but the resize button was unreachable.
rubidium
parents: 7341
diff changeset
    48
{    WWT_IMGBTN,   RESIZE_LRTB,    13,   262,   283,   180,   201, SPR_IMG_TOWN,            STR_0197_TOGGLE_TOWN_NAMES_ON_OFF},
9770fd47a675 (svn r10708) -Codechange: allow automatic downsizing of the smallmap window in case of low resolutions; one could already make the window smaller, but the resize button was unreachable.
rubidium
parents: 7341
diff changeset
    49
{     WWT_PANEL,    RESIZE_RTB,    13,     0,   261,   158,   201, 0x0,                     STR_NULL},
7921
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
    50
{     WWT_PANEL,   RESIZE_LRTB,    13,   262,   349,   202,   202, 0x0,                     STR_NULL},
7345
9770fd47a675 (svn r10708) -Codechange: allow automatic downsizing of the smallmap window in case of low resolutions; one could already make the window smaller, but the resize button was unreachable.
rubidium
parents: 7341
diff changeset
    51
{     WWT_PANEL,    RESIZE_RTB,    13,     0,   337,   202,   213, 0x0,                     STR_NULL},
7921
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
    52
{   WWT_TEXTBTN,     RESIZE_TB,    13,     0,    99,   202,   213, STR_MESSAGES_ENABLE_ALL, STR_NULL},
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
    53
{   WWT_TEXTBTN,     RESIZE_TB,    13,   100,   201,   202,   213, STR_MESSAGES_DISABLE_ALL,STR_NULL},
7345
9770fd47a675 (svn r10708) -Codechange: allow automatic downsizing of the smallmap window in case of low resolutions; one could already make the window smaller, but the resize button was unreachable.
rubidium
parents: 7341
diff changeset
    54
{ WWT_RESIZEBOX,   RESIZE_LRTB,    13,   338,   349,   202,   213, 0x0,                     STR_RESIZE_BUTTON},
1918
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
    55
{  WIDGETS_END},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    56
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    57
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    58
static int _smallmap_type;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    59
static bool _smallmap_show_towns = true;
7921
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
    60
/* number of used industries */
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
    61
static int _smallmap_industry_count;
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
    62
/* number of industries per column*/
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
    63
static uint _industries_per_column;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    64
6475
b7dce828b7a1 (svn r9651) -Codechange: make legend system of smallmap a little bit less magic with the help of a struct and not an array of bytes
belugas
parents: 6453
diff changeset
    65
/** Macro for ordinary entry of LegendAndColor */
7933
b2bb6a4aafd4 (svn r11486) -Fix [FS#1457]: industry count was wrong in smallmap
glx
parents: 7921
diff changeset
    66
#define MK(a,b) {a, b, INVALID_INDUSTRYTYPE, true, false, false}
6475
b7dce828b7a1 (svn r9651) -Codechange: make legend system of smallmap a little bit less magic with the help of a struct and not an array of bytes
belugas
parents: 6453
diff changeset
    67
/** Macro for end of list marker in arrays of LegendAndColor */
7933
b2bb6a4aafd4 (svn r11486) -Fix [FS#1457]: industry count was wrong in smallmap
glx
parents: 7921
diff changeset
    68
#define MKEND() {0, STR_NULL, INVALID_INDUSTRYTYPE, true, true, false}
6475
b7dce828b7a1 (svn r9651) -Codechange: make legend system of smallmap a little bit less magic with the help of a struct and not an array of bytes
belugas
parents: 6453
diff changeset
    69
/** Macro for break marker in arrays of LegendAndColor.
b7dce828b7a1 (svn r9651) -Codechange: make legend system of smallmap a little bit less magic with the help of a struct and not an array of bytes
belugas
parents: 6453
diff changeset
    70
 * It will have valid data, though */
7933
b2bb6a4aafd4 (svn r11486) -Fix [FS#1457]: industry count was wrong in smallmap
glx
parents: 7921
diff changeset
    71
#define MS(a,b) {a, b, INVALID_INDUSTRYTYPE, true, false, true}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    72
6475
b7dce828b7a1 (svn r9651) -Codechange: make legend system of smallmap a little bit less magic with the help of a struct and not an array of bytes
belugas
parents: 6453
diff changeset
    73
/** Structure for holding relevant data for legends in small map */
b7dce828b7a1 (svn r9651) -Codechange: make legend system of smallmap a little bit less magic with the help of a struct and not an array of bytes
belugas
parents: 6453
diff changeset
    74
struct LegendAndColour {
b7dce828b7a1 (svn r9651) -Codechange: make legend system of smallmap a little bit less magic with the help of a struct and not an array of bytes
belugas
parents: 6453
diff changeset
    75
	uint16 colour;     ///< color of the item on the map
b7dce828b7a1 (svn r9651) -Codechange: make legend system of smallmap a little bit less magic with the help of a struct and not an array of bytes
belugas
parents: 6453
diff changeset
    76
	StringID legend;   ///< string corresponding to the colored item
7933
b2bb6a4aafd4 (svn r11486) -Fix [FS#1457]: industry count was wrong in smallmap
glx
parents: 7921
diff changeset
    77
	IndustryType type; ///< type of industry
7921
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
    78
	bool show_on_map;  ///< for filtering industries, if true is shown on map in color
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
    79
	bool end;          ///< this is the end of the list
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
    80
	bool col_break;    ///< perform a break and go one collumn further
6475
b7dce828b7a1 (svn r9651) -Codechange: make legend system of smallmap a little bit less magic with the help of a struct and not an array of bytes
belugas
parents: 6453
diff changeset
    81
};
b7dce828b7a1 (svn r9651) -Codechange: make legend system of smallmap a little bit less magic with the help of a struct and not an array of bytes
belugas
parents: 6453
diff changeset
    82
b7dce828b7a1 (svn r9651) -Codechange: make legend system of smallmap a little bit less magic with the help of a struct and not an array of bytes
belugas
parents: 6453
diff changeset
    83
/** Legend text giving the colours to look for on the minimap */
b7dce828b7a1 (svn r9651) -Codechange: make legend system of smallmap a little bit less magic with the help of a struct and not an array of bytes
belugas
parents: 6453
diff changeset
    84
static const LegendAndColour _legend_land_contours[] = {
4344
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
    85
	MK(0x5A, STR_00F0_100M),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
    86
	MK(0x5C, STR_00F1_200M),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
    87
	MK(0x5E, STR_00F2_300M),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
    88
	MK(0x1F, STR_00F3_400M),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
    89
	MK(0x27, STR_00F4_500M),
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 176
diff changeset
    90
4344
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
    91
	MS(0xD7, STR_00EB_ROADS),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
    92
	MK(0x0A, STR_00EC_RAILROADS),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
    93
	MK(0x98, STR_00ED_STATIONS_AIRPORTS_DOCKS),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
    94
	MK(0xB5, STR_00EE_BUILDINGS_INDUSTRIES),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
    95
	MK(0x0F, STR_00EF_VEHICLES),
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    96
	MKEND()
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    97
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
    98
6475
b7dce828b7a1 (svn r9651) -Codechange: make legend system of smallmap a little bit less magic with the help of a struct and not an array of bytes
belugas
parents: 6453
diff changeset
    99
static const LegendAndColour _legend_vehicles[] = {
4344
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   100
	MK(0xB8, STR_00F5_TRAINS),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   101
	MK(0xBF, STR_00F6_ROAD_VEHICLES),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   102
	MK(0x98, STR_00F7_SHIPS),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   103
	MK(0x0F, STR_00F8_AIRCRAFT),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   104
	MS(0xD7, STR_00F9_TRANSPORT_ROUTES),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   105
	MK(0xB5, STR_00EE_BUILDINGS_INDUSTRIES),
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   106
	MKEND()
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   107
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   108
6475
b7dce828b7a1 (svn r9651) -Codechange: make legend system of smallmap a little bit less magic with the help of a struct and not an array of bytes
belugas
parents: 6453
diff changeset
   109
static const LegendAndColour _legend_routes[] = {
4344
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   110
	MK(0xD7, STR_00EB_ROADS),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   111
	MK(0x0A, STR_00EC_RAILROADS),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   112
	MK(0xB5, STR_00EE_BUILDINGS_INDUSTRIES),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   113
	MS(0x56, STR_011B_RAILROAD_STATION),
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   114
4344
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   115
	MK(0xC2, STR_011C_TRUCK_LOADING_BAY),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   116
	MK(0xBF, STR_011D_BUS_STATION),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   117
	MK(0xB8, STR_011E_AIRPORT_HELIPORT),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   118
	MK(0x98, STR_011F_DOCK),
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   119
	MKEND()
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
6475
b7dce828b7a1 (svn r9651) -Codechange: make legend system of smallmap a little bit less magic with the help of a struct and not an array of bytes
belugas
parents: 6453
diff changeset
   122
static const LegendAndColour _legend_vegetation[] = {
4344
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   123
	MK(0x52, STR_0120_ROUGH_LAND),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   124
	MK(0x54, STR_0121_GRASS_LAND),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   125
	MK(0x37, STR_0122_BARE_LAND),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   126
	MK(0x25, STR_0123_FIELDS),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   127
	MK(0x57, STR_0124_TREES),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   128
	MK(0xD0, STR_00FC_FOREST),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   129
	MS(0x0A, STR_0125_ROCKS),
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   130
4344
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   131
	MK(0xC2, STR_012A_DESERT),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   132
	MK(0x98, STR_012B_SNOW),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   133
	MK(0xD7, STR_00F9_TRANSPORT_ROUTES),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   134
	MK(0xB5, STR_00EE_BUILDINGS_INDUSTRIES),
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   135
	MKEND()
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   136
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   137
6475
b7dce828b7a1 (svn r9651) -Codechange: make legend system of smallmap a little bit less magic with the help of a struct and not an array of bytes
belugas
parents: 6453
diff changeset
   138
static const LegendAndColour _legend_land_owners[] = {
4344
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   139
	MK(0xCA, STR_0126_WATER),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   140
	MK(0x54, STR_0127_NO_OWNER),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   141
	MK(0xB4, STR_0128_TOWNS),
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   142
	MK(0x20, STR_0129_INDUSTRIES),
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   143
	MKEND()
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   144
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   145
#undef MK
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   146
#undef MS
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   147
#undef MKEND
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   148
6533
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   149
/** Allow room for all industries, plus a terminator entry
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   150
 * This is required in order to have the indutry slots all filled up */
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   151
static LegendAndColour _legend_from_industries[NUM_INDUSTRYTYPES+1];
7921
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   152
/* For connecting industry type to position in industries list(small map legend) */
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   153
static uint _industry_to_list_pos[NUM_INDUSTRYTYPES];
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   154
6533
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   155
/**
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   156
 * Fills an array for the industries legends.
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   157
 */
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   158
void BuildIndustriesLegend()
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   159
{
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   160
	const IndustrySpec *indsp;
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   161
	uint j = 0;
7921
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   162
	uint free_slot, diff;
6533
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   163
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   164
	/* Add each name */
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   165
	for (IndustryType i = 0; i < NUM_INDUSTRYTYPES; i++) {
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   166
		indsp = GetIndustrySpec(i);
6748
7579278d958f (svn r9983) -Codechange: Use the "enabled" property of the industry spec.
belugas
parents: 6730
diff changeset
   167
		if (indsp->enabled) {
6533
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   168
			_legend_from_industries[j].legend = indsp->name;
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   169
			_legend_from_industries[j].colour = indsp->map_colour;
7933
b2bb6a4aafd4 (svn r11486) -Fix [FS#1457]: industry count was wrong in smallmap
glx
parents: 7921
diff changeset
   170
			_legend_from_industries[j].type = i;
7921
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   171
			_legend_from_industries[j].show_on_map = true;
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   172
			_legend_from_industries[j].col_break = false;
6533
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   173
			_legend_from_industries[j].end = false;
7921
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   174
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   175
			/* Store widget number for this industry type */
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   176
			_industry_to_list_pos[i] = j;
6533
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   177
			j++;
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   178
		}
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   179
	}
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   180
	/* Terminate the list */
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   181
	_legend_from_industries[j].end = true;
7921
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   182
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   183
	/* Store number of enabled industries */
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   184
	_smallmap_industry_count = j;
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   185
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   186
	_industries_per_column = _smallmap_industry_count / 3;
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   187
	free_slot = _smallmap_industry_count % 3;
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   188
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   189
	/* recalculate column break for first two columns(i) */
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   190
	diff = 0;
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   191
	for (int i = 1; i <= 2; i++) {
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   192
		if (free_slot > 0) diff = diff + 1;
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   193
		_legend_from_industries[i * _industries_per_column + diff].col_break = true;
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   194
		if (free_slot > 0) free_slot--;
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   195
	}
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   196
6533
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   197
}
6475
b7dce828b7a1 (svn r9651) -Codechange: make legend system of smallmap a little bit less magic with the help of a struct and not an array of bytes
belugas
parents: 6453
diff changeset
   198
b7dce828b7a1 (svn r9651) -Codechange: make legend system of smallmap a little bit less magic with the help of a struct and not an array of bytes
belugas
parents: 6453
diff changeset
   199
static const LegendAndColour * const _legend_table[] = {
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   200
	_legend_land_contours,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   201
	_legend_vehicles,
6533
8be3ef428116 (svn r9721) -Codechange: -Codechange: Cleanup of industry_cmd (Step-12). Dynamically build the legends (name and color) for industries in the smallmap_gui.
belugas
parents: 6488
diff changeset
   202
	_legend_from_industries,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   203
	_legend_routes,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   204
	_legend_vegetation,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   205
	_legend_land_owners,
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   206
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   207
2984
f9d92e013486 (svn r3559) - CodeChange: simplify MKCOLOR(x) macro for smallmap_gui.c by adding a TO_LE32X() macro next to TO_BE32X(). The 'X' signifies them as macros and not-inline functions so they can be used in variable declarations.
Darkvater
parents: 2981
diff changeset
   208
#define MKCOLOR(x) TO_LE32X(x)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   209
7313
a36dc43afcb5 (svn r10665) -Codechange: replace magic 15 with MAX_TILE_HEIGHT (bilbo)
truelight
parents: 7266
diff changeset
   210
/**
a36dc43afcb5 (svn r10665) -Codechange: replace magic 15 with MAX_TILE_HEIGHT (bilbo)
truelight
parents: 7266
diff changeset
   211
 * Height encodings; MAX_TILE_HEIGHT + 1 levels, from 0 to MAX_TILE_HEIGHT
a36dc43afcb5 (svn r10665) -Codechange: replace magic 15 with MAX_TILE_HEIGHT (bilbo)
truelight
parents: 7266
diff changeset
   212
 */
a36dc43afcb5 (svn r10665) -Codechange: replace magic 15 with MAX_TILE_HEIGHT (bilbo)
truelight
parents: 7266
diff changeset
   213
static const uint32 _map_height_bits[] = {
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   214
	MKCOLOR(0x5A5A5A5A),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   215
	MKCOLOR(0x5A5B5A5B),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   216
	MKCOLOR(0x5B5B5B5B),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   217
	MKCOLOR(0x5B5C5B5C),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   218
	MKCOLOR(0x5C5C5C5C),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   219
	MKCOLOR(0x5C5D5C5D),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   220
	MKCOLOR(0x5D5D5D5D),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   221
	MKCOLOR(0x5D5E5D5E),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   222
	MKCOLOR(0x5E5E5E5E),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   223
	MKCOLOR(0x5E5F5E5F),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   224
	MKCOLOR(0x5F5F5F5F),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   225
	MKCOLOR(0x5F1F5F1F),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   226
	MKCOLOR(0x1F1F1F1F),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   227
	MKCOLOR(0x1F271F27),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   228
	MKCOLOR(0x27272727),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   229
	MKCOLOR(0x27272727),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   230
};
7313
a36dc43afcb5 (svn r10665) -Codechange: replace magic 15 with MAX_TILE_HEIGHT (bilbo)
truelight
parents: 7266
diff changeset
   231
assert_compile(lengthof(_map_height_bits) == MAX_TILE_HEIGHT + 1);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   232
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   233
struct AndOr {
1511
5917a04566df (svn r2015) Use a struct and an inline function for colour masking on the mini-map - this should improve readability a bit
tron
parents: 1350
diff changeset
   234
	uint32 mor;
5917a04566df (svn r2015) Use a struct and an inline function for colour masking on the mini-map - this should improve readability a bit
tron
parents: 1350
diff changeset
   235
	uint32 mand;
6248
e4a2ed7e5613 (svn r9051) -Codechange: typedef [enum|struct] Y {} X; -> [enum|struct] X {};
rubidium
parents: 6247
diff changeset
   236
};
1511
5917a04566df (svn r2015) Use a struct and an inline function for colour masking on the mini-map - this should improve readability a bit
tron
parents: 1350
diff changeset
   237
4171
5c6e60c392c3 (svn r5609) CodeChange : Apply coding style
belugas
parents: 4000
diff changeset
   238
static inline uint32 ApplyMask(uint32 colour, const AndOr *mask)
1511
5917a04566df (svn r2015) Use a struct and an inline function for colour masking on the mini-map - this should improve readability a bit
tron
parents: 1350
diff changeset
   239
{
5917a04566df (svn r2015) Use a struct and an inline function for colour masking on the mini-map - this should improve readability a bit
tron
parents: 1350
diff changeset
   240
	return (colour & mask->mand) | mask->mor;
5917a04566df (svn r2015) Use a struct and an inline function for colour masking on the mini-map - this should improve readability a bit
tron
parents: 1350
diff changeset
   241
}
5917a04566df (svn r2015) Use a struct and an inline function for colour masking on the mini-map - this should improve readability a bit
tron
parents: 1350
diff changeset
   242
1918
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   243
1511
5917a04566df (svn r2015) Use a struct and an inline function for colour masking on the mini-map - this should improve readability a bit
tron
parents: 1350
diff changeset
   244
static const AndOr _smallmap_contours_andor[] = {
4344
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   245
	{MKCOLOR(0x00000000), MKCOLOR(0xFFFFFFFF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   246
	{MKCOLOR(0x000A0A00), MKCOLOR(0xFF0000FF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   247
	{MKCOLOR(0x00D7D700), MKCOLOR(0xFF0000FF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   248
	{MKCOLOR(0x00B5B500), MKCOLOR(0xFF0000FF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   249
	{MKCOLOR(0x00000000), MKCOLOR(0xFFFFFFFF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   250
	{MKCOLOR(0x98989898), MKCOLOR(0x00000000)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   251
	{MKCOLOR(0xCACACACA), MKCOLOR(0x00000000)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   252
	{MKCOLOR(0x00000000), MKCOLOR(0xFFFFFFFF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   253
	{MKCOLOR(0xB5B5B5B5), MKCOLOR(0x00000000)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   254
	{MKCOLOR(0x00000000), MKCOLOR(0xFFFFFFFF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   255
	{MKCOLOR(0x00B5B500), MKCOLOR(0xFF0000FF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   256
	{MKCOLOR(0x000A0A00), MKCOLOR(0xFF0000FF)},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   257
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   258
1511
5917a04566df (svn r2015) Use a struct and an inline function for colour masking on the mini-map - this should improve readability a bit
tron
parents: 1350
diff changeset
   259
static const AndOr _smallmap_vehicles_andor[] = {
4344
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   260
	{MKCOLOR(0x00000000), MKCOLOR(0xFFFFFFFF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   261
	{MKCOLOR(0x00D7D700), MKCOLOR(0xFF0000FF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   262
	{MKCOLOR(0x00D7D700), MKCOLOR(0xFF0000FF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   263
	{MKCOLOR(0x00B5B500), MKCOLOR(0xFF0000FF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   264
	{MKCOLOR(0x00000000), MKCOLOR(0xFFFFFFFF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   265
	{MKCOLOR(0x00D7D700), MKCOLOR(0xFF0000FF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   266
	{MKCOLOR(0xCACACACA), MKCOLOR(0x00000000)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   267
	{MKCOLOR(0x00000000), MKCOLOR(0xFFFFFFFF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   268
	{MKCOLOR(0xB5B5B5B5), MKCOLOR(0x00000000)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   269
	{MKCOLOR(0x00000000), MKCOLOR(0xFFFFFFFF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   270
	{MKCOLOR(0x00B5B500), MKCOLOR(0xFF0000FF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   271
	{MKCOLOR(0x00D7D700), MKCOLOR(0xFF0000FF)},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   272
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   273
1511
5917a04566df (svn r2015) Use a struct and an inline function for colour masking on the mini-map - this should improve readability a bit
tron
parents: 1350
diff changeset
   274
static const AndOr _smallmap_vegetation_andor[] = {
4344
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   275
	{MKCOLOR(0x00000000), MKCOLOR(0xFFFFFFFF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   276
	{MKCOLOR(0x00D7D700), MKCOLOR(0xFF0000FF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   277
	{MKCOLOR(0x00D7D700), MKCOLOR(0xFF0000FF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   278
	{MKCOLOR(0x00B5B500), MKCOLOR(0xFF0000FF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   279
	{MKCOLOR(0x00575700), MKCOLOR(0xFF0000FF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   280
	{MKCOLOR(0x00D7D700), MKCOLOR(0xFF0000FF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   281
	{MKCOLOR(0xCACACACA), MKCOLOR(0x00000000)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   282
	{MKCOLOR(0x00000000), MKCOLOR(0xFFFFFFFF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   283
	{MKCOLOR(0xB5B5B5B5), MKCOLOR(0x00000000)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   284
	{MKCOLOR(0x00000000), MKCOLOR(0xFFFFFFFF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   285
	{MKCOLOR(0x00B5B500), MKCOLOR(0xFF0000FF)},
7e123fec5b0b (svn r6045) -Cleanup: align all table-like structures using spaces, i.e. whitespace fixes only except for a few comments to make them uniform for the whole enum/struct.
rubidium
parents: 4339
diff changeset
   286
	{MKCOLOR(0x00D7D700), MKCOLOR(0xFF0000FF)},
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   287
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   288
1918
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   289
typedef uint32 GetSmallMapPixels(TileIndex tile); // typedef callthrough function
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   290
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   291
/**
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   292
 * Draws one column of the small map in a certain mode onto the screen buffer. This
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   293
 * function looks exactly the same for all types
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   294
 *
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   295
 * @param dst Pointer to a part of the screen buffer to write to.
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   296
 * @param xc The X coordinate of the first tile in the column.
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   297
 * @param yc The Y coordinate of the first tile in the column
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   298
 * @param pitch Number of pixels to advance in the screen buffer each time a pixel is written.
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   299
 * @param reps Number of lines to draw
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   300
 * @param mask ?
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   301
 * @param proc Pointer to the colour function
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   302
 * @see GetSmallMapPixels(TileIndex)
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   303
 */
6878
5cefd3ac59c7 (svn r10121) -Codechange: split renderer from rest of code; no longer any code directly accesses the video-buffer
truelight
parents: 6757
diff changeset
   304
static void DrawSmallMapStuff(void *dst, uint xc, uint yc, int pitch, int reps, uint32 mask, GetSmallMapPixels *proc)
1918
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   305
{
6937
40c760fcf1f6 (svn r10190) -Codechange: merged renderer and blitter to one single class API: blitter
truelight
parents: 6878
diff changeset
   306
	Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
7489
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   307
	void *dst_ptr_abs_end = blitter->MoveTo(_screen.dst_ptr, 0, _screen.height);
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   308
	void *dst_ptr_end = blitter->MoveTo(dst_ptr_abs_end, -4, 0);
1918
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   309
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   310
	do {
6420
456c275f3313 (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas
parents: 6357
diff changeset
   311
		/* check if the tile (xc,yc) is within the map range */
1919
ca41cc314d40 (svn r2425) - Fix (regression): wrong sprite for level-land cursor (thx Tron)
Darkvater
parents: 1918
diff changeset
   312
		if (xc < MapMaxX() && yc < MapMaxY()) {
6420
456c275f3313 (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas
parents: 6357
diff changeset
   313
			/* check if the dst pointer points to a pixel inside the screen buffer */
7489
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   314
			if (dst < _screen.dst_ptr) continue;
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   315
			if (dst >= dst_ptr_abs_end) continue;
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   316
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   317
			uint32 val = proc(TileXY(xc, yc)) & mask;
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   318
			uint8 *val8 = (uint8 *)&val;
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   319
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   320
			if (dst <= dst_ptr_end) {
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   321
				blitter->SetPixelIfEmpty(dst, 0, 0, val8[0]);
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   322
				blitter->SetPixelIfEmpty(dst, 1, 0, val8[1]);
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   323
				blitter->SetPixelIfEmpty(dst, 2, 0, val8[2]);
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   324
				blitter->SetPixelIfEmpty(dst, 3, 0, val8[3]);
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   325
			} else {
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   326
				/* It happens that there are only 1, 2 or 3 pixels left to fill, so in that special case, write till the end of the video-buffer */
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   327
				int i = 0;
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   328
				do {
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   329
					blitter->SetPixelIfEmpty(dst, 0, 0, val8[i]);
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   330
				} while (i++, dst = blitter->MoveTo(dst, 1, 0), dst < dst_ptr_abs_end);
71e233b9a937 (svn r11000) -Fix r10121: when introducing the new blitter system, smallmap regained an old bug: buffer-overflow when moving window to far bottom-right.
truelight
parents: 7370
diff changeset
   331
			}
1918
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   332
		}
6420
456c275f3313 (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas
parents: 6357
diff changeset
   333
	/* switch to next tile in the column */
6937
40c760fcf1f6 (svn r10190) -Codechange: merged renderer and blitter to one single class API: blitter
truelight
parents: 6878
diff changeset
   334
	} while (xc++, yc++, dst = blitter->MoveTo(dst, pitch, 0), --reps != 0);
1918
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   335
}
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   336
1516
dc914162ad01 (svn r2020) Reduce code duplication in the minimap code a bit
tron
parents: 1515
diff changeset
   337
dc914162ad01 (svn r2020) Reduce code duplication in the minimap code a bit
tron
parents: 1515
diff changeset
   338
static inline TileType GetEffectiveTileType(TileIndex tile)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   339
{
1516
dc914162ad01 (svn r2020) Reduce code duplication in the minimap code a bit
tron
parents: 1515
diff changeset
   340
	TileType t = GetTileType(tile);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   341
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   342
	if (t == MP_TUNNELBRIDGE) {
8088
92fca5b09665 (svn r11649) -Codechange: some code can be simplified thanks to changes in r11642
smatz
parents: 8083
diff changeset
   343
		TransportType tt = GetTunnelBridgeTransportType(tile);
3180
9c87ee130147 (svn r3820) Be a bit more strict with types: use special types instead of generic byte and don't fill arbitrary data into inappropriate types
tron
parents: 3144
diff changeset
   344
9c87ee130147 (svn r3820) Be a bit more strict with types: use special types instead of generic byte and don't fill arbitrary data into inappropriate types
tron
parents: 3144
diff changeset
   345
		switch (tt) {
9c87ee130147 (svn r3820) Be a bit more strict with types: use special types instead of generic byte and don't fill arbitrary data into inappropriate types
tron
parents: 3144
diff changeset
   346
			case TRANSPORT_RAIL: t = MP_RAILWAY; break;
7370
41adc721b1fa (svn r10733) -Codechange: change MP_STREET into MP_ROAD as we use the word "road" everywhere except in the tile type.
rubidium
parents: 7369
diff changeset
   347
			case TRANSPORT_ROAD: t = MP_ROAD;    break;
3180
9c87ee130147 (svn r3820) Be a bit more strict with types: use special types instead of generic byte and don't fill arbitrary data into inappropriate types
tron
parents: 3144
diff changeset
   348
			default:             t = MP_WATER;   break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   349
		}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   350
	}
1516
dc914162ad01 (svn r2020) Reduce code duplication in the minimap code a bit
tron
parents: 1515
diff changeset
   351
	return t;
dc914162ad01 (svn r2020) Reduce code duplication in the minimap code a bit
tron
parents: 1515
diff changeset
   352
}
dc914162ad01 (svn r2020) Reduce code duplication in the minimap code a bit
tron
parents: 1515
diff changeset
   353
1918
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   354
/**
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   355
 * Return the color a tile would be displayed with in the small map in mode "Contour".
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   356
 * @param tile The tile of which we would like to get the color.
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   357
 * @return The color of tile in the small map in mode "Contour"
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   358
 */
1516
dc914162ad01 (svn r2020) Reduce code duplication in the minimap code a bit
tron
parents: 1515
diff changeset
   359
static inline uint32 GetSmallMapContoursPixels(TileIndex tile)
dc914162ad01 (svn r2020) Reduce code duplication in the minimap code a bit
tron
parents: 1515
diff changeset
   360
{
dc914162ad01 (svn r2020) Reduce code duplication in the minimap code a bit
tron
parents: 1515
diff changeset
   361
	TileType t = GetEffectiveTileType(tile);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   362
1511
5917a04566df (svn r2015) Use a struct and an inline function for colour masking on the mini-map - this should improve readability a bit
tron
parents: 1350
diff changeset
   363
	return
5917a04566df (svn r2015) Use a struct and an inline function for colour masking on the mini-map - this should improve readability a bit
tron
parents: 1350
diff changeset
   364
		ApplyMask(_map_height_bits[TileHeight(tile)], &_smallmap_contours_andor[t]);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   365
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   366
1918
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   367
/**
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   368
 * Return the color a tile would be displayed with in the small map in mode "Vehicles".
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   369
 *
6483
ae78fc3c6b20 (svn r9664) -Documentation: Doxygen corrections,errors and omissions
belugas
parents: 6476
diff changeset
   370
 * @param tile The tile of which we would like to get the color.
1918
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   371
 * @return The color of tile in the small map in mode "Vehicles"
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   372
 */
1515
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   373
static inline uint32 GetSmallMapVehiclesPixels(TileIndex tile)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   374
{
1516
dc914162ad01 (svn r2020) Reduce code duplication in the minimap code a bit
tron
parents: 1515
diff changeset
   375
	TileType t = GetEffectiveTileType(tile);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   376
1511
5917a04566df (svn r2015) Use a struct and an inline function for colour masking on the mini-map - this should improve readability a bit
tron
parents: 1350
diff changeset
   377
	return ApplyMask(MKCOLOR(0x54545454), &_smallmap_vehicles_andor[t]);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   378
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   379
1918
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   380
/**
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   381
 * Return the color a tile would be displayed with in the small map in mode "Industries".
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   382
 *
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   383
 * @param tile The tile of which we would like to get the color.
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   384
 * @return The color of tile in the small map in mode "Industries"
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   385
 */
1515
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   386
static inline uint32 GetSmallMapIndustriesPixels(TileIndex tile)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   387
{
1516
dc914162ad01 (svn r2020) Reduce code duplication in the minimap code a bit
tron
parents: 1515
diff changeset
   388
	TileType t = GetEffectiveTileType(tile);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   389
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   390
	if (t == MP_INDUSTRY) {
7921
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   391
		/* If industry is allowed to be seen, use its color on the map */
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   392
		if (_legend_from_industries[_industry_to_list_pos[GetIndustryByTile(tile)->type]].show_on_map) {
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   393
			return GetIndustrySpec(GetIndustryByTile(tile)->type)->map_colour * 0x01010101;
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   394
		} else {
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   395
			/* otherwise, return the color of the clear tiles, which will make it disappear */
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   396
			return ApplyMask(MKCOLOR(0x54545454), &_smallmap_vehicles_andor[MP_CLEAR]);
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   397
		}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   398
	}
1918
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   399
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   400
	return ApplyMask(MKCOLOR(0x54545454), &_smallmap_vehicles_andor[t]);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   401
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   402
1918
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   403
/**
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   404
 * Return the color a tile would be displayed with in the small map in mode "Routes".
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   405
 *
6483
ae78fc3c6b20 (svn r9664) -Documentation: Doxygen corrections,errors and omissions
belugas
parents: 6476
diff changeset
   406
 * @param tile The tile of which we would like to get the color.
1918
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   407
 * @return The color of tile  in the small map in mode "Routes"
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   408
 */
1515
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   409
static inline uint32 GetSmallMapRoutesPixels(TileIndex tile)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   410
{
1516
dc914162ad01 (svn r2020) Reduce code duplication in the minimap code a bit
tron
parents: 1515
diff changeset
   411
	TileType t = GetEffectiveTileType(tile);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   412
	uint32 bits;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   413
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   414
	if (t == MP_STATION) {
3338
7cff208f0446 (svn r4120) Use the new station functions where appropriate
tron
parents: 3326
diff changeset
   415
		switch (GetStationType(tile)) {
7cff208f0446 (svn r4120) Use the new station functions where appropriate
tron
parents: 3326
diff changeset
   416
			case STATION_RAIL:    bits = MKCOLOR(0x56565656); break;
7cff208f0446 (svn r4120) Use the new station functions where appropriate
tron
parents: 3326
diff changeset
   417
			case STATION_AIRPORT: bits = MKCOLOR(0xB8B8B8B8); break;
7cff208f0446 (svn r4120) Use the new station functions where appropriate
tron
parents: 3326
diff changeset
   418
			case STATION_TRUCK:   bits = MKCOLOR(0xC2C2C2C2); break;
7cff208f0446 (svn r4120) Use the new station functions where appropriate
tron
parents: 3326
diff changeset
   419
			case STATION_BUS:     bits = MKCOLOR(0xBFBFBFBF); break;
7cff208f0446 (svn r4120) Use the new station functions where appropriate
tron
parents: 3326
diff changeset
   420
			case STATION_DOCK:    bits = MKCOLOR(0x98989898); break;
7cff208f0446 (svn r4120) Use the new station functions where appropriate
tron
parents: 3326
diff changeset
   421
			default:              bits = MKCOLOR(0xFFFFFFFF); break;
7cff208f0446 (svn r4120) Use the new station functions where appropriate
tron
parents: 3326
diff changeset
   422
		}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   423
	} else {
6420
456c275f3313 (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas
parents: 6357
diff changeset
   424
		/* ground color */
1511
5917a04566df (svn r2015) Use a struct and an inline function for colour masking on the mini-map - this should improve readability a bit
tron
parents: 1350
diff changeset
   425
		bits = ApplyMask(MKCOLOR(0x54545454), &_smallmap_contours_andor[t]);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   426
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   427
	return bits;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   428
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   429
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   430
2955
24de69e236d2 (svn r3514) -Codechange: Replace direct fiddling of bits for the ground type and density of clear tiles with symbolic names and accessors.
tron
parents: 2952
diff changeset
   431
static const uint32 _vegetation_clear_bits[] = {
1918
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   432
	MKCOLOR(0x54545454), ///< full grass
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   433
	MKCOLOR(0x52525252), ///< rough land
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   434
	MKCOLOR(0x0A0A0A0A), ///< rocks
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   435
	MKCOLOR(0x25252525), ///< fields
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   436
	MKCOLOR(0x98989898), ///< snow
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   437
	MKCOLOR(0xC2C2C2C2), ///< desert
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   438
	MKCOLOR(0x54545454), ///< unused
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   439
	MKCOLOR(0x54545454), ///< unused
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   440
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   441
1515
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   442
static inline uint32 GetSmallMapVegetationPixels(TileIndex tile)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   443
{
1516
dc914162ad01 (svn r2020) Reduce code duplication in the minimap code a bit
tron
parents: 1515
diff changeset
   444
	TileType t = GetEffectiveTileType(tile);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   445
	uint32 bits;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   446
1515
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   447
	switch (t) {
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   448
		case MP_CLEAR:
3447
1c62c085638a (svn r4279) s/\<CL_/CLEAR_/
tron
parents: 3441
diff changeset
   449
			if (IsClearGround(tile, CLEAR_GRASS) && GetClearDensity(tile) < 3) {
2955
24de69e236d2 (svn r3514) -Codechange: Replace direct fiddling of bits for the ground type and density of clear tiles with symbolic names and accessors.
tron
parents: 2952
diff changeset
   450
				bits = MKCOLOR(0x37373737);
24de69e236d2 (svn r3514) -Codechange: Replace direct fiddling of bits for the ground type and density of clear tiles with symbolic names and accessors.
tron
parents: 2952
diff changeset
   451
			} else {
24de69e236d2 (svn r3514) -Codechange: Replace direct fiddling of bits for the ground type and density of clear tiles with symbolic names and accessors.
tron
parents: 2952
diff changeset
   452
				bits = _vegetation_clear_bits[GetClearGround(tile)];
24de69e236d2 (svn r3514) -Codechange: Replace direct fiddling of bits for the ground type and density of clear tiles with symbolic names and accessors.
tron
parents: 2952
diff changeset
   453
			}
1515
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   454
			break;
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   455
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   456
		case MP_INDUSTRY:
6757
385cb1bf2ba9 (svn r9992) -Codechange: Remove some hardcoded references to Industry IDs.
belugas
parents: 6748
diff changeset
   457
			bits = GetIndustrySpec(GetIndustryByTile(tile)->type)->check_proc == CHECK_FOREST ? MKCOLOR(0xD0D0D0D0) : MKCOLOR(0xB5B5B5B5);
1515
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   458
			break;
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   459
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   460
		case MP_TREES:
3441
fead68bcb6a3 (svn r4271) s/\<TR_/TREE_/ resp. s/\<TR_/TREE_GROUND/
tron
parents: 3421
diff changeset
   461
			if (GetTreeGround(tile) == TREE_GROUND_SNOW_DESERT) {
9413
7042a8ec3fa8 (svn r13325) -Codechange: split the client-side only settings from the settings stored in the savegame so there is no need to have a duplicate copy of it for new games.
rubidium
parents: 9412
diff changeset
   462
				bits = (_settings_game.game_creation.landscape == LT_ARCTIC) ? MKCOLOR(0x98575798) : MKCOLOR(0xC25757C2);
2951
2de6d3a59743 (svn r3510) Fiddle with whitespace and parentheses
tron
parents: 2907
diff changeset
   463
			} else {
1515
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   464
				bits = MKCOLOR(0x54575754);
2951
2de6d3a59743 (svn r3510) Fiddle with whitespace and parentheses
tron
parents: 2907
diff changeset
   465
			}
1515
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   466
			break;
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   467
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   468
		default:
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   469
			bits = ApplyMask(MKCOLOR(0x54545454), &_smallmap_vehicles_andor[t]);
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   470
			break;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   471
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   472
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   473
	return bits;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   474
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   475
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   476
4846
8cf926d11bfa (svn r6772) -Codechange: Do not abuse OWNER_SPECTATOR as the "owner" of the industry for
Darkvater
parents: 4727
diff changeset
   477
static uint32 _owner_colors[OWNER_END + 1];
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   478
1918
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   479
/**
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   480
 * Return the color a tile would be displayed with in the small map in mode "Owner".
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   481
 *
6483
ae78fc3c6b20 (svn r9664) -Documentation: Doxygen corrections,errors and omissions
belugas
parents: 6476
diff changeset
   482
 * @param tile The tile of which we would like to get the color.
1918
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   483
 * @return The color of tile in the small map in mode "Owner"
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   484
 */
1515
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   485
static inline uint32 GetSmallMapOwnerPixels(TileIndex tile)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   486
{
2368
cb44b5c6953d (svn r2894) Simplify colouring in owner-mode in the minimap regarding towns and get rid of some magic numbers
tron
parents: 2332
diff changeset
   487
	Owner o;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   488
2368
cb44b5c6953d (svn r2894) Simplify colouring in owner-mode in the minimap regarding towns and get rid of some magic numbers
tron
parents: 2332
diff changeset
   489
	switch (GetTileType(tile)) {
4846
8cf926d11bfa (svn r6772) -Codechange: Do not abuse OWNER_SPECTATOR as the "owner" of the industry for
Darkvater
parents: 4727
diff changeset
   490
		case MP_INDUSTRY: o = OWNER_END;          break;
2368
cb44b5c6953d (svn r2894) Simplify colouring in owner-mode in the minimap regarding towns and get rid of some magic numbers
tron
parents: 2332
diff changeset
   491
		case MP_HOUSE:    o = OWNER_TOWN;         break;
cb44b5c6953d (svn r2894) Simplify colouring in owner-mode in the minimap regarding towns and get rid of some magic numbers
tron
parents: 2332
diff changeset
   492
		default:          o = GetTileOwner(tile); break;
9341
bd60c3b2d1e0 (svn r13233) -Fix: Replace some (incorrect) evaluations of TileOwner by RoadOwner.
frosch
parents: 9317
diff changeset
   493
		/* FIXME: For MP_ROAD there are multiple owners.
bd60c3b2d1e0 (svn r13233) -Fix: Replace some (incorrect) evaluations of TileOwner by RoadOwner.
frosch
parents: 9317
diff changeset
   494
		 * GetTileOwner returns the rail owner (level crossing) resp. the owner of ROADTYPE_ROAD (normal road),
bd60c3b2d1e0 (svn r13233) -Fix: Replace some (incorrect) evaluations of TileOwner by RoadOwner.
frosch
parents: 9317
diff changeset
   495
		 * even if there are no ROADTYPE_ROAD bits on the tile.
bd60c3b2d1e0 (svn r13233) -Fix: Replace some (incorrect) evaluations of TileOwner by RoadOwner.
frosch
parents: 9317
diff changeset
   496
		 */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   497
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   498
2368
cb44b5c6953d (svn r2894) Simplify colouring in owner-mode in the minimap regarding towns and get rid of some magic numbers
tron
parents: 2332
diff changeset
   499
	return _owner_colors[o];
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   500
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   501
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   502
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   503
static const uint32 _smallmap_mask_left[3] = {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   504
	MKCOLOR(0xFF000000),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   505
	MKCOLOR(0xFFFF0000),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   506
	MKCOLOR(0xFFFFFF00),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   507
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   508
1515
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   509
static const uint32 _smallmap_mask_right[] = {
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   510
	MKCOLOR(0x000000FF),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   511
	MKCOLOR(0x0000FFFF),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   512
	MKCOLOR(0x00FFFFFF),
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   513
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   514
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   515
/* each tile has 4 x pixels and 1 y pixel */
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   516
1918
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   517
static GetSmallMapPixels *_smallmap_draw_procs[] = {
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   518
	GetSmallMapContoursPixels,
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   519
	GetSmallMapVehiclesPixels,
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   520
	GetSmallMapIndustriesPixels,
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   521
	GetSmallMapRoutesPixels,
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   522
	GetSmallMapVegetationPixels,
fb72133270ac (svn r2424) - Fix: backport the smallmap_gui.c changes from the map/ branch into trunk. This also implicitely fixes the bug where the game would crash in certain resolutions with certain minimap masks when dragged partly outside the game-area.
Darkvater
parents: 1901
diff changeset
   523
	GetSmallMapOwnerPixels,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   524
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   525
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   526
static const byte _vehicle_type_colors[6] = {
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   527
	184, 191, 152, 15, 215, 184
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   528
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   529
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   530
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   531
static void DrawVertMapIndicator(int x, int y, int x2, int y2)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   532
{
2951
2de6d3a59743 (svn r3510) Fiddle with whitespace and parentheses
tron
parents: 2907
diff changeset
   533
	GfxFillRect(x, y,      x2, y + 3, 69);
2de6d3a59743 (svn r3510) Fiddle with whitespace and parentheses
tron
parents: 2907
diff changeset
   534
	GfxFillRect(x, y2 - 3, x2, y2,    69);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   535
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   536
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   537
static void DrawHorizMapIndicator(int x, int y, int x2, int y2)
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   538
{
2951
2de6d3a59743 (svn r3510) Fiddle with whitespace and parentheses
tron
parents: 2907
diff changeset
   539
	GfxFillRect(x,      y, x + 3, y2, 69);
2de6d3a59743 (svn r3510) Fiddle with whitespace and parentheses
tron
parents: 2907
diff changeset
   540
	GfxFillRect(x2 - 3, y, x2,    y2, 69);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   541
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   542
7919
a8b61d51832e (svn r11472) -Codechange: Give enuma for both the widget numbers and the used smallmap currently used type
belugas
parents: 7824
diff changeset
   543
enum SmallMapWindowWidgets {
a8b61d51832e (svn r11472) -Codechange: Give enuma for both the widget numbers and the used smallmap currently used type
belugas
parents: 7824
diff changeset
   544
	SM_WIDGET_MAP = 4,
a8b61d51832e (svn r11472) -Codechange: Give enuma for both the widget numbers and the used smallmap currently used type
belugas
parents: 7824
diff changeset
   545
	SM_WIDGET_CONTOUR,
a8b61d51832e (svn r11472) -Codechange: Give enuma for both the widget numbers and the used smallmap currently used type
belugas
parents: 7824
diff changeset
   546
	SM_WIDGET_VEHICLES,
a8b61d51832e (svn r11472) -Codechange: Give enuma for both the widget numbers and the used smallmap currently used type
belugas
parents: 7824
diff changeset
   547
	SM_WIDGET_INDUSTRIES,
a8b61d51832e (svn r11472) -Codechange: Give enuma for both the widget numbers and the used smallmap currently used type
belugas
parents: 7824
diff changeset
   548
	SM_WIDGET_ROUTES,
a8b61d51832e (svn r11472) -Codechange: Give enuma for both the widget numbers and the used smallmap currently used type
belugas
parents: 7824
diff changeset
   549
	SM_WIDGET_VEGETATION,
a8b61d51832e (svn r11472) -Codechange: Give enuma for both the widget numbers and the used smallmap currently used type
belugas
parents: 7824
diff changeset
   550
	SM_WIDGET_OWNERS,
a8b61d51832e (svn r11472) -Codechange: Give enuma for both the widget numbers and the used smallmap currently used type
belugas
parents: 7824
diff changeset
   551
	SM_WIDGET_CENTERMAP,
a8b61d51832e (svn r11472) -Codechange: Give enuma for both the widget numbers and the used smallmap currently used type
belugas
parents: 7824
diff changeset
   552
	SM_WIDGET_TOGGLETOWNNAME,
a8b61d51832e (svn r11472) -Codechange: Give enuma for both the widget numbers and the used smallmap currently used type
belugas
parents: 7824
diff changeset
   553
	SM_WIDGET_LEGEND,
7921
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   554
	SM_WIDGET_BUTTONSPANEL,
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   555
	SM_WIDGET_BOTTOMPANEL,
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   556
	SM_WIDGET_ENABLEINDUSTRIES,
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   557
	SM_WIDGET_DISABLEINDUSTRIES,
3437fdd5c0a8 (svn r11474) -Feature: Allow to resize on creation the smallmap gui in order to show all the types industry available.
belugas
parents: 7920
diff changeset
   558
	SM_WIDGET_RESIZEBOX,
7919
a8b61d51832e (svn r11472) -Codechange: Give enuma for both the widget numbers and the used smallmap currently used type
belugas
parents: 7824
diff changeset
   559
};
a8b61d51832e (svn r11472) -Codechange: Give enuma for both the widget numbers and the used smallmap currently used type
belugas
parents: 7824
diff changeset
   560
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   561
class SmallMapWindow : public Window
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   562
{
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   563
	enum SmallMapType {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   564
		SMT_CONTOUR,
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   565
		SMT_VEHICLES,
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   566
		SMT_INDUSTRY,
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   567
		SMT_OWNER = 5,
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   568
	};
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 176
diff changeset
   569
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   570
	enum {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   571
		BASE_NB_PER_COLUMN = 6,
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   572
	};
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   573
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   574
	int32 scroll_x;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   575
	int32 scroll_y;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   576
	int32 subscroll;
9412
163c465bf250 (svn r13323) -Codechange: scrollbars are not refresh counters
peter1138
parents: 9358
diff changeset
   577
	uint8 refresh;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   578
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   579
public:
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   580
	/**
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   581
	 * Draws the small map.
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   582
	 *
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   583
	 * Basically, the small map is draw column of pixels by column of pixels. The pixels
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   584
	 * are drawn directly into the screen buffer. The final map is drawn in multiple passes.
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   585
	 * The passes are:
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   586
	 * <ol><li>The colors of tiles in the different modes.</li>
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   587
	 * <li>Town names (optional)</li></ol>
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   588
	 *
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   589
	 * @param dpi pointer to pixel to write onto
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   590
	 * @param w pointer to Window struct
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   591
	 * @param type type of map requested (vegetation, owners, routes, etc)
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   592
	 * @param show_towns true if the town names should be displayed, false if not.
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   593
	 */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   594
	void DrawSmallMap(DrawPixelInfo *dpi, int type, bool show_towns)
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   595
	{
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   596
		Blitter *blitter = BlitterFactoryBase::GetCurrentBlitter();
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   597
		DrawPixelInfo *old_dpi;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   598
		int dx,dy, x, y, x2, y2;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   599
		void *ptr;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   600
		int tile_x;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   601
		int tile_y;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   602
		ViewPort *vp;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   603
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   604
		old_dpi = _cur_dpi;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   605
		_cur_dpi = dpi;
1515
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   606
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   607
		/* clear it */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   608
		GfxFillRect(dpi->left, dpi->top, dpi->left + dpi->width - 1, dpi->top + dpi->height - 1, 0);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   609
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   610
		/* setup owner table */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   611
		if (type == SMT_OWNER) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   612
			const Player *p;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   613
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   614
			/* fill with some special colors */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   615
			_owner_colors[OWNER_TOWN] = MKCOLOR(0xB4B4B4B4);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   616
			_owner_colors[OWNER_NONE] = MKCOLOR(0x54545454);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   617
			_owner_colors[OWNER_WATER] = MKCOLOR(0xCACACACA);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   618
			_owner_colors[OWNER_END]   = MKCOLOR(0x20202020); /* industry */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   619
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   620
			/* now fill with the player colors */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   621
			FOR_ALL_PLAYERS(p) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   622
				if (p->is_active) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   623
					_owner_colors[p->index] =
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   624
						_colour_gradient[p->player_color][5] * 0x01010101;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   625
				}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   626
			}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   627
		}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   628
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   629
		tile_x = this->scroll_x / TILE_SIZE;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   630
		tile_y = this->scroll_y / TILE_SIZE;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   631
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   632
		dx = dpi->left + this->subscroll;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   633
		tile_x -= dx / 4;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   634
		tile_y += dx / 4;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   635
		dx &= 3;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   636
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   637
		dy = dpi->top;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   638
		tile_x += dy / 2;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   639
		tile_y += dy / 2;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   640
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   641
		if (dy & 1) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   642
			tile_x++;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   643
			dx += 2;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   644
			if (dx > 3) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   645
				dx -= 4;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   646
				tile_x--;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   647
				tile_y++;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   648
			}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   649
		}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   650
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   651
		ptr = blitter->MoveTo(dpi->dst_ptr, -dx - 4, 0);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   652
		x = - dx - 4;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   653
		y = 0;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   654
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   655
		for (;;) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   656
			uint32 mask = 0xFFFFFFFF;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   657
			int reps;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   658
			int t;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   659
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   660
			/* distance from left edge */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   661
			if (x < 0) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   662
				if (x < -3) goto skip_column;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   663
				/* mask to use at the left edge */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   664
				mask = _smallmap_mask_left[x + 3];
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   665
			}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   666
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   667
			/* distance from right edge */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   668
			t = dpi->width - x;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   669
			if (t < 4) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   670
				if (t <= 0) break; /* exit loop */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   671
				/* mask to use at the right edge */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   672
				mask &= _smallmap_mask_right[t - 1];
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   673
			}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   674
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   675
			/* number of lines */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   676
			reps = (dpi->height - y + 1) / 2;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   677
			if (reps > 0) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   678
				DrawSmallMapStuff(ptr, tile_x, tile_y, dpi->pitch * 2, reps, mask, _smallmap_draw_procs[type]);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   679
			}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   680
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   681
	skip_column:
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   682
			if (y == 0) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   683
				tile_y++;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   684
				y++;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   685
				ptr = blitter->MoveTo(ptr, 0, 1);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   686
			} else {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   687
				tile_x--;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   688
				y--;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   689
				ptr = blitter->MoveTo(ptr, 0, -1);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   690
			}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   691
			ptr = blitter->MoveTo(ptr, 2, 0);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   692
			x += 2;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   693
		}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   694
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   695
		/* draw vehicles? */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   696
		if (type == SMT_CONTOUR || type == SMT_VEHICLES) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   697
			Vehicle *v;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   698
			bool skip;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   699
			byte color;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   700
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   701
			FOR_ALL_VEHICLES(v) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   702
				if (v->type != VEH_EFFECT &&
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   703
						(v->vehstatus & (VS_HIDDEN | VS_UNCLICKABLE)) == 0) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   704
					/* Remap into flat coordinates. */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   705
					Point pt = RemapCoords(
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   706
						v->x_pos / TILE_SIZE - this->scroll_x / TILE_SIZE, // divide each one separately because (a-b)/c != a/c-b/c in integer world
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   707
						v->y_pos / TILE_SIZE - this->scroll_y / TILE_SIZE, //    dtto
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   708
						0);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   709
					x = pt.x;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   710
					y = pt.y;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   711
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   712
					/* Check if y is out of bounds? */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   713
					y -= dpi->top;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   714
					if (!IsInsideMM(y, 0, dpi->height)) continue;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   715
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   716
					/* Default is to draw both pixels. */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   717
					skip = false;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   718
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   719
					/* Offset X coordinate */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   720
					x -= this->subscroll + 3 + dpi->left;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   721
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   722
					if (x < 0) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   723
						/* if x+1 is 0, that means we're on the very left edge,
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   724
						 *  and should thus only draw a single pixel */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   725
						if (++x != 0) continue;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   726
						skip = true;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   727
					} else if (x >= dpi->width - 1) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   728
						/* Check if we're at the very right edge, and if so draw only a single pixel */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   729
						if (x != dpi->width - 1) continue;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   730
						skip = true;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   731
					}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   732
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   733
					/* Calculate pointer to pixel and the color */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   734
					color = (type == SMT_VEHICLES) ? _vehicle_type_colors[v->type] : 0xF;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   735
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   736
					/* And draw either one or two pixels depending on clipping */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   737
					blitter->SetPixel(dpi->dst_ptr, x, y, color);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   738
					if (!skip) blitter->SetPixel(dpi->dst_ptr, x + 1, y, color);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   739
				}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   740
			}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   741
		}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   742
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   743
		if (show_towns) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   744
			const Town *t;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   745
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   746
			FOR_ALL_TOWNS(t) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   747
				/* Remap the town coordinate */
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   748
				Point pt = RemapCoords(
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   749
					(int)(TileX(t->xy) * TILE_SIZE - this->scroll_x) / TILE_SIZE,
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   750
					(int)(TileY(t->xy) * TILE_SIZE - this->scroll_y) / TILE_SIZE,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   751
					0);
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   752
				x = pt.x - this->subscroll + 3 - (t->sign.width_2 >> 1);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   753
				y = pt.y;
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   754
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   755
				/* Check if the town sign is within bounds */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   756
				if (x + t->sign.width_2 > dpi->left &&
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   757
						x < dpi->left + dpi->width &&
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   758
						y + 6 > dpi->top &&
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   759
						y < dpi->top + dpi->height) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   760
					/* And draw it. */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   761
					SetDParam(0, t->index);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   762
					DrawString(x, y, STR_2056, TC_WHITE);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   763
				}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   764
			}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   765
		}
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   766
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   767
		/* Draw map indicators */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   768
		{
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   769
			Point pt;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   770
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   771
			/* Find main viewport. */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   772
			vp = FindWindowById(WC_MAIN_WINDOW,0)->viewport;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   773
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   774
			pt = RemapCoords(this->scroll_x, this->scroll_y, 0);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   775
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   776
			x = vp->virtual_left - pt.x;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   777
			y = vp->virtual_top - pt.y;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   778
			x2 = (x + vp->virtual_width) / TILE_SIZE;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   779
			y2 = (y + vp->virtual_height) / TILE_SIZE;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   780
			x /= TILE_SIZE;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   781
			y /= TILE_SIZE;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   782
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   783
			x -= this->subscroll;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   784
			x2 -= this->subscroll;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   785
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   786
			DrawVertMapIndicator(x, y, x, y2);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   787
			DrawVertMapIndicator(x2, y, x2, y2);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   788
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   789
			DrawHorizMapIndicator(x, y, x2, y);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   790
			DrawHorizMapIndicator(x, y2, x2, y2);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   791
		}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   792
		_cur_dpi = old_dpi;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   793
	}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   794
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   795
	void SmallMapCenterOnCurrentPos()
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   796
	{
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   797
		int x, y;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   798
		ViewPort *vp;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   799
		vp = FindWindowById(WC_MAIN_WINDOW, 0)->viewport;
1515
071fe1565cb8 (svn r2019) Miscellaneous cleanups, like uint -> TileIndex, >> -> /, if cascade -> switch
tron
parents: 1511
diff changeset
   800
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   801
		x  = ((vp->virtual_width  - (this->widget[SM_WIDGET_MAP].right  - this->widget[SM_WIDGET_MAP].left) * TILE_SIZE) / 2 + vp->virtual_left) / 4;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   802
		y  = ((vp->virtual_height - (this->widget[SM_WIDGET_MAP].bottom - this->widget[SM_WIDGET_MAP].top ) * TILE_SIZE) / 2 + vp->virtual_top ) / 2 - TILE_SIZE * 2;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   803
		this->scroll_x = (y - x) & ~0xF;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   804
		this->scroll_y = (x + y) & ~0xF;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   805
		this->SetDirty();
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   806
	}
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 176
diff changeset
   807
9203
082fbf0500c4 (svn r13069) -Codechange: it is no longer needed to pass a void *data pointer with the WE_CREATE message because nothing uses it anymore.
rubidium
parents: 9193
diff changeset
   808
	SmallMapWindow(const WindowDesc *desc, int window_number) : Window(desc, window_number)
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   809
	{
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   810
		/* Resize the window to fit industries list */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   811
		if (_industries_per_column > BASE_NB_PER_COLUMN) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   812
			uint diff = ((_industries_per_column - BASE_NB_PER_COLUMN) * BASE_NB_PER_COLUMN) + 1;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   813
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   814
			this->height = this->height + diff;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   815
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   816
			Widget *wi = &this->widget[SM_WIDGET_LEGEND]; // label panel
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   817
			wi->bottom = wi->bottom + diff;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   818
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   819
			wi = &this->widget[SM_WIDGET_BUTTONSPANEL]; // filler panel under smallmap buttons
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   820
			wi->bottom = wi->bottom + diff - 1;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   821
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   822
			/* Change widget position
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   823
			 * - footer panel
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   824
			 * - enable all industry
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   825
			 * - disable all industry
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   826
			 * - resize window button
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   827
			 */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   828
			for (uint i = SM_WIDGET_BOTTOMPANEL; i <= SM_WIDGET_RESIZEBOX; i++) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   829
				wi           = &this->widget[i];
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   830
				wi->top      = wi->top + diff;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   831
				wi->bottom   = wi->bottom + diff;
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   832
			}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
   833
		}
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   834
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   835
		this->LowerWidget(_smallmap_type + SMT_OWNER);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   836
		this->SetWidgetLoweredState(SM_WIDGET_TOGGLETOWNNAME, _smallmap_show_towns);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   837
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   838
		this->SmallMapCenterOnCurrentPos();
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   839
		this->FindWindowPlacementAndResize(desc);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   840
	}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   841
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   842
	virtual void OnPaint()
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   843
	{
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   844
		const LegendAndColour *tbl;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   845
		int x, y, y_org;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   846
		uint diff;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   847
		DrawPixelInfo new_dpi;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   848
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   849
		/* Hide Enable all/Disable all buttons if is not industry type small map*/
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   850
		this->SetWidgetHiddenState(SM_WIDGET_ENABLEINDUSTRIES, _smallmap_type != SMT_INDUSTRY);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   851
		this->SetWidgetHiddenState(SM_WIDGET_DISABLEINDUSTRIES, _smallmap_type != SMT_INDUSTRY);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   852
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   853
		/* draw the window */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   854
		SetDParam(0, STR_00E5_CONTOURS + _smallmap_type);
9273
35e0224ea8f1 (svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium
parents: 9203
diff changeset
   855
		this->DrawWidgets();
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   856
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   857
		tbl = _legend_table[_smallmap_type];
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   858
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   859
		/* difference in window size */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   860
		diff = (_industries_per_column > BASE_NB_PER_COLUMN) ? ((_industries_per_column - BASE_NB_PER_COLUMN) * BASE_NB_PER_COLUMN) + 1 : 0;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   861
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   862
		x = 4;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   863
		y_org = this->height - 44 - 11 - diff;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   864
		y = y_org;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   865
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   866
		for (;;) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   867
			if (_smallmap_type == SMT_INDUSTRY) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   868
				/* Industry name must be formated, since it's not in tiny font in the specs.
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   869
				 * So, draw with a parameter and use the STR_SMALLMAP_INDUSTRY string, which is tiny font.*/
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   870
				SetDParam(0, tbl->legend);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   871
				assert(tbl->type < NUM_INDUSTRYTYPES);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   872
				SetDParam(1, _industry_counts[tbl->type]);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   873
				if (!tbl->show_on_map) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   874
					/* Simply draw the string, not the black border of the legend color.
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   875
					 * This will enforce the idea of the disabled item */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   876
					DrawString(x + 11, y, STR_SMALLMAP_INDUSTRY, TC_GREY);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   877
				} else {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   878
					DrawString(x + 11, y, STR_SMALLMAP_INDUSTRY, TC_BLACK);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   879
					GfxFillRect(x, y + 1, x + 8, y + 5, 0); // outer border of the legend color
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   880
				}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   881
			} else {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   882
				/* Anything that is not an industry is using normal process */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   883
				GfxFillRect(x, y + 1, x + 8, y + 5, 0);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   884
				DrawString(x + 11, y, tbl->legend, TC_FROMSTRING);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   885
			}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   886
			GfxFillRect(x + 1, y + 2, x + 7, y + 4, tbl->colour); // legend color
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   887
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   888
			tbl += 1;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   889
			y += 6;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   890
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   891
			if (tbl->end) { // end of the list
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   892
				break;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   893
			} else if (tbl->col_break) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   894
				/*  break asked, continue at top, 123 pixels (one "row") to the right */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   895
				x += 123;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   896
				y = y_org;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   897
			}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   898
		}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   899
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   900
		if (!FillDrawPixelInfo(&new_dpi, 3, 17, this->width - 28 + 22, this->height - 64 - 11 - diff)) return;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   901
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   902
		this->DrawSmallMap(&new_dpi, _smallmap_type, _smallmap_show_towns);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   903
	}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   904
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   905
	virtual void OnClick(Point pt, int widget)
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   906
	{
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   907
		switch (widget) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   908
			case SM_WIDGET_MAP: { // Map window
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   909
				/*
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   910
				 * XXX: scrolling with the left mouse button is done by subsequently
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   911
				 * clicking with the left mouse button; clicking once centers the
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   912
				 * large map at the selected point. So by unclicking the left mouse
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   913
				 * button here, it gets reclicked during the next inputloop, which
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   914
				 * would make it look like the mouse is being dragged, while it is
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   915
				 * actually being (virtually) clicked every inputloop.
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   916
				 */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   917
				_left_button_clicked = false;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   918
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   919
				Point pt = RemapCoords(this->scroll_x, this->scroll_y, 0);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   920
				Window *w = FindWindowById(WC_MAIN_WINDOW, 0);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   921
				w->viewport->dest_scrollpos_x = pt.x + ((_cursor.pos.x - this->left + 2) << 4) - (w->viewport->virtual_width >> 1);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   922
				w->viewport->dest_scrollpos_y = pt.y + ((_cursor.pos.y - this->top - 16) << 4) - (w->viewport->virtual_height >> 1);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   923
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   924
				this->SetDirty();
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   925
			} break;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   926
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   927
			case SM_WIDGET_CONTOUR:    // Show land contours
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   928
			case SM_WIDGET_VEHICLES:   // Show vehicles
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   929
			case SM_WIDGET_INDUSTRIES: // Show industries
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   930
			case SM_WIDGET_ROUTES:     // Show transport routes
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   931
			case SM_WIDGET_VEGETATION: // Show vegetation
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   932
			case SM_WIDGET_OWNERS:     // Show land owners
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   933
				this->RaiseWidget(_smallmap_type + SM_WIDGET_CONTOUR);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   934
				_smallmap_type = widget - SM_WIDGET_CONTOUR;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   935
				this->LowerWidget(_smallmap_type + SM_WIDGET_CONTOUR);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   936
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   937
				this->SetDirty();
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   938
				SndPlayFx(SND_15_BEEP);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   939
				break;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   940
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   941
			case SM_WIDGET_CENTERMAP: // Center the smallmap again
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   942
				this->SmallMapCenterOnCurrentPos();
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   943
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   944
				this->SetDirty();
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   945
				SndPlayFx(SND_15_BEEP);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   946
				break;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   947
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   948
			case SM_WIDGET_TOGGLETOWNNAME: // Toggle town names
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   949
				this->ToggleWidgetLoweredState(SM_WIDGET_TOGGLETOWNNAME);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   950
				_smallmap_show_towns = this->IsWidgetLowered(SM_WIDGET_TOGGLETOWNNAME);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   951
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   952
				this->SetDirty();
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   953
				SndPlayFx(SND_15_BEEP);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   954
				break;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   955
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   956
			case SM_WIDGET_LEGEND: // Legend
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   957
				/* if industry type small map*/
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   958
				if (_smallmap_type == SMT_INDUSTRY) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   959
					/* if click on industries label, find right industry type and enable/disable it */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   960
					Widget *wi = &this->widget[SM_WIDGET_LEGEND]; // label panel
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   961
					uint column = (pt.x - 4) / 123;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   962
					uint line = (pt.y - wi->top - 2) / 6;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   963
					uint free = _smallmap_industry_count % 3;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   964
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   965
					if (column <= 3) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   966
						/* check if click is on industry label*/
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   967
						uint industry_pos = 0;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   968
						for (uint i = 0; i <= column; i++) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   969
							uint diff = (free > 0) ? 1 : 0;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   970
							uint max_column_lines = _industries_per_column + diff;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   971
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   972
							if (i < column) industry_pos = industry_pos + _industries_per_column + diff;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   973
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   974
							if (i == column && line <= max_column_lines - 1) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   975
								industry_pos = industry_pos + line;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   976
								_legend_from_industries[industry_pos].show_on_map = !_legend_from_industries[industry_pos].show_on_map;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   977
							}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   978
							if( free > 0) free--;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   979
						}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   980
					}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   981
					/* Raise the two buttons "all", as we have done a specific choice */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   982
					this->RaiseWidget(SM_WIDGET_ENABLEINDUSTRIES);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   983
					this->RaiseWidget(SM_WIDGET_DISABLEINDUSTRIES);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   984
					this->SetDirty();
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   985
				}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   986
				break;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   987
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   988
			case SM_WIDGET_ENABLEINDUSTRIES: // Enable all industries
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   989
				for (int i = 0; i != _smallmap_industry_count; i++) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   990
					_legend_from_industries[i].show_on_map = true;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   991
				}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   992
				/* toggle appeareance indicating the choice */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   993
				this->LowerWidget(SM_WIDGET_ENABLEINDUSTRIES);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   994
				this->RaiseWidget(SM_WIDGET_DISABLEINDUSTRIES);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   995
				this->SetDirty();
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   996
				break;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   997
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   998
			case SM_WIDGET_DISABLEINDUSTRIES: // disable all industries
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
   999
				for (int i = 0; i != _smallmap_industry_count; i++) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1000
					_legend_from_industries[i].show_on_map = false;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1001
				}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1002
				/* toggle appeareance indicating the choice */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1003
				this->RaiseWidget(SM_WIDGET_ENABLEINDUSTRIES);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1004
				this->LowerWidget(SM_WIDGET_DISABLEINDUSTRIES);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1005
				this->SetDirty();
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1006
				break;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1007
		}
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 176
diff changeset
  1008
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1009
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1010
	virtual void OnRightClick(Point pt, int widget)
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1011
	{
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1012
		if (widget == SM_WIDGET_MAP) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1013
			if (_scrolling_viewport) return;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1014
			_scrolling_viewport = true;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1015
			_cursor.delta.x = 0;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1016
			_cursor.delta.y = 0;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1017
		}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1018
	}
4435
40eff4363774 (svn r6205) -CodeChange : use a switch case instead of a cascade of if
belugas
parents: 4429
diff changeset
  1019
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1020
	virtual void OnTick()
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1021
	{
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1022
		/* update the window every now and then */
9412
163c465bf250 (svn r13323) -Codechange: scrollbars are not refresh counters
peter1138
parents: 9358
diff changeset
  1023
		if ((++this->refresh & 0x1F) == 0) this->SetDirty();
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1024
	}
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1025
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1026
	virtual void OnScroll(Point delta)
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1027
	{
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1028
		_cursor.fix_at = true;
4335
02934874f33d (svn r6036) -Codechange: do not handle SCROLL in a central function, but let windows handle them theirself. Added WE_SCROLL for this.
truelight
parents: 4171
diff changeset
  1029
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1030
		int x = this->scroll_x;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1031
		int y = this->scroll_y;
4335
02934874f33d (svn r6036) -Codechange: do not handle SCROLL in a central function, but let windows handle them theirself. Added WE_SCROLL for this.
truelight
parents: 4171
diff changeset
  1032
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1033
		int sub = this->subscroll + delta.x;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1034
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1035
		x -= (sub >> 2) << 4;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1036
		y += (sub >> 2) << 4;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1037
		sub &= 3;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1038
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1039
		x += (delta.y >> 1) << 4;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1040
		y += (delta.y >> 1) << 4;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1041
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1042
		if (delta.y & 1) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1043
			x += TILE_SIZE;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1044
			sub += 2;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1045
			if (sub > 3) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1046
				sub -= 4;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1047
				x -= TILE_SIZE;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1048
				y += TILE_SIZE;
4335
02934874f33d (svn r6036) -Codechange: do not handle SCROLL in a central function, but let windows handle them theirself. Added WE_SCROLL for this.
truelight
parents: 4171
diff changeset
  1049
			}
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1050
		}
4335
02934874f33d (svn r6036) -Codechange: do not handle SCROLL in a central function, but let windows handle them theirself. Added WE_SCROLL for this.
truelight
parents: 4171
diff changeset
  1051
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1052
		int hx = (this->widget[SM_WIDGET_MAP].right  - this->widget[SM_WIDGET_MAP].left) / 2;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1053
		int hy = (this->widget[SM_WIDGET_MAP].bottom - this->widget[SM_WIDGET_MAP].top ) / 2;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1054
		int hvx = hx * -4 + hy * 8;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1055
		int hvy = hx *  4 + hy * 8;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1056
		if (x < -hvx) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1057
			x = -hvx;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1058
			sub = 0;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1059
		}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1060
		if (x > (int)MapMaxX() * TILE_SIZE - hvx) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1061
			x = MapMaxX() * TILE_SIZE - hvx;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1062
			sub = 0;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1063
		}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1064
		if (y < -hvy) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1065
			y = -hvy;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1066
			sub = 0;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1067
		}
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1068
		if (y > (int)MapMaxY() * TILE_SIZE - hvy) {
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1069
			y = MapMaxY() * TILE_SIZE - hvy;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1070
			sub = 0;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1071
		}
4335
02934874f33d (svn r6036) -Codechange: do not handle SCROLL in a central function, but let windows handle them theirself. Added WE_SCROLL for this.
truelight
parents: 4171
diff changeset
  1072
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1073
		this->scroll_x = x;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1074
		this->scroll_y = y;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1075
		this->subscroll = sub;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1076
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1077
		this->SetDirty();
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1078
	}
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1079
};
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1080
867
dffd33233237 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 856
diff changeset
  1081
static const WindowDesc _smallmap_desc = {
7345
9770fd47a675 (svn r10708) -Codechange: allow automatic downsizing of the smallmap window in case of low resolutions; one could already make the window smaller, but the resize button was unreachable.
rubidium
parents: 7341
diff changeset
  1082
	WDP_AUTO, WDP_AUTO, 350, 214, 446, 314,
5893
7e431a4abebb (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents: 5584
diff changeset
  1083
	WC_SMALLMAP, WC_NONE,
867
dffd33233237 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 856
diff changeset
  1084
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_STICKY_BUTTON | WDF_RESIZABLE,
dffd33233237 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 856
diff changeset
  1085
	_smallmap_widgets,
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1086
};
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1087
6247
7d81e3a5d803 (svn r9050) -Codechange: Foo(void) -> Foo()
rubidium
parents: 5955
diff changeset
  1088
void ShowSmallMap()
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1089
{
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1090
	AllocateWindowDescFront<SmallMapWindow>(&_smallmap_desc, 0);
0
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1091
}
29654efe3188 (svn r1) Import of revision 975 of old (crashed) SVN
truelight
parents:
diff changeset
  1092
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: 12
diff changeset
  1093
/* Extra ViewPort Window Stuff */
867
dffd33233237 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 856
diff changeset
  1094
static const Widget _extra_view_port_widgets[] = {
7369
2bfadb828304 (svn r10732) -Codechange: lower the minimum size for the extra viewport window.
rubidium
parents: 7345
diff changeset
  1095
{   WWT_CLOSEBOX,   RESIZE_NONE,    14,     0,    10,    0,   13, STR_00C5,                         STR_018B_CLOSE_WINDOW},
2bfadb828304 (svn r10732) -Codechange: lower the minimum size for the extra viewport window.
rubidium
parents: 7345
diff changeset
  1096
{    WWT_CAPTION,  RESIZE_RIGHT,    14,    11,   287,    0,   13, STR_EXTRA_VIEW_PORT_TITLE,        STR_018C_WINDOW_TITLE_DRAG_THIS},
2bfadb828304 (svn r10732) -Codechange: lower the minimum size for the extra viewport window.
rubidium
parents: 7345
diff changeset
  1097
{  WWT_STICKYBOX,     RESIZE_LR,    14,   288,   299,    0,   13, 0x0,                              STR_STICKY_BUTTON},
2bfadb828304 (svn r10732) -Codechange: lower the minimum size for the extra viewport window.
rubidium
parents: 7345
diff changeset
  1098
{      WWT_PANEL,     RESIZE_RB,    14,     0,   299,   14,   33, 0x0,                              STR_NULL},
2bfadb828304 (svn r10732) -Codechange: lower the minimum size for the extra viewport window.
rubidium
parents: 7345
diff changeset
  1099
{      WWT_INSET,     RESIZE_RB,    14,     2,   297,   16,   31, 0x0,                              STR_NULL},
2bfadb828304 (svn r10732) -Codechange: lower the minimum size for the extra viewport window.
rubidium
parents: 7345
diff changeset
  1100
{ WWT_PUSHIMGBTN,     RESIZE_TB,    14,     0,    21,   34,   55, SPR_IMG_ZOOMIN,                   STR_017F_ZOOM_THE_VIEW_IN},
2bfadb828304 (svn r10732) -Codechange: lower the minimum size for the extra viewport window.
rubidium
parents: 7345
diff changeset
  1101
{ WWT_PUSHIMGBTN,     RESIZE_TB,    14,    22,    43,   34,   55, SPR_IMG_ZOOMOUT,                  STR_0180_ZOOM_THE_VIEW_OUT},
2bfadb828304 (svn r10732) -Codechange: lower the minimum size for the extra viewport window.
rubidium
parents: 7345
diff changeset
  1102
{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,    44,   171,   34,   55, STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW, STR_EXTRA_VIEW_MOVE_MAIN_TO_VIEW_TT},
2bfadb828304 (svn r10732) -Codechange: lower the minimum size for the extra viewport window.
rubidium
parents: 7345
diff changeset
  1103
{ WWT_PUSHTXTBTN,     RESIZE_TB,    14,   172,   298,   34,   55, STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN, STR_EXTRA_VIEW_MOVE_VIEW_TO_MAIN_TT},
2bfadb828304 (svn r10732) -Codechange: lower the minimum size for the extra viewport window.
rubidium
parents: 7345
diff changeset
  1104
{      WWT_PANEL,    RESIZE_RTB,    14,   299,   299,   34,   55, 0x0,                              STR_NULL},
2bfadb828304 (svn r10732) -Codechange: lower the minimum size for the extra viewport window.
rubidium
parents: 7345
diff changeset
  1105
{      WWT_PANEL,    RESIZE_RTB,    14,     0,   287,   56,   67, 0x0,                              STR_NULL},
2bfadb828304 (svn r10732) -Codechange: lower the minimum size for the extra viewport window.
rubidium
parents: 7345
diff changeset
  1106
{  WWT_RESIZEBOX,   RESIZE_LRTB,    14,   288,   299,   56,   67, 0x0,                              STR_RESIZE_BUTTON},
176
84990c4b9212 (svn r177) -Fix: padded out Widget code to solve warnings on C99 compiler (Tron)
darkvater
parents: 154
diff changeset
  1107
{   WIDGETS_END},
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: 12
diff changeset
  1108
};
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: 12
diff changeset
  1109
9193
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1110
class ExtraViewportWindow : public Window
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: 12
diff changeset
  1111
{
9193
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1112
	enum ExtraViewportWindowWidgets {
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1113
		EVW_CLOSE,
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1114
		EVW_CAPTION,
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1115
		EVW_STICKY,
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1116
		EVW_BACKGROUND,
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1117
		EVW_VIEWPORT,
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1118
		EVW_ZOOMIN,
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1119
		EVW_ZOOMOUT,
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1120
		EVW_MAIN_TO_VIEW,
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1121
		EVW_VIEW_TO_MAIN,
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1122
		EVW_SPACER1,
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1123
		EVW_SPACER2,
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1124
		EVW_RESIZE,
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1125
	};
4000
4009d092b306 (svn r5210) Many small changes which piled up: const, unsigned, variable scope, CSE for readability, DeMorgan, if cascades -> switch, whitespace, parentheses, bracing, misc.
tron
parents: 3882
diff changeset
  1126
9193
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1127
public:
9203
082fbf0500c4 (svn r13069) -Codechange: it is no longer needed to pass a void *data pointer with the WE_CREATE message because nothing uses it anymore.
rubidium
parents: 9193
diff changeset
  1128
	ExtraViewportWindow(const WindowDesc *desc, int window_number, TileIndex tile) : Window(desc, window_number)
9193
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1129
	{
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1130
		/* New viewport start at (zero,zero) */
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1131
		InitializeWindowViewport(this, 3, 17, this->widget[EVW_VIEWPORT].right - this->widget[EVW_VIEWPORT].left - 1, this->widget[EVW_VIEWPORT].bottom - this->widget[EVW_VIEWPORT].top - 1, 0, ZOOM_LVL_VIEWPORT);
4335
02934874f33d (svn r6036) -Codechange: do not handle SCROLL in a central function, but let windows handle them theirself. Added WE_SCROLL for this.
truelight
parents: 4171
diff changeset
  1132
9193
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1133
		this->DisableWidget(EVW_ZOOMIN);
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1134
		this->FindWindowPlacementAndResize(desc);
4335
02934874f33d (svn r6036) -Codechange: do not handle SCROLL in a central function, but let windows handle them theirself. Added WE_SCROLL for this.
truelight
parents: 4171
diff changeset
  1135
9193
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1136
		Point pt;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1137
		if (tile == INVALID_TILE) {
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1138
			/* the main window with the main view */
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1139
			const Window *w = FindWindowById(WC_MAIN_WINDOW, 0);
4337
e705eef174bf (svn r6038) -Codechange: move mousewheel code to event WE_MOUSEWHEEL instead of a general function that handles that
truelight
parents: 4335
diff changeset
  1140
9193
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1141
			/* center on same place as main window (zoom is maximum, no adjustment needed) */
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1142
			pt.x = w->viewport->scrollpos_x + w->viewport->virtual_height / 2;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1143
			pt.y = w->viewport->scrollpos_y + w->viewport->virtual_height / 2;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1144
		} else {
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1145
			pt = RemapCoords(TileX(tile) * TILE_SIZE + TILE_SIZE / 2, TileY(tile) * TILE_SIZE + TILE_SIZE / 2, TileHeight(tile));
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1146
		}
5045
846098142ffe (svn r7094) -Codechange: Get rid of the window-specific code in DoZoomInOutWindow (enable, disable
Darkvater
parents: 5036
diff changeset
  1147
9193
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1148
		this->viewport->scrollpos_x = pt.x - ((this->widget[EVW_VIEWPORT].right - this->widget[EVW_VIEWPORT].left) - 1) / 2;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1149
		this->viewport->scrollpos_y = pt.y - ((this->widget[EVW_VIEWPORT].bottom - this->widget[EVW_VIEWPORT].top) - 1) / 2;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1150
		this->viewport->dest_scrollpos_x = this->viewport->scrollpos_x;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1151
		this->viewport->dest_scrollpos_y = this->viewport->scrollpos_y;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1152
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: 12
diff changeset
  1153
	}
9193
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1154
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1155
	virtual void OnPaint()
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1156
	{
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1157
		/* set the number in the title bar */
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1158
		SetDParam(0, this->window_number + 1);
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1159
9273
35e0224ea8f1 (svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium
parents: 9203
diff changeset
  1160
		this->DrawWidgets();
35e0224ea8f1 (svn r13139) -Codechange: move DrawWindowWidgets and DrawWindowViewport to the Window class and remove Window from their naming.
rubidium
parents: 9203
diff changeset
  1161
		this->DrawViewport();
9193
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1162
	}
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1163
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1164
	virtual void OnClick(Point pt, int widget)
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1165
	{
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1166
		switch (widget) {
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1167
			case EVW_ZOOMIN: DoZoomInOutWindow(ZOOM_IN,  this); break;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1168
			case EVW_ZOOMOUT: DoZoomInOutWindow(ZOOM_OUT, this); break;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1169
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1170
			case EVW_MAIN_TO_VIEW: { // location button (move main view to same spot as this view) 'Paste Location'
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1171
				Window *w = FindWindowById(WC_MAIN_WINDOW, 0);
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1172
				int x = this->viewport->scrollpos_x; // Where is the main looking at
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1173
				int y = this->viewport->scrollpos_y;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1174
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1175
				/* set this view to same location. Based on the center, adjusting for zoom */
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1176
				w->viewport->dest_scrollpos_x =  x - (w->viewport->virtual_width -  this->viewport->virtual_width) / 2;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1177
				w->viewport->dest_scrollpos_y =  y - (w->viewport->virtual_height - this->viewport->virtual_height) / 2;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1178
			} break;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1179
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1180
			case EVW_VIEW_TO_MAIN: { // inverse location button (move this view to same spot as main view) 'Copy Location'
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1181
				const Window *w = FindWindowById(WC_MAIN_WINDOW, 0);
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1182
				int x = w->viewport->scrollpos_x;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1183
				int y = w->viewport->scrollpos_y;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1184
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1185
				this->viewport->dest_scrollpos_x =  x + (w->viewport->virtual_width -  this->viewport->virtual_width) / 2;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1186
				this->viewport->dest_scrollpos_y =  y + (w->viewport->virtual_height - this->viewport->virtual_height) / 2;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1187
			} break;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1188
		}
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1189
	}
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1190
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1191
	virtual void OnResize(Point new_size, Point delta)
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1192
	{
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1193
		this->viewport->width          += delta.x;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1194
		this->viewport->height         += delta.y;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1195
		this->viewport->virtual_width  += delta.x;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1196
		this->viewport->virtual_height += delta.y;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1197
	}
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1198
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1199
	virtual void OnScroll(Point delta)
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1200
	{
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1201
		ViewPort *vp = IsPtInWindowViewport(this, _cursor.pos.x, _cursor.pos.y);
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1202
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1203
		if (vp == NULL) {
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1204
			_cursor.fix_at = false;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1205
			_scrolling_viewport = false;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1206
		}
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1207
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1208
		this->viewport->scrollpos_x += ScaleByZoom(delta.x, vp->zoom);
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1209
		this->viewport->scrollpos_y += ScaleByZoom(delta.y, vp->zoom);
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1210
		this->viewport->dest_scrollpos_x = this->viewport->scrollpos_x;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1211
		this->viewport->dest_scrollpos_y = this->viewport->scrollpos_y;
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1212
	}
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1213
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1214
	virtual void OnMouseWheel(int wheel)
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1215
	{
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1216
		ZoomInOrOutToCursorWindow(wheel < 0, this);
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1217
	}
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1218
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1219
	virtual void OnInvalidateData(int data = 0)
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1220
	{
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1221
		/* Only handle zoom message if intended for us (msg ZOOM_IN/ZOOM_OUT) */
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1222
		HandleZoomMessage(this, this->viewport, EVW_ZOOMIN, EVW_ZOOMOUT);
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1223
	}
972346754b84 (svn r13058) -Codechange: make a class of the ExtraViewportWindow.
glx
parents: 9192
diff changeset
  1224
};
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: 12
diff changeset
  1225
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: 12
diff changeset
  1226
static const WindowDesc _extra_view_port_desc = {
7369
2bfadb828304 (svn r10732) -Codechange: lower the minimum size for the extra viewport window.
rubidium
parents: 7345
diff changeset
  1227
	WDP_AUTO, WDP_AUTO, 300, 68, 300, 268,
5893
7e431a4abebb (svn r8511) -Codechange: make WindowClass an enumerated value.
rubidium
parents: 5584
diff changeset
  1228
	WC_EXTRA_VIEW_PORT, WC_NONE,
867
dffd33233237 (svn r1348) -Feature: resizable windows. Read the comment in window.h to find out
truelight
parents: 856
diff changeset
  1229
	WDF_STD_TOOLTIPS | WDF_STD_BTN | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS | WDF_STICKY_BUTTON | WDF_RESIZABLE,
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: 12
diff changeset
  1230
	_extra_view_port_widgets,
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: 12
diff changeset
  1231
};
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: 12
diff changeset
  1232
9094
48004fcef409 (svn r12953) -Feature: Open a new viewport when ctrl-clicking on a 'Location' button, a town/station/industry list, or some news items.
peter1138
parents: 9008
diff changeset
  1233
void ShowExtraViewPortWindow(TileIndex tile)
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: 12
diff changeset
  1234
{
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: 12
diff changeset
  1235
	int i = 0;
193
0a7025304867 (svn r194) -Codechange: stripping trailing-spaces. Please keep this that way!
truelight
parents: 176
diff changeset
  1236
6420
456c275f3313 (svn r9556) -Documentation: doxygen and comment-style changes. 'R', 'S'.. The end of the preliminary work is near
belugas
parents: 6357
diff changeset
  1237
	/* find next free window number for extra viewport */
2989
916f9443345f (svn r3564) Several smaller changes:
tron
parents: 2984
diff changeset
  1238
	while (FindWindowById(WC_EXTRA_VIEW_PORT, i) != NULL) i++;
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: 12
diff changeset
  1239
9203
082fbf0500c4 (svn r13069) -Codechange: it is no longer needed to pass a void *data pointer with the WE_CREATE message because nothing uses it anymore.
rubidium
parents: 9193
diff changeset
  1240
	new ExtraViewportWindow(&_extra_view_port_desc, i, tile);
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: 12
diff changeset
  1241
}
9192
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1242
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1243
bool ScrollMainWindowTo(int x, int y, bool instant)
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1244
{
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1245
	bool res = ScrollWindowTo(x, y, FindWindowById(WC_MAIN_WINDOW, 0), instant);
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1246
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1247
	/* If a user scrolls to a tile (via what way what so ever) and already is on
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1248
	 *  that tile (e.g.: pressed twice), move the smallmap to that location,
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1249
	 *  so you directly see where you are on the smallmap. */
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1250
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1251
	if (res) return res;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1252
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1253
	SmallMapWindow *w = dynamic_cast<SmallMapWindow*>(FindWindowById(WC_SMALLMAP, 0));
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1254
	if (w != NULL) w->SmallMapCenterOnCurrentPos();
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1255
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1256
	return res;
769df96220cd (svn r13055) -Codechange: make a class of SmallMapWindow.
glx
parents: 9184
diff changeset
  1257
}