Files
haiku-beta6/src/apps/stylededit/CharacterSet.h
T
shatty e6903129a7 first start encodings menu up for save as
git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3852 a95241bf-73f2-0310-859d-f6bbb57e9c96
2003-07-05 00:51:07 +00:00

80 lines
2.6 KiB
C++

#ifndef CHARACTER_SET_H
#define CHARACTER_SET_H
#include <SupportDefs.h>
/*! CharacterSet holds a variety of useful information about
each character set. This information has been derived from the
IANA standards organization. Since IANA provides several names
for some encodings, this object also provides for aliases.
@see http://www.iana.org/assignments/character-sets
*/
class CharacterSetRoster;
class CharacterSet {
public:
//! returns an id suitable for use in BFont::SetEncoding
uint32 GetFontID() const { return id + 1; }
//! returns an id suitable for use in convert_to_utf8/convert_from_utf8
uint32 GetConversionID() const { return id; }
//! returns an id for use in MIBs to identify coded character sets
uint32 GetMIBenum() const { return MIBenum; }
//! returns the standard IANA name for this character set
const char * GetName() const { return iana_name; }
//! returns a user interface friendly name for this character set
const char * GetPrintName() const { return print_name; }
//! returns the preferred MIME name for this character set
//! or null if none exists
const char * GetMIMEName() const { return mime_name; }
//! returns an array of aliases for this character set
//! or null if none exist
const char * const * GetAliases(int32 & out_size) const {
out_size = aliases_count;
return aliases;
}
private:
uint32 id; //! id from convert_to_utf8/convert_from_utf8
uint32 MIBenum; //! for use in MIBs to identify coded character sets
char print_name[64]; //! user interface friendly name
char iana_name[64]; //! standard IANA name
char *mime_name; //! the preferred mime name
char **aliases; //! aliases for this character set
uint32 aliases_count; //! how many aliases are available
uint32 padding[16];
private:
CharacterSet();
friend class CharacterSetRoster;
};
/*! the CharacterSetRoster is used to obtain a CharacterSet object
for a given encoding.
*/
class CharacterSetRoster {
private:
CharacterSetRoster();
public:
static CharacterSetRoster * Roster(status_t * outError = NULL);
static CharacterSetRoster * CurrentRoster(void);
const CharacterSet * FindCharacterSetByFontID(uint32 id);
const CharacterSet * FindCharacterSetByConversionID(uint32 id);
const CharacterSet * FindCharacterSetByMIBenum(uint32 MIBenum);
const CharacterSet * FindCharacterSetByPrintName(char * name);
const CharacterSet * FindCharacterSetByName(char * name);
uint32 GetCharacterSetCount() const { return character_sets_count; }
private:
CharacterSet ** character_sets;
uint32 character_sets_count;
};
#endif CHARACTER_SET_H