OpenTTD Source  13.0
newgrf_text.h File Reference
#include "string_type.h"
#include "strings_type.h"
#include "core/smallvec_type.hpp"
#include "table/control_codes.h"
#include <utility>
#include <vector>
#include <string>

Go to the source code of this file.

Data Structures

struct  GRFText
 A GRF text with associated language ID. More...
 
struct  LanguageMap
 Mapping of language data between a NewGRF and OpenTTD. More...
 
struct  LanguageMap::Mapping
 Mapping between NewGRF and OpenTTD IDs. More...
 

Typedefs

typedef std::vector< GRFText > GRFTextList
 A GRF text with a list of translations.
 
typedef std::shared_ptr< GRFTextList > GRFTextWrapper
 Reference counted wrapper around a GRFText pointer.
 

Functions

StringID AddGRFString (uint32 grfid, uint16 stringid, byte langid, bool new_scheme, bool allow_newlines, const char *text_to_add, StringID def_string)
 Add the new read string into our structure.
 
StringID GetGRFStringID (uint32 grfid, StringID stringid)
 Returns the index for this stringid associated with its grfID.
 
const char * GetGRFStringFromGRFText (const GRFTextList &text_list)
 Get a C-string from a GRFText-list. More...
 
const char * GetGRFStringFromGRFText (const GRFTextWrapper &text)
 Get a C-string from a GRFText-list. More...
 
const char * GetGRFStringPtr (uint16 stringid)
 Get a C-string from a stringid set by a newgrf.
 
void CleanUpStrings ()
 House cleaning. More...
 
void SetCurrentGrfLangID (byte language_id)
 Equivalence Setter function between game and newgrf langID. More...
 
std::string TranslateTTDPatchCodes (uint32 grfid, uint8 language_id, bool allow_newlines, const std::string &str, StringControlCode byte80=SCC_NEWGRF_PRINT_WORD_STRING_ID)
 Translate TTDPatch string codes into something OpenTTD can handle (better). More...
 
void AddGRFTextToList (GRFTextList &list, byte langid, uint32 grfid, bool allow_newlines, const char *text_to_add)
 Add a string to a GRFText list. More...
 
void AddGRFTextToList (GRFTextWrapper &list, byte langid, uint32 grfid, bool allow_newlines, const char *text_to_add)
 Add a string to a GRFText list. More...
 
void AddGRFTextToList (GRFTextWrapper &list, const std::string &text_to_add)
 Add a GRFText to a GRFText list. More...
 
bool CheckGrfLangID (byte lang_id, byte grf_version)
 
void StartTextRefStackUsage (const struct GRFFile *grffile, byte numEntries, const uint32 *values=nullptr)
 
void StopTextRefStackUsage ()
 Stop using the TTDP compatible string code parsing.
 
void RewindTextRefStack ()
 
bool UsingNewGRFTextStack ()
 Check whether the NewGRF text stack is in use. More...
 
struct TextRefStack * CreateTextRefStackBackup ()
 Create a backup of the current NewGRF text stack. More...
 
void RestoreTextRefStackBackup (struct TextRefStack *backup)
 Restore a copy of the text stack to the used stack. More...
 
uint RemapNewGRFStringControlCode (uint scc, char *buf_start, char **buff, const char **str, int64 *argv, uint argv_size, bool modify_argv)
 FormatString for NewGRF specific "magic" string control codes. More...
 

Variables

static const WChar NFO_UTF8_IDENTIFIER = 0x00DE
 This character, the thorn ('รพ'), indicates a unicode string to NFO.
 

Detailed Description

Header of Action 04 "universal holder" structure and functions

Definition in file newgrf_text.h.

Function Documentation

◆ AddGRFTextToList() [1/3]

void AddGRFTextToList ( GRFTextList &  list,
byte  langid,
uint32  grfid,
bool  allow_newlines,
const char *  text_to_add 
)

Add a string to a GRFText list.

Parameters
listThe list where the text should be added to.
langidThe language of the new text.
grfidThe grfid where this string is defined.
allow_newlinesWhether newlines are allowed in this string.
text_to_addThe text to add to the list.
Note
All text-codes will be translated.

Definition at line 516 of file newgrf_text.cpp.

References AddGRFTextToList(), and TranslateTTDPatchCodes().

◆ AddGRFTextToList() [2/3]

void AddGRFTextToList ( GRFTextWrapper &  list,
byte  langid,
uint32  grfid,
bool  allow_newlines,
const char *  text_to_add 
)

Add a string to a GRFText list.

Parameters
listThe list where the text should be added to.
langidThe language of the new text.
grfidThe grfid where this string is defined.
allow_newlinesWhether newlines are allowed in this string.
text_to_addThe text to add to the list.
Note
All text-codes will be translated.

Definition at line 530 of file newgrf_text.cpp.

References AddGRFTextToList().

◆ AddGRFTextToList() [3/3]

void AddGRFTextToList ( GRFTextWrapper &  list,
const std::string &  text_to_add 
)

Add a GRFText to a GRFText list.

The text should not contain any text-codes. The text will be added as a 'default language'-text.

Parameters
listThe list where the text should be added to.
text_to_addThe text to add to the list.

Definition at line 542 of file newgrf_text.cpp.

References AddGRFTextToList().

◆ CleanUpStrings()

void CleanUpStrings ( )

House cleaning.

Remove all strings and reset the text counter.

Definition at line 695 of file newgrf_text.cpp.

Referenced by ResetNewGRFData().

◆ CreateTextRefStackBackup()

struct TextRefStack* CreateTextRefStackBackup ( )

Create a backup of the current NewGRF text stack.

Returns
A copy of the current text stack.

Definition at line 788 of file newgrf_text.cpp.

References _newgrf_textrefstack.

Referenced by FormatString().

◆ GetGRFStringFromGRFText() [1/2]

const char* GetGRFStringFromGRFText ( const GRFTextList &  text_list)

Get a C-string from a GRFText-list.

If there is a translation for the current language it is returned, otherwise the default translation is returned. If there is neither a default nor a translation for the current language nullptr is returned.

Parameters
text_listThe GRFTextList to get the string from.

Definition at line 620 of file newgrf_text.cpp.

References _currentLangID.

Referenced by NewGRFParametersWindow::DrawWidget(), GRFConfig::GetDescription(), GetGRFStringFromGRFText(), GRFConfig::GetName(), and GRFConfig::GetURL().

◆ GetGRFStringFromGRFText() [2/2]

const char* GetGRFStringFromGRFText ( const GRFTextWrapper &  text)

Get a C-string from a GRFText-list.

If there is a translation for the current language it is returned, otherwise the default translation is returned. If there is neither a default nor a translation for the current language nullptr is returned.

Parameters
textThe GRFTextList to get the string from.

Definition at line 645 of file newgrf_text.cpp.

References GetGRFStringFromGRFText().

◆ RemapNewGRFStringControlCode()

uint RemapNewGRFStringControlCode ( uint  scc,
char *  buf_start,
char **  buff,
const char **  str,
int64 *  argv,
uint  argv_size,
bool  modify_argv 
)

◆ RestoreTextRefStackBackup()

void RestoreTextRefStackBackup ( struct TextRefStack *  backup)

Restore a copy of the text stack to the used stack.

Parameters
backupThe copy to restore.

Definition at line 797 of file newgrf_text.cpp.

References _newgrf_textrefstack.

Referenced by FormatString().

◆ SetCurrentGrfLangID()

void SetCurrentGrfLangID ( byte  language_id)

Equivalence Setter function between game and newgrf langID.

This function will adjust _currentLangID as to what is the LangID of the current language set by the user. This function is called after the user changed language, from strings.cpp:ReadLanguagePack

Parameters
language_idiso code of current selection

Definition at line 672 of file newgrf_text.cpp.

References _currentLangID.

◆ TranslateTTDPatchCodes()

std::string TranslateTTDPatchCodes ( uint32  grfid,
uint8  language_id,
bool  allow_newlines,
const std::string &  str,
StringControlCode  byte80 
)

Translate TTDPatch string codes into something OpenTTD can handle (better).

Parameters
grfidThe (NewGRF) ID associated with this string
language_idThe (NewGRF) language ID associated with this string.
allow_newlinesWhether newlines are allowed in the string or not.
strThe string to translate.
byte80The control code to use as replacement for the 0x80-value.
Returns
The translated string.

Definition at line 241 of file newgrf_text.cpp.

References NFO_UTF8_IDENTIFIER, Utf8Decode(), and Utf8EncodedCharLen().

Referenced by AddGRFTextToList().

◆ UsingNewGRFTextStack()

bool UsingNewGRFTextStack ( )

Check whether the NewGRF text stack is in use.

Returns
True iff the NewGRF text stack is used.

Definition at line 779 of file newgrf_text.cpp.

References _newgrf_textrefstack.

Referenced by FormatString().