mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-05 22:04:57 +00:00
(svn r15423) -Codechange: split widget related types to their own header and add a bit of type strictness.
This commit is contained in:
parent
7b8c13fa5c
commit
9907742a0f
@ -301,6 +301,21 @@
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\hebrew.txt"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating hebrew language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\hebrew.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\hungarian.txt"
|
||||
>
|
||||
|
@ -302,6 +302,21 @@
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\hebrew.txt"
|
||||
>
|
||||
<FileConfiguration
|
||||
Name="Debug|Win32"
|
||||
>
|
||||
<Tool
|
||||
Name="VCCustomBuildTool"
|
||||
Description="Generating hebrew language file"
|
||||
CommandLine="..\objs\strgen\strgen.exe -s ..\src\lang -d ..\bin\lang "$(InputPath)"
"
|
||||
AdditionalDependencies=""
|
||||
Outputs="..\bin\lang\hebrew.lng"
|
||||
/>
|
||||
</FileConfiguration>
|
||||
</File>
|
||||
<File
|
||||
RelativePath="..\src\lang\hungarian.txt"
|
||||
>
|
||||
|
@ -1591,6 +1591,10 @@
|
||||
RelativePath=".\..\src\waypoint_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\widget_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\win32.h"
|
||||
>
|
||||
|
@ -1588,6 +1588,10 @@
|
||||
RelativePath=".\..\src\waypoint_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\widget_type.h"
|
||||
>
|
||||
</File>
|
||||
<File
|
||||
RelativePath=".\..\src\win32.h"
|
||||
>
|
||||
|
@ -328,6 +328,7 @@ viewport_type.h
|
||||
water.h
|
||||
waypoint.h
|
||||
waypoint_type.h
|
||||
widget_type.h
|
||||
win32.h
|
||||
music/win32_m.h
|
||||
sound/win32_s.h
|
||||
|
@ -282,8 +282,8 @@ public:
|
||||
SetDParam(2, this->wagon_btnstate ? STR_ENGINES : STR_WAGONS);
|
||||
|
||||
/* sets the colour of that art thing */
|
||||
this->widget[RVW_WIDGET_TRAIN_FLUFF_LEFT].color = _company_colours[_local_company];
|
||||
this->widget[RVW_WIDGET_TRAIN_FLUFF_RIGHT].color = _company_colours[_local_company];
|
||||
this->widget[RVW_WIDGET_TRAIN_FLUFF_LEFT].colour = _company_colours[_local_company];
|
||||
this->widget[RVW_WIDGET_TRAIN_FLUFF_RIGHT].colour = _company_colours[_local_company];
|
||||
}
|
||||
|
||||
if (this->window_number == VEH_TRAIN) {
|
||||
|
@ -37,7 +37,7 @@
|
||||
CompanyByte _local_company;
|
||||
CompanyByte _current_company;
|
||||
/* NOSAVE: can be determined from company structs */
|
||||
byte _company_colours[MAX_COMPANIES];
|
||||
Colours _company_colours[MAX_COMPANIES];
|
||||
CompanyManagerFace _company_manager_face; ///< for company manager face storage in openttd.cfg
|
||||
|
||||
DEFINE_OLD_POOL_GENERIC(Company, Company)
|
||||
@ -434,7 +434,7 @@ Company *DoStartupNewCompany(bool is_ai)
|
||||
c->colour = colour;
|
||||
|
||||
ResetCompanyLivery(c);
|
||||
_company_colours[c->index] = c->colour;
|
||||
_company_colours[c->index] = (Colours)c->colour;
|
||||
|
||||
c->money = c->current_loan = 100000;
|
||||
|
||||
|
@ -9,6 +9,7 @@
|
||||
#include "company_type.h"
|
||||
#include "tile_type.h"
|
||||
#include "strings_type.h"
|
||||
#include "gfx_type.h"
|
||||
|
||||
void ChangeOwnershipOfCompanyItems(Owner old_owner, Owner new_owner);
|
||||
void GetNameOfOwner(Owner owner, TileIndex tile);
|
||||
@ -17,7 +18,7 @@ void SetLocalCompany(CompanyID new_company);
|
||||
extern CompanyByte _local_company;
|
||||
extern CompanyByte _current_company;
|
||||
|
||||
extern byte _company_colours[MAX_COMPANIES]; ///< NOSAVE: can be determined from company structs
|
||||
extern Colours _company_colours[MAX_COMPANIES]; ///< NOSAVE: can be determined from company structs
|
||||
extern CompanyManagerFace _company_manager_face; ///< for company manager face storage in openttd.cfg
|
||||
|
||||
bool IsHumanCompany(CompanyID company);
|
||||
|
@ -634,7 +634,7 @@ struct PaymentRatesGraphWindow : BaseGraphWindow {
|
||||
Widget *wi = &this->widget[3 + i];
|
||||
wi->type = WWT_PANEL;
|
||||
wi->display_flags = RESIZE_NONE;
|
||||
wi->color = COLOUR_ORANGE;
|
||||
wi->colour = COLOUR_ORANGE;
|
||||
wi->left = 493;
|
||||
wi->right = 562;
|
||||
wi->top = 24 + i * 8;
|
||||
|
@ -53,7 +53,7 @@ CommandCost CmdSetCompanyColor(TileIndex tile, uint32 flags, uint32 p1, uint32 p
|
||||
{
|
||||
if (p2 >= 16) return CMD_ERROR; // max 16 colours
|
||||
|
||||
byte colour = p2;
|
||||
Colours colour = (Colours)p2;
|
||||
|
||||
LiveryScheme scheme = (LiveryScheme)GB(p1, 0, 8);
|
||||
byte state = GB(p1, 8, 2);
|
||||
|
@ -124,7 +124,7 @@ struct OskWindow : public Window {
|
||||
|
||||
if (HasBit(_keystate, KEYS_SHIFT)) {
|
||||
ToggleBit(_keystate, KEYS_SHIFT);
|
||||
this->widget[OSK_WIDGET_SHIFT].color = HasBit(_keystate, KEYS_SHIFT) ? COLOUR_WHITE : COLOUR_GREY;
|
||||
this->widget[OSK_WIDGET_SHIFT].colour = HasBit(_keystate, KEYS_SHIFT) ? COLOUR_WHITE : COLOUR_GREY;
|
||||
this->SetDirty();
|
||||
}
|
||||
return;
|
||||
|
@ -272,7 +272,7 @@ static void Load_PLYR()
|
||||
while ((index = SlIterateArray()) != -1) {
|
||||
Company *c = new (index) Company();
|
||||
SaveLoad_PLYR(c);
|
||||
_company_colours[index] = c->colour;
|
||||
_company_colours[index] = (Colours)c->colour;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1051,7 +1051,7 @@ static bool LoadOldCompany(LoadgameState *ls, int num)
|
||||
if (c->money == 893288) c->money = c->current_loan = 100000;
|
||||
}
|
||||
|
||||
_company_colours[num] = c->colour;
|
||||
_company_colours[num] = (Colours)c->colour;
|
||||
c->inaugurated_year -= ORIGINAL_BASE_YEAR;
|
||||
|
||||
return true;
|
||||
|
@ -255,7 +255,7 @@ public:
|
||||
Widget *wi = &this->widget[SLW_CARGOSTART + i];
|
||||
wi->type = WWT_PANEL;
|
||||
wi->display_flags = RESIZE_NONE;
|
||||
wi->color = COLOUR_GREY;
|
||||
wi->colour = COLOUR_GREY;
|
||||
wi->left = 89 + i * 14;
|
||||
wi->right = wi->left + 13;
|
||||
wi->top = 14;
|
||||
|
@ -163,15 +163,15 @@ int GetWidgetFromPos(const Window *w, int x, int y)
|
||||
* @param top Top edge of the frame
|
||||
* @param right Right edge of the frame
|
||||
* @param bottom Bottom edge of the frame
|
||||
* @param color Colour table to use. @see _colour_gradient
|
||||
* @param colour Colour table to use. @see _colour_gradient
|
||||
* @param flags Flags controlling how to draw the frame. @see FrameFlags
|
||||
*/
|
||||
void DrawFrameRect(int left, int top, int right, int bottom, int color, FrameFlags flags)
|
||||
void DrawFrameRect(int left, int top, int right, int bottom, int colour, FrameFlags flags)
|
||||
{
|
||||
uint dark = _colour_gradient[color][3];
|
||||
uint medium_dark = _colour_gradient[color][5];
|
||||
uint medium_light = _colour_gradient[color][6];
|
||||
uint light = _colour_gradient[color][7];
|
||||
uint dark = _colour_gradient[colour][3];
|
||||
uint medium_dark = _colour_gradient[colour][5];
|
||||
uint medium_light = _colour_gradient[colour][6];
|
||||
uint light = _colour_gradient[colour][7];
|
||||
|
||||
if (flags & FR_TRANSPARENT) {
|
||||
GfxFillRect(left, top, right, bottom, PALETTE_TO_TRANSPARENT, FILLRECT_RECOLOR);
|
||||
@ -223,7 +223,7 @@ void Window::DrawWidgets() const
|
||||
case WWT_IMGBTN_2: {
|
||||
SpriteID img = wi->data;
|
||||
assert(img != 0);
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->color, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->colour, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
|
||||
/* show different image when clicked for WWT_IMGBTN_2 */
|
||||
if ((wi->type & WWT_MASK) == WWT_IMGBTN_2 && clicked) img++;
|
||||
@ -233,16 +233,16 @@ void Window::DrawWidgets() const
|
||||
|
||||
case WWT_PANEL:
|
||||
assert(wi->data == 0);
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->color, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->colour, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
break;
|
||||
|
||||
case WWT_EDITBOX:
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->color, FR_LOWERED | FR_DARKENED);
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->colour, FR_LOWERED | FR_DARKENED);
|
||||
break;
|
||||
|
||||
case WWT_TEXTBTN:
|
||||
case WWT_TEXTBTN_2:
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->color, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->colour, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
/* FALL THROUGH */
|
||||
|
||||
case WWT_LABEL: {
|
||||
@ -257,20 +257,20 @@ void Window::DrawWidgets() const
|
||||
case WWT_TEXT: {
|
||||
const StringID str = wi->data;
|
||||
|
||||
if (str != STR_NULL) DrawStringTruncated(r.left, r.top, str, wi->color, r.right - r.left);
|
||||
if (str != STR_NULL) DrawStringTruncated(r.left, r.top, str, wi->colour, r.right - r.left);
|
||||
break;
|
||||
}
|
||||
|
||||
case WWT_INSET: {
|
||||
const StringID str = wi->data;
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->color, FR_LOWERED | FR_DARKENED);
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->colour, FR_LOWERED | FR_DARKENED);
|
||||
|
||||
if (str != STR_NULL) DrawStringTruncated(r.left + 2, r.top + 1, str, TC_FROMSTRING, r.right - r.left - 10);
|
||||
break;
|
||||
}
|
||||
|
||||
case WWT_MATRIX: {
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->color, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->colour, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
|
||||
int c = GB(wi->data, 0, 8);
|
||||
int amt1 = (wi->right - wi->left + 1) / c;
|
||||
@ -278,32 +278,32 @@ void Window::DrawWidgets() const
|
||||
int d = GB(wi->data, 8, 8);
|
||||
int amt2 = (wi->bottom - wi->top + 1) / d;
|
||||
|
||||
int color = _colour_gradient[wi->color & 0xF][6];
|
||||
int colour = _colour_gradient[wi->colour & 0xF][6];
|
||||
|
||||
int x = r.left;
|
||||
for (int ctr = c; ctr > 1; ctr--) {
|
||||
x += amt1;
|
||||
GfxFillRect(x, r.top + 1, x, r.bottom - 1, color);
|
||||
GfxFillRect(x, r.top + 1, x, r.bottom - 1, colour);
|
||||
}
|
||||
|
||||
x = r.top;
|
||||
for (int ctr = d; ctr > 1; ctr--) {
|
||||
x += amt2;
|
||||
GfxFillRect(r.left + 1, x, r.right - 1, x, color);
|
||||
GfxFillRect(r.left + 1, x, r.right - 1, x, colour);
|
||||
}
|
||||
|
||||
color = _colour_gradient[wi->color & 0xF][4];
|
||||
colour = _colour_gradient[wi->colour & 0xF][4];
|
||||
|
||||
x = r.left - 1;
|
||||
for (int ctr = c; ctr > 1; ctr--) {
|
||||
x += amt1;
|
||||
GfxFillRect(x, r.top + 1, x, r.bottom - 1, color);
|
||||
GfxFillRect(x, r.top + 1, x, r.bottom - 1, colour);
|
||||
}
|
||||
|
||||
x = r.top - 1;
|
||||
for (int ctr = d; ctr > 1; ctr--) {
|
||||
x += amt2;
|
||||
GfxFillRect(r.left + 1, x, r.right - 1, x, color);
|
||||
GfxFillRect(r.left + 1, x, r.right - 1, x, colour);
|
||||
}
|
||||
|
||||
break;
|
||||
@ -316,15 +316,15 @@ void Window::DrawWidgets() const
|
||||
|
||||
/* draw up/down buttons */
|
||||
clicked = ((this->flags4 & (WF_SCROLL_UP | WF_HSCROLL | WF_SCROLL2)) == WF_SCROLL_UP);
|
||||
DrawFrameRect(r.left, r.top, r.right, r.top + 9, wi->color, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DrawFrameRect(r.left, r.top, r.right, r.top + 9, wi->colour, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DoDrawString(UPARROW, r.left + 2 + clicked, r.top + clicked, TC_BLACK);
|
||||
|
||||
clicked = (((this->flags4 & (WF_SCROLL_DOWN | WF_HSCROLL | WF_SCROLL2)) == WF_SCROLL_DOWN));
|
||||
DrawFrameRect(r.left, r.bottom - 9, r.right, r.bottom, wi->color, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DrawFrameRect(r.left, r.bottom - 9, r.right, r.bottom, wi->colour, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DoDrawString(DOWNARROW, r.left + 2 + clicked, r.bottom - 9 + clicked, TC_BLACK);
|
||||
|
||||
int c1 = _colour_gradient[wi->color & 0xF][3];
|
||||
int c2 = _colour_gradient[wi->color & 0xF][7];
|
||||
int c1 = _colour_gradient[wi->colour & 0xF][3];
|
||||
int c2 = _colour_gradient[wi->colour & 0xF][7];
|
||||
|
||||
/* draw "shaded" background */
|
||||
GfxFillRect(r.left, r.top + 10, r.right, r.bottom - 10, c2);
|
||||
@ -337,7 +337,7 @@ void Window::DrawWidgets() const
|
||||
GfxFillRect(r.left + 8, r.top + 10, r.left + 8, r.bottom - 10, c2);
|
||||
|
||||
Point pt = HandleScrollbarHittest(&this->vscroll, r.top, r.bottom);
|
||||
DrawFrameRect(r.left, pt.x, r.right, pt.y, wi->color, (this->flags4 & (WF_SCROLL_MIDDLE | WF_HSCROLL | WF_SCROLL2)) == WF_SCROLL_MIDDLE ? FR_LOWERED : FR_NONE);
|
||||
DrawFrameRect(r.left, pt.x, r.right, pt.y, wi->colour, (this->flags4 & (WF_SCROLL_MIDDLE | WF_HSCROLL | WF_SCROLL2)) == WF_SCROLL_MIDDLE ? FR_LOWERED : FR_NONE);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -347,15 +347,15 @@ void Window::DrawWidgets() const
|
||||
|
||||
/* draw up/down buttons */
|
||||
clicked = ((this->flags4 & (WF_SCROLL_UP | WF_HSCROLL | WF_SCROLL2)) == (WF_SCROLL_UP | WF_SCROLL2));
|
||||
DrawFrameRect(r.left, r.top, r.right, r.top + 9, wi->color, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DrawFrameRect(r.left, r.top, r.right, r.top + 9, wi->colour, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DoDrawString(UPARROW, r.left + 2 + clicked, r.top + clicked, TC_BLACK);
|
||||
|
||||
clicked = ((this->flags4 & (WF_SCROLL_DOWN | WF_HSCROLL | WF_SCROLL2)) == (WF_SCROLL_DOWN | WF_SCROLL2));
|
||||
DrawFrameRect(r.left, r.bottom - 9, r.right, r.bottom, wi->color, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DrawFrameRect(r.left, r.bottom - 9, r.right, r.bottom, wi->colour, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DoDrawString(DOWNARROW, r.left + 2 + clicked, r.bottom - 9 + clicked, TC_BLACK);
|
||||
|
||||
int c1 = _colour_gradient[wi->color & 0xF][3];
|
||||
int c2 = _colour_gradient[wi->color & 0xF][7];
|
||||
int c1 = _colour_gradient[wi->colour & 0xF][3];
|
||||
int c2 = _colour_gradient[wi->colour & 0xF][7];
|
||||
|
||||
/* draw "shaded" background */
|
||||
GfxFillRect(r.left, r.top + 10, r.right, r.bottom - 10, c2);
|
||||
@ -368,7 +368,7 @@ void Window::DrawWidgets() const
|
||||
GfxFillRect(r.left + 8, r.top + 10, r.left + 8, r.bottom - 10, c2);
|
||||
|
||||
Point pt = HandleScrollbarHittest(&this->vscroll2, r.top, r.bottom);
|
||||
DrawFrameRect(r.left, pt.x, r.right, pt.y, wi->color, (this->flags4 & (WF_SCROLL_MIDDLE | WF_HSCROLL | WF_SCROLL2)) == (WF_SCROLL_MIDDLE | WF_SCROLL2) ? FR_LOWERED : FR_NONE);
|
||||
DrawFrameRect(r.left, pt.x, r.right, pt.y, wi->colour, (this->flags4 & (WF_SCROLL_MIDDLE | WF_HSCROLL | WF_SCROLL2)) == (WF_SCROLL_MIDDLE | WF_SCROLL2) ? FR_LOWERED : FR_NONE);
|
||||
break;
|
||||
}
|
||||
|
||||
@ -378,15 +378,15 @@ void Window::DrawWidgets() const
|
||||
assert(r.bottom - r.top == 11); // To ensure the same sizes are used everywhere!
|
||||
|
||||
clicked = ((this->flags4 & (WF_SCROLL_UP | WF_HSCROLL)) == (WF_SCROLL_UP | WF_HSCROLL));
|
||||
DrawFrameRect(r.left, r.top, r.left + 9, r.bottom, wi->color, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DrawFrameRect(r.left, r.top, r.left + 9, r.bottom, wi->colour, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DrawSprite(SPR_ARROW_LEFT, PAL_NONE, r.left + 1 + clicked, r.top + 1 + clicked);
|
||||
|
||||
clicked = ((this->flags4 & (WF_SCROLL_DOWN | WF_HSCROLL)) == (WF_SCROLL_DOWN | WF_HSCROLL));
|
||||
DrawFrameRect(r.right - 9, r.top, r.right, r.bottom, wi->color, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DrawFrameRect(r.right - 9, r.top, r.right, r.bottom, wi->colour, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DrawSprite(SPR_ARROW_RIGHT, PAL_NONE, r.right - 8 + clicked, r.top + 1 + clicked);
|
||||
|
||||
int c1 = _colour_gradient[wi->color & 0xF][3];
|
||||
int c2 = _colour_gradient[wi->color & 0xF][7];
|
||||
int c1 = _colour_gradient[wi->colour & 0xF][3];
|
||||
int c2 = _colour_gradient[wi->colour & 0xF][7];
|
||||
|
||||
/* draw "shaded" background */
|
||||
GfxFillRect(r.left + 10, r.top, r.right - 10, r.bottom, c2);
|
||||
@ -400,7 +400,7 @@ void Window::DrawWidgets() const
|
||||
|
||||
/* draw actual scrollbar */
|
||||
Point pt = HandleScrollbarHittest(&this->hscroll, r.left, r.right);
|
||||
DrawFrameRect(pt.x, r.top, pt.y, r.bottom, wi->color, (this->flags4 & (WF_SCROLL_MIDDLE | WF_HSCROLL)) == (WF_SCROLL_MIDDLE | WF_HSCROLL) ? FR_LOWERED : FR_NONE);
|
||||
DrawFrameRect(pt.x, r.top, pt.y, r.bottom, wi->colour, (this->flags4 & (WF_SCROLL_MIDDLE | WF_HSCROLL)) == (WF_SCROLL_MIDDLE | WF_HSCROLL) ? FR_LOWERED : FR_NONE);
|
||||
|
||||
break;
|
||||
}
|
||||
@ -411,8 +411,8 @@ void Window::DrawWidgets() const
|
||||
|
||||
if (str != STR_NULL) x2 = DrawString(r.left + 6, r.top, str, TC_FROMSTRING);
|
||||
|
||||
int c1 = _colour_gradient[wi->color][3];
|
||||
int c2 = _colour_gradient[wi->color][7];
|
||||
int c1 = _colour_gradient[wi->colour][3];
|
||||
int c2 = _colour_gradient[wi->colour][7];
|
||||
|
||||
/* Line from upper left corner to start of text */
|
||||
GfxFillRect(r.left, r.top + 4, r.left + 4, r.top + 4, c1);
|
||||
@ -441,7 +441,7 @@ void Window::DrawWidgets() const
|
||||
assert(r.right - r.left == 11); // To ensure the same sizes are used everywhere!
|
||||
|
||||
clicked = !!(this->flags4 & WF_STICKY);
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->color, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->colour, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DrawSprite((clicked) ? SPR_PIN_UP : SPR_PIN_DOWN, PAL_NONE, r.left + 2 + clicked, r.top + 3 + clicked);
|
||||
break;
|
||||
|
||||
@ -450,7 +450,7 @@ void Window::DrawWidgets() const
|
||||
assert(r.right - r.left == 11); // To ensure the same sizes are used everywhere!
|
||||
|
||||
clicked = !!(this->flags4 & WF_SIZING);
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->color, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->colour, (clicked) ? FR_LOWERED : FR_NONE);
|
||||
DrawSprite(SPR_WINDOW_RESIZE, PAL_NONE, r.left + 3 + clicked, r.top + 3 + clicked);
|
||||
break;
|
||||
|
||||
@ -460,15 +460,15 @@ void Window::DrawWidgets() const
|
||||
assert(str == STR_00C5 || str == STR_00C6); // black or silver cross
|
||||
assert(r.right - r.left == 10); // To ensure the same sizes are used everywhere
|
||||
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->color, FR_NONE);
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->colour, FR_NONE);
|
||||
DrawString(r.left + 2, r.top + 2, str, TC_FROMSTRING);
|
||||
break;
|
||||
}
|
||||
|
||||
case WWT_CAPTION:
|
||||
assert(r.bottom - r.top == 13); // To ensure the same sizes are used everywhere!
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->color, FR_BORDERONLY);
|
||||
DrawFrameRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, wi->color, (this->caption_color == 0xFF) ? FR_LOWERED | FR_DARKENED : FR_LOWERED | FR_DARKENED | FR_BORDERONLY);
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->colour, FR_BORDERONLY);
|
||||
DrawFrameRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, wi->colour, (this->caption_color == 0xFF) ? FR_LOWERED | FR_DARKENED : FR_LOWERED | FR_DARKENED | FR_BORDERONLY);
|
||||
|
||||
if (this->caption_color != 0xFF) {
|
||||
GfxFillRect(r.left + 2, r.top + 2, r.right - 2, r.bottom - 2, _colour_gradient[_company_colours[this->caption_color]][4]);
|
||||
@ -481,8 +481,8 @@ void Window::DrawWidgets() const
|
||||
assert(r.bottom - r.top == 11); // ensure consistent size
|
||||
|
||||
StringID str = wi->data;
|
||||
DrawFrameRect(r.left, r.top, r.right - 12, r.bottom, wi->color, FR_NONE);
|
||||
DrawFrameRect(r.right - 11, r.top, r.right, r.bottom, wi->color, clicked ? FR_LOWERED : FR_NONE);
|
||||
DrawFrameRect(r.left, r.top, r.right - 12, r.bottom, wi->colour, FR_NONE);
|
||||
DrawFrameRect(r.right - 11, r.top, r.right, r.bottom, wi->colour, clicked ? FR_LOWERED : FR_NONE);
|
||||
DrawString(r.right - (clicked ? 8 : 9), r.top + (clicked ? 2 : 1), STR_0225, TC_BLACK);
|
||||
if (str != STR_NULL) DrawStringTruncated(r.left + 2, r.top + 1, str, TC_BLACK, r.right - r.left - 12);
|
||||
break;
|
||||
@ -492,8 +492,8 @@ void Window::DrawWidgets() const
|
||||
assert(r.bottom - r.top == 11); // ensure consistent size
|
||||
|
||||
StringID str = wi->data;
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->color, FR_LOWERED | FR_DARKENED);
|
||||
DrawFrameRect(r.right - 11, r.top + 1, r.right - 1, r.bottom - 1, wi->color, clicked ? FR_LOWERED : FR_NONE);
|
||||
DrawFrameRect(r.left, r.top, r.right, r.bottom, wi->colour, FR_LOWERED | FR_DARKENED);
|
||||
DrawFrameRect(r.right - 11, r.top + 1, r.right - 1, r.bottom - 1, wi->colour, clicked ? FR_LOWERED : FR_NONE);
|
||||
DrawString(r.right - (clicked ? 8 : 9), r.top + (clicked ? 2 : 1), STR_0225, TC_BLACK);
|
||||
if (str != STR_NULL) DrawStringTruncated(r.left + 2, r.top + 2, str, TC_BLACK, r.right - r.left - 12);
|
||||
break;
|
||||
@ -501,7 +501,7 @@ void Window::DrawWidgets() const
|
||||
}
|
||||
|
||||
if (this->IsWidgetDisabled(i)) {
|
||||
GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, _colour_gradient[wi->color & 0xF][2], FILLRECT_CHECKER);
|
||||
GfxFillRect(r.left + 1, r.top + 1, r.right - 1, r.bottom - 1, _colour_gradient[wi->colour & 0xF][2], FILLRECT_CHECKER);
|
||||
}
|
||||
}
|
||||
|
||||
|
126
src/widget_type.h
Normal file
126
src/widget_type.h
Normal file
@ -0,0 +1,126 @@
|
||||
/* $Id$ */
|
||||
|
||||
/** @file widget_type.h Definitions about widgets. */
|
||||
|
||||
#ifndef WIDGET_TYPE_H
|
||||
#define WIDGET_TYPE_H
|
||||
|
||||
#include "core/bitmath_func.hpp"
|
||||
#include "strings_type.h"
|
||||
#include "gfx_type.h"
|
||||
|
||||
/* How the resize system works:
|
||||
First, you need to add a WWT_RESIZEBOX to the widgets, and you need
|
||||
to add the flag WDF_RESIZABLE to the window. Now the window is ready
|
||||
to resize itself.
|
||||
As you may have noticed, all widgets have a RESIZE_XXX in their line.
|
||||
This lines controls how the widgets behave on resize. RESIZE_NONE means
|
||||
it doesn't do anything. Any other option let's one of the borders
|
||||
move with the changed width/height. So if a widget has
|
||||
RESIZE_RIGHT, and the window is made 5 pixels wider by the user,
|
||||
the right of the window will also be made 5 pixels wider.
|
||||
Now, what if you want to clamp a widget to the bottom? Give it the flag
|
||||
RESIZE_TB. This is RESIZE_TOP + RESIZE_BOTTOM. Now if the window gets
|
||||
5 pixels bigger, both the top and bottom gets 5 bigger, so the whole
|
||||
widgets moves downwards without resizing, and appears to be clamped
|
||||
to the bottom. Nice aint it?
|
||||
You should know one more thing about this system. Most windows can't
|
||||
handle an increase of 1 pixel. So there is a step function, which
|
||||
let the windowsize only be changed by X pixels. You configure this
|
||||
after making the window, like this:
|
||||
w->resize.step_height = 10;
|
||||
Now the window will only change in height in steps of 10.
|
||||
You can also give a minimum width and height. The default value is
|
||||
the default height/width of the window itself. You can change this
|
||||
AFTER window - creation, with:
|
||||
w->resize.width or w->resize.height.
|
||||
That was all.. good luck, and enjoy :) -- TrueLight */
|
||||
|
||||
enum DisplayFlags {
|
||||
RESIZE_NONE = 0, ///< no resize required
|
||||
|
||||
RESIZE_LEFT = 1, ///< left resize flag
|
||||
RESIZE_RIGHT = 2, ///< rigth resize flag
|
||||
RESIZE_TOP = 4, ///< top resize flag
|
||||
RESIZE_BOTTOM = 8, ///< bottom resize flag
|
||||
|
||||
RESIZE_LR = RESIZE_LEFT | RESIZE_RIGHT, ///< combination of left and right resize flags
|
||||
RESIZE_RB = RESIZE_RIGHT | RESIZE_BOTTOM, ///< combination of right and bottom resize flags
|
||||
RESIZE_TB = RESIZE_TOP | RESIZE_BOTTOM, ///< combination of top and bottom resize flags
|
||||
RESIZE_LRB = RESIZE_LEFT | RESIZE_RIGHT | RESIZE_BOTTOM, ///< combination of left, right and bottom resize flags
|
||||
RESIZE_LRTB = RESIZE_LEFT | RESIZE_RIGHT | RESIZE_TOP | RESIZE_BOTTOM, ///< combination of all resize flags
|
||||
RESIZE_RTB = RESIZE_RIGHT | RESIZE_TOP | RESIZE_BOTTOM, ///< combination of right, top and bottom resize flag
|
||||
|
||||
/* The following flags are used by the system to specify what is disabled, hidden, or clicked
|
||||
* They are used in the same place as the above RESIZE_x flags, Widget visual_flags.
|
||||
* These states are used in exceptions. If nothing is specified, they will indicate
|
||||
* Enabled, visible or unclicked widgets*/
|
||||
WIDG_DISABLED = 4, ///< widget is greyed out, not available
|
||||
WIDG_HIDDEN = 5, ///< widget is made invisible
|
||||
WIDG_LOWERED = 6, ///< widget is paint lowered, a pressed button in fact
|
||||
};
|
||||
DECLARE_ENUM_AS_BIT_SET(DisplayFlags);
|
||||
|
||||
enum {
|
||||
WIDGET_LIST_END = -1, ///< indicate the end of widgets' list for vararg functions
|
||||
};
|
||||
|
||||
/**
|
||||
* Window widget types
|
||||
*/
|
||||
enum WidgetType {
|
||||
WWT_EMPTY, ///< Empty widget, place holder to reserve space in widget array
|
||||
|
||||
WWT_PANEL, ///< Simple depressed panel
|
||||
WWT_INSET, ///< Pressed (inset) panel, most commonly used as combo box _text_ area
|
||||
WWT_IMGBTN, ///< Button with image
|
||||
WWT_IMGBTN_2, ///< Button with diff image when clicked
|
||||
|
||||
WWT_TEXTBTN, ///< Button with text
|
||||
WWT_TEXTBTN_2, ///< Button with diff text when clicked
|
||||
WWT_LABEL, ///< Centered label
|
||||
WWT_TEXT, ///< Pure simple text
|
||||
WWT_MATRIX, ///< List of items underneath each other
|
||||
WWT_SCROLLBAR, ///< Vertical scrollbar
|
||||
WWT_FRAME, ///< Frame
|
||||
WWT_CAPTION, ///< Window caption (window title between closebox and stickybox)
|
||||
|
||||
WWT_HSCROLLBAR, ///< Horizontal scrollbar
|
||||
WWT_STICKYBOX, ///< Sticky box (normally at top-right of a window)
|
||||
WWT_SCROLL2BAR, ///< 2nd vertical scrollbar
|
||||
WWT_RESIZEBOX, ///< Resize box (normally at bottom-right of a window)
|
||||
WWT_CLOSEBOX, ///< Close box (at top-left of a window)
|
||||
WWT_DROPDOWN, ///< Raised drop down list (regular)
|
||||
WWT_DROPDOWNIN, ///< Inset drop down list (used on game options only)
|
||||
WWT_EDITBOX, ///< a textbox for typing
|
||||
WWT_LAST, ///< Last Item. use WIDGETS_END to fill up padding!!
|
||||
|
||||
WWT_MASK = 0x1F,
|
||||
|
||||
WWB_PUSHBUTTON = 1 << 5,
|
||||
WWB_MASK = 0xE0,
|
||||
|
||||
WWT_PUSHBTN = WWT_PANEL | WWB_PUSHBUTTON,
|
||||
WWT_PUSHTXTBTN = WWT_TEXTBTN | WWB_PUSHBUTTON,
|
||||
WWT_PUSHIMGBTN = WWT_IMGBTN | WWB_PUSHBUTTON,
|
||||
};
|
||||
|
||||
/** Marker for the "end of widgets" in a Window(Desc) widget table. */
|
||||
#define WIDGETS_END WWT_LAST, RESIZE_NONE, INVALID_COLOUR, 0, 0, 0, 0, 0, STR_NULL
|
||||
|
||||
/**
|
||||
* Window widget data structure
|
||||
*/
|
||||
struct Widget {
|
||||
WidgetType type; ///< Widget type
|
||||
DisplayFlags display_flags; ///< Resize direction, alignment, etc. during resizing
|
||||
Colours colour; ///< Widget colour, see docs/ottd-colourtext-palette.png
|
||||
int16 left; ///< The left edge of the widget
|
||||
int16 right; ///< The right edge of the widget
|
||||
int16 top; ///< The top edge of the widget
|
||||
int16 bottom; ///< The bottom edge of the widget
|
||||
uint16 data; ///< The String/Image or special code (list-matrixes) of a widget
|
||||
StringID tooltips; ///< Tooltips that are shown when rightclicking on a widget
|
||||
};
|
||||
|
||||
#endif /* WIDGET_TYPE_H */
|
@ -148,11 +148,11 @@ struct DropdownWindow : Window {
|
||||
if (y + item_height < height) {
|
||||
if (sel == item->result) GfxFillRect(x + 1, y, x + width - 1, y + item_height - 1, 0);
|
||||
|
||||
item->Draw(x, y, width, height, sel == item->result, (TextColour)this->widget[0].color);
|
||||
item->Draw(x, y, width, height, sel == item->result, (TextColour)this->widget[0].colour);
|
||||
|
||||
if (item->masked) {
|
||||
GfxFillRect(x, y, x + width - 1, y + item_height - 1,
|
||||
_colour_gradient[this->widget[0].color][5], FILLRECT_CHECKER
|
||||
_colour_gradient[this->widget[0].colour][5], FILLRECT_CHECKER
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -307,7 +307,7 @@ void ShowDropDownList(Window *w, DropDownList *list, int selected, int button, u
|
||||
height + 4,
|
||||
_dropdown_menu_widgets);
|
||||
|
||||
dw->widget[0].color = wi->color;
|
||||
dw->widget[0].colour = wi->colour;
|
||||
dw->widget[0].right = width - 1;
|
||||
dw->widget[0].bottom = height + 3;
|
||||
|
||||
@ -316,7 +316,7 @@ void ShowDropDownList(Window *w, DropDownList *list, int selected, int button, u
|
||||
if (scroll) {
|
||||
/* We're scrolling, so enable the scroll bar and shrink the list by
|
||||
* the scrollbar's width */
|
||||
dw->widget[1].color = wi->color;
|
||||
dw->widget[1].colour = wi->colour;
|
||||
dw->widget[1].right = dw->widget[0].right;
|
||||
dw->widget[1].left = dw->widget[1].right - 11;
|
||||
dw->widget[1].bottom = dw->widget[0].bottom;
|
||||
|
@ -172,6 +172,7 @@ static void DispatchLeftClickEvent(Window *w, int x, int y, bool double_click)
|
||||
if (wi->type & WWB_MASK) {
|
||||
/* special widget handling for buttons*/
|
||||
switch (wi->type) {
|
||||
default: NOT_REACHED();
|
||||
case WWT_PANEL | WWB_PUSHBUTTON: /* WWT_PUSHBTN */
|
||||
case WWT_IMGBTN | WWB_PUSHBUTTON: /* WWT_PUSHIMGBTN */
|
||||
case WWT_TEXTBTN | WWB_PUSHBUTTON: /* WWT_PUSHTXTBTN */
|
||||
|
121
src/window_gui.h
121
src/window_gui.h
@ -5,85 +5,14 @@
|
||||
#ifndef WINDOW_GUI_H
|
||||
#define WINDOW_GUI_H
|
||||
|
||||
#include "core/bitmath_func.hpp"
|
||||
#include "core/geometry_type.hpp"
|
||||
#include "vehicle_type.h"
|
||||
#include "viewport_type.h"
|
||||
#include "company_type.h"
|
||||
#include "strings_type.h"
|
||||
#include "core/alloc_type.hpp"
|
||||
#include "window_type.h"
|
||||
#include "tile_type.h"
|
||||
|
||||
/* How the resize system works:
|
||||
First, you need to add a WWT_RESIZEBOX to the widgets, and you need
|
||||
to add the flag WDF_RESIZABLE to the window. Now the window is ready
|
||||
to resize itself.
|
||||
As you may have noticed, all widgets have a RESIZE_XXX in their line.
|
||||
This lines controls how the widgets behave on resize. RESIZE_NONE means
|
||||
it doesn't do anything. Any other option let's one of the borders
|
||||
move with the changed width/height. So if a widget has
|
||||
RESIZE_RIGHT, and the window is made 5 pixels wider by the user,
|
||||
the right of the window will also be made 5 pixels wider.
|
||||
Now, what if you want to clamp a widget to the bottom? Give it the flag
|
||||
RESIZE_TB. This is RESIZE_TOP + RESIZE_BOTTOM. Now if the window gets
|
||||
5 pixels bigger, both the top and bottom gets 5 bigger, so the whole
|
||||
widgets moves downwards without resizing, and appears to be clamped
|
||||
to the bottom. Nice aint it?
|
||||
You should know one more thing about this system. Most windows can't
|
||||
handle an increase of 1 pixel. So there is a step function, which
|
||||
let the windowsize only be changed by X pixels. You configure this
|
||||
after making the window, like this:
|
||||
w->resize.step_height = 10;
|
||||
Now the window will only change in height in steps of 10.
|
||||
You can also give a minimum width and height. The default value is
|
||||
the default height/width of the window itself. You can change this
|
||||
AFTER window - creation, with:
|
||||
w->resize.width or w->resize.height.
|
||||
That was all.. good luck, and enjoy :) -- TrueLight */
|
||||
|
||||
enum ResizeFlag {
|
||||
RESIZE_NONE = 0, ///< no resize required
|
||||
|
||||
RESIZE_LEFT = 1, ///< left resize flag
|
||||
RESIZE_RIGHT = 2, ///< rigth resize flag
|
||||
RESIZE_TOP = 4, ///< top resize flag
|
||||
RESIZE_BOTTOM = 8, ///< bottom resize flag
|
||||
|
||||
RESIZE_LR = RESIZE_LEFT | RESIZE_RIGHT, ///< combination of left and right resize flags
|
||||
RESIZE_RB = RESIZE_RIGHT | RESIZE_BOTTOM, ///< combination of right and bottom resize flags
|
||||
RESIZE_TB = RESIZE_TOP | RESIZE_BOTTOM, ///< combination of top and bottom resize flags
|
||||
RESIZE_LRB = RESIZE_LEFT | RESIZE_RIGHT | RESIZE_BOTTOM, ///< combination of left, right and bottom resize flags
|
||||
RESIZE_LRTB = RESIZE_LEFT | RESIZE_RIGHT | RESIZE_TOP | RESIZE_BOTTOM, ///< combination of all resize flags
|
||||
RESIZE_RTB = RESIZE_RIGHT | RESIZE_TOP | RESIZE_BOTTOM, ///< combination of right, top and bottom resize flag
|
||||
|
||||
/* The following flags are used by the system to specify what is disabled, hidden, or clicked
|
||||
* They are used in the same place as the above RESIZE_x flags, Widget visual_flags.
|
||||
* These states are used in exceptions. If nothing is specified, they will indicate
|
||||
* Enabled, visible or unclicked widgets*/
|
||||
WIDG_DISABLED = 4, ///< widget is greyed out, not available
|
||||
WIDG_HIDDEN = 5, ///< widget is made invisible
|
||||
WIDG_LOWERED = 6, ///< widget is paint lowered, a pressed button in fact
|
||||
};
|
||||
|
||||
enum {
|
||||
WIDGET_LIST_END = -1, ///< indicate the end of widgets' list for vararg functions
|
||||
};
|
||||
|
||||
/**
|
||||
* Window widget data structure
|
||||
*/
|
||||
struct Widget {
|
||||
byte type; ///< Widget type, see WindowWidgetTypes
|
||||
byte display_flags; ///< Resize direction, alignment, etc. during resizing. @see ResizeFlags
|
||||
byte color; ///< Widget colour, see docs/ottd-colourtext-palette.png
|
||||
int16 left; ///< The left edge of the widget
|
||||
int16 right; ///< The right edge of the widget
|
||||
int16 top; ///< The top edge of the widget
|
||||
int16 bottom; ///< The bottom edge of the widget
|
||||
uint16 data; ///< The String/Image or special code (list-matrixes) of a widget
|
||||
StringID tooltips; ///< Tooltips that are shown when rightclicking on a widget
|
||||
};
|
||||
#include "widget_type.h"
|
||||
|
||||
/**
|
||||
* Flags to describe the look of the frame
|
||||
@ -445,54 +374,6 @@ public:
|
||||
virtual ~PickerWindowBase();
|
||||
};
|
||||
|
||||
/****************** THESE ARE NOT WIDGET TYPES!!!!! *******************/
|
||||
enum WindowWidgetBehaviours {
|
||||
WWB_PUSHBUTTON = 1 << 5,
|
||||
|
||||
WWB_MASK = 0xE0,
|
||||
};
|
||||
|
||||
|
||||
/**
|
||||
* Window widget types
|
||||
*/
|
||||
enum WindowWidgetTypes {
|
||||
WWT_EMPTY, ///< Empty widget, place holder to reserve space in widget array
|
||||
|
||||
WWT_PANEL, ///< Simple depressed panel
|
||||
WWT_INSET, ///< Pressed (inset) panel, most commonly used as combo box _text_ area
|
||||
WWT_IMGBTN, ///< Button with image
|
||||
WWT_IMGBTN_2, ///< Button with diff image when clicked
|
||||
|
||||
WWT_TEXTBTN, ///< Button with text
|
||||
WWT_TEXTBTN_2, ///< Button with diff text when clicked
|
||||
WWT_LABEL, ///< Centered label
|
||||
WWT_TEXT, ///< Pure simple text
|
||||
WWT_MATRIX, ///< List of items underneath each other
|
||||
WWT_SCROLLBAR, ///< Vertical scrollbar
|
||||
WWT_FRAME, ///< Frame
|
||||
WWT_CAPTION, ///< Window caption (window title between closebox and stickybox)
|
||||
|
||||
WWT_HSCROLLBAR, ///< Horizontal scrollbar
|
||||
WWT_STICKYBOX, ///< Sticky box (normally at top-right of a window)
|
||||
WWT_SCROLL2BAR, ///< 2nd vertical scrollbar
|
||||
WWT_RESIZEBOX, ///< Resize box (normally at bottom-right of a window)
|
||||
WWT_CLOSEBOX, ///< Close box (at top-left of a window)
|
||||
WWT_DROPDOWN, ///< Raised drop down list (regular)
|
||||
WWT_DROPDOWNIN, ///< Inset drop down list (used on game options only)
|
||||
WWT_EDITBOX, ///< a textbox for typing
|
||||
WWT_LAST, ///< Last Item. use WIDGETS_END to fill up padding!!
|
||||
|
||||
WWT_MASK = 0x1F,
|
||||
|
||||
WWT_PUSHBTN = WWT_PANEL | WWB_PUSHBUTTON,
|
||||
WWT_PUSHTXTBTN = WWT_TEXTBTN | WWB_PUSHBUTTON,
|
||||
WWT_PUSHIMGBTN = WWT_IMGBTN | WWB_PUSHBUTTON,
|
||||
};
|
||||
|
||||
/** Marker for the "end of widgets" in a Window(Desc) widget table. */
|
||||
#define WIDGETS_END WWT_LAST, RESIZE_NONE, 0, 0, 0, 0, 0, 0, STR_NULL
|
||||
|
||||
/**
|
||||
* Window flags
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user