• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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:
CursorLoader()19   CursorLoader() : scale_(1.f), rotation_(gfx::Display::ROTATE_0) {}
~CursorLoader()20   virtual ~CursorLoader() {}
21 
rotation()22   gfx::Display::Rotation rotation() const {
23     return rotation_;
24   }
25 
set_rotation(gfx::Display::Rotation rotation)26   void set_rotation(gfx::Display::Rotation rotation) {
27     rotation_ = rotation;
28   }
29 
30   // Returns the current scale of the mouse cursor icon.
scale()31   float scale() const {
32     return scale_;
33   }
34 
35   // Sets the scale of the mouse cursor icon.
set_scale(const float scale)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_
77