Files
@ r24860:fb2788d47d86
Branch filter:
Location: cpp/openttd-patchpack/source/src/currency.h - annotation
r24860:fb2788d47d86
4.3 KiB
text/x-c
Codechange: [OSX] Only keep a total dirty rect for drawing.
When drawing an 8bpp screen buffer, palette resolving was done for each
dirty rectangle. In areas with high activity, this would mean a pixel might
have been resolved multiple times. Also, if too many individual updates
were queued, the whole screen would be refreshed, even if unnecessary.
All other drivers only keep one overall dirty rect, so do it here as well.
When drawing an 8bpp screen buffer, palette resolving was done for each
dirty rectangle. In areas with high activity, this would mean a pixel might
have been resolved multiple times. Also, if too many individual updates
were queued, the whole screen would be refreshed, even if unnecessary.
All other drivers only keep one overall dirty rect, so do it here as well.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 | r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r12768:980ae0491352 r9111:983de9c5a848 r6123:049e9624d068 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r8140:9424f012f6a2 r24748:92d09bdc2347 r8264:d493cb51fe8a r8140:9424f012f6a2 r18845:66bf168f1100 r18845:66bf168f1100 r20104:fbf35626b02a r20104:fbf35626b02a r20105:48cafa26920c r20105:48cafa26920c r20105:48cafa26920c r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20104:fbf35626b02a r20108:f9a517049d66 r20108:f9a517049d66 r22979:c46ed593209d r23136:e0ce56841050 r23751:b428e92e20c4 r23751:b428e92e20c4 r23751:b428e92e20c4 r24187:093fac754f65 r24829:e925581ffd6a r20104:fbf35626b02a r20104:fbf35626b02a r5475:3f5cd13d1b63 r18845:66bf168f1100 r6248:b940b09d7ab8 r5475:3f5cd13d1b63 r11749:b89fea00a2de r18845:66bf168f1100 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r18845:66bf168f1100 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r18845:66bf168f1100 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r24748:92d09bdc2347 r24748:92d09bdc2347 r24748:92d09bdc2347 r24748:92d09bdc2347 r24748:92d09bdc2347 r24748:92d09bdc2347 r24748:92d09bdc2347 r24748:92d09bdc2347 r24748:92d09bdc2347 r6248:b940b09d7ab8 r5475:3f5cd13d1b63 r20104:fbf35626b02a r5475:3f5cd13d1b63 r11363:6906c490a00e r20104:fbf35626b02a r16949:23f78f8218cd r5475:3f5cd13d1b63 r20107:29a31d86594c r6247:96e840dbefcc r6379:6ae45e3edf80 r10647:62911ec68e89 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 r5475:3f5cd13d1b63 | /*
* 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 currency.h Functions to handle different currencies. */
#ifndef CURRENCY_H
#define CURRENCY_H
#include "date_type.h"
#include "string_func.h"
#include "strings_type.h"
static const int CF_NOEURO = 0; ///< Currency never switches to the Euro (as far as known).
static const int CF_ISEURO = 1; ///< Currency _is_ the Euro.
/**
* This enum gives the currencies a unique id which must be maintained for
* savegame compatibility and in order to refer to them quickly, especially
* for referencing the custom one.
*/
enum Currencies {
CURRENCY_GBP, ///< British Pound
CURRENCY_USD, ///< US Dollar
CURRENCY_EUR, ///< Euro
CURRENCY_JPY, ///< Japanese Yen
CURRENCY_ATS, ///< Austrian Schilling
CURRENCY_BEF, ///< Belgian Franc
CURRENCY_CHF, ///< Swiss Franc
CURRENCY_CZK, ///< Czech Koruna
CURRENCY_DEM, ///< Deutsche Mark
CURRENCY_DKK, ///< Danish Krona
CURRENCY_ESP, ///< Spanish Peseta
CURRENCY_FIM, ///< Finish Markka
CURRENCY_FRF, ///< French Franc
CURRENCY_GRD, ///< Greek Drachma
CURRENCY_HUF, ///< Hungarian Forint
CURRENCY_ISK, ///< Icelandic Krona
CURRENCY_ITL, ///< Italian Lira
CURRENCY_NLG, ///< Dutch Gulden
CURRENCY_NOK, ///< Norwegian Krone
CURRENCY_PLN, ///< Polish Zloty
CURRENCY_RON, ///< Romenian Leu
CURRENCY_RUR, ///< Russian Rouble
CURRENCY_SIT, ///< Slovenian Tolar
CURRENCY_SEK, ///< Swedish Krona
CURRENCY_YTL, ///< Turkish Lira
CURRENCY_SKK, ///< Slovak Kornuna
CURRENCY_BRL, ///< Brazilian Real
CURRENCY_EEK, ///< Estonian Krooni
CURRENCY_LTL, ///< Lithuanian Litas
CURRENCY_KRW, ///< South Korean Won
CURRENCY_ZAR, ///< South African Rand
CURRENCY_CUSTOM, ///< Custom currency
CURRENCY_GEL, ///< Georgian Lari
CURRENCY_IRR, ///< Iranian Rial
CURRENCY_RUB, ///< New Russian Ruble
CURRENCY_MXN, ///< Mexican Peso
CURRENCY_NTD, ///< New Taiwan Dollar
CURRENCY_CNY, ///< Chinese Renminbi
CURRENCY_HKD, ///< Hong Kong Dollar
CURRENCY_INR, ///< Indian Rupee
CURRENCY_IDR, ///< Indonesian Rupiah
CURRENCY_END, ///< always the last item
};
/** Specification of a currency. */
struct CurrencySpec {
uint16 rate;
char separator[8];
Year to_euro; ///< %Year of switching to the Euro. May also be #CF_NOEURO or #CF_ISEURO.
char prefix[16];
char suffix[16];
/**
* The currency symbol is represented by two possible values, prefix and suffix
* Usage of one or the other is determined by #symbol_pos.
* 0 = prefix
* 1 = suffix
* 2 = both : Special case only for custom currency.
* It is not a spec from Newgrf,
* rather a way to let users do what they want with custom currency
*/
byte symbol_pos;
StringID name;
CurrencySpec() = default;
CurrencySpec(uint16 rate, const char *separator, Year to_euro, const char *prefix, const char *suffix, byte symbol_pos, StringID name) : rate(rate), to_euro(to_euro), symbol_pos(symbol_pos), name(name)
{
strecpy(this->separator, separator, lastof(this->separator));
strecpy(this->prefix, prefix, lastof(this->prefix));
strecpy(this->suffix, suffix, lastof(this->suffix));
}
};
extern CurrencySpec _currency_specs[CURRENCY_END];
/* XXX small hack, but makes the rest of the code a bit nicer to read */
#define _custom_currency (_currency_specs[CURRENCY_CUSTOM])
#define _currency ((const CurrencySpec*)&_currency_specs[GetGameSettings().locale.currency])
uint64 GetMaskOfAllowedCurrencies();
void CheckSwitchToEuro();
void ResetCurrencies(bool preserve_custom = true);
StringID *BuildCurrencyDropdown();
byte GetNewgrfCurrencyIdConverted(byte grfcurr_id);
#endif /* CURRENCY_H */
|