ac18a5010d08faeed940db3c74f7b9b7d71c8cff
[platform/framework/web/crosswalk.git] / src / ui / base / cursor / ozone / cursor_factory_ozone.h
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef UI_BASE_CURSOR_OZONE_CURSOR_FACTORY_OZONE_H_
6 #define UI_BASE_CURSOR_OZONE_CURSOR_FACTORY_OZONE_H_
7
8 #include "ui/base/cursor/cursor.h"
9 #include "ui/base/ui_base_export.h"
10 #include "ui/gfx/native_widget_types.h"
11
12 namespace ui {
13
14 class UI_BASE_EXPORT CursorFactoryOzone {
15  public:
16   CursorFactoryOzone();
17   virtual ~CursorFactoryOzone();
18
19   // Returns the static instance.
20   static CursorFactoryOzone* GetInstance();
21
22   // Sets the static instance. Ownership is retained by the caller.
23   static void SetInstance(CursorFactoryOzone* impl);
24
25   // Return the default cursor of the specified type. The types are listed in
26   // ui/base/cursor/cursor.h. Default cursors are managed by the implementation
27   // and must live indefinitely; there's no way to know when to free them.
28   virtual PlatformCursor GetDefaultCursor(int type);
29
30   // Return a image cursor from the specified image & hotspot. Image cursors
31   // are referenced counted and have an initial refcount of 1. Therefore, each
32   // CreateImageCursor call must be matched with a call to UnrefImageCursor.
33   virtual PlatformCursor CreateImageCursor(const SkBitmap& bitmap,
34                                            const gfx::Point& hotspot);
35
36   // Increment platform image cursor refcount.
37   virtual void RefImageCursor(PlatformCursor cursor);
38
39   // Decrement platform image cursor refcount.
40   virtual void UnrefImageCursor(PlatformCursor cursor);
41
42   // Change the active cursor for an AcceleratedWidget.
43   // TODO(spang): Move this.
44   virtual void SetCursor(gfx::AcceleratedWidget widget, PlatformCursor cursor);
45
46   // Returns the window on which the cursor is active.
47   // TODO(dnicoara) Move this once the WindowTreeHost refactoring finishes and
48   // WindowTreeHost::CanDispatchEvent() is no longer present.
49   virtual gfx::AcceleratedWidget GetCursorWindow();
50
51  private:
52   static CursorFactoryOzone* impl_;  // not owned
53 };
54
55 }  // namespace gfx
56
57 #endif  // UI_BASE_CURSOR_OZONE_CURSOR_FACTORY_OZONE_H_