| Index: ui/base/cursor/cursor_loader_x11.cc
|
| diff --git a/ui/base/cursor/cursor_loader_x11.cc b/ui/base/cursor/cursor_loader_x11.cc
|
| deleted file mode 100644
|
| index e9fb7a7ee7c341b68fed1c37bc3d73ca769e25d4..0000000000000000000000000000000000000000
|
| --- a/ui/base/cursor/cursor_loader_x11.cc
|
| +++ /dev/null
|
| @@ -1,241 +0,0 @@
|
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| -// Use of this source code is governed by a BSD-style license that can be
|
| -// found in the LICENSE file.
|
| -
|
| -#include "ui/base/cursor/cursor_loader_x11.h"
|
| -
|
| -#include <float.h>
|
| -#include <X11/Xlib.h>
|
| -#include <X11/cursorfont.h>
|
| -
|
| -#include "base/logging.h"
|
| -#include "skia/ext/image_operations.h"
|
| -#include "ui/base/cursor/cursor.h"
|
| -#include "ui/base/cursor/cursor_util.h"
|
| -#include "ui/base/x/x11_util.h"
|
| -#include "ui/gfx/image/image.h"
|
| -#include "ui/gfx/point_conversions.h"
|
| -#include "ui/gfx/size_conversions.h"
|
| -#include "ui/gfx/skbitmap_operations.h"
|
| -#include "ui/gfx/skia_util.h"
|
| -
|
| -namespace {
|
| -
|
| -// Returns X font cursor shape from an Aura cursor.
|
| -int CursorShapeFromNative(const gfx::NativeCursor& native_cursor) {
|
| - switch (native_cursor.native_type()) {
|
| - case ui::kCursorMiddlePanning:
|
| - return XC_fleur;
|
| - case ui::kCursorEastPanning:
|
| - return XC_sb_right_arrow;
|
| - case ui::kCursorNorthPanning:
|
| - return XC_sb_up_arrow;
|
| - case ui::kCursorNorthEastPanning:
|
| - return XC_top_right_corner;
|
| - case ui::kCursorNorthWestPanning:
|
| - return XC_top_left_corner;
|
| - case ui::kCursorSouthPanning:
|
| - return XC_sb_down_arrow;
|
| - case ui::kCursorSouthEastPanning:
|
| - return XC_bottom_right_corner;
|
| - case ui::kCursorSouthWestPanning:
|
| - return XC_bottom_left_corner;
|
| - case ui::kCursorWestPanning:
|
| - return XC_sb_left_arrow;
|
| - case ui::kCursorNone:
|
| - case ui::kCursorGrab:
|
| - case ui::kCursorGrabbing:
|
| - // TODO(jamescook): Need cursors for these. crbug.com/111650
|
| - return XC_left_ptr;
|
| -
|
| -#if defined(OS_CHROMEOS)
|
| - case ui::kCursorNull:
|
| - case ui::kCursorPointer:
|
| - case ui::kCursorNoDrop:
|
| - case ui::kCursorNotAllowed:
|
| - case ui::kCursorCopy:
|
| - case ui::kCursorMove:
|
| - case ui::kCursorEastResize:
|
| - case ui::kCursorNorthResize:
|
| - case ui::kCursorSouthResize:
|
| - case ui::kCursorWestResize:
|
| - case ui::kCursorNorthEastResize:
|
| - case ui::kCursorNorthWestResize:
|
| - case ui::kCursorSouthWestResize:
|
| - case ui::kCursorSouthEastResize:
|
| - case ui::kCursorIBeam:
|
| - case ui::kCursorAlias:
|
| - case ui::kCursorCell:
|
| - case ui::kCursorContextMenu:
|
| - case ui::kCursorCross:
|
| - case ui::kCursorHelp:
|
| - case ui::kCursorWait:
|
| - case ui::kCursorNorthSouthResize:
|
| - case ui::kCursorEastWestResize:
|
| - case ui::kCursorNorthEastSouthWestResize:
|
| - case ui::kCursorNorthWestSouthEastResize:
|
| - case ui::kCursorProgress:
|
| - case ui::kCursorColumnResize:
|
| - case ui::kCursorRowResize:
|
| - case ui::kCursorVerticalText:
|
| - case ui::kCursorZoomIn:
|
| - case ui::kCursorZoomOut:
|
| - case ui::kCursorHand:
|
| - // In some environments, the image assets are not set (e.g. in
|
| - // content-browsertests, content-shell etc.).
|
| - return XC_left_ptr;
|
| -#else // defined(OS_CHROMEOS)
|
| - case ui::kCursorNull:
|
| - return XC_left_ptr;
|
| - case ui::kCursorPointer:
|
| - return XC_left_ptr;
|
| - case ui::kCursorMove:
|
| - return XC_fleur;
|
| - case ui::kCursorCross:
|
| - return XC_crosshair;
|
| - case ui::kCursorHand:
|
| - return XC_hand2;
|
| - case ui::kCursorIBeam:
|
| - return XC_xterm;
|
| - case ui::kCursorProgress:
|
| - case ui::kCursorWait:
|
| - return XC_watch;
|
| - case ui::kCursorHelp:
|
| - return XC_question_arrow;
|
| - case ui::kCursorEastResize:
|
| - return XC_right_side;
|
| - case ui::kCursorNorthResize:
|
| - return XC_top_side;
|
| - case ui::kCursorNorthEastResize:
|
| - return XC_top_right_corner;
|
| - case ui::kCursorNorthWestResize:
|
| - return XC_top_left_corner;
|
| - case ui::kCursorSouthResize:
|
| - return XC_bottom_side;
|
| - case ui::kCursorSouthEastResize:
|
| - return XC_bottom_right_corner;
|
| - case ui::kCursorSouthWestResize:
|
| - return XC_bottom_left_corner;
|
| - case ui::kCursorWestResize:
|
| - return XC_left_side;
|
| - case ui::kCursorNorthSouthResize:
|
| - return XC_sb_v_double_arrow;
|
| - case ui::kCursorEastWestResize:
|
| - return XC_sb_h_double_arrow;
|
| - case ui::kCursorColumnResize:
|
| - return XC_sb_h_double_arrow;
|
| - case ui::kCursorRowResize:
|
| - return XC_sb_v_double_arrow;
|
| -#endif // defined(OS_CHROMEOS)
|
| - case ui::kCursorCustom:
|
| - NOTREACHED();
|
| - return XC_left_ptr;
|
| - }
|
| - NOTREACHED() << "Case not handled for " << native_cursor.native_type();
|
| - return XC_left_ptr;
|
| -}
|
| -
|
| -} // namespace
|
| -
|
| -namespace ui {
|
| -
|
| -CursorLoader* CursorLoader::Create() {
|
| - return new CursorLoaderX11;
|
| -}
|
| -
|
| -CursorLoaderX11::CursorLoaderX11()
|
| - : invisible_cursor_(CreateInvisibleCursor(), gfx::GetXDisplay()) {
|
| -}
|
| -
|
| -CursorLoaderX11::~CursorLoaderX11() {
|
| - UnloadAll();
|
| -}
|
| -
|
| -void CursorLoaderX11::LoadImageCursor(int id,
|
| - int resource_id,
|
| - const gfx::Point& hot) {
|
| - SkBitmap bitmap;
|
| - gfx::Point hotspot = hot;
|
| -
|
| - GetImageCursorBitmap(resource_id, scale(), rotation(), &hotspot, &bitmap);
|
| - XcursorImage* x_image = SkBitmapToXcursorImage(&bitmap, hotspot);
|
| - cursors_[id] = CreateReffedCustomXCursor(x_image);
|
| -}
|
| -
|
| -void CursorLoaderX11::LoadAnimatedCursor(int id,
|
| - int resource_id,
|
| - const gfx::Point& hot,
|
| - int frame_delay_ms) {
|
| - std::vector<SkBitmap> bitmaps;
|
| - gfx::Point hotspot = hot;
|
| -
|
| - GetAnimatedCursorBitmaps(
|
| - resource_id, scale(), rotation(), &hotspot, &bitmaps);
|
| -
|
| - XcursorImages* x_images = XcursorImagesCreate(bitmaps.size());
|
| - x_images->nimage = bitmaps.size();
|
| -
|
| - for (unsigned int frame = 0; frame < bitmaps.size(); ++frame) {
|
| - XcursorImage* x_image = SkBitmapToXcursorImage(&bitmaps[frame], hotspot);
|
| - x_image->delay = frame_delay_ms;
|
| - x_images->images[frame] = x_image;
|
| - }
|
| -
|
| - animated_cursors_[id] = std::make_pair(
|
| - XcursorImagesLoadCursor(gfx::GetXDisplay(), x_images), x_images);
|
| -}
|
| -
|
| -void CursorLoaderX11::UnloadAll() {
|
| - for (ImageCursorMap::const_iterator it = cursors_.begin();
|
| - it != cursors_.end(); ++it)
|
| - UnrefCustomXCursor(it->second);
|
| -
|
| - // Free animated cursors and images.
|
| - for (AnimatedCursorMap::iterator it = animated_cursors_.begin();
|
| - it != animated_cursors_.end(); ++it) {
|
| - XcursorImagesDestroy(it->second.second); // also frees individual frames.
|
| - XFreeCursor(gfx::GetXDisplay(), it->second.first);
|
| - }
|
| -}
|
| -
|
| -void CursorLoaderX11::SetPlatformCursor(gfx::NativeCursor* cursor) {
|
| - DCHECK(cursor);
|
| -
|
| - ::Cursor xcursor;
|
| - if (IsImageCursor(*cursor))
|
| - xcursor = ImageCursorFromNative(*cursor);
|
| - else if (*cursor == kCursorNone)
|
| - xcursor = invisible_cursor_.get();
|
| - else if (*cursor == kCursorCustom)
|
| - xcursor = cursor->platform();
|
| - else if (scale() == 1.0f && rotation() == gfx::Display::ROTATE_0) {
|
| - xcursor = GetXCursor(CursorShapeFromNative(*cursor));
|
| - } else {
|
| - xcursor = ImageCursorFromNative(kCursorPointer);
|
| - }
|
| -
|
| - cursor->SetPlatformCursor(xcursor);
|
| -}
|
| -
|
| -const XcursorImage* CursorLoaderX11::GetXcursorImageForTest(int id) {
|
| - return test::GetCachedXcursorImage(cursors_[id]);
|
| -}
|
| -
|
| -bool CursorLoaderX11::IsImageCursor(gfx::NativeCursor native_cursor) {
|
| - int type = native_cursor.native_type();
|
| - return cursors_.count(type) || animated_cursors_.count(type);
|
| -}
|
| -
|
| -::Cursor CursorLoaderX11::ImageCursorFromNative(
|
| - gfx::NativeCursor native_cursor) {
|
| - int type = native_cursor.native_type();
|
| - if (animated_cursors_.count(type))
|
| - return animated_cursors_[type].first;
|
| -
|
| - ImageCursorMap::iterator find = cursors_.find(type);
|
| - if (find != cursors_.end())
|
| - return cursors_[type];
|
| - return GetXCursor(CursorShapeFromNative(native_cursor));
|
| -}
|
| -
|
| -} // namespace ui
|
|
|