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_IMAGE_CURSORS_H_ 6#define UI_BASE_CURSOR_IMAGE_CURSORS_H_ 7 8#include "base/memory/scoped_ptr.h" 9#include "base/strings/string16.h" 10#include "ui/base/cursor/cursor.h" 11#include "ui/base/ui_base_export.h" 12#include "ui/gfx/display.h" 13#include "ui/gfx/native_widget_types.h" 14 15namespace ui { 16 17class CursorLoader; 18 19// A utility class that provides cursors for NativeCursors for which we have 20// image resources. 21class UI_BASE_EXPORT ImageCursors { 22 public: 23 ImageCursors(); 24 ~ImageCursors(); 25 26 // Returns the scale and rotation of the currently loaded cursor. 27 float GetScale() const; 28 gfx::Display::Rotation GetRotation() const; 29 30 // Sets the display the cursors are loaded for. |scale_factor| determines the 31 // size of the image to load. Returns true if the cursor image is reloaded. 32 bool SetDisplay(const gfx::Display& display, float scale_factor); 33 34 // Sets the type of the mouse cursor icon. 35 void SetCursorSet(CursorSetType cursor_set); 36 37 // Sets the platform cursor based on the native type of |cursor|. 38 void SetPlatformCursor(gfx::NativeCursor* cursor); 39 40 private: 41 // Reloads the all loaded cursors in the cursor loader. 42 void ReloadCursors(); 43 44 scoped_ptr<CursorLoader> cursor_loader_; 45 CursorSetType cursor_set_; 46 47 DISALLOW_COPY_AND_ASSIGN(ImageCursors); 48}; 49 50} // namespace ui 51 52#endif // UI_BASE_CURSOR_IMAGE_CURSORS_H_ 53