mirror of https://github.com/OpenTTD/OpenTTD
Codechange: Turn ZoomLevel into enum class.
parent
c0d4ab69d0
commit
8571af9833
|
@ -308,12 +308,12 @@ Sprite *Blitter_32bppOptimized::EncodeInternal(SpriteType sprite_type, const Spr
|
|||
ZoomLevel zoom_max;
|
||||
|
||||
if (sprite_type == SpriteType::Font) {
|
||||
zoom_min = ZOOM_LVL_MIN;
|
||||
zoom_max = ZOOM_LVL_MIN;
|
||||
zoom_min = ZoomLevel::Min;
|
||||
zoom_max = ZoomLevel::Min;
|
||||
} else {
|
||||
zoom_min = _settings_client.gui.zoom_min;
|
||||
zoom_max = _settings_client.gui.zoom_max;
|
||||
if (zoom_max == zoom_min) zoom_max = ZOOM_LVL_MAX;
|
||||
if (zoom_max == zoom_min) zoom_max = ZoomLevel::Max;
|
||||
}
|
||||
|
||||
for (ZoomLevel z = zoom_min; z <= zoom_max; z++) {
|
||||
|
|
|
@ -26,12 +26,12 @@ Sprite *Blitter_32bppSSE_Base::Encode(SpriteType sprite_type, const SpriteLoader
|
|||
* Second uint32_t of a line = the number of transparent pixels from the right.
|
||||
* Then all RGBA then all MV.
|
||||
*/
|
||||
ZoomLevel zoom_min = ZOOM_LVL_MIN;
|
||||
ZoomLevel zoom_max = ZOOM_LVL_MIN;
|
||||
ZoomLevel zoom_min = ZoomLevel::Min;
|
||||
ZoomLevel zoom_max = ZoomLevel::Min;
|
||||
if (sprite_type != SpriteType::Font) {
|
||||
zoom_min = _settings_client.gui.zoom_min;
|
||||
zoom_max = _settings_client.gui.zoom_max;
|
||||
if (zoom_max == zoom_min) zoom_max = ZOOM_LVL_MAX;
|
||||
if (zoom_max == zoom_min) zoom_max = ZoomLevel::Max;
|
||||
}
|
||||
|
||||
/* Calculate sizes and allocate. */
|
||||
|
|
|
@ -28,7 +28,7 @@
|
|||
#endif
|
||||
|
||||
#define META_LENGTH 2 ///< Number of uint32_t inserted before each line of pixels in a sprite.
|
||||
#define MARGIN_NORMAL_THRESHOLD (zoom == ZOOM_LVL_OUT_8X ? 8 : 4) ///< Minimum width to use margins with BlitterMode::Normal.
|
||||
#define MARGIN_NORMAL_THRESHOLD (zoom == ZoomLevel::Out8x ? 8 : 4) ///< Minimum width to use margins with BlitterMode::Normal.
|
||||
#define MARGIN_REMAP_THRESHOLD 4 ///< Minimum width to use margins with BlitterMode::ColourRemap.
|
||||
|
||||
typedef union alignas(16) um128i {
|
||||
|
|
|
@ -129,12 +129,12 @@ Sprite *Blitter_8bppOptimized::Encode(SpriteType sprite_type, const SpriteLoader
|
|||
ZoomLevel zoom_max;
|
||||
|
||||
if (sprite_type == SpriteType::Font) {
|
||||
zoom_min = ZOOM_LVL_MIN;
|
||||
zoom_max = ZOOM_LVL_MIN;
|
||||
zoom_min = ZoomLevel::Min;
|
||||
zoom_max = ZoomLevel::Min;
|
||||
} else {
|
||||
zoom_min = _settings_client.gui.zoom_min;
|
||||
zoom_max = _settings_client.gui.zoom_max;
|
||||
if (zoom_max == zoom_min) zoom_max = ZOOM_LVL_MAX;
|
||||
if (zoom_max == zoom_min) zoom_max = ZoomLevel::Max;
|
||||
}
|
||||
|
||||
for (ZoomLevel i = zoom_min; i <= zoom_max; i++) {
|
||||
|
|
|
@ -313,16 +313,16 @@ static bool ConZoomToLevel(std::span<std::string_view> argv)
|
|||
IConsolePrint(CC_HELP, "Set the current zoom level of the main viewport.");
|
||||
IConsolePrint(CC_HELP, "Usage: 'zoomto <level>'.");
|
||||
|
||||
if (ZOOM_LVL_MIN < _settings_client.gui.zoom_min) {
|
||||
IConsolePrint(CC_HELP, "The lowest zoom-in level allowed by current client settings is {}.", std::max(ZOOM_LVL_MIN, _settings_client.gui.zoom_min));
|
||||
if (ZoomLevel::Min < _settings_client.gui.zoom_min) {
|
||||
IConsolePrint(CC_HELP, "The lowest zoom-in level allowed by current client settings is {}.", std::max(ZoomLevel::Min, _settings_client.gui.zoom_min));
|
||||
} else {
|
||||
IConsolePrint(CC_HELP, "The lowest supported zoom-in level is {}.", std::max(ZOOM_LVL_MIN, _settings_client.gui.zoom_min));
|
||||
IConsolePrint(CC_HELP, "The lowest supported zoom-in level is {}.", std::max(ZoomLevel::Min, _settings_client.gui.zoom_min));
|
||||
}
|
||||
|
||||
if (_settings_client.gui.zoom_max < ZOOM_LVL_MAX) {
|
||||
IConsolePrint(CC_HELP, "The highest zoom-out level allowed by current client settings is {}.", std::min(_settings_client.gui.zoom_max, ZOOM_LVL_MAX));
|
||||
if (_settings_client.gui.zoom_max < ZoomLevel::Max) {
|
||||
IConsolePrint(CC_HELP, "The highest zoom-out level allowed by current client settings is {}.", std::min(_settings_client.gui.zoom_max, ZoomLevel::Max));
|
||||
} else {
|
||||
IConsolePrint(CC_HELP, "The highest supported zoom-out level is {}.", std::min(_settings_client.gui.zoom_max, ZOOM_LVL_MAX));
|
||||
IConsolePrint(CC_HELP, "The highest supported zoom-out level is {}.", std::min(_settings_client.gui.zoom_max, ZoomLevel::Max));
|
||||
}
|
||||
return true;
|
||||
|
||||
|
@ -330,8 +330,8 @@ static bool ConZoomToLevel(std::span<std::string_view> argv)
|
|||
auto level = ParseInteger<std::underlying_type_t<ZoomLevel>>(argv[1]);
|
||||
if (level.has_value()) {
|
||||
auto zoom_lvl = static_cast<ZoomLevel>(*level);
|
||||
if (!IsInsideMM(zoom_lvl, ZOOM_LVL_BEGIN, ZOOM_LVL_END)) {
|
||||
IConsolePrint(CC_ERROR, "Invalid zoom level. Valid range is {} to {}.", ZOOM_LVL_MIN, ZOOM_LVL_MAX);
|
||||
if (!IsInsideMM(zoom_lvl, ZoomLevel::Begin, ZoomLevel::End)) {
|
||||
IConsolePrint(CC_ERROR, "Invalid zoom level. Valid range is {} to {}.", ZoomLevel::Min, ZoomLevel::Max);
|
||||
} else if (!IsInsideMM(zoom_lvl, _settings_client.gui.zoom_min, _settings_client.gui.zoom_max + 1)) {
|
||||
IConsolePrint(CC_ERROR, "Current client settings limit zoom levels to range {} to {}.", _settings_client.gui.zoom_min, _settings_client.gui.zoom_max);
|
||||
} else {
|
||||
|
|
|
@ -242,8 +242,8 @@ const Sprite *FreeTypeFontCache::InternalGetGlyph(GlyphID key, bool aa)
|
|||
|
||||
/* FreeType has rendered the glyph, now we allocate a sprite and copy the image into it */
|
||||
SpriteLoader::SpriteCollection spritecollection;
|
||||
SpriteLoader::Sprite &sprite = spritecollection[ZOOM_LVL_MIN];
|
||||
sprite.AllocateData(ZOOM_LVL_MIN, static_cast<size_t>(width) * height);
|
||||
SpriteLoader::Sprite &sprite = spritecollection[ZoomLevel::Min];
|
||||
sprite.AllocateData(ZoomLevel::Min, static_cast<size_t>(width) * height);
|
||||
sprite.colours = SpriteComponent::Palette;
|
||||
if (aa) sprite.colours.Set(SpriteComponent::Alpha);
|
||||
sprite.width = width;
|
||||
|
|
20
src/gfx.cpp
20
src/gfx.cpp
|
@ -54,11 +54,11 @@ static uint8_t _stringwidth_table[FS_END][224]; ///< Cache containing width of o
|
|||
DrawPixelInfo *_cur_dpi;
|
||||
|
||||
static void GfxMainBlitterViewport(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub = nullptr, SpriteID sprite_id = SPR_CURSOR_MOUSE);
|
||||
static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub = nullptr, SpriteID sprite_id = SPR_CURSOR_MOUSE, ZoomLevel zoom = ZOOM_LVL_MIN);
|
||||
static void GfxMainBlitter(const Sprite *sprite, int x, int y, BlitterMode mode, const SubSprite *sub = nullptr, SpriteID sprite_id = SPR_CURSOR_MOUSE, ZoomLevel zoom = ZoomLevel::Min);
|
||||
|
||||
static ReusableBuffer<uint8_t> _cursor_backup;
|
||||
|
||||
ZoomLevel _gui_zoom = ZOOM_LVL_NORMAL; ///< GUI Zoom level
|
||||
ZoomLevel _gui_zoom = ZoomLevel::Normal; ///< GUI Zoom level
|
||||
ZoomLevel _font_zoom = _gui_zoom; ///< Sprite font Zoom level (not clamped)
|
||||
int _gui_scale = MIN_INTERFACE_SCALE; ///< GUI scale, 100 is 100%.
|
||||
int _gui_scale_cfg; ///< GUI scale in config.
|
||||
|
@ -101,7 +101,7 @@ void GfxScroll(int left, int top, int width, int height, int xo, int yo)
|
|||
/**
|
||||
* Applies a certain FillRectMode-operation to a rectangle [left, right] x [top, bottom] on the screen.
|
||||
*
|
||||
* @pre dpi->zoom == ZOOM_LVL_MIN, right >= left, bottom >= top
|
||||
* @pre dpi->zoom == ZoomLevel::Min, right >= left, bottom >= top
|
||||
* @param left Minimum X (inclusive)
|
||||
* @param top Minimum Y (inclusive)
|
||||
* @param right Maximum X (inclusive)
|
||||
|
@ -120,7 +120,7 @@ void GfxFillRect(int left, int top, int right, int bottom, int colour, FillRectM
|
|||
const int otop = top;
|
||||
const int oleft = left;
|
||||
|
||||
if (dpi->zoom != ZOOM_LVL_MIN) return;
|
||||
if (dpi->zoom != ZoomLevel::Min) return;
|
||||
if (left > right || top > bottom) return;
|
||||
if (right < dpi->left || left >= dpi->left + dpi->width) return;
|
||||
if (bottom < dpi->top || top >= dpi->top + dpi->height) return;
|
||||
|
@ -200,7 +200,7 @@ static std::vector<LineSegment> MakePolygonSegments(std::span<const Point> shape
|
|||
* The odd-even winding rule is used, i.e. self-intersecting polygons will have holes in them.
|
||||
* Left and top edges are inclusive, right and bottom edges are exclusive.
|
||||
* @note For rectangles the GfxFillRect function will be faster.
|
||||
* @pre dpi->zoom == ZOOM_LVL_MIN
|
||||
* @pre dpi->zoom == ZoomLevel::Min
|
||||
* @param shape List of points on the polygon.
|
||||
* @param colour An 8 bit palette index (FILLRECT_OPAQUE and FILLRECT_CHECKER) or a recolour spritenumber (FILLRECT_RECOLOUR).
|
||||
* @param mode
|
||||
|
@ -212,7 +212,7 @@ void GfxFillPolygon(std::span<const Point> shape, int colour, FillRectMode mode)
|
|||
{
|
||||
Blitter *blitter = BlitterFactory::GetCurrentBlitter();
|
||||
const DrawPixelInfo *dpi = _cur_dpi;
|
||||
if (dpi->zoom != ZOOM_LVL_MIN) return;
|
||||
if (dpi->zoom != ZoomLevel::Min) return;
|
||||
|
||||
std::vector<LineSegment> segments = MakePolygonSegments(shape, Point{ dpi->left, dpi->top });
|
||||
|
||||
|
@ -1556,7 +1556,7 @@ bool FillDrawPixelInfo(DrawPixelInfo *n, int left, int top, int width, int heigh
|
|||
Blitter *blitter = BlitterFactory::GetCurrentBlitter();
|
||||
const DrawPixelInfo *o = _cur_dpi;
|
||||
|
||||
n->zoom = ZOOM_LVL_MIN;
|
||||
n->zoom = ZoomLevel::Min;
|
||||
|
||||
assert(width > 0);
|
||||
assert(height > 0);
|
||||
|
@ -1782,12 +1782,12 @@ void UpdateGUIZoom()
|
|||
_gui_scale = Clamp(_gui_scale_cfg, MIN_INTERFACE_SCALE, MAX_INTERFACE_SCALE);
|
||||
}
|
||||
|
||||
int8_t new_zoom = ScaleGUITrad(1) <= 1 ? ZOOM_LVL_NORMAL : ScaleGUITrad(1) >= 4 ? ZOOM_LVL_IN_4X : ZOOM_LVL_IN_2X;
|
||||
ZoomLevel new_zoom = ScaleGUITrad(1) <= 1 ? ZoomLevel::Normal : ScaleGUITrad(1) >= 4 ? ZoomLevel::In4x : ZoomLevel::In2x;
|
||||
/* Font glyphs should not be clamped to min/max zoom. */
|
||||
_font_zoom = static_cast<ZoomLevel>(new_zoom);
|
||||
_font_zoom = new_zoom;
|
||||
/* Ensure the gui_zoom is clamped between min/max. */
|
||||
new_zoom = Clamp(new_zoom, _settings_client.gui.zoom_min, _settings_client.gui.zoom_max);
|
||||
_gui_zoom = static_cast<ZoomLevel>(new_zoom);
|
||||
_gui_zoom = new_zoom;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -116,7 +116,7 @@ static std::unique_ptr<NWidgetBase> MakeNWidgetCompanyLines()
|
|||
{
|
||||
auto vert = std::make_unique<NWidgetVertical>(NWidContainerFlag::EqualSize);
|
||||
vert->SetPadding(2, 2, 2, 2);
|
||||
uint sprite_height = GetSpriteSize(SPR_COMPANY_ICON, nullptr, ZOOM_LVL_NORMAL).height;
|
||||
uint sprite_height = GetSpriteSize(SPR_COMPANY_ICON, nullptr, ZoomLevel::Normal).height;
|
||||
|
||||
for (WidgetID widnum = WID_GL_FIRST_COMPANY; widnum <= WID_GL_LAST_COMPANY; widnum++) {
|
||||
auto panel = std::make_unique<NWidgetBackground>(WWT_PANEL, COLOUR_BROWN, widnum);
|
||||
|
|
|
@ -825,7 +825,7 @@ public:
|
|||
|
||||
this->InitNested(window_number);
|
||||
NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(WID_IV_VIEWPORT);
|
||||
nvp->InitializeViewport(this, Industry::Get(window_number)->location.GetCenterTile(), ScaleZoomGUI(ZOOM_LVL_INDUSTRY));
|
||||
nvp->InitializeViewport(this, Industry::Get(window_number)->location.GetCenterTile(), ScaleZoomGUI(ZoomLevel::Industry));
|
||||
|
||||
const Industry *i = Industry::Get(window_number);
|
||||
if (!i->IsCargoProduced()) this->DisableWidget(WID_IV_GRAPH);
|
||||
|
|
|
@ -219,7 +219,7 @@ struct MainWindow : Window
|
|||
ResizeWindow(this, _screen.width, _screen.height);
|
||||
|
||||
NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(WID_M_VIEWPORT);
|
||||
nvp->InitializeViewport(this, TileXY(32, 32), ScaleZoomGUI(ZOOM_LVL_VIEWPORT));
|
||||
nvp->InitializeViewport(this, TileXY(32, 32), ScaleZoomGUI(ZoomLevel::Viewport));
|
||||
|
||||
this->viewport->overlay = std::make_shared<LinkGraphOverlay>(this, WID_M_VIEWPORT, 0, CompanyMask{}, 2);
|
||||
this->refresh_timeout.Reset();
|
||||
|
|
|
@ -44,7 +44,7 @@ static Dimension GetBadgeMaximalDimension(BadgeClassID class_index, GrfSpecFeatu
|
|||
PalSpriteID ps = GetBadgeSprite(badge, feature, std::nullopt, PAL_NONE);
|
||||
if (ps.sprite == 0) continue;
|
||||
|
||||
d.width = std::max(d.width, GetSpriteSize(ps.sprite, nullptr, ZOOM_LVL_NORMAL).width);
|
||||
d.width = std::max(d.width, GetSpriteSize(ps.sprite, nullptr, ZoomLevel::Normal).width);
|
||||
if (d.width > MAX_BADGE_WIDTH) break;
|
||||
}
|
||||
|
||||
|
|
|
@ -822,7 +822,7 @@ struct SpriteAlignerWindow : Window {
|
|||
Scrollbar *vscroll = nullptr;
|
||||
std::map<SpriteID, XyOffs> offs_start_map{}; ///< Mapping of starting offsets for the sprites which have been aligned in the sprite aligner window.
|
||||
|
||||
static inline ZoomLevel zoom = ZOOM_LVL_END;
|
||||
static inline ZoomLevel zoom = ZoomLevel::End;
|
||||
static bool centre;
|
||||
static bool crosshair;
|
||||
const Action5Type *act5_type = nullptr; ///< Sprite Area of current selected sprite.
|
||||
|
@ -830,7 +830,7 @@ struct SpriteAlignerWindow : Window {
|
|||
SpriteAlignerWindow(WindowDesc &desc, WindowNumber wno) : Window(desc)
|
||||
{
|
||||
/* On first opening, set initial zoom to current zoom level. */
|
||||
if (SpriteAlignerWindow::zoom == ZOOM_LVL_END) SpriteAlignerWindow::zoom = _gui_zoom;
|
||||
if (SpriteAlignerWindow::zoom == ZoomLevel::End) SpriteAlignerWindow::zoom = _gui_zoom;
|
||||
SpriteAlignerWindow::zoom = Clamp(SpriteAlignerWindow::zoom, _settings_client.gui.zoom_min, _settings_client.gui.zoom_max);
|
||||
|
||||
/* Oh yes, we assume there is at least one normal sprite! */
|
||||
|
@ -1071,8 +1071,8 @@ struct SpriteAlignerWindow : Window {
|
|||
break;
|
||||
|
||||
default:
|
||||
if (IsInsideBS(widget, WID_SA_ZOOM, ZOOM_LVL_END)) {
|
||||
SpriteAlignerWindow::zoom = ZoomLevel(widget - WID_SA_ZOOM);
|
||||
if (IsInsideBS(widget, WID_SA_ZOOM, to_underlying(ZoomLevel::End))) {
|
||||
SpriteAlignerWindow::zoom = static_cast<ZoomLevel>(widget - WID_SA_ZOOM);
|
||||
this->InvalidateData(0, true);
|
||||
}
|
||||
break;
|
||||
|
@ -1109,7 +1109,7 @@ struct SpriteAlignerWindow : Window {
|
|||
}
|
||||
|
||||
SpriteAlignerWindow::zoom = Clamp(SpriteAlignerWindow::zoom, _settings_client.gui.zoom_min, _settings_client.gui.zoom_max);
|
||||
for (ZoomLevel z = ZOOM_LVL_BEGIN; z < ZOOM_LVL_END; z++) {
|
||||
for (ZoomLevel z = ZoomLevel::Begin; z < ZoomLevel::End; z++) {
|
||||
this->SetWidgetsDisabledState(z < _settings_client.gui.zoom_min || z > _settings_client.gui.zoom_max, WID_SA_ZOOM + to_underlying(z));
|
||||
this->SetWidgetsLoweredState(SpriteAlignerWindow::zoom == z, WID_SA_ZOOM + to_underlying(z));
|
||||
}
|
||||
|
@ -1191,12 +1191,12 @@ static constexpr NWidgetPart _nested_sprite_aligner_widgets[] = {
|
|||
NWidget(NWID_VSCROLLBAR, COLOUR_GREY, WID_SA_SCROLLBAR),
|
||||
EndContainer(),
|
||||
NWidget(NWID_VERTICAL),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + to_underlying(ZOOM_LVL_IN_4X)), SetStringTip(STR_CONFIG_SETTING_ZOOM_LVL_MIN), SetFill(1, 0),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + to_underlying(ZOOM_LVL_IN_2X)), SetStringTip(STR_CONFIG_SETTING_ZOOM_LVL_IN_2X), SetFill(1, 0),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + to_underlying(ZOOM_LVL_NORMAL)), SetStringTip(STR_CONFIG_SETTING_ZOOM_LVL_NORMAL), SetFill(1, 0),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + to_underlying(ZOOM_LVL_OUT_2X)), SetStringTip(STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X), SetFill(1, 0),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + to_underlying(ZOOM_LVL_OUT_4X)), SetStringTip(STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X), SetFill(1, 0),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + to_underlying(ZOOM_LVL_OUT_8X)), SetStringTip(STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X), SetFill(1, 0),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + to_underlying(ZoomLevel::In4x)), SetStringTip(STR_CONFIG_SETTING_ZOOM_LVL_MIN), SetFill(1, 0),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + to_underlying(ZoomLevel::In2x)), SetStringTip(STR_CONFIG_SETTING_ZOOM_LVL_IN_2X), SetFill(1, 0),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + to_underlying(ZoomLevel::Normal)), SetStringTip(STR_CONFIG_SETTING_ZOOM_LVL_NORMAL), SetFill(1, 0),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + to_underlying(ZoomLevel::Out2x)), SetStringTip(STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X), SetFill(1, 0),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + to_underlying(ZoomLevel::Out4x)), SetStringTip(STR_CONFIG_SETTING_ZOOM_LVL_OUT_4X), SetFill(1, 0),
|
||||
NWidget(WWT_TEXTBTN, COLOUR_GREY, WID_SA_ZOOM + to_underlying(ZoomLevel::Out8x)), SetStringTip(STR_CONFIG_SETTING_ZOOM_LVL_OUT_8X), SetFill(1, 0),
|
||||
EndContainer(),
|
||||
EndContainer(),
|
||||
EndContainer(),
|
||||
|
|
|
@ -395,9 +395,9 @@ struct NewsWindow : Window {
|
|||
NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(WID_N_VIEWPORT);
|
||||
if (nvp != nullptr) {
|
||||
if (std::holds_alternative<VehicleID>(ni->ref1)) {
|
||||
nvp->InitializeViewport(this, std::get<VehicleID>(ni->ref1), ScaleZoomGUI(ZOOM_LVL_NEWS));
|
||||
nvp->InitializeViewport(this, std::get<VehicleID>(ni->ref1), ScaleZoomGUI(ZoomLevel::News));
|
||||
} else {
|
||||
nvp->InitializeViewport(this, GetReferenceTile(ni->ref1), ScaleZoomGUI(ZOOM_LVL_NEWS));
|
||||
nvp->InitializeViewport(this, GetReferenceTile(ni->ref1), ScaleZoomGUI(ZoomLevel::News));
|
||||
}
|
||||
if (this->ni->flags.Test(NewsFlag::NoTransparency)) nvp->disp_flags.Set(NWidgetDisplayFlag::NoTransparency);
|
||||
if (!this->ni->flags.Test(NewsFlag::InColour)) {
|
||||
|
|
|
@ -760,7 +760,7 @@ int openttd_main(std::span<std::string_view> arguments)
|
|||
InitializeSpriteSorter();
|
||||
|
||||
/* Initialize the zoom level of the screen to normal */
|
||||
_screen.zoom = ZOOM_LVL_MIN;
|
||||
_screen.zoom = ZoomLevel::Min;
|
||||
|
||||
/* The video driver is now selected, now initialise GUI zoom */
|
||||
UpdateGUIZoom();
|
||||
|
|
|
@ -229,8 +229,8 @@ const Sprite *CoreTextFontCache::InternalGetGlyph(GlyphID key, bool use_aa)
|
|||
if (width > MAX_GLYPH_DIM || height > MAX_GLYPH_DIM) UserError("Font glyph is too large");
|
||||
|
||||
SpriteLoader::SpriteCollection spritecollection;
|
||||
SpriteLoader::Sprite &sprite = spritecollection[ZOOM_LVL_MIN];
|
||||
sprite.AllocateData(ZOOM_LVL_MIN, width * height);
|
||||
SpriteLoader::Sprite &sprite = spritecollection[ZoomLevel::Min];
|
||||
sprite.AllocateData(ZoomLevel::Min, width * height);
|
||||
sprite.colours = SpriteComponent::Palette;
|
||||
if (use_aa) sprite.colours.Set(SpriteComponent::Alpha);
|
||||
sprite.width = width;
|
||||
|
|
|
@ -225,8 +225,8 @@ void Win32FontCache::ClearFontCache()
|
|||
|
||||
/* GDI has rendered the glyph, now we allocate a sprite and copy the image into it. */
|
||||
SpriteLoader::SpriteCollection spritecollection;
|
||||
SpriteLoader::Sprite &sprite = spritecollection[ZOOM_LVL_MIN];
|
||||
sprite.AllocateData(ZOOM_LVL_MIN, width * height);
|
||||
SpriteLoader::Sprite &sprite = spritecollection[ZoomLevel::Min];
|
||||
sprite.AllocateData(ZoomLevel::Min, width * height);
|
||||
sprite.colours = SpriteComponent::Palette;
|
||||
if (aa) sprite.colours.Set(SpriteComponent::Alpha);
|
||||
sprite.width = width;
|
||||
|
|
|
@ -1658,7 +1658,7 @@ static void DrawRoadBits(TileInfo *ti)
|
|||
DrawRoadCatenary(ti);
|
||||
|
||||
/* Return if full detail is disabled, or we are zoomed fully out. */
|
||||
if (!HasBit(_display_opt, DO_FULL_DETAIL) || _cur_dpi->zoom > ZOOM_LVL_DETAIL) return;
|
||||
if (!HasBit(_display_opt, DO_FULL_DETAIL) || _cur_dpi->zoom > ZoomLevel::Detail) return;
|
||||
|
||||
/* Do not draw details (street lights, trees) under low bridge */
|
||||
Roadside roadside = GetRoadside(ti->tile);
|
||||
|
|
|
@ -43,7 +43,7 @@ void SaveViewportBeforeSaveGame()
|
|||
/* Ensure saved position is clearly invalid. */
|
||||
_saved_scrollpos_x = INT_MAX;
|
||||
_saved_scrollpos_y = INT_MAX;
|
||||
_saved_scrollpos_zoom = ZOOM_LVL_END;
|
||||
_saved_scrollpos_zoom = ZoomLevel::End;
|
||||
} else {
|
||||
_saved_scrollpos_x = w->viewport->scrollpos_x;
|
||||
_saved_scrollpos_y = w->viewport->scrollpos_y;
|
||||
|
@ -61,12 +61,12 @@ void ResetViewportAfterLoadGame()
|
|||
w->viewport->dest_scrollpos_y = _saved_scrollpos_y;
|
||||
|
||||
Viewport &vp = *w->viewport;
|
||||
vp.zoom = std::min(_saved_scrollpos_zoom, ZOOM_LVL_MAX);
|
||||
vp.zoom = std::min(_saved_scrollpos_zoom, ZoomLevel::Max);
|
||||
vp.virtual_width = ScaleByZoom(vp.width, vp.zoom);
|
||||
vp.virtual_height = ScaleByZoom(vp.height, vp.zoom);
|
||||
|
||||
/* If zoom_max is ZOOM_LVL_MIN then the setting has not been loaded yet, therefore all levels are allowed. */
|
||||
if (_settings_client.gui.zoom_max != ZOOM_LVL_MIN) {
|
||||
/* If zoom_max is ZoomLevel::Min then the setting has not been loaded yet, therefore all levels are allowed. */
|
||||
if (_settings_client.gui.zoom_max != ZoomLevel::Min) {
|
||||
/* Ensure zoom level is allowed */
|
||||
while (vp.zoom < _settings_client.gui.zoom_min) DoZoomInOutWindow(ZOOM_OUT, w);
|
||||
while (vp.zoom > _settings_client.gui.zoom_max) DoZoomInOutWindow(ZOOM_IN, w);
|
||||
|
|
|
@ -94,7 +94,7 @@ static void LargeWorldCallback(Viewport &vp, void *buf, uint y, uint pitch, uint
|
|||
.width = vp.width,
|
||||
.height = static_cast<int>(n),
|
||||
.pitch = static_cast<int>(pitch),
|
||||
.zoom = ZOOM_LVL_WORLD_SCREENSHOT
|
||||
.zoom = ZoomLevel::WorldScreenshot
|
||||
};
|
||||
|
||||
/* We are no longer rendering to the screen */
|
||||
|
@ -105,7 +105,7 @@ static void LargeWorldCallback(Viewport &vp, void *buf, uint y, uint pitch, uint
|
|||
.width = static_cast<int>(pitch),
|
||||
.height = static_cast<int>(n),
|
||||
.pitch = static_cast<int>(pitch),
|
||||
.zoom = ZOOM_LVL_MIN
|
||||
.zoom = ZoomLevel::Min
|
||||
});
|
||||
AutoRestoreBackup disable_anim_backup(_screen_disable_anim, true);
|
||||
AutoRestoreBackup dpi_backup(_cur_dpi, &dpi);
|
||||
|
@ -213,7 +213,7 @@ static Viewport SetupScreenshotViewport(ScreenshotType t, uint32_t width = 0, ui
|
|||
assert(width == 0 && height == 0);
|
||||
|
||||
/* Determine world coordinates of screenshot */
|
||||
vp.zoom = ZOOM_LVL_WORLD_SCREENSHOT;
|
||||
vp.zoom = ZoomLevel::WorldScreenshot;
|
||||
|
||||
TileIndex north_tile = _settings_game.construction.freeform_edges ? TileXY(1, 1) : TileXY(0, 0);
|
||||
TileIndex south_tile{Map::Size() - 1};
|
||||
|
@ -237,7 +237,7 @@ static Viewport SetupScreenshotViewport(ScreenshotType t, uint32_t width = 0, ui
|
|||
break;
|
||||
}
|
||||
default: {
|
||||
vp.zoom = (t == SC_ZOOMEDIN) ? _settings_client.gui.zoom_min : ZOOM_LVL_VIEWPORT;
|
||||
vp.zoom = (t == SC_ZOOMEDIN) ? _settings_client.gui.zoom_min : ZoomLevel::Viewport;
|
||||
|
||||
Window *w = GetMainWindow();
|
||||
vp.virtual_left = w->viewport->virtual_left;
|
||||
|
@ -247,8 +247,8 @@ static Viewport SetupScreenshotViewport(ScreenshotType t, uint32_t width = 0, ui
|
|||
vp.virtual_width = w->viewport->virtual_width;
|
||||
vp.virtual_height = w->viewport->virtual_height;
|
||||
} else {
|
||||
vp.virtual_width = width << vp.zoom;
|
||||
vp.virtual_height = height << vp.zoom;
|
||||
vp.virtual_width = width << to_underlying(vp.zoom);
|
||||
vp.virtual_height = height << to_underlying(vp.zoom);
|
||||
}
|
||||
|
||||
/* Compute pixel coordinates */
|
||||
|
|
|
@ -122,7 +122,7 @@ static void StartSound(SoundID sound_id, float pan, uint volume)
|
|||
|
||||
|
||||
static const uint8_t _vol_factor_by_zoom[] = {255, 255, 255, 190, 134, 87};
|
||||
static_assert(lengthof(_vol_factor_by_zoom) == ZOOM_LVL_END);
|
||||
static_assert(lengthof(_vol_factor_by_zoom) == to_underlying(ZoomLevel::End));
|
||||
|
||||
static const uint8_t _sound_base_vol[] = {
|
||||
128, 90, 128, 128, 128, 128, 128, 128,
|
||||
|
@ -215,7 +215,7 @@ static void SndPlayScreenCoordFx(SoundID sound, int left, int right, int top, in
|
|||
StartSound(
|
||||
sound,
|
||||
panning,
|
||||
_vol_factor_by_zoom[vp.zoom]
|
||||
_vol_factor_by_zoom[to_underlying(vp.zoom)]
|
||||
);
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -338,7 +338,7 @@ static bool PadSprites(SpriteLoader::SpriteCollection &sprite, ZoomLevels sprite
|
|||
/* Get minimum top left corner coordinates. */
|
||||
int min_xoffs = INT32_MAX;
|
||||
int min_yoffs = INT32_MAX;
|
||||
for (ZoomLevel zoom = ZOOM_LVL_BEGIN; zoom != ZOOM_LVL_END; zoom++) {
|
||||
for (ZoomLevel zoom = ZoomLevel::Begin; zoom != ZoomLevel::End; zoom++) {
|
||||
if (sprite_avail.Test(zoom)) {
|
||||
min_xoffs = std::min(min_xoffs, ScaleByZoom(sprite[zoom].x_offs, zoom));
|
||||
min_yoffs = std::min(min_yoffs, ScaleByZoom(sprite[zoom].y_offs, zoom));
|
||||
|
@ -348,7 +348,7 @@ static bool PadSprites(SpriteLoader::SpriteCollection &sprite, ZoomLevels sprite
|
|||
/* Get maximum dimensions taking necessary padding at the top left into account. */
|
||||
int max_width = INT32_MIN;
|
||||
int max_height = INT32_MIN;
|
||||
for (ZoomLevel zoom = ZOOM_LVL_BEGIN; zoom != ZOOM_LVL_END; zoom++) {
|
||||
for (ZoomLevel zoom = ZoomLevel::Begin; zoom != ZoomLevel::End; zoom++) {
|
||||
if (sprite_avail.Test(zoom)) {
|
||||
max_width = std::max(max_width, ScaleByZoom(sprite[zoom].width + sprite[zoom].x_offs - UnScaleByZoom(min_xoffs, zoom), zoom));
|
||||
max_height = std::max(max_height, ScaleByZoom(sprite[zoom].height + sprite[zoom].y_offs - UnScaleByZoom(min_yoffs, zoom), zoom));
|
||||
|
@ -363,7 +363,7 @@ static bool PadSprites(SpriteLoader::SpriteCollection &sprite, ZoomLevels sprite
|
|||
}
|
||||
|
||||
/* Pad sprites where needed. */
|
||||
for (ZoomLevel zoom = ZOOM_LVL_BEGIN; zoom != ZOOM_LVL_END; zoom++) {
|
||||
for (ZoomLevel zoom = ZoomLevel::Begin; zoom != ZoomLevel::End; zoom++) {
|
||||
if (sprite_avail.Test(zoom)) {
|
||||
auto &cur_sprite = sprite[zoom];
|
||||
/* Scaling the sprite dimensions in the blitter is done with rounding up,
|
||||
|
@ -386,12 +386,12 @@ static bool ResizeSprites(SpriteLoader::SpriteCollection &sprite, ZoomLevels spr
|
|||
{
|
||||
/* Create a fully zoomed image if it does not exist */
|
||||
ZoomLevel first_avail;
|
||||
for (ZoomLevel zoom = ZOOM_LVL_MIN; zoom <= ZOOM_LVL_MAX; ++zoom) {
|
||||
for (ZoomLevel zoom = ZoomLevel::Min; zoom <= ZoomLevel::Max; ++zoom) {
|
||||
if (!sprite_avail.Test(zoom)) continue;
|
||||
first_avail = zoom;
|
||||
if (zoom != ZOOM_LVL_MIN) {
|
||||
if (!ResizeSpriteIn(sprite, zoom, ZOOM_LVL_MIN)) return false;
|
||||
sprite_avail.Set(ZOOM_LVL_MIN);
|
||||
if (zoom != ZoomLevel::Min) {
|
||||
if (!ResizeSpriteIn(sprite, zoom, ZoomLevel::Min)) return false;
|
||||
sprite_avail.Set(ZoomLevel::Min);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
@ -400,12 +400,12 @@ static bool ResizeSprites(SpriteLoader::SpriteCollection &sprite, ZoomLevels spr
|
|||
if (!PadSprites(sprite, sprite_avail, encoder)) return false;
|
||||
|
||||
/* Create other missing zoom levels */
|
||||
for (ZoomLevel zoom = ZOOM_LVL_BEGIN; zoom != ZOOM_LVL_END; zoom++) {
|
||||
if (zoom == ZOOM_LVL_MIN) continue;
|
||||
for (ZoomLevel zoom = ZoomLevel::Begin; zoom != ZoomLevel::End; zoom++) {
|
||||
if (zoom == ZoomLevel::Min) continue;
|
||||
|
||||
if (sprite_avail.Test(zoom)) {
|
||||
/* Check that size and offsets match the fully zoomed image. */
|
||||
[[maybe_unused]] const auto &root_sprite = sprite[ZOOM_LVL_MIN];
|
||||
[[maybe_unused]] const auto &root_sprite = sprite[ZoomLevel::Min];
|
||||
[[maybe_unused]] const auto &dest_sprite = sprite[zoom];
|
||||
assert(dest_sprite.width == UnScaleByZoom(root_sprite.width, zoom));
|
||||
assert(dest_sprite.height == UnScaleByZoom(root_sprite.height, zoom));
|
||||
|
@ -419,7 +419,7 @@ static bool ResizeSprites(SpriteLoader::SpriteCollection &sprite, ZoomLevels spr
|
|||
|
||||
/* Replace sprites with higher resolution than the desired maximum source resolution with scaled up sprites, if not already done. */
|
||||
if (first_avail < _settings_client.gui.sprite_zoom_min) {
|
||||
for (ZoomLevel zoom = std::min(ZOOM_LVL_NORMAL, _settings_client.gui.sprite_zoom_min); zoom > ZOOM_LVL_MIN; --zoom) {
|
||||
for (ZoomLevel zoom = std::min(ZoomLevel::Normal, _settings_client.gui.sprite_zoom_min); zoom > ZoomLevel::Min; --zoom) {
|
||||
ResizeSpriteIn(sprite, zoom, zoom - 1);
|
||||
}
|
||||
}
|
||||
|
@ -546,9 +546,9 @@ static void *ReadSprite(const SpriteCache *sc, SpriteID id, SpriteType sprite_ty
|
|||
return (void*)GetRawSprite(SPR_IMG_QUERY, SpriteType::Normal, &allocator, encoder);
|
||||
}
|
||||
|
||||
if (sprite_type == SpriteType::Font && _font_zoom != ZOOM_LVL_MIN) {
|
||||
/* Make ZOOM_LVL_MIN be ZOOM_LVL_GUI */
|
||||
sprite[ZOOM_LVL_MIN] = sprite[_font_zoom];
|
||||
if (sprite_type == SpriteType::Font && _font_zoom != ZoomLevel::Min) {
|
||||
/* Make ZoomLevel::Min be ZOOM_LVL_GUI */
|
||||
sprite[ZoomLevel::Min] = sprite[_font_zoom];
|
||||
}
|
||||
|
||||
return encoder->Encode(sprite_type, sprite, allocator);
|
||||
|
@ -605,11 +605,11 @@ void ReadGRFSpriteOffsets(SpriteFile &file)
|
|||
if (length > 0) {
|
||||
uint8_t zoom = file.ReadByte();
|
||||
length--;
|
||||
if (colour != SpriteComponents{} && zoom == 0) { // ZOOM_LVL_NORMAL (normal zoom)
|
||||
if (colour != SpriteComponents{} && zoom == 0) { // ZoomLevel::Normal (normal zoom)
|
||||
SetBit(offset.control_flags, (colour != SpriteComponent::Palette) ? SCCF_ALLOW_ZOOM_MIN_1X_32BPP : SCCF_ALLOW_ZOOM_MIN_1X_PAL);
|
||||
SetBit(offset.control_flags, (colour != SpriteComponent::Palette) ? SCCF_ALLOW_ZOOM_MIN_2X_32BPP : SCCF_ALLOW_ZOOM_MIN_2X_PAL);
|
||||
}
|
||||
if (colour != SpriteComponents{} && zoom == 2) { // ZOOM_LVL_IN_2X (2x zoomed in)
|
||||
if (colour != SpriteComponents{} && zoom == 2) { // ZoomLevel::In2x (2x zoomed in)
|
||||
SetBit(offset.control_flags, (colour != SpriteComponent::Palette) ? SCCF_ALLOW_ZOOM_MIN_2X_32BPP : SCCF_ALLOW_ZOOM_MIN_2X_PAL);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -230,7 +230,7 @@ static ZoomLevels LoadSpriteV1(SpriteLoader::SpriteCollection &sprite, SpriteFil
|
|||
/* Type 0xFF indicates either a colourmap or some other non-sprite info; we do not handle them here */
|
||||
if (type == 0xFF) return {};
|
||||
|
||||
ZoomLevel zoom_lvl = (sprite_type != SpriteType::MapGen) ? ZOOM_LVL_NORMAL : ZOOM_LVL_MIN;
|
||||
ZoomLevel zoom_lvl = (sprite_type != SpriteType::MapGen) ? ZoomLevel::Normal : ZoomLevel::Min;
|
||||
auto &dest_sprite = sprite[zoom_lvl];
|
||||
|
||||
dest_sprite.height = file.ReadByte();
|
||||
|
@ -258,7 +258,7 @@ static ZoomLevels LoadSpriteV1(SpriteLoader::SpriteCollection &sprite, SpriteFil
|
|||
|
||||
static ZoomLevels LoadSpriteV2(SpriteLoader::SpriteCollection &sprite, SpriteFile &file, size_t file_pos, SpriteType sprite_type, bool load_32bpp, uint8_t control_flags, ZoomLevels &avail_8bpp, ZoomLevels &avail_32bpp)
|
||||
{
|
||||
static const ZoomLevel zoom_lvl_map[6] = {ZOOM_LVL_NORMAL, ZOOM_LVL_IN_4X, ZOOM_LVL_IN_2X, ZOOM_LVL_OUT_2X, ZOOM_LVL_OUT_4X, ZOOM_LVL_OUT_8X};
|
||||
static const ZoomLevel zoom_lvl_map[6] = {ZoomLevel::Normal, ZoomLevel::In4x, ZoomLevel::In2x, ZoomLevel::Out2x, ZoomLevel::Out4x, ZoomLevel::Out8x};
|
||||
|
||||
/* Is the sprite not present/stripped in the GRF? */
|
||||
if (file_pos == SIZE_MAX) return {};
|
||||
|
@ -293,13 +293,13 @@ static ZoomLevels LoadSpriteV2(SpriteLoader::SpriteCollection &sprite, SpriteFil
|
|||
if (colour != SpriteComponent::Palette) avail_32bpp.Set(zoom_lvl);
|
||||
|
||||
is_wanted_zoom_lvl = true;
|
||||
ZoomLevel zoom_min = sprite_type == SpriteType::Font ? ZOOM_LVL_MIN : _settings_client.gui.sprite_zoom_min;
|
||||
if (zoom_min >= ZOOM_LVL_IN_2X &&
|
||||
HasBit(control_flags, load_32bpp ? SCCF_ALLOW_ZOOM_MIN_2X_32BPP : SCCF_ALLOW_ZOOM_MIN_2X_PAL) && zoom_lvl < ZOOM_LVL_IN_2X) {
|
||||
ZoomLevel zoom_min = sprite_type == SpriteType::Font ? ZoomLevel::Min : _settings_client.gui.sprite_zoom_min;
|
||||
if (zoom_min >= ZoomLevel::In2x &&
|
||||
HasBit(control_flags, load_32bpp ? SCCF_ALLOW_ZOOM_MIN_2X_32BPP : SCCF_ALLOW_ZOOM_MIN_2X_PAL) && zoom_lvl < ZoomLevel::In2x) {
|
||||
is_wanted_zoom_lvl = false;
|
||||
}
|
||||
if (zoom_min >= ZOOM_LVL_NORMAL &&
|
||||
HasBit(control_flags, load_32bpp ? SCCF_ALLOW_ZOOM_MIN_1X_32BPP : SCCF_ALLOW_ZOOM_MIN_1X_PAL) && zoom_lvl < ZOOM_LVL_NORMAL) {
|
||||
if (zoom_min >= ZoomLevel::Normal &&
|
||||
HasBit(control_flags, load_32bpp ? SCCF_ALLOW_ZOOM_MIN_1X_32BPP : SCCF_ALLOW_ZOOM_MIN_1X_PAL) && zoom_lvl < ZoomLevel::Normal) {
|
||||
is_wanted_zoom_lvl = false;
|
||||
}
|
||||
} else {
|
||||
|
@ -310,7 +310,7 @@ static ZoomLevels LoadSpriteV2(SpriteLoader::SpriteCollection &sprite, SpriteFil
|
|||
}
|
||||
|
||||
if (is_wanted_colour_depth && is_wanted_zoom_lvl) {
|
||||
ZoomLevel zoom_lvl = (sprite_type != SpriteType::MapGen) ? zoom_lvl_map[zoom] : ZOOM_LVL_MIN;
|
||||
ZoomLevel zoom_lvl = (sprite_type != SpriteType::MapGen) ? zoom_lvl_map[zoom] : ZoomLevel::Min;
|
||||
|
||||
if (loaded_sprites.Test(zoom_lvl)) {
|
||||
/* We already have this zoom level, skip sprite. */
|
||||
|
|
|
@ -52,7 +52,7 @@ ZoomLevels SpriteLoaderMakeIndexed::LoadSprite(SpriteLoader::SpriteCollection &s
|
|||
{
|
||||
ZoomLevels avail = this->baseloader.LoadSprite(sprite, file, file_pos, sprite_type, true, control_flags, avail_8bpp, avail_32bpp);
|
||||
|
||||
for (ZoomLevel zoom = ZOOM_LVL_BEGIN; zoom != ZOOM_LVL_END; zoom++) {
|
||||
for (ZoomLevel zoom = ZoomLevel::Begin; zoom != ZoomLevel::End; zoom++) {
|
||||
if (avail.Test(zoom)) Convert32bppTo8bpp(sprite[zoom]);
|
||||
}
|
||||
|
||||
|
|
|
@ -31,13 +31,13 @@ using SpriteComponents = EnumBitSet<SpriteComponent, uint8_t, SpriteComponent::E
|
|||
*/
|
||||
template <class T>
|
||||
class SpriteCollMap {
|
||||
std::array<T, ZOOM_LVL_END> data;
|
||||
std::array<T, to_underlying(ZoomLevel::End)> data;
|
||||
public:
|
||||
inline constexpr T &operator[](const ZoomLevel &zoom) { return this->data[zoom]; }
|
||||
inline constexpr const T &operator[](const ZoomLevel &zoom) const { return this->data[zoom]; }
|
||||
inline constexpr T &operator[](const ZoomLevel &zoom) { return this->data[to_underlying(zoom)]; }
|
||||
inline constexpr const T &operator[](const ZoomLevel &zoom) const { return this->data[to_underlying(zoom)]; }
|
||||
|
||||
T &Root() { return this->data[ZOOM_LVL_MIN]; }
|
||||
const T &Root() const { return this->data[ZOOM_LVL_MIN]; }
|
||||
T &Root() { return this->data[to_underlying(ZoomLevel::Min)]; }
|
||||
const T &Root() const { return this->data[to_underlying(ZoomLevel::Min)]; }
|
||||
};
|
||||
|
||||
/** Interface for the loader of our sprites. */
|
||||
|
|
|
@ -260,9 +260,9 @@ cat = SC_EXPERT
|
|||
var = gui.zoom_min
|
||||
type = SLE_UINT8
|
||||
flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync, SettingFlag::GuiDropdown
|
||||
def = ZOOM_LVL_MIN
|
||||
min = ZOOM_LVL_MIN
|
||||
max = ZOOM_LVL_NORMAL
|
||||
def = to_underlying(ZoomLevel::Min)
|
||||
min = to_underlying(ZoomLevel::Min)
|
||||
max = to_underlying(ZoomLevel::Normal)
|
||||
str = STR_CONFIG_SETTING_ZOOM_MIN
|
||||
strhelp = STR_CONFIG_SETTING_ZOOM_MIN_HELPTEXT
|
||||
strval = STR_CONFIG_SETTING_ZOOM_LVL_MIN
|
||||
|
@ -273,9 +273,9 @@ startup = true
|
|||
var = gui.zoom_max
|
||||
type = SLE_UINT8
|
||||
flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync, SettingFlag::GuiDropdown
|
||||
def = ZOOM_LVL_MAX
|
||||
min = ZOOM_LVL_OUT_2X
|
||||
max = ZOOM_LVL_MAX
|
||||
def = to_underlying(ZoomLevel::Max)
|
||||
min = to_underlying(ZoomLevel::Out2x)
|
||||
max = to_underlying(ZoomLevel::Max)
|
||||
str = STR_CONFIG_SETTING_ZOOM_MAX
|
||||
strhelp = STR_CONFIG_SETTING_ZOOM_MAX_HELPTEXT
|
||||
strval = STR_CONFIG_SETTING_ZOOM_LVL_OUT_2X
|
||||
|
@ -286,9 +286,9 @@ startup = true
|
|||
var = gui.sprite_zoom_min
|
||||
type = SLE_UINT8
|
||||
flags = SettingFlag::NotInSave, SettingFlag::NoNetworkSync, SettingFlag::GuiDropdown
|
||||
def = ZOOM_LVL_MIN
|
||||
min = ZOOM_LVL_MIN
|
||||
max = ZOOM_LVL_NORMAL
|
||||
def = to_underlying(ZoomLevel::Min)
|
||||
min = to_underlying(ZoomLevel::Min)
|
||||
max = to_underlying(ZoomLevel::Normal)
|
||||
str = STR_CONFIG_SETTING_SPRITE_ZOOM_MIN
|
||||
strhelp = STR_CONFIG_SETTING_SPRITE_ZOOM_MIN_HELPTEXT
|
||||
strval = STR_CONFIG_SETTING_SPRITE_ZOOM_LVL_MIN
|
||||
|
|
|
@ -101,10 +101,10 @@ IntervalTimer<TimerWindow> move_all_text_effects_interval = {std::chrono::millis
|
|||
continue;
|
||||
}
|
||||
|
||||
te.MarkDirty(ZOOM_LVL_TEXT_EFFECT);
|
||||
te.MarkDirty(ZoomLevel::TextEffect);
|
||||
te.duration -= count;
|
||||
te.top -= count * ZOOM_BASE;
|
||||
te.MarkDirty(ZOOM_LVL_TEXT_EFFECT);
|
||||
te.MarkDirty(ZoomLevel::TextEffect);
|
||||
}
|
||||
}};
|
||||
|
||||
|
@ -117,11 +117,11 @@ void InitTextEffects()
|
|||
void DrawTextEffects(DrawPixelInfo *dpi)
|
||||
{
|
||||
/* Don't draw the text effects when zoomed out a lot */
|
||||
if (dpi->zoom > ZOOM_LVL_TEXT_EFFECT) return;
|
||||
if (dpi->zoom > ZoomLevel::TextEffect) return;
|
||||
if (IsTransparencySet(TO_TEXT)) return;
|
||||
|
||||
ViewportStringFlags flags{};
|
||||
if (dpi->zoom >= ZOOM_LVL_TEXT_EFFECT) flags.Set(ViewportStringFlag::Small);
|
||||
if (dpi->zoom >= ZoomLevel::TextEffect) flags.Set(ViewportStringFlag::Small);
|
||||
|
||||
for (const TextEffect &te : _text_effects) {
|
||||
if (!te.IsValid()) continue;
|
||||
|
|
|
@ -378,7 +378,7 @@ public:
|
|||
|
||||
this->flags.Set(WindowFlag::DisableVpScroll);
|
||||
NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(WID_TV_VIEWPORT);
|
||||
nvp->InitializeViewport(this, this->town->xy, ScaleZoomGUI(ZOOM_LVL_TOWN));
|
||||
nvp->InitializeViewport(this, this->town->xy, ScaleZoomGUI(ZoomLevel::Town));
|
||||
|
||||
/* disable renaming town in network games if you are not the server */
|
||||
this->SetWidgetDisabledState(WID_TV_CHANGE_NAME, _networking && !_network_server);
|
||||
|
|
|
@ -2873,10 +2873,10 @@ static_assert(VEH_AIRCRAFT == 3);
|
|||
|
||||
/** Zoom levels for vehicle views indexed by vehicle type. */
|
||||
static const ZoomLevel _vehicle_view_zoom_levels[] = {
|
||||
ZOOM_LVL_TRAIN,
|
||||
ZOOM_LVL_ROADVEH,
|
||||
ZOOM_LVL_SHIP,
|
||||
ZOOM_LVL_AIRCRAFT,
|
||||
ZoomLevel::Train,
|
||||
ZoomLevel::RoadVehicle,
|
||||
ZoomLevel::Ship,
|
||||
ZoomLevel::Aircraft,
|
||||
};
|
||||
|
||||
/* Constants for geometry of vehicle view viewport */
|
||||
|
|
|
@ -1405,7 +1405,7 @@ OpenGLSprite::OpenGLSprite(SpriteType sprite_type, const SpriteLoader::SpriteCol
|
|||
this->x_offs = root_sprite.x_offs;
|
||||
this->y_offs = root_sprite.y_offs;
|
||||
|
||||
int levels = sprite_type == SpriteType::Font ? 1 : ZOOM_LVL_END;
|
||||
int levels = sprite_type == SpriteType::Font ? 1 : to_underlying(ZoomLevel::End);
|
||||
assert(levels > 0);
|
||||
(void)_glGetError();
|
||||
|
||||
|
@ -1440,9 +1440,9 @@ OpenGLSprite::OpenGLSprite(SpriteType sprite_type, const SpriteLoader::SpriteCol
|
|||
}
|
||||
|
||||
/* Upload texture data. */
|
||||
for (ZoomLevel zoom = ZOOM_LVL_MIN; zoom <= (sprite_type == SpriteType::Font ? ZOOM_LVL_MIN : ZOOM_LVL_MAX); ++zoom) {
|
||||
for (ZoomLevel zoom = ZoomLevel::Min; zoom <= (sprite_type == SpriteType::Font ? ZoomLevel::Min : ZoomLevel::Max); ++zoom) {
|
||||
const auto &src_sprite = sprite[zoom];
|
||||
this->Update(src_sprite.width, src_sprite.height, zoom, src_sprite.data);
|
||||
this->Update(src_sprite.width, src_sprite.height, to_underlying(zoom), src_sprite.data);
|
||||
}
|
||||
|
||||
assert(_glGetError() == GL_NO_ERROR);
|
||||
|
|
|
@ -105,7 +105,7 @@ public:
|
|||
/* SpriteEncoder */
|
||||
|
||||
bool Is32BppSupported() override { return true; }
|
||||
uint GetSpriteAlignment() override { return 1u << ZOOM_LVL_MAX; }
|
||||
uint GetSpriteAlignment() override { return 1u << to_underlying(ZoomLevel::Max); }
|
||||
Sprite *Encode(SpriteType sprite_type, const SpriteLoader::SpriteCollection &sprite, SpriteAllocator &allocator) override;
|
||||
};
|
||||
|
||||
|
|
|
@ -1481,7 +1481,7 @@ static void ViewportAddKdtreeSigns(DrawPixelInfo *dpi)
|
|||
});
|
||||
|
||||
/* Small versions of signs are used zoom level 4X and higher. */
|
||||
bool small = dpi->zoom >= ZOOM_LVL_OUT_4X;
|
||||
bool small = dpi->zoom >= ZoomLevel::Out4x;
|
||||
|
||||
/* Layering order (bottom to top): Town names, signs, stations */
|
||||
ViewportAddTownStrings(dpi, towns, small);
|
||||
|
@ -1525,17 +1525,17 @@ void ViewportSign::UpdatePosition(int center, int top, std::string_view str, std
|
|||
*/
|
||||
void ViewportSign::MarkDirty(ZoomLevel maxzoom) const
|
||||
{
|
||||
Rect zoomlevels[ZOOM_LVL_END];
|
||||
Rect zoomlevels[to_underlying(ZoomLevel::End)];
|
||||
|
||||
/* We don't know which size will be drawn, so mark the largest area dirty. */
|
||||
const uint half_width = std::max(this->width_normal, this->width_small) / 2 + 1;
|
||||
const uint height = WidgetDimensions::scaled.fullbevel.top + std::max(GetCharacterHeight(FS_NORMAL), GetCharacterHeight(FS_SMALL)) + WidgetDimensions::scaled.fullbevel.bottom + 1;
|
||||
|
||||
for (ZoomLevel zoom = ZOOM_LVL_BEGIN; zoom != ZOOM_LVL_END; zoom++) {
|
||||
zoomlevels[zoom].left = this->center - ScaleByZoom(half_width, zoom);
|
||||
zoomlevels[zoom].top = this->top - ScaleByZoom(1, zoom);
|
||||
zoomlevels[zoom].right = this->center + ScaleByZoom(half_width, zoom);
|
||||
zoomlevels[zoom].bottom = this->top + ScaleByZoom(height, zoom);
|
||||
for (ZoomLevel zoom = ZoomLevel::Begin; zoom != ZoomLevel::End; zoom++) {
|
||||
zoomlevels[to_underlying(zoom)].left = this->center - ScaleByZoom(half_width, zoom);
|
||||
zoomlevels[to_underlying(zoom)].top = this->top - ScaleByZoom(1, zoom);
|
||||
zoomlevels[to_underlying(zoom)].right = this->center + ScaleByZoom(half_width, zoom);
|
||||
zoomlevels[to_underlying(zoom)].bottom = this->top + ScaleByZoom(height, zoom);
|
||||
}
|
||||
|
||||
for (const Window *w : Window::Iterate()) {
|
||||
|
@ -1544,7 +1544,7 @@ void ViewportSign::MarkDirty(ZoomLevel maxzoom) const
|
|||
Viewport &vp = *w->viewport;
|
||||
if (vp.zoom <= maxzoom) {
|
||||
assert(vp.width != 0);
|
||||
Rect &zl = zoomlevels[vp.zoom];
|
||||
Rect &zl = zoomlevels[to_underlying(vp.zoom)];
|
||||
MarkViewportDirty(vp, zl.left, zl.top, zl.right, zl.bottom);
|
||||
}
|
||||
}
|
||||
|
@ -1820,7 +1820,7 @@ void ViewportDoDraw(const Viewport &vp, int left, int top, int right, int bottom
|
|||
|
||||
DrawPixelInfo dp = _vd.dpi;
|
||||
ZoomLevel zoom = _vd.dpi.zoom;
|
||||
dp.zoom = ZOOM_LVL_MIN;
|
||||
dp.zoom = ZoomLevel::Min;
|
||||
dp.width = UnScaleByZoom(dp.width, zoom);
|
||||
dp.height = UnScaleByZoom(dp.height, zoom);
|
||||
AutoRestoreBackup cur_dpi(_cur_dpi, &dp);
|
||||
|
@ -2026,8 +2026,8 @@ void UpdateViewportPosition(Window *w, uint32_t delta_ms)
|
|||
static bool MarkViewportDirty(const Viewport &vp, int left, int top, int right, int bottom)
|
||||
{
|
||||
/* Rounding wrt. zoom-out level */
|
||||
right += (1 << vp.zoom) - 1;
|
||||
bottom += (1 << vp.zoom) - 1;
|
||||
right += (1 << to_underlying(vp.zoom)) - 1;
|
||||
bottom += (1 << to_underlying(vp.zoom)) - 1;
|
||||
|
||||
right -= vp.virtual_left;
|
||||
if (right <= 0) return false;
|
||||
|
@ -2055,10 +2055,10 @@ static bool MarkViewportDirty(const Viewport &vp, int left, int top, int right,
|
|||
|
||||
/**
|
||||
* Mark all viewports that display an area as dirty (in need of repaint).
|
||||
* @param left Left edge of area to repaint. (viewport coordinates, that is wrt. #ZOOM_LVL_MIN)
|
||||
* @param top Top edge of area to repaint. (viewport coordinates, that is wrt. #ZOOM_LVL_MIN)
|
||||
* @param right Right edge of area to repaint. (viewport coordinates, that is wrt. #ZOOM_LVL_MIN)
|
||||
* @param bottom Bottom edge of area to repaint. (viewport coordinates, that is wrt. #ZOOM_LVL_MIN)
|
||||
* @param left Left edge of area to repaint. (viewport coordinates, that is wrt. #ZoomLevel::Min)
|
||||
* @param top Top edge of area to repaint. (viewport coordinates, that is wrt. #ZoomLevel::Min)
|
||||
* @param right Right edge of area to repaint. (viewport coordinates, that is wrt. #ZoomLevel::Min)
|
||||
* @param bottom Bottom edge of area to repaint. (viewport coordinates, that is wrt. #ZoomLevel::Min)
|
||||
* @return true if at least one viewport has a dirty block
|
||||
* @ingroup dirty
|
||||
*/
|
||||
|
@ -2240,7 +2240,7 @@ void SetSelectionRed(bool b)
|
|||
*/
|
||||
static bool CheckClickOnViewportSign(const Viewport &vp, int x, int y, const ViewportSign *sign)
|
||||
{
|
||||
bool small = (vp.zoom >= ZOOM_LVL_OUT_4X);
|
||||
bool small = (vp.zoom >= ZoomLevel::Out4x);
|
||||
int sign_half_width = ScaleByZoom((small ? sign->width_small : sign->width_normal) / 2, vp.zoom);
|
||||
int sign_height = ScaleByZoom(WidgetDimensions::scaled.fullbevel.top + GetCharacterHeight(small ? FS_SMALL : FS_NORMAL) + WidgetDimensions::scaled.fullbevel.bottom, vp.zoom);
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ public:
|
|||
this->InitNested(window_number);
|
||||
|
||||
NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(WID_EV_VIEWPORT);
|
||||
nvp->InitializeViewport(this, tile, ScaleZoomGUI(ZOOM_LVL_VIEWPORT));
|
||||
nvp->InitializeViewport(this, tile, ScaleZoomGUI(ZoomLevel::Viewport));
|
||||
if (_settings_client.gui.zoom_min == viewport->zoom) this->DisableWidget(WID_EV_ZOOM_IN);
|
||||
}
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ struct ViewportSign {
|
|||
auto operator<=>(const ViewportSign &) const = default;
|
||||
|
||||
void UpdatePosition(int center, int top, std::string_view str, std::string_view str_small = {});
|
||||
void MarkDirty(ZoomLevel maxzoom = ZOOM_LVL_MAX) const;
|
||||
void MarkDirty(ZoomLevel maxzoom = ZoomLevel::Max) const;
|
||||
};
|
||||
|
||||
/** Specialised ViewportSign that tracks whether it is valid for entering into a Kdtree */
|
||||
|
|
|
@ -97,7 +97,7 @@ public:
|
|||
this->flags.Set(WindowFlag::DisableVpScroll);
|
||||
|
||||
NWidgetViewport *nvp = this->GetWidget<NWidgetViewport>(WID_W_VIEWPORT);
|
||||
nvp->InitializeViewport(this, this->GetCenterTile(), ScaleZoomGUI(ZOOM_LVL_VIEWPORT));
|
||||
nvp->InitializeViewport(this, this->GetCenterTile(), ScaleZoomGUI(ZoomLevel::Viewport));
|
||||
|
||||
this->OnInvalidateData(0);
|
||||
}
|
||||
|
|
|
@ -68,7 +68,7 @@ static inline Dimension ScaleGUITrad(const Dimension &dim)
|
|||
Dimension GetScaledSpriteSize(SpriteID sprid)
|
||||
{
|
||||
Point offset;
|
||||
Dimension d = GetSpriteSize(sprid, &offset, ZOOM_LVL_NORMAL);
|
||||
Dimension d = GetSpriteSize(sprid, &offset, ZoomLevel::Normal);
|
||||
d.width -= offset.x;
|
||||
d.height -= offset.y;
|
||||
return ScaleGUITrad(d);
|
||||
|
@ -3443,7 +3443,7 @@ std::unique_ptr<NWidgetBase> MakeCompanyButtonRows(WidgetID widget_first, Widget
|
|||
std::unique_ptr<NWidgetHorizontal> hor = nullptr; // Storage for buttons in one row.
|
||||
int hor_length = 0;
|
||||
|
||||
Dimension sprite_size = GetSpriteSize(SPR_COMPANY_ICON, nullptr, ZOOM_LVL_NORMAL);
|
||||
Dimension sprite_size = GetSpriteSize(SPR_COMPANY_ICON, nullptr, ZoomLevel::Normal);
|
||||
sprite_size.width += WidgetDimensions::unscaled.matrix.Horizontal();
|
||||
sprite_size.height += WidgetDimensions::unscaled.matrix.Vertical();
|
||||
|
||||
|
|
|
@ -37,8 +37,8 @@ enum SpriteAlignerWidgets : WidgetID {
|
|||
WID_SA_PICKER, ///< Sprite picker.
|
||||
WID_SA_LIST, ///< Queried sprite list.
|
||||
WID_SA_SCROLLBAR, ///< Scrollbar for sprite list.
|
||||
WID_SA_ZOOM, ///< Zoom level buttons (from ZOOM_LVL_BEGIN to ZOOM_LVL_END).
|
||||
WID_SA_ZOOM_LAST = WID_SA_ZOOM + ZOOM_LVL_END - 1, ///< Marker for last zoom level button.
|
||||
WID_SA_ZOOM, ///< Zoom level buttons (from ZoomLevel::Begin to ZoomLevel::Max).
|
||||
WID_SA_ZOOM_LAST = WID_SA_ZOOM + to_underlying(ZoomLevel::Max), ///< Marker for last zoom level button.
|
||||
WID_SA_RESET_REL, ///< Reset relative sprite offset
|
||||
WID_SA_CENTRE, ///< Toggle centre sprite.
|
||||
WID_SA_CROSSHAIR, ///< Toggle crosshair.
|
||||
|
|
|
@ -913,7 +913,7 @@ static void DrawOverlappedWindow(Window *w, int left, int top, int right, int bo
|
|||
dp->top = top - w->top;
|
||||
dp->pitch = _screen.pitch;
|
||||
dp->dst_ptr = BlitterFactory::GetCurrentBlitter()->MoveTo(_screen.dst_ptr, left, top);
|
||||
dp->zoom = ZOOM_LVL_MIN;
|
||||
dp->zoom = ZoomLevel::Min;
|
||||
w->OnPaint();
|
||||
}
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
#include "zoom_type.h"
|
||||
|
||||
/**
|
||||
* Scale by zoom level, usually shift left (when zoom > ZOOM_LVL_MIN)
|
||||
* Scale by zoom level, usually shift left (when zoom > ZoomLevel::Min)
|
||||
* When shifting right, value is rounded up
|
||||
* @param value value to shift
|
||||
* @param zoom zoom level to shift to
|
||||
|
@ -21,11 +21,11 @@
|
|||
*/
|
||||
inline int ScaleByZoom(int value, ZoomLevel zoom)
|
||||
{
|
||||
return value << zoom;
|
||||
return value << to_underlying(zoom);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scale by zoom level, usually shift right (when zoom > ZOOM_LVL_MIN)
|
||||
* Scale by zoom level, usually shift right (when zoom > ZoomLevel::Min)
|
||||
* When shifting right, value is rounded up
|
||||
* @param value value to shift
|
||||
* @param zoom zoom level to shift to
|
||||
|
@ -33,7 +33,7 @@ inline int ScaleByZoom(int value, ZoomLevel zoom)
|
|||
*/
|
||||
inline int UnScaleByZoom(int value, ZoomLevel zoom)
|
||||
{
|
||||
return (value + (1 << zoom) - 1) >> zoom;
|
||||
return (value + (1 << to_underlying(zoom)) - 1) >> to_underlying(zoom);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -44,34 +44,34 @@ inline int UnScaleByZoom(int value, ZoomLevel zoom)
|
|||
*/
|
||||
inline int AdjustByZoom(int value, int zoom)
|
||||
{
|
||||
return zoom < 0 ? UnScaleByZoom(value, ZoomLevel(-zoom)) : ScaleByZoom(value, ZoomLevel(zoom));
|
||||
return zoom < 0 ? UnScaleByZoom(value, static_cast<ZoomLevel>(-zoom)) : ScaleByZoom(value, static_cast<ZoomLevel>(zoom));
|
||||
}
|
||||
|
||||
/**
|
||||
* Scale by zoom level, usually shift left (when zoom > ZOOM_LVL_MIN)
|
||||
* Scale by zoom level, usually shift left (when zoom > ZoomLevel::Min)
|
||||
* @param value value to shift
|
||||
* @param zoom zoom level to shift to
|
||||
* @return shifted value
|
||||
*/
|
||||
inline int ScaleByZoomLower(int value, ZoomLevel zoom)
|
||||
{
|
||||
return value << zoom;
|
||||
return value << to_underlying(zoom);
|
||||
}
|
||||
|
||||
/**
|
||||
* Scale by zoom level, usually shift right (when zoom > ZOOM_LVL_MIN)
|
||||
* Scale by zoom level, usually shift right (when zoom > ZoomLevel::Min)
|
||||
* @param value value to shift
|
||||
* @param zoom zoom level to shift to
|
||||
* @return shifted value
|
||||
*/
|
||||
inline int UnScaleByZoomLower(int value, ZoomLevel zoom)
|
||||
{
|
||||
return value >> zoom;
|
||||
return value >> to_underlying(zoom);
|
||||
}
|
||||
|
||||
/**
|
||||
* Short-hand to apply GUI zoom level.
|
||||
* @param value Pixel amount at #ZOOM_LVL_MIN (full zoom in).
|
||||
* @param value Pixel amount at #ZoomLevel::Min (full zoom in).
|
||||
* @return Pixel amount at #ZOOM_LVL_GUI (current interface size).
|
||||
*/
|
||||
inline int UnScaleGUI(int value)
|
||||
|
@ -86,7 +86,7 @@ inline int UnScaleGUI(int value)
|
|||
*/
|
||||
inline ZoomLevel ScaleZoomGUI(ZoomLevel value)
|
||||
{
|
||||
return std::clamp(value + (ZOOM_LVL_GUI - ZOOM_LVL_NORMAL), ZOOM_LVL_MIN, ZOOM_LVL_MAX);
|
||||
return std::clamp(value + (ZOOM_LVL_GUI - ZoomLevel::Normal), ZoomLevel::Min, ZoomLevel::Max);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -96,7 +96,7 @@ inline ZoomLevel ScaleZoomGUI(ZoomLevel value)
|
|||
*/
|
||||
inline ZoomLevel UnScaleZoomGUI(ZoomLevel value)
|
||||
{
|
||||
return std::clamp(value - (ZOOM_LVL_GUI - ZOOM_LVL_NORMAL), ZOOM_LVL_MIN, ZOOM_LVL_MAX);
|
||||
return std::clamp(value - (ZOOM_LVL_GUI - ZoomLevel::Normal), ZoomLevel::Min, ZoomLevel::Max);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -13,39 +13,38 @@
|
|||
#include "core/enum_type.hpp"
|
||||
|
||||
/** All zoom levels we know. */
|
||||
enum ZoomLevel : uint8_t {
|
||||
enum class ZoomLevel : uint8_t {
|
||||
/* Our possible zoom-levels */
|
||||
ZOOM_LVL_BEGIN = 0, ///< Begin for iteration.
|
||||
ZOOM_LVL_IN_4X = 0, ///< Zoomed 4 times in.
|
||||
ZOOM_LVL_IN_2X, ///< Zoomed 2 times in.
|
||||
ZOOM_LVL_NORMAL, ///< The normal zoom level.
|
||||
ZOOM_LVL_OUT_2X, ///< Zoomed 2 times out.
|
||||
ZOOM_LVL_OUT_4X, ///< Zoomed 4 times out.
|
||||
ZOOM_LVL_OUT_8X, ///< Zoomed 8 times out.
|
||||
ZOOM_LVL_END, ///< End for iteration.
|
||||
Begin = 0, ///< Begin for iteration.
|
||||
Min = Begin, ///< Minimum zoom level.
|
||||
In4x = Begin, ///< Zoomed 4 times in.
|
||||
In2x, ///< Zoomed 2 times in.
|
||||
Normal, ///< The normal zoom level.
|
||||
Out2x, ///< Zoomed 2 times out.
|
||||
Out4x, ///< Zoomed 4 times out.
|
||||
Out8x, ///< Zoomed 8 times out.
|
||||
Max = Out8x, ///< Maximum zoom level.
|
||||
End, ///< End for iteration.
|
||||
|
||||
/* Here we define in which zoom viewports are */
|
||||
ZOOM_LVL_VIEWPORT = ZOOM_LVL_NORMAL, ///< Default zoom level for viewports.
|
||||
ZOOM_LVL_NEWS = ZOOM_LVL_NORMAL, ///< Default zoom level for the news messages.
|
||||
ZOOM_LVL_INDUSTRY = ZOOM_LVL_OUT_2X, ///< Default zoom level for the industry view.
|
||||
ZOOM_LVL_TOWN = ZOOM_LVL_NORMAL, ///< Default zoom level for the town view.
|
||||
ZOOM_LVL_AIRCRAFT = ZOOM_LVL_NORMAL, ///< Default zoom level for the aircraft view.
|
||||
ZOOM_LVL_SHIP = ZOOM_LVL_NORMAL, ///< Default zoom level for the ship view.
|
||||
ZOOM_LVL_TRAIN = ZOOM_LVL_NORMAL, ///< Default zoom level for the train view.
|
||||
ZOOM_LVL_ROADVEH = ZOOM_LVL_NORMAL, ///< Default zoom level for the road vehicle view.
|
||||
ZOOM_LVL_WORLD_SCREENSHOT = ZOOM_LVL_NORMAL, ///< Default zoom level for the world screen shot.
|
||||
Viewport = Normal, ///< Default zoom level for viewports.
|
||||
News = Normal, ///< Default zoom level for the news messages.
|
||||
Industry = Out2x, ///< Default zoom level for the industry view.
|
||||
Town = Normal, ///< Default zoom level for the town view.
|
||||
Aircraft = Normal, ///< Default zoom level for the aircraft view.
|
||||
Ship = Normal, ///< Default zoom level for the ship view.
|
||||
Train = Normal, ///< Default zoom level for the train view.
|
||||
RoadVehicle = Normal, ///< Default zoom level for the road vehicle view.
|
||||
WorldScreenshot = Normal, ///< Default zoom level for the world screen shot.
|
||||
|
||||
ZOOM_LVL_DETAIL = ZOOM_LVL_OUT_2X, ///< All zoom levels below or equal to this will result in details on the screen, like road-work, ...
|
||||
ZOOM_LVL_TEXT_EFFECT = ZOOM_LVL_OUT_2X, ///< All zoom levels above this will not show text effects.
|
||||
|
||||
ZOOM_LVL_MIN = ZOOM_LVL_IN_4X, ///< Minimum zoom level.
|
||||
ZOOM_LVL_MAX = ZOOM_LVL_OUT_8X, ///< Maximum zoom level.
|
||||
Detail = Out2x, ///< All zoom levels below or equal to this will result in details on the screen, like road-work, ...
|
||||
TextEffect = Out2x, ///< All zoom levels above this will not show text effects.
|
||||
};
|
||||
DECLARE_INCREMENT_DECREMENT_OPERATORS(ZoomLevel)
|
||||
DECLARE_ENUM_AS_SEQUENTIAL(ZoomLevel)
|
||||
using ZoomLevels = EnumBitSet<ZoomLevel, uint8_t>;
|
||||
|
||||
static uint const ZOOM_BASE_SHIFT = static_cast<uint>(ZOOM_LVL_NORMAL);
|
||||
static const uint ZOOM_BASE_SHIFT = to_underlying(ZoomLevel::Normal);
|
||||
static uint const ZOOM_BASE = 1U << ZOOM_BASE_SHIFT;
|
||||
|
||||
extern int _gui_scale;
|
||||
|
|
Loading…
Reference in New Issue