diff options
Diffstat (limited to 'Source/WebCore/platform/Cursor.h')
-rw-r--r-- | Source/WebCore/platform/Cursor.h | 321 |
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 |