From 7b24fb0b01b5b32d1e22e83139a9bfbd1bd5e02b Mon Sep 17 00:00:00 2001 From: Eugene Sandulenko Date: Mon, 30 Jan 2017 10:10:22 +0100 Subject: GRAPHICS: Initial work on rich text formatting in MacText --- graphics/macgui/mactext.cpp | 18 +++++++++++++++++- graphics/macgui/mactext.h | 42 ++++++++++++++++++++++++++++++++++++++++-- 2 files changed, 57 insertions(+), 3 deletions(-) (limited to 'graphics') diff --git a/graphics/macgui/mactext.cpp b/graphics/macgui/mactext.cpp index ae233d5c9e..8d83c19ceb 100644 --- a/graphics/macgui/mactext.cpp +++ b/graphics/macgui/mactext.cpp @@ -19,12 +19,25 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ +#include "graphics/macgui/macfontmanager.h" #include "graphics/macgui/mactext.h" +#include "graphics/macgui/macwindowmanager.h" #include "graphics/font.h" namespace Graphics { -MacText::MacText(Common::String s, MacWindowManager *wm, const Graphics::Font *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment) { +const Font *MacFontRun::getFont() { + if (font) + return font; + + MacFont macFont = MacFont(fontId, fontSize, textSlant); + + font = wm->_fontMan->getFont(macFont); + + return font; +} + +MacText::MacText(Common::String s, MacWindowManager *wm, const Font *font, int fgcolor, int bgcolor, int maxWidth, TextAlign textAlignment) { _str = s; _wm = wm; _font = font; @@ -40,6 +53,9 @@ MacText::MacText(Common::String s, MacWindowManager *wm, const Graphics::Font *f splitString(_str); _fullRefresh = true; + + _defaultFormatting.font = font; + _defaultFormatting.wm = wm; } void MacText::splitString(Common::String &str) { diff --git a/graphics/macgui/mactext.h b/graphics/macgui/mactext.h index 0cef3fbd65..241ad65314 100644 --- a/graphics/macgui/mactext.h +++ b/graphics/macgui/mactext.h @@ -30,7 +30,6 @@ namespace Graphics { class MacWindowManager; -class MacFont; struct MacFontRun { uint16 fontId; @@ -41,7 +40,43 @@ struct MacFontRun { uint16 palinfo2; uint16 palinfo3; - MacFont *font; + const Font *font; + MacWindowManager *wm; + + MacFontRun() { + wm = nullptr; + fontId = textSlant = unk3f = fontSize; + palinfo1 = palinfo2 = palinfo3; + font = nullptr; + } + + MacFontRun(MacWindowManager *wm_, uint16 fontId_, byte textSlant_, byte unk3f_, uint16 fontSize_, + uint16 palinfo1_, uint16 palinfo2_, uint16 palinfo3_) { + wm = wm_; + fontId = fontId_; + textSlant = textSlant_; + unk3f = unk3f_; + fontSize = fontSize_; + palinfo1 = palinfo1_; + palinfo2 = palinfo2_; + palinfo3 = palinfo3_; + font = nullptr; + } + + void setValues(MacWindowManager *wm_, uint16 fontId_, byte textSlant_, byte unk3f_, uint16 fontSize_, + uint16 palinfo1_, uint16 palinfo2_, uint16 palinfo3_, const Font *font_) { + wm = wm_; + fontId = fontId_; + textSlant = textSlant_; + unk3f = unk3f_; + fontSize = fontSize_; + palinfo1 = palinfo1_; + palinfo2 = palinfo2_; + palinfo3 = palinfo3_; + font = font_; + } + + const Font *getFont(); }; class MacText { @@ -82,6 +117,9 @@ private: bool _fullRefresh; TextAlign _textAlignment; + + Common::Array< Common::Array > _formatting; + MacFontRun _defaultFormatting; }; } // End of namespace Graphics -- cgit v1.2.3