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#include "ui/base/cursor/cursor.h"
6
7namespace ui {
8
9Cursor::Cursor()
10    : native_type_(0),
11      platform_cursor_(0),
12      device_scale_factor_(0.0f) {
13}
14
15Cursor::Cursor(int type)
16    : native_type_(type),
17      platform_cursor_(0),
18      device_scale_factor_(0.0f) {
19}
20
21Cursor::Cursor(const Cursor& cursor)
22    : native_type_(cursor.native_type_),
23      platform_cursor_(cursor.platform_cursor_),
24      device_scale_factor_(cursor.device_scale_factor_) {
25  if (native_type_ == kCursorCustom)
26    RefCustomCursor();
27}
28
29Cursor::~Cursor() {
30  if (native_type_ == kCursorCustom)
31    UnrefCustomCursor();
32}
33
34void Cursor::SetPlatformCursor(const PlatformCursor& platform) {
35  if (native_type_ == kCursorCustom)
36    UnrefCustomCursor();
37  platform_cursor_ = platform;
38  if (native_type_ == kCursorCustom)
39    RefCustomCursor();
40}
41
42void Cursor::Assign(const Cursor& cursor) {
43  if (*this == cursor)
44    return;
45  if (native_type_ == kCursorCustom)
46    UnrefCustomCursor();
47  native_type_ = cursor.native_type_;
48  platform_cursor_ = cursor.platform_cursor_;
49  if (native_type_ == kCursorCustom)
50    RefCustomCursor();
51  device_scale_factor_ = cursor.device_scale_factor_;
52}
53
54}  // namespace ui
55