aboutsummaryrefslogtreecommitdiff
path: root/graphics
diff options
context:
space:
mode:
authorEugene Sandulenko2017-01-30 10:10:22 +0100
committerEugene Sandulenko2017-01-30 10:10:22 +0100
commit7b24fb0b01b5b32d1e22e83139a9bfbd1bd5e02b (patch)
tree1d0ad64ae3068b990d9365b3ca2add36bef0b778 /graphics
parentb4a31646ffc543a8294010eae8dc6633d5693d98 (diff)
downloadscummvm-rg350-7b24fb0b01b5b32d1e22e83139a9bfbd1bd5e02b.tar.gz
scummvm-rg350-7b24fb0b01b5b32d1e22e83139a9bfbd1bd5e02b.tar.bz2
scummvm-rg350-7b24fb0b01b5b32d1e22e83139a9bfbd1bd5e02b.zip
GRAPHICS: Initial work on rich text formatting in MacText
Diffstat (limited to 'graphics')
-rw-r--r--graphics/macgui/mactext.cpp18
-rw-r--r--graphics/macgui/mactext.h42
2 files changed, 57 insertions, 3 deletions
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<MacFontRun> > _formatting;
+ MacFontRun _defaultFormatting;
};
} // End of namespace Graphics