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.
5 #ifndef UI_BASE_CURSOR_OZONE_CURSOR_FACTORY_OZONE_H_
6 #define UI_BASE_CURSOR_OZONE_CURSOR_FACTORY_OZONE_H_
8 #include "ui/base/cursor/cursor.h"
9 #include "ui/base/ui_base_export.h"
10 #include "ui/gfx/native_widget_types.h"
14 class UI_BASE_EXPORT CursorFactoryOzone {
17 virtual ~CursorFactoryOzone();
19 // Returns the static instance.
20 static CursorFactoryOzone* GetInstance();
22 // Sets the static instance. Ownership is retained by the caller.
23 static void SetInstance(CursorFactoryOzone* impl);
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);
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);
36 // Increment platform image cursor refcount.
37 virtual void RefImageCursor(PlatformCursor cursor);
39 // Decrement platform image cursor refcount.
40 virtual void UnrefImageCursor(PlatformCursor cursor);
42 // Change the active cursor for an AcceleratedWidget.
43 // TODO(spang): Move this.
44 virtual void SetCursor(gfx::AcceleratedWidget widget, PlatformCursor cursor);
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();
52 static CursorFactoryOzone* impl_; // not owned
57 #endif // UI_BASE_CURSOR_OZONE_CURSOR_FACTORY_OZONE_H_