From b38aa006143abd4f10b7ec32576f5ce2867fa975 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Sun, 19 May 2024 21:23:37 +0200 Subject: Basic support for colours in binary STL. --- src/stl_binary_reader.cc | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) (limited to 'src/stl_binary_reader.cc') diff --git a/src/stl_binary_reader.cc b/src/stl_binary_reader.cc index 35091f0..7b38065 100644 --- a/src/stl_binary_reader.cc +++ b/src/stl_binary_reader.cc @@ -248,14 +248,46 @@ void STLBinaryReader::read (shared_ptr reader) break; } - if (c >= 0x80 && c <= 0x83) { - /* Italic or underline control code */ + if (c <= 0x07 || (c >= 0x80 && c <= 0x83)) { + /* Colour, italic or underline control code */ sub.text = utf_to_utf (iso6937_to_utf16 (text.c_str())); _subs.push_back (sub); text.clear (); } switch (c) { + case 0x0: + /* Black */ + sub.colour = Colour(0, 0, 0); + break; + case 0x1: + /* Red */ + sub.colour = Colour(1, 0, 0); + break; + case 0x2: + /* Lime */ + sub.colour = Colour(0, 1, 0); + break; + case 0x3: + /* Yellow */ + sub.colour = Colour(1, 1, 0); + break; + case 0x4: + /* Blue */ + sub.colour = Colour(0, 0, 1); + break; + case 0x5: + /* Magenta */ + sub.colour = Colour(1, 0, 1); + break; + case 0x6: + /* Cyan */ + sub.colour = Colour(0, 1, 1); + break; + case 0x7: + /* White */ + sub.colour = Colour(1, 1, 1); + break; case 0x80: italic = true; break; -- cgit v1.2.3