summaryrefslogtreecommitdiff
path: root/Source/WebCore/platform/Cursor.h
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/platform/Cursor.h')
-rw-r--r--Source/WebCore/platform/Cursor.h321
1 files changed, 161 insertions, 160 deletions
diff --git a/Source/WebCore/platform/Cursor.h b/Source/WebCore/platform/Cursor.h
index 22407aa24..cdcf265f2 100644
--- a/Source/WebCore/platform/Cursor.h
+++ b/Source/WebCore/platform/Cursor.h
@@ -10,10 +10,10 @@
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
- * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
@@ -23,8 +23,7 @@
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-#ifndef Cursor_h
-#define Cursor_h
+#pragma once
#include "Image.h"
#include "IntPoint.h"
@@ -34,15 +33,14 @@
#if PLATFORM(WIN)
typedef struct HICON__* HICON;
typedef HICON HCURSOR;
-#include <wtf/PassRefPtr.h>
#include <wtf/RefCounted.h>
-#elif PLATFORM(MAC)
+#elif PLATFORM(COCOA)
#include <wtf/RetainPtr.h>
#elif PLATFORM(GTK)
#include "GRefPtrGtk.h"
#endif
-#if PLATFORM(MAC) && !PLATFORM(IOS)
+#if USE(APPKIT)
OBJC_CLASS NSCursor;
#endif
@@ -53,180 +51,183 @@ typedef HICON HCURSOR;
namespace WebCore {
- class Image;
+class Image;
#if PLATFORM(WIN)
- class SharedCursor : public RefCounted<SharedCursor> {
- public:
- static PassRefPtr<SharedCursor> create(HCURSOR nativeCursor) { return adoptRef(new SharedCursor(nativeCursor)); }
- ~SharedCursor();
- HCURSOR nativeCursor() const { return m_nativeCursor; }
- private:
- SharedCursor(HCURSOR nativeCursor) : m_nativeCursor(nativeCursor) { }
- HCURSOR m_nativeCursor;
- };
- typedef RefPtr<SharedCursor> PlatformCursor;
-#elif PLATFORM(MAC) && !PLATFORM(IOS)
- typedef NSCursor *PlatformCursor;
+
+class SharedCursor : public RefCounted<SharedCursor> {
+public:
+ static Ref<SharedCursor> create(HCURSOR);
+ WEBCORE_EXPORT ~SharedCursor();
+ HCURSOR nativeCursor() const { return m_nativeCursor; }
+
+private:
+ SharedCursor(HCURSOR);
+ HCURSOR m_nativeCursor;
+};
+
+#endif
+
+#if PLATFORM(WIN)
+using PlatformCursor = RefPtr<SharedCursor>;
+#elif USE(APPKIT)
+using PlatformCursor = NSCursor *;
#elif PLATFORM(GTK)
- typedef GRefPtr<GdkCursor> PlatformCursor;
-#elif PLATFORM(EFL)
- typedef const char* PlatformCursor;
-#else
- typedef void* PlatformCursor;
+using PlatformCursor = GRefPtr<GdkCursor>;
#endif
- class Cursor {
- WTF_MAKE_FAST_ALLOCATED;
- public:
- enum Type {
- Pointer = 0,
- Cross,
- Hand,
- IBeam,
- Wait,
- Help,
- EastResize,
- NorthResize,
- NorthEastResize,
- NorthWestResize,
- SouthResize,
- SouthEastResize,
- SouthWestResize,
- WestResize,
- NorthSouthResize,
- EastWestResize,
- NorthEastSouthWestResize,
- NorthWestSouthEastResize,
- ColumnResize,
- RowResize,
- MiddlePanning,
- EastPanning,
- NorthPanning,
- NorthEastPanning,
- NorthWestPanning,
- SouthPanning,
- SouthEastPanning,
- SouthWestPanning,
- WestPanning,
- Move,
- VerticalText,
- Cell,
- ContextMenu,
- Alias,
- Progress,
- NoDrop,
- Copy,
- None,
- NotAllowed,
- ZoomIn,
- ZoomOut,
- Grab,
- Grabbing,
- Custom
- };
-
- static const Cursor& fromType(Cursor::Type);
-
- Cursor()
-#if !PLATFORM(IOS)
- // This is an invalid Cursor and should never actually get used.
- : m_type(static_cast<Type>(-1))
- , m_platformCursor(0)
-#endif // !PLATFORM(IOS)
- {
- }
+class Cursor {
+ WTF_MAKE_FAST_ALLOCATED;
+public:
+ enum Type {
+ Pointer = 0,
+ Cross,
+ Hand,
+ IBeam,
+ Wait,
+ Help,
+ EastResize,
+ NorthResize,
+ NorthEastResize,
+ NorthWestResize,
+ SouthResize,
+ SouthEastResize,
+ SouthWestResize,
+ WestResize,
+ NorthSouthResize,
+ EastWestResize,
+ NorthEastSouthWestResize,
+ NorthWestSouthEastResize,
+ ColumnResize,
+ RowResize,
+ MiddlePanning,
+ EastPanning,
+ NorthPanning,
+ NorthEastPanning,
+ NorthWestPanning,
+ SouthPanning,
+ SouthEastPanning,
+ SouthWestPanning,
+ WestPanning,
+ Move,
+ VerticalText,
+ Cell,
+ ContextMenu,
+ Alias,
+ Progress,
+ NoDrop,
+ Copy,
+ None,
+ NotAllowed,
+ ZoomIn,
+ ZoomOut,
+ Grab,
+ Grabbing,
+ Custom
+ };
+
+ Cursor() = default;
#if !PLATFORM(IOS)
- Cursor(Image*, const IntPoint& hotSpot);
- Cursor(const Cursor&);
+
+ WEBCORE_EXPORT static const Cursor& fromType(Cursor::Type);
+
+ WEBCORE_EXPORT Cursor(Image*, const IntPoint& hotSpot);
#if ENABLE(MOUSE_CURSOR_SCALE)
- // Hot spot is in image pixels.
- Cursor(Image*, const IntPoint& hotSpot, float imageScaleFactor);
+ // Hot spot is in image pixels.
+ WEBCORE_EXPORT Cursor(Image*, const IntPoint& hotSpot, float imageScaleFactor);
#endif
- ~Cursor();
- Cursor& operator=(const Cursor&);
-
- explicit Cursor(Type);
- Type type() const
- {
- ASSERT(m_type >= 0 && m_type <= Custom);
- return m_type;
- }
- Image* image() const { return m_image.get(); }
- const IntPoint& hotSpot() const { return m_hotSpot; }
+ explicit Cursor(Type);
+
+ Type type() const;
+ Image* image() const { return m_image.get(); }
+ const IntPoint& hotSpot() const { return m_hotSpot; }
+
#if ENABLE(MOUSE_CURSOR_SCALE)
- // Image scale in image pixels per logical (UI) pixel.
- float imageScaleFactor() const { return m_imageScaleFactor; }
+ // Image scale in image pixels per logical (UI) pixel.
+ float imageScaleFactor() const { return m_imageScaleFactor; }
#endif
- PlatformCursor platformCursor() const;
- private:
- void ensurePlatformCursor() const;
+ WEBCORE_EXPORT PlatformCursor platformCursor() const;
+
+private:
+ void ensurePlatformCursor() const;
+
+ // The type of -1 indicates an invalid Cursor that should never actually get used.
+ Type m_type { static_cast<Type>(-1) };
+ RefPtr<Image> m_image;
+ IntPoint m_hotSpot;
- Type m_type;
- RefPtr<Image> m_image;
- IntPoint m_hotSpot;
#if ENABLE(MOUSE_CURSOR_SCALE)
- float m_imageScaleFactor;
+ float m_imageScaleFactor { 1 };
#endif
-#if !PLATFORM(MAC)
- mutable PlatformCursor m_platformCursor;
+#if !USE(APPKIT)
+ mutable PlatformCursor m_platformCursor { nullptr };
#else
- mutable RetainPtr<NSCursor> m_platformCursor;
+ mutable RetainPtr<NSCursor> m_platformCursor;
#endif
+
#endif // !PLATFORM(IOS)
- };
+};
+
+IntPoint determineHotSpot(Image*, const IntPoint& specifiedHotSpot);
+
+WEBCORE_EXPORT const Cursor& pointerCursor();
+const Cursor& crossCursor();
+WEBCORE_EXPORT const Cursor& handCursor();
+const Cursor& moveCursor();
+WEBCORE_EXPORT const Cursor& iBeamCursor();
+const Cursor& waitCursor();
+const Cursor& helpCursor();
+const Cursor& eastResizeCursor();
+const Cursor& northResizeCursor();
+const Cursor& northEastResizeCursor();
+const Cursor& northWestResizeCursor();
+const Cursor& southResizeCursor();
+const Cursor& southEastResizeCursor();
+const Cursor& southWestResizeCursor();
+const Cursor& westResizeCursor();
+const Cursor& northSouthResizeCursor();
+const Cursor& eastWestResizeCursor();
+const Cursor& northEastSouthWestResizeCursor();
+const Cursor& northWestSouthEastResizeCursor();
+const Cursor& columnResizeCursor();
+const Cursor& rowResizeCursor();
+const Cursor& middlePanningCursor();
+const Cursor& eastPanningCursor();
+const Cursor& northPanningCursor();
+const Cursor& northEastPanningCursor();
+const Cursor& northWestPanningCursor();
+const Cursor& southPanningCursor();
+const Cursor& southEastPanningCursor();
+const Cursor& southWestPanningCursor();
+const Cursor& westPanningCursor();
+const Cursor& verticalTextCursor();
+const Cursor& cellCursor();
+const Cursor& contextMenuCursor();
+const Cursor& noDropCursor();
+const Cursor& notAllowedCursor();
+const Cursor& progressCursor();
+const Cursor& aliasCursor();
+const Cursor& zoomInCursor();
+const Cursor& zoomOutCursor();
+const Cursor& copyCursor();
+const Cursor& noneCursor();
+const Cursor& grabCursor();
+const Cursor& grabbingCursor();
- IntPoint determineHotSpot(Image*, const IntPoint& specifiedHotSpot);
-
- const Cursor& pointerCursor();
- const Cursor& crossCursor();
- const Cursor& handCursor();
- const Cursor& moveCursor();
- const Cursor& iBeamCursor();
- const Cursor& waitCursor();
- const Cursor& helpCursor();
- const Cursor& eastResizeCursor();
- const Cursor& northResizeCursor();
- const Cursor& northEastResizeCursor();
- const Cursor& northWestResizeCursor();
- const Cursor& southResizeCursor();
- const Cursor& southEastResizeCursor();
- const Cursor& southWestResizeCursor();
- const Cursor& westResizeCursor();
- const Cursor& northSouthResizeCursor();
- const Cursor& eastWestResizeCursor();
- const Cursor& northEastSouthWestResizeCursor();
- const Cursor& northWestSouthEastResizeCursor();
- const Cursor& columnResizeCursor();
- const Cursor& rowResizeCursor();
- const Cursor& middlePanningCursor();
- const Cursor& eastPanningCursor();
- const Cursor& northPanningCursor();
- const Cursor& northEastPanningCursor();
- const Cursor& northWestPanningCursor();
- const Cursor& southPanningCursor();
- const Cursor& southEastPanningCursor();
- const Cursor& southWestPanningCursor();
- const Cursor& westPanningCursor();
- const Cursor& verticalTextCursor();
- const Cursor& cellCursor();
- const Cursor& contextMenuCursor();
- const Cursor& noDropCursor();
- const Cursor& notAllowedCursor();
- const Cursor& progressCursor();
- const Cursor& aliasCursor();
- const Cursor& zoomInCursor();
- const Cursor& zoomOutCursor();
- const Cursor& copyCursor();
- const Cursor& noneCursor();
- const Cursor& grabCursor();
- const Cursor& grabbingCursor();
+#if !PLATFORM(IOS)
-} // namespace WebCore
+inline Cursor::Type Cursor::type() const
+{
+ ASSERT(m_type >= 0);
+ ASSERT(m_type <= Custom);
+ return m_type;
+}
-#endif // Cursor_h
+#endif
+
+} // namespace WebCore