MGL::XColor#

概要#

MGL::XColorはxterm-256カラーに準拠して定義された色を表現するための型です。この型は256パターンの色を1バイトで表現するため、他の色表現よりも少ないサイズで色を扱えます。

MGL::XColorMGL::ColorまたはMGL::Color32のコンストラクタへと指定可能です。対応するカラーコードを直接取得したい場合はGetXColorCodeを使用してください。

宣言#

namespace MGL
{
    enum class XColor : uint8_t;
    {
        // 下記参照
    };
}

定義内容#

名前

対応するRGBAカラーコード

Black

0

0x000000FF

Maroon

1

0x800000FF

Green

2

0x008000FF

Olive

3

0x808000FF

Navy

4

0x000080FF

Purple

5

0x800080FF

Teal

6

0x008080FF

Silver

7

0xC0C0C0FF

Gray

8

0x808080FF

Red

9

0xFF0000FF

Lime

10

0x00FF00FF

Yellow

11

0xFFFF00FF

Blue

12

0x0000FFFF

Magenta

13

0xFF00FFFF

Cyan

14

0x00FFFFFF

White

15

0xFFFFFFFF

Crgb

16から231

※下記のCrgbについてを参照

Gray0

232

0x080808FF

Gray1

233

0x121212FF

Gray2

234

0x1C1C1CFF

Gray3

235

0x262626FF

Gray4

236

0x303030FF

Gray5

237

0x3A3A3AFF

Gray6

238

0x444444FF

Gray7

239

0x4E4E4EFF

Gray8

240

0x585858FF

Gray9

241

0x626262FF

Gray10

242

0x6C6C6CFF

Gray11

243

0x767676FF

Gray12

244

0x808080FF

Gray13

245

0x8A8A8AFF

Gray14

246

0x949494FF

Gray15

247

0x9E9E9EFF

Gray16

248

0xA8A8A8FF

Gray17

249

0xB2B2B2FF

Gray18

250

0xBCBCBCFF

Gray19

251

0xC6C6C6FF

Gray20

252

0xD0D0D0FF

Gray21

253

0xDADADAFF

Gray22

254

0xE4E4E4FF

Gray23

255

0xEEEEEEFF

※Crgbについて

16から231までの定義は、rgbのそれぞれの要素を0から5で表現したC000からC555までの名前で定義されています。0から5までの各要素の8ビットコードは順に0x00 , 0x5F , 0x87 , 0xAF , 0xD7 , 0xFFです。

例: XColor::C312 == Color32(0xAF5F87FF)

カラーテーブル#

../_images/xcolor_table.svg

関数・定数式#

種類

名前

内容

バージョン

定数式

GetXColorCode

XColorから32ビットRGBA値のカラーコードを取得

1.1.2+

関数

GetXColor

文字列のハッシュ値からXColorを取得

1.1.5+

バージョン情報#

MGL 1.1.2から利用可能


GetXColorCode#

XColorから32ビットRGBA値のカラーコードを取得

宣言#

namespace MGL
{
    constexpr uint32_t GetXColorCode(XColor xcolor) noexcept;
}

引数#

XColor xcolor

XColorの定数

戻り値#

引数に対応した32ビットRGBAカラーコード

説明#

XColor型の値から32ビットRGBAカラーコードを取得するための定数式です。

利用例#

// MGL::XColor::Limeのカラーコードを取得
auto colorCode = MGL::GetXColorCode(MGL::XColor::Lime);
MGL_TRACE("colorCode = 0x%08X", colorCode);
実行結果
colorCode = 0x00FF00FF

バージョン情報#

MGL 1.1.2から利用可能


GetXColor#

文字列のハッシュ値からXColorを取得

宣言#

namespace MGL
{
    std::optional<XColor> GetXColor(uint32_t hash) noexcept;
}

引数#

uint32_t hash

文字列のハッシュ値

戻り値#

std::optional<XColor>

引数に対応したXColor

説明#

XColorの名前の文字列をハッシュ化した値から、対応するXColorを取得します。

引数のには定義名を小文字で表した文字列からMGL::Hash::FNV1aで生成したハッシュ値を指定します。戻り値はオプショナルであり、対応したXColorが見つからず取得に失敗した場合は無効なオブジェクトを返します。

利用例#

// 文字列"lime"のハッシュ値からXColorを取得
if (auto color = MGL::GetXColor(MGL::Hash::FNV1a("lime")); color)
{
    MGL_TRACE("XColor number = %d", uint8_t(color.value()));
}
実行結果
XColor number = 10

バージョン情報#

MGL 1.1.5から利用可能