aboutsummaryrefslogtreecommitdiff
path: root/engines/director/cachedmactext.cpp
diff options
context:
space:
mode:
authorTobia Tesan2017-05-01 02:50:57 +0200
committerEugene Sandulenko2017-05-02 21:01:23 +0100
commit415d9d660ecca0518c42e151eceedb58834ceb14 (patch)
tree7038729ca171ead74c3852808545a581cc4040a8 /engines/director/cachedmactext.cpp
parentd6f651064b52fda31838a8260ef7e97d1c661cc5 (diff)
downloadscummvm-rg350-415d9d660ecca0518c42e151eceedb58834ceb14.tar.gz
scummvm-rg350-415d9d660ecca0518c42e151eceedb58834ceb14.tar.bz2
scummvm-rg350-415d9d660ecca0518c42e151eceedb58834ceb14.zip
DIRECTOR: Add CachedMacText
Diffstat (limited to 'engines/director/cachedmactext.cpp')
-rw-r--r--engines/director/cachedmactext.cpp115
1 files changed, 115 insertions, 0 deletions
diff --git a/engines/director/cachedmactext.cpp b/engines/director/cachedmactext.cpp
new file mode 100644
index 0000000000..d2a40addf4
--- /dev/null
+++ b/engines/director/cachedmactext.cpp
@@ -0,0 +1,115 @@
+/* ScummVM - Graphic Adventure Engine
+ *
+ * ScummVM is the legal property of its developers, whose names
+ * are too numerous to list here. Please refer to the COPYRIGHT
+ * file distributed with this source distribution.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ */
+
+#include "engines/director/cachedmactext.h"
+#include "engines/director/cast.h"
+#include "graphics/macgui/macfontmanager.h"
+#include "graphics/macgui/mactext.h"
+#include "graphics/macgui/macwindowmanager.h"
+
+namespace Director {
+
+void CachedMacText::makeMacText() {
+ assert(_width != -1);
+ assert(_wm != NULL);
+
+ if ((int)_textCast->textAlign == -1)
+ _align = (Graphics::TextAlign)3;
+ else
+ _align = (Graphics::TextAlign)((int)_textCast->textAlign + 1);
+
+ _macText = new Graphics::MacText(_textCast->_ftext,
+ _wm,
+ _macFont,
+ 0x00,
+ 0xff,
+ _width,
+ _align,
+ 1);
+ // TODO destroy me
+}
+
+CachedMacText::CachedMacText(TextCast *const textCast,
+ int version,
+ int defaultWidth,
+ Graphics::MacWindowManager *const wm
+ )
+ :
+ _surface(NULL), _macFont(NULL),
+ _macText(NULL), _width(defaultWidth), _dirty(true), _textCast(textCast),
+ _wm(wm) {
+ _macFont = new Graphics::MacFont(_textCast->fontId,
+ _textCast->fontSize,
+ _textCast->textSlant);
+ // TODO destroy me
+
+ if (_width == -1) {
+ if (version >= 4) {
+ // This came from frame.cpp
+ _width = _textCast->initialRect.right;
+ } else {
+ _width = _textCast->initialRect.width();
+ }
+ }
+
+ if (_wm != NULL)
+ makeMacText();
+}
+
+void CachedMacText::setWm(Graphics::MacWindowManager *wm) {
+ if (wm != _wm) {
+ _dirty = true;
+ _wm = wm;
+ makeMacText();
+ }
+}
+
+void CachedMacText::clip(int width) {
+ if (width != _width) {
+ _dirty = true;
+ _width = width;
+ if (_wm != NULL)
+ makeMacText();
+ }
+}
+
+void CachedMacText::forceDirty() {
+ // STUB
+ assert(false);
+}
+
+const Graphics::ManagedSurface *CachedMacText::getSurface() {
+ assert(_wm != NULL);
+ if (_dirty) {
+ _macText->render();
+ _surface = _macText->getSurface();
+ _dirty = false;
+ }
+ return _surface;
+}
+
+int CachedMacText::getLineCount() {
+ assert(_macText != NULL);
+ return _macText->getLineCount();
+}
+
+} // End of namespace Director