Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / ui / base / cursor / cursor_loader.h
1 // Copyright (c) 2012 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_CURSOR_LOADER_H_
6 #define UI_BASE_CURSOR_CURSOR_LOADER_H_
7
8 #include "base/logging.h"
9 #include "base/strings/string16.h"
10 #include "ui/base/ui_base_export.h"
11 #include "ui/gfx/display.h"
12 #include "ui/gfx/native_widget_types.h"
13 #include "ui/gfx/point.h"
14
15 namespace ui {
16
17 class UI_BASE_EXPORT CursorLoader {
18  public:
19   CursorLoader() : scale_(1.f), rotation_(gfx::Display::ROTATE_0) {}
20   virtual ~CursorLoader() {}
21
22   gfx::Display::Rotation rotation() const {
23     return rotation_;
24   }
25
26   void set_rotation(gfx::Display::Rotation rotation) {
27     rotation_ = rotation;
28   }
29
30   // Returns the current scale of the mouse cursor icon.
31   float scale() const {
32     return scale_;
33   }
34
35   // Sets the scale of the mouse cursor icon.
36   void set_scale(const float scale) {
37     scale_ = scale;
38   }
39
40   // Creates a cursor from an image resource and puts it in the cursor map.
41   virtual void LoadImageCursor(int id,
42                                int resource_id,
43                                const gfx::Point& hot) = 0;
44
45   // Creates an animated cursor from an image resource and puts it in the
46   // cursor map. The image is assumed to be a concatenation of animation frames
47   // from left to right. Also, each frame is assumed to be square
48   // (width == height).
49   // |frame_delay_ms| is the delay between frames in millisecond.
50   virtual void LoadAnimatedCursor(int id,
51                                   int resource_id,
52                                   const gfx::Point& hot,
53                                   int frame_delay_ms) = 0;
54
55   // Unloads all the cursors.
56   virtual void UnloadAll() = 0;
57
58   // Sets the platform cursor based on the native type of |cursor|.
59   virtual void SetPlatformCursor(gfx::NativeCursor* cursor) = 0;
60
61   // Creates a CursorLoader.
62   static CursorLoader* Create();
63
64  private:
65   // The current scale of the mouse cursor icon.
66   float scale_;
67
68   // The current rotation of the mouse cursor icon.
69   gfx::Display::Rotation rotation_;
70
71   DISALLOW_COPY_AND_ASSIGN(CursorLoader);
72 };
73
74 }  // namespace ui
75
76 #endif  // UI_BASE_CURSOR_CURSOR_LOADER_H_