Files @ r7939:523d421f9d0c
Branch filter:

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

egladil
(svn r11492) -Codechange: [OSX] Split the cocoa video driver into several files. The reason for this is that the fullscreen and windowed mode api are separate from each other in OS X and thus the driver actual is two drivers in one. This split is to make the code more readable and to prepare for replacing the Quickdraw windowed mode code which uses apis deprecated as of OS X 10.5 (and maybe earlier).
/* $Id$ */

/** @file transparency.h */

#ifndef TRANSPARENCY_H
#define TRANSPARENCY_H

/**
 * Transparency option bits: which position in _transparency_opt stands for which transparency.
 * If you change the order, change the order of the ShowTransparencyToolbar() stuff in transparency_gui.cpp too.
 * If you add or remove an option don't forget to change the transparency 'hot keys' in main_gui.cpp.
 * If you add an option and have more then 8, change the typedef TransparencyOptionBits and
 * the save stuff (e.g. SLE_UINT8 to SLE_UINT16) in settings.cpp .
 */
enum TransparencyOption {
	TO_SIGNS = 0,  ///< signs
	TO_TREES,      ///< trees
	TO_HOUSES,     ///< town buildings
	TO_INDUSTRIES, ///< industries
	TO_BUILDINGS,  ///< player buildings - depots, stations, HQ, ...
	TO_BRIDGES,    ///< bridges
	TO_STRUCTURES, ///< unmovable structures
	TO_LOADING,    ///< loading indicators
	TO_END,
};

typedef byte TransparencyOptionBits; ///< transparency option bits
extern TransparencyOptionBits _transparency_opt;

/**
 * Check if the transparency option bit is set
 * and if we aren't in the game menu (there's never transparency)
 *
 * @param to the structure which transparency option is ask for
 */
static inline bool IsTransparencySet(TransparencyOption to)
{
	return (HasBit(_transparency_opt, to) && _game_mode != GM_MENU);
}

/**
 * Toggle the transparency option bit
 *
 * @param to the structure which transparency option is toggle
 */
static inline void ToggleTransparency(TransparencyOption to)
{
	ToggleBit(_transparency_opt, to);
}

/** Toggle all transparency options (except signs) or restore the stored transparencies */
static inline void ResetRestoreAllTransparency()
{
	/* backup of the original transparencies or if all transparencies false toggle them to true */
	static TransparencyOptionBits trans_opt = ~0;

	if (_transparency_opt == 0) {
		/* no structure is transparent, so restore the old transparency if present otherwise set all true */
		_transparency_opt = trans_opt;
	} else {
		/* any structure is transparent, so store current transparency settings and reset it */
		trans_opt = _transparency_opt;
		_transparency_opt = 0;
	}

	MarkWholeScreenDirty();
}

#endif /* TRANSPARENCY_H */