Files @ r22288:83def34cf056
Branch filter:

Location: cpp/openttd-patchpack/source/src/viewport_func.h

translators
(svn r27478) -Update from Eints:
german: 8 changes by translators, 2 changes by frosch
arabic (egypt): 36 changes by translators
afrikaans: 4 changes by translators
hungarian: 1 change by translators
english (us): 1 change by translators
frisian: 2 changes by translators
norwegian (bokmal): 5 changes by translators
norwegian (nynorsk): 1 change by translators
lithuanian: 5 changes by translators
slovenian: 4 changes by translators
russian: 1 change by translators
ukrainian: 2 changes by translators
welsh: 3 changes by translators
french: 5 changes by glx
english (au): 1 change by translators
irish: 1 change by translators
tamil: 1 change by translators
belarusian: 2 changes by translators
bulgarian: 1 change by translators
italian: 1 change by translators
scottish gaelic: 1 change by translators
romanian: 2 changes by translators
urdu: 5 changes by translators
turkish: 11 changes by translators
portuguese: 1 change by translators
latvian: 2 changes by translators
esperanto: 1 change by translators
dutch: 3 changes by translators
serbian: 1 change by translators
spanish: 1 change by translators
czech: 4 changes by translators
indonesian: 2 changes by translators
latin: 1 change by translators
catalan: 2 changes by translators
hebrew: 9 changes by translators
greek: 5 changes by translators
polish: 1 change by translators
chinese (traditional): 1 change by translators
slovak: 1 change by translators
icelandic: 2 changes by translators
portuguese (brazilian): 4 changes by translators
danish: 2 changes by translators
vietnamese: 6 changes by translators
malay: 2 changes by translators
galician: 4 changes by translators
croatian: 1 change by translators
korean: 4 changes by translators
finnish: 1 change by translators
chinese (simplified): 1 change by translators
estonian: 3 changes by translators
persian: 4 changes by translators
thai: 6 changes by translators
swedish: 1 change by translators
luxembourgish: 3 changes by translators
japanese: 5 changes by translators
basque: 2 changes by translators
/* $Id$ */

/*
 * This file is part of OpenTTD.
 * OpenTTD is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, version 2.
 * OpenTTD is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 * See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with OpenTTD. If not, see <http://www.gnu.org/licenses/>.
 */

/** @file viewport_func.h Functions related to (drawing on) viewports. */

#ifndef VIEWPORT_FUNC_H
#define VIEWPORT_FUNC_H

#include "gfx_type.h"
#include "viewport_type.h"
#include "window_type.h"
#include "tile_type.h"
#include "station_type.h"

static const int TILE_HEIGHT_STEP = 50; ///< One Z unit tile height difference is displayed as 50m.

void SetSelectionRed(bool);

void DeleteWindowViewport(Window *w);
void InitializeWindowViewport(Window *w, int x, int y, int width, int height, uint32 follow_flags, ZoomLevel zoom);
ViewPort *IsPtInWindowViewport(const Window *w, int x, int y);
Point TranslateXYToTileCoord(const ViewPort *vp, int x, int y, bool clamp_to_map = true);
Point GetTileBelowCursor();
void UpdateViewportPosition(Window *w);

void MarkAllViewportsDirty(int left, int top, int right, int bottom);

bool DoZoomInOutWindow(ZoomStateChange how, Window *w);
void ZoomInOrOutToCursorWindow(bool in, Window * w);
Point GetTileZoomCenterWindow(bool in, Window * w);
void HandleZoomMessage(Window *w, const ViewPort *vp, byte widget_zoom_in, byte widget_zoom_out);

/**
 * Zoom a viewport as far as possible in the given direction.
 * @param how Zooming direction.
 * @param w   Window owning the viewport.
 * @pre \a how should not be #ZOOM_NONE.
 */
static inline void MaxZoomInOut(ZoomStateChange how, Window *w)
{
	while (DoZoomInOutWindow(how, w)) {};
}

void OffsetGroundSprite(int x, int y);

void DrawGroundSprite(SpriteID image, PaletteID pal, const SubSprite *sub = NULL, int extra_offs_x = 0, int extra_offs_y = 0);
void DrawGroundSpriteAt(SpriteID image, PaletteID pal, int32 x, int32 y, int z, const SubSprite *sub = NULL, int extra_offs_x = 0, int extra_offs_y = 0);
void AddSortableSpriteToDraw(SpriteID image, PaletteID pal, int x, int y, int w, int h, int dz, int z, bool transparent = false, int bb_offset_x = 0, int bb_offset_y = 0, int bb_offset_z = 0, const SubSprite *sub = NULL);
void AddChildSpriteScreen(SpriteID image, PaletteID pal, int x, int y, bool transparent = false, const SubSprite *sub = NULL, bool scale = true);
void ViewportAddString(const DrawPixelInfo *dpi, ZoomLevel small_from, const ViewportSign *sign, StringID string_normal, StringID string_small, StringID string_small_shadow, uint64 params_1, uint64 params_2 = 0, Colours colour = INVALID_COLOUR);


void StartSpriteCombine();
void EndSpriteCombine();

bool HandleViewportClicked(const ViewPort *vp, int x, int y);
void SetRedErrorSquare(TileIndex tile);
void SetTileSelectSize(int w, int h);
void SetTileSelectBigSize(int ox, int oy, int sx, int sy);

void ViewportDoDraw(const ViewPort *vp, int left, int top, int right, int bottom);

bool ScrollWindowToTile(TileIndex tile, Window *w, bool instant = false);
bool ScrollWindowTo(int x, int y, int z, Window *w, bool instant = false);

void RebuildViewportOverlay(Window *w);

bool ScrollMainWindowToTile(TileIndex tile, bool instant = false);
bool ScrollMainWindowTo(int x, int y, int z = -1, bool instant = false);

void UpdateAllVirtCoords();

extern Point _tile_fract_coords;

void MarkTileDirtyByTile(TileIndex tile, int bridge_level_offset = 0);

void MarkTileDirtyByTileOutsideMap(int x, int y);

Point GetViewportStationMiddle(const ViewPort *vp, const Station *st);

#endif /* VIEWPORT_FUNC_H */