1643ca7872b450ea4efacab6188849e5aac2ba161Steve Block/*
2643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Copyright (C) 2009 Google Inc. All rights reserved.
3643ca7872b450ea4efacab6188849e5aac2ba161Steve Block *
4643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * Redistribution and use in source and binary forms, with or without
5643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * modification, are permitted provided that the following conditions are
6643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * met:
7643ca7872b450ea4efacab6188849e5aac2ba161Steve Block *
8643ca7872b450ea4efacab6188849e5aac2ba161Steve Block *     * Redistributions of source code must retain the above copyright
9643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * notice, this list of conditions and the following disclaimer.
10643ca7872b450ea4efacab6188849e5aac2ba161Steve Block *     * Redistributions in binary form must reproduce the above
11643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * copyright notice, this list of conditions and the following disclaimer
12643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * in the documentation and/or other materials provided with the
13643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * distribution.
14643ca7872b450ea4efacab6188849e5aac2ba161Steve Block *     * Neither the name of Google Inc. nor the names of its
15643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * contributors may be used to endorse or promote products derived from
16643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * this software without specific prior written permission.
17643ca7872b450ea4efacab6188849e5aac2ba161Steve Block *
18643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
19643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
20643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
21643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
22643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
23643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
24643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
25643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
26643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
27643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
28643ca7872b450ea4efacab6188849e5aac2ba161Steve Block * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
29643ca7872b450ea4efacab6188849e5aac2ba161Steve Block */
30643ca7872b450ea4efacab6188849e5aac2ba161Steve Block
31643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#ifndef WebCursorInfo_h
32643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#define WebCursorInfo_h
33643ca7872b450ea4efacab6188849e5aac2ba161Steve Block
34643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebImage.h"
35643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#include "WebPoint.h"
36643ca7872b450ea4efacab6188849e5aac2ba161Steve Block
37643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#if WEBKIT_IMPLEMENTATION
38643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocknamespace WebCore { class Cursor; }
39643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif
40643ca7872b450ea4efacab6188849e5aac2ba161Steve Block
41643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#ifdef WIN32
42643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocktypedef struct HICON__* HICON;
43643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocktypedef HICON HCURSOR;
44643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif
45643ca7872b450ea4efacab6188849e5aac2ba161Steve Block
46643ca7872b450ea4efacab6188849e5aac2ba161Steve Blocknamespace WebKit {
47643ca7872b450ea4efacab6188849e5aac2ba161Steve Block
48643ca7872b450ea4efacab6188849e5aac2ba161Steve Blockstruct WebCursorInfo {
49643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    enum Type {
50643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypePointer,
51643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeCross,
52643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeHand,
53643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeIBeam,
54643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeWait,
55643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeHelp,
56643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeEastResize,
57643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeNorthResize,
58643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeNorthEastResize,
59643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeNorthWestResize,
60643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeSouthResize,
61643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeSouthEastResize,
62643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeSouthWestResize,
63643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeWestResize,
64643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeNorthSouthResize,
65643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeEastWestResize,
66643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeNorthEastSouthWestResize,
67643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeNorthWestSouthEastResize,
68643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeColumnResize,
69643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeRowResize,
70643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeMiddlePanning,
71643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeEastPanning,
72643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeNorthPanning,
73643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeNorthEastPanning,
74643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeNorthWestPanning,
75643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeSouthPanning,
76643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeSouthEastPanning,
77643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeSouthWestPanning,
78643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeWestPanning,
79643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeMove,
80643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeVerticalText,
81643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeCell,
82643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeContextMenu,
83643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeAlias,
84643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeProgress,
85643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeNoDrop,
86643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeCopy,
87643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeNone,
88643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeNotAllowed,
89643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeZoomIn,
90643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeZoomOut,
9181bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        TypeGrab,
9281bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch        TypeGrabbing,
93643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        TypeCustom
94643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    };
95643ca7872b450ea4efacab6188849e5aac2ba161Steve Block
96643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    Type type;
97643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    WebPoint hotSpot;
98643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    WebImage customImage;
99643ca7872b450ea4efacab6188849e5aac2ba161Steve Block
100643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#ifdef WIN32
101643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    // On Windows, TypeCustom may alternatively reference an externally
102643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    // defined HCURSOR.  If type is TypeCustom and externalHandle is non-
103643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    // null, then customData should be ignored.  The WebCursorInfo is not
104643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    // responsible for managing the lifetime of this cursor handle.
105643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    HCURSOR externalHandle;
106643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif
107643ca7872b450ea4efacab6188849e5aac2ba161Steve Block
108643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    explicit WebCursorInfo(Type type = TypePointer)
109643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        : type(type)
110643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    {
111643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#ifdef WIN32
112643ca7872b450ea4efacab6188849e5aac2ba161Steve Block        externalHandle = 0;
113643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif
114643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    }
115643ca7872b450ea4efacab6188849e5aac2ba161Steve Block
116643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#if WEBKIT_IMPLEMENTATION
117643ca7872b450ea4efacab6188849e5aac2ba161Steve Block    explicit WebCursorInfo(const WebCore::Cursor&);
118643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif
119643ca7872b450ea4efacab6188849e5aac2ba161Steve Block};
120643ca7872b450ea4efacab6188849e5aac2ba161Steve Block
121643ca7872b450ea4efacab6188849e5aac2ba161Steve Block} // namespace WebKit
122643ca7872b450ea4efacab6188849e5aac2ba161Steve Block
123643ca7872b450ea4efacab6188849e5aac2ba161Steve Block#endif
124