src/transparency.h
author peter1138
Tue, 22 Jan 2008 07:27:06 +0000
changeset 8374 7a1b6c89cb89
parent 8123 ce31d2843a95
child 8527 a32b9ac056af
permissions -rw-r--r--
(svn r11940) -Codechange: Store short filename once per open file instead of once per sprite cache entry. Not all file types need this, but most of the time no sprite cache entry needed it either.
7849
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
     1
/* $Id$ */
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
     2
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
     3
/** @file transparency.h */
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
     4
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
     5
#ifndef TRANSPARENCY_H
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
     6
#define TRANSPARENCY_H
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
     7
8123
ce31d2843a95 (svn r11684) -Codechange: split gfx.h in a type and functional header.
rubidium
parents: 7932
diff changeset
     8
#include "gfx_func.h"
ce31d2843a95 (svn r11684) -Codechange: split gfx.h in a type and functional header.
rubidium
parents: 7932
diff changeset
     9
7849
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    10
/**
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    11
 * Transparency option bits: which position in _transparency_opt stands for which transparency.
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    12
 * If you change the order, change the order of the ShowTransparencyToolbar() stuff in transparency_gui.cpp too.
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    13
 * If you add or remove an option don't forget to change the transparency 'hot keys' in main_gui.cpp.
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    14
 * If you add an option and have more then 8, change the typedef TransparencyOptionBits and
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    15
 * the save stuff (e.g. SLE_UINT8 to SLE_UINT16) in settings.cpp .
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    16
 */
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    17
enum TransparencyOption {
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    18
	TO_SIGNS = 0,  ///< signs
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    19
	TO_TREES,      ///< trees
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    20
	TO_HOUSES,     ///< town buildings
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    21
	TO_INDUSTRIES, ///< industries
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    22
	TO_BUILDINGS,  ///< player buildings - depots, stations, HQ, ...
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    23
	TO_BRIDGES,    ///< bridges
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    24
	TO_STRUCTURES, ///< unmovable structures
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    25
	TO_LOADING,    ///< loading indicators
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    26
	TO_END,
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    27
};
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    28
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    29
typedef byte TransparencyOptionBits; ///< transparency option bits
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    30
extern TransparencyOptionBits _transparency_opt;
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    31
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    32
/**
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    33
 * Check if the transparency option bit is set
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    34
 * and if we aren't in the game menu (there's never transparency)
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    35
 *
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    36
 * @param to the structure which transparency option is ask for
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    37
 */
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    38
static inline bool IsTransparencySet(TransparencyOption to)
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    39
{
7928
63e18de69e50 (svn r11481) -Codechange: Rename the HASBIT function to fit with the naming style
skidd13
parents: 7849
diff changeset
    40
	return (HasBit(_transparency_opt, to) && _game_mode != GM_MENU);
7849
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    41
}
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    42
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    43
/**
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    44
 * Toggle the transparency option bit
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    45
 *
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    46
 * @param to the structure which transparency option is toggle
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    47
 */
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    48
static inline void ToggleTransparency(TransparencyOption to)
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    49
{
7932
6c3d71e8a129 (svn r11485) -Codechange: Remove the doubled function ToggleBitT and rename the remaining to fit with the naming style
skidd13
parents: 7928
diff changeset
    50
	ToggleBit(_transparency_opt, to);
7849
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    51
}
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    52
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    53
/** Toggle all transparency options (except signs) or restore the stored transparencies */
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    54
static inline void ResetRestoreAllTransparency()
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    55
{
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    56
	/* backup of the original transparencies or if all transparencies false toggle them to true */
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    57
	static TransparencyOptionBits trans_opt = ~0;
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    58
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    59
	if (_transparency_opt == 0) {
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    60
		/* no structure is transparent, so restore the old transparency if present otherwise set all true */
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    61
		_transparency_opt = trans_opt;
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    62
	} else {
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    63
		/* any structure is transparent, so store current transparency settings and reset it */
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    64
		trans_opt = _transparency_opt;
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    65
		_transparency_opt = 0;
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    66
	}
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    67
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    68
	MarkWholeScreenDirty();
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    69
}
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    70
0a1c0af2c96c (svn r11399) -Feature(ette): transparency settings can now be saved and thus remembered.
belugas
parents:
diff changeset
    71
#endif /* TRANSPARENCY_H */