aboutsummaryrefslogtreecommitdiff
path: root/engines/sci/graphics/controls32.h
diff options
context:
space:
mode:
authorColin Snover2016-03-05 23:56:38 -0600
committerColin Snover2016-03-06 21:34:43 -0600
commit1337cd3dec86d64476bc4248e8368848d70b56e5 (patch)
tree4105f3a2bfdaac514ecb1996ef84b6d5af735677 /engines/sci/graphics/controls32.h
parent8a460ab3fa5e42f05ec9d96c059e3576d0da7645 (diff)
downloadscummvm-rg350-1337cd3dec86d64476bc4248e8368848d70b56e5.tar.gz
scummvm-rg350-1337cd3dec86d64476bc4248e8368848d70b56e5.tar.bz2
scummvm-rg350-1337cd3dec86d64476bc4248e8368848d70b56e5.zip
SCI32: Implement kEditText
Diffstat (limited to 'engines/sci/graphics/controls32.h')
-rw-r--r--engines/sci/graphics/controls32.h82
1 files changed, 79 insertions, 3 deletions
diff --git a/engines/sci/graphics/controls32.h b/engines/sci/graphics/controls32.h
index 5af7c20f16..0dc3b9ce6f 100644
--- a/engines/sci/graphics/controls32.h
+++ b/engines/sci/graphics/controls32.h
@@ -29,6 +29,76 @@ class GfxCache;
class GfxScreen;
class GfxText32;
+struct TextEditor {
+ /**
+ * The bitmap where the editor is rendered.
+ */
+ reg_t bitmap;
+
+ /**
+ * The width of the editor, in bitmap pixels.
+ */
+ int16 width;
+
+ /**
+ * The text in the editor.
+ */
+ Common::String text;
+
+ /**
+ * The rect where text should be drawn into the editor,
+ * in bitmap pixels.
+ */
+ Common::Rect textRect;
+
+ /**
+ * The color of the border. -1 indicates no border.
+ */
+ int16 borderColor;
+
+ /**
+ * The text color.
+ */
+ uint8 foreColor;
+
+ /**
+ * The background color.
+ */
+ uint8 backColor;
+
+ /**
+ * The transparent color.
+ */
+ uint8 skipColor;
+
+ /**
+ * The font used to render the text in the editor.
+ */
+ GuiResourceId fontId;
+
+ /**
+ * The current position of the cursor within the editor.
+ */
+ uint16 cursorCharPosition;
+
+ /**
+ * Whether or not the cursor is currently drawn to the
+ * screen.
+ */
+ bool cursorIsDrawn;
+
+ /**
+ * The rectangle for drawing the input cursor, in bitmap
+ * pixels.
+ */
+ Common::Rect cursorRect;
+
+ /**
+ * The maximum allowed text length, in characters.
+ */
+ uint16 maxLength;
+};
+
/**
* Controls class, handles drawing of controls in SCI32 (SCI2, SCI2.1, SCI3) games
*/
@@ -37,12 +107,18 @@ public:
GfxControls32(SegManager *segMan, GfxCache *cache, GfxText32 *text);
~GfxControls32();
- void kernelTexteditChange(reg_t controlObject);
+ reg_t kernelEditText(const reg_t controlObject);
private:
SegManager *_segMan;
- GfxCache *_cache;
- GfxText32 *_text;
+ GfxCache *_gfxCache;
+ GfxText32 *_gfxText32;
+
+ bool _overwriteMode;
+ uint32 _nextCursorFlashTick;
+ void drawCursor(TextEditor &editor);
+ void eraseCursor(TextEditor &editor);
+ void flashCursor(TextEditor &editor);
};
} // End of namespace Sci