diff options
Diffstat (limited to 'src/core/touch_handle_drawable_qt.cpp')
-rw-r--r-- | src/core/touch_handle_drawable_qt.cpp | 123 |
1 files changed, 39 insertions, 84 deletions
diff --git a/src/core/touch_handle_drawable_qt.cpp b/src/core/touch_handle_drawable_qt.cpp index 66b1cf40e..1e979fa03 100644 --- a/src/core/touch_handle_drawable_qt.cpp +++ b/src/core/touch_handle_drawable_qt.cpp @@ -1,41 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2018 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the QtWebEngine module of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:LGPL$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU Lesser General Public License Usage -** Alternatively, this file may be used under the terms of the GNU Lesser -** General Public License version 3 as published by the Free Software -** Foundation and appearing in the file LICENSE.LGPL3 included in the -** packaging of this file. Please review the following information to -** ensure the GNU Lesser General Public License version 3 requirements -** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 2.0 or (at your option) the GNU General -** Public license version 3 or any later version approved by the KDE Free -** Qt Foundation. The licenses are as published by the Free Software -** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-2.0.html and -** https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ +// Copyright (C) 2018 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only // Copyright 2015 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be @@ -49,7 +13,6 @@ #include "type_conversion.h" #include "web_contents_adapter_client.h" -#include "ui/gfx/image/image.h" #include "ui/base/resource/resource_bundle.h" #include "ui/resources/grit/ui_resources.h" @@ -68,27 +31,6 @@ const int kSelectionHandlePadding = 0; // Epsilon value used to compare float values to zero. const float kEpsilon = 1e-8f; -// Returns the appropriate handle image based on the handle orientation. -gfx::Image* GetHandleImage(ui::TouchHandleOrientation orientation) -{ - int resource_id = 0; - switch (orientation) { - case ui::TouchHandleOrientation::LEFT: - resource_id = IDR_TEXT_SELECTION_HANDLE_LEFT; - break; - case ui::TouchHandleOrientation::CENTER: - resource_id = IDR_TEXT_SELECTION_HANDLE_CENTER; - break; - case ui::TouchHandleOrientation::RIGHT: - resource_id = IDR_TEXT_SELECTION_HANDLE_RIGHT; - break; - case ui::TouchHandleOrientation::UNDEFINED: - NOTREACHED() << "Invalid touch handle bound type."; - return nullptr; - }; - return &ui::ResourceBundle::GetSharedInstance().GetImageNamed(resource_id); -} - bool IsNearlyZero(float value) { return std::abs(value) < kEpsilon; @@ -96,21 +38,12 @@ bool IsNearlyZero(float value) } // namespace -TouchHandleDrawableQt::TouchHandleDrawableQt(RenderWidgetHostViewQt *rwhv) - : m_rwhv(rwhv) +TouchHandleDrawableQt::TouchHandleDrawableQt(TouchHandleDrawableDelegate *delegate) + : m_delegate(delegate) , m_enabled(false) , m_alpha(0) , m_orientation(ui::TouchHandleOrientation::UNDEFINED) { - QMap<int, QImage> images; - for (int orientation = 0; orientation < static_cast<int>(ui::TouchHandleOrientation::UNDEFINED); ++orientation) { - gfx::Image* image = GetHandleImage(static_cast<ui::TouchHandleOrientation>(orientation)); - images.insert(orientation, toQImage(image->AsBitmap())); - } - - Q_ASSERT(m_rwhv); - Q_ASSERT(m_rwhv->adapterClient()); - m_client.reset(m_rwhv->adapterClient()->createTouchHandle(images)); } TouchHandleDrawableQt::~TouchHandleDrawableQt() @@ -119,12 +52,12 @@ TouchHandleDrawableQt::~TouchHandleDrawableQt() void TouchHandleDrawableQt::UpdateBounds() { - if (!m_client) + if (!m_delegate) return; gfx::RectF newBounds = m_relativeBounds; newBounds.Offset(m_originPosition.x(), m_originPosition.y()); - m_client->setBounds(toQt(gfx::ToEnclosingRect(newBounds))); + m_delegate->setBounds(toQt(gfx::ToEnclosingRect(newBounds))); } bool TouchHandleDrawableQt::IsVisible() const @@ -134,19 +67,19 @@ bool TouchHandleDrawableQt::IsVisible() const void TouchHandleDrawableQt::SetEnabled(bool enabled) { - if (!m_client) + if (!m_delegate) return; if (enabled == m_enabled) return; m_enabled = enabled; - m_client->setVisible(enabled); + m_delegate->setVisible(enabled); } void TouchHandleDrawableQt::SetOrientation(ui::TouchHandleOrientation orientation, bool mirror_vertical, bool mirror_horizontal) { - if (!m_client) + if (!m_delegate) return; // TODO: Implement adaptive handle orientation logic @@ -157,7 +90,7 @@ void TouchHandleDrawableQt::SetOrientation(ui::TouchHandleOrientation orientatio return; m_orientation = orientation; gfx::Image* image = GetHandleImage(orientation); - m_client->setImage(static_cast<int>(orientation)); + m_delegate->setImage(static_cast<int>(orientation)); // Calculate the relative bounds. gfx::Size image_size = image->Size(); @@ -178,15 +111,15 @@ void TouchHandleDrawableQt::SetOrigin(const gfx::PointF& position) void TouchHandleDrawableQt::SetAlpha(float alpha) { - if (!m_client) + if (!m_delegate) return; if (alpha == m_alpha) return; m_alpha = alpha; - m_client->setOpacity(m_alpha); - m_client->setVisible(IsVisible()); + m_delegate->setOpacity(m_alpha); + m_delegate->setVisible(IsVisible()); } gfx::RectF TouchHandleDrawableQt::GetVisibleBounds() const @@ -195,10 +128,11 @@ gfx::RectF TouchHandleDrawableQt::GetVisibleBounds() const bounds.Offset(m_originPosition.x(), m_originPosition.y()); gfx::RectF visibleBounds(bounds); - visibleBounds.Inset(kSelectionHandlePadding, - kSelectionHandlePadding + kSelectionHandleVerticalVisualOffset, - kSelectionHandlePadding, - kSelectionHandlePadding); + visibleBounds.Inset(gfx::InsetsF::TLBR( + kSelectionHandlePadding, + kSelectionHandlePadding + kSelectionHandleVerticalVisualOffset, + kSelectionHandlePadding, + kSelectionHandlePadding)); return visibleBounds; } @@ -208,4 +142,25 @@ float TouchHandleDrawableQt::GetDrawableHorizontalPaddingRatio() const return 0.0; } +// Returns the appropriate handle image based on the handle orientation. +gfx::Image *TouchHandleDrawableQt::GetHandleImage(ui::TouchHandleOrientation orientation) +{ + int resource_id = 0; + switch (orientation) { + case ui::TouchHandleOrientation::LEFT: + resource_id = IDR_TEXT_SELECTION_HANDLE_LEFT; + break; + case ui::TouchHandleOrientation::CENTER: + resource_id = IDR_TEXT_SELECTION_HANDLE_CENTER; + break; + case ui::TouchHandleOrientation::RIGHT: + resource_id = IDR_TEXT_SELECTION_HANDLE_RIGHT; + break; + case ui::TouchHandleOrientation::UNDEFINED: + NOTREACHED() << "Invalid touch handle bound type."; + return nullptr; + }; + return &ui::ResourceBundle::GetSharedInstance().GetImageNamed(resource_id); +} + } // namespace QtWebEngineCore |