rubidium@9127: /* $Id$ */ rubidium@9127: rubidium@9127: /** @file tilehighlight_type.h Types related to highlighting tiles. */ rubidium@9127: rubidium@9127: #ifndef TILEHIGHLIGHT_TYPE_H rubidium@9127: #define TILEHIGHLIGHT_TYPE_H rubidium@9127: rubidium@9127: #include "core/geometry_type.hpp" rubidium@9127: #include "zoom_type.h" rubidium@9127: #include "window_type.h" rubidium@9127: #include "tile_type.h" rubidium@9127: rubidium@9127: /** Viewport highlight mode (for highlighting tiles below cursor) */ rubidium@9127: enum ViewportHighlightMode { rubidium@9127: VHM_NONE = 0, ///< default rubidium@9127: VHM_RECT = 1, ///< rectangle (stations, depots, ...) rubidium@9127: VHM_POINT = 2, ///< point (lower land, raise land, level land, ...) rubidium@9127: VHM_SPECIAL = 3, ///< special mode used for highlighting while dragging (and for tunnels/docks) rubidium@9127: VHM_DRAG = 4, ///< dragging items in the depot windows rubidium@9127: VHM_RAIL = 5, ///< rail pieces rubidium@9127: }; rubidium@9127: rubidium@9127: /** Highlighting draw styles */ rubidium@9127: enum HighLightStyle { rubidium@9127: HT_NONE = 0x00, rubidium@9127: HT_RECT = 0x80, rubidium@9127: HT_POINT = 0x40, rubidium@9127: HT_LINE = 0x20, ///< used for autorail highlighting (longer streches) rubidium@9127: ///< (uses lower bits to indicate direction) rubidium@9127: HT_RAIL = 0x10, ///< autorail (one piece) rubidium@9127: ///< (uses lower bits to indicate direction) rubidium@9127: HT_DRAG_MASK = 0xF0, ///< masks the drag-type rubidium@9127: rubidium@9127: /* lower bits (used with HT_LINE and HT_RAIL): rubidium@9127: * (see ASCII art in autorail.h for a visual interpretation) */ rubidium@9127: HT_DIR_X = 0, ///< X direction rubidium@9127: HT_DIR_Y = 1, ///< Y direction rubidium@9127: HT_DIR_HU = 2, ///< horizontal upper rubidium@9127: HT_DIR_HL = 3, ///< horizontal lower rubidium@9127: HT_DIR_VL = 4, ///< vertical left rubidium@9127: HT_DIR_VR = 5, ///< vertical right rubidium@9127: HT_DIR_MASK = 0x7 ///< masks the drag-direction rubidium@9127: }; rubidium@9127: DECLARE_ENUM_AS_BIT_SET(HighLightStyle); rubidium@9127: rubidium@9127: rubidium@9127: struct TileHighlightData { rubidium@9127: Point size; rubidium@9127: Point outersize; rubidium@9127: Point pos; rubidium@9127: Point offs; rubidium@9127: rubidium@9127: Point new_pos; rubidium@9127: Point new_size; rubidium@9127: Point new_outersize; rubidium@9127: rubidium@9127: Point selend, selstart; rubidium@9127: rubidium@9127: byte dirty; rubidium@9127: byte sizelimit; rubidium@9127: rubidium@9127: byte drawstyle; // lower bits 0-3 are reserved for detailed highlight information information rubidium@9127: byte new_drawstyle; // only used in UpdateTileSelection() to as a buffer to compare if there was a change between old and new rubidium@9127: byte next_drawstyle; // queued, but not yet drawn style rubidium@9127: rubidium@9127: ViewportHighlightMode place_mode; rubidium@9127: bool make_square_red; rubidium@9127: WindowClass window_class; rubidium@9127: WindowNumber window_number; rubidium@9127: rubidium@9127: ViewportPlaceMethod select_method; rubidium@9147: ViewportDragDropSelectionProcess select_proc; rubidium@9127: rubidium@9127: TileIndex redsq; rubidium@9127: }; rubidium@9127: rubidium@9127: #endif /* TILEHIGHLIGHT_TYPE_H */