webcursor_aurawin.cc revision 1320f92c476a1ad9d19dba2a48c72b75566198e9
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "content/common/cursors/webcursor.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <windows.h>
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "third_party/WebKit/public/platform/WebCursorInfo.h"
102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/gfx/icon_util.h"
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)namespace content {
1323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciui::PlatformCursor WebCursor::GetPlatformCursor() {
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (!IsCustom())
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return LoadCursor(NULL, IDC_ARROW);
172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (custom_cursor_)
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return custom_cursor_;
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  custom_cursor_ =
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      IconUtil::CreateCursorFromDIB(
232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          custom_size_,
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          hotspot_,
252a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          !custom_data_.empty() ? &custom_data_[0] : NULL,
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)          custom_data_.size());
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return custom_cursor_;
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
302385ea399aae016c0806a4f9ef3c9cfe3d2a39dfBen Murdochvoid WebCursor::SetDisplayInfo(const gfx::Display& display) {
312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // TODO(winguru): Add support for scaling the cursor.
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebCursor::InitPlatformData() {
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  custom_cursor_ = NULL;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WebCursor::SerializePlatformData(Pickle* pickle) const {
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WebCursor::DeserializePlatformData(PickleIterator* iter) {
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool WebCursor::IsPlatformDataEqual(const WebCursor& other) const {
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebCursor::CleanupPlatformData() {
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (custom_cursor_) {
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    DestroyIcon(custom_cursor_);
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    custom_cursor_ = NULL;
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void WebCursor::CopyPlatformData(const WebCursor& other) {
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
5923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)
6023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}  // namespace content
61