| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- // ================================================================================
- // == This file is a part of Turbo Badger. (C) 2011-2014, Emil Segerås ==
- // == See tb_core.h for more information. ==
- // ================================================================================
- #ifndef TB_FONT_DESC_H
- #define TB_FONT_DESC_H
- #include "tb_types.h"
- #include "tb_id.h"
- namespace tb {
- /** TBFontDescription describes a font.
- By default when nothing is set, the font is unspecified and means it should be inherited
- from a parent widget that specifies a font, or use the default font if no parent does. */
- class TBFontDescription
- {
- public:
- /** Set the font ID of the font to use.
- This ID maps to the font names in TBFontInfo, which is managed from
- TBFontManager::AddFontInfo, TBFontManager::GetFontInfo.
- Example:
- If a font was added to the font manager with the name "Vera", you can
- do font_description.SetID(TBIDC("Vera")).
- */
- void SetID(const TBID &id) { m_id = id; }
- /** Get the TBID for the font name (See SetID). */
- TBID GetID() const { return m_id; }
- /** Get the TBID for the TBFontFace that matches this font description.
- This is a ID combining both the font file, and variation (such as size and style),
- and should be used to identify a certain font face.
- If this is 0, the font description is unspecified. For a widget, that means that the font
- should be inherited from the parent widget. */
- TBID GetFontFaceID() const { return m_id + m_packed_init; }
- void SetSize(uint32 size) { m_packed.size = MIN(size, 0x8000u); }
- uint32 GetSize() const { return m_packed.size; }
- //not connected to anything yet
- //void SetBold(bool bold) { m_packed.bold = bold; }
- //bool GetBold() const { return m_packed.bold; }
- //not connected to anything yet
- //void SetItalic(bool italic) { m_packed.italic = italic; }
- //bool GetItalic() const { return m_packed.italic; }
- TBFontDescription() : m_packed_init(0) {}
- TBFontDescription(const TBFontDescription &src) { m_packed_init = src.m_packed_init; m_id = src.m_id; }
- const TBFontDescription& operator = (const TBFontDescription &src) { m_packed_init = src.m_packed_init; m_id = src.m_id; return *this; }
- bool operator == (const TBFontDescription &fd) const { return m_packed_init == fd.m_packed_init && m_id == fd.m_id; }
- bool operator != (const TBFontDescription &fd) const { return !(*this == fd); }
- private:
- TBID m_id;
- union {
- struct {
- uint32 size : 15;
- uint32 italic : 1;
- uint32 bold : 1;
- } m_packed;
- uint32 m_packed_init;
- };
- };
- }; // namespace tb
- #endif // TB_FONT_DESC_H
|