From c75bf3290d841f61e9b321f2419537cdaa972f52 Mon Sep 17 00:00:00 2001
From: Matthew Hoops
Date: Tue, 16 Aug 2011 00:30:12 -0400
Subject: GRAPHICS: Add a default Windows cursor

Based on the Mohawk one
---
 graphics/wincursor.cpp | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++
 graphics/wincursor.h   |  7 +++++++
 2 files changed, 64 insertions(+)

(limited to 'graphics')

diff --git a/graphics/wincursor.cpp b/graphics/wincursor.cpp
index 6208f5f053..2db72a2874 100644
--- a/graphics/wincursor.cpp
+++ b/graphics/wincursor.cpp
@@ -308,4 +308,61 @@ WinCursorGroup *WinCursorGroup::createCursorGroup(Common::PEResources &exe, cons
 	return group;
 }
 
+/**
+ * The default Windows cursor
+ */
+class DefaultWinCursor : public Cursor {
+public:
+	DefaultWinCursor() {}
+	~DefaultWinCursor() {}
+
+	uint16 getWidth() const { return 12; }
+	uint16 getHeight() const { return 20; }
+	uint16 getHotspotX() const { return 0; }
+	uint16 getHotspotY() const { return 0; }
+	byte getKeyColor() const { return 0; }
+
+	const byte *getSurface() const {
+		static const byte defaultCursor[] = {
+			1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			1, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
+			1, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0,
+			1, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0, 0,
+			1, 2, 2, 2, 2, 1, 0, 0, 0, 0, 0, 0,
+			1, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0, 0,
+			1, 2, 2, 2, 2, 2, 2, 1, 0, 0, 0, 0,
+			1, 2, 2, 2, 2, 2, 2, 2, 1, 0, 0, 0,
+			1, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0, 0,
+			1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 0,
+			1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1,
+			1, 2, 2, 2, 1, 2, 2, 1, 0, 0, 0, 0,
+			1, 2, 2, 1, 1, 2, 2, 1, 0, 0, 0, 0,
+			1, 2, 1, 0, 1, 1, 2, 2, 1, 0, 0, 0,
+			1, 1, 0, 0, 0, 1, 2, 2, 1, 0, 0, 0,
+			1, 0, 0, 0, 0, 0, 1, 2, 2, 1, 0, 0,
+			0, 0, 0, 0, 0, 0, 1, 2, 2, 1, 0, 0,
+			0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 1, 0,
+			0, 0, 0, 0, 0, 0, 0, 1, 2, 2, 1, 0,
+			0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0
+		};
+
+		return defaultCursor;
+	}
+
+	const byte *getPalette() const {
+		static const byte bwPalette[] = {
+			0x00, 0x00, 0x00,	// Black
+			0xFF, 0xFF, 0xFF	// White
+		};
+
+		return bwPalette;
+	}
+	byte getPaletteStartIndex() const { return 1; }
+	uint16 getPaletteCount() const { return 2; }
+};
+
+Cursor *makeDefaultWinCursor() {
+	return new DefaultWinCursor();
+}
+
 } // End of namespace Graphics
diff --git a/graphics/wincursor.h b/graphics/wincursor.h
index 974341f196..e6b35dc80c 100644
--- a/graphics/wincursor.h
+++ b/graphics/wincursor.h
@@ -102,6 +102,13 @@ struct WinCursorGroup {
 	static WinCursorGroup *createCursorGroup(Common::PEResources &exe, const Common::WinResourceID &id);
 };
 
+/**
+ * Create a Cursor for the default Windows cursor.
+ *
+ * @note The calling code is responsible for deleting the returned pointer.
+ */
+Cursor *makeDefaultWinCursor();
+
 } // End of namespace Graphics
 
 #endif
-- 
cgit v1.2.3