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) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/browser/renderer_host/dip_util.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/render_widget_host_view.h" 8cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "ui/base/layout.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/display.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/point.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/point_conversions.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/rect.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/rect_conversions.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/screen.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/size.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/gfx/size_conversions.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace content { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)float GetScaleFactorForView(const RenderWidgetHostView* view) { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ui::GetScaleFactorForNativeView(view ? view->GetNativeView() : NULL); 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2490dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)gfx::Point ConvertViewPointToDIP(const RenderWidgetHostView* view, 2590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const gfx::Point& point_in_pixel) { 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return gfx::ToFlooredPoint( 27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) gfx::ScalePoint(point_in_pixel, 1.0f / GetScaleFactorForView(view))); 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)gfx::Size ConvertViewSizeToPixel(const RenderWidgetHostView* view, 3190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const gfx::Size& size_in_dip) { 32cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return ConvertSizeToPixel(GetScaleFactorForView(view), size_in_dip); 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)gfx::Rect ConvertViewRectToPixel(const RenderWidgetHostView* view, 3690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const gfx::Rect& rect_in_dip) { 37cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return ConvertRectToPixel(GetScaleFactorForView(view), rect_in_dip); 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)gfx::Size ConvertSizeToDIP(float scale_factor, 4190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const gfx::Size& size_in_pixel) { 4290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return gfx::ToFlooredSize( 4390dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) gfx::ScaleSize(size_in_pixel, 1.0f / scale_factor)); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 4690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)gfx::Rect ConvertRectToDIP(float scale_factor, 4790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) const gfx::Rect& rect_in_pixel) { 4890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return gfx::ToFlooredRectDeprecated( 4990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) gfx::ScaleRect(rect_in_pixel, 1.0f / scale_factor)); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 52cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)gfx::Size ConvertSizeToPixel(float scale_factor, 53cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) const gfx::Size& size_in_dip) { 54cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) return gfx::ToFlooredSize(gfx::ScaleSize(size_in_dip, scale_factor)); 55cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)} 5690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) 5790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)gfx::Rect ConvertRectToPixel(float scale_factor, 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Rect& rect_in_dip) { 5990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) return gfx::ToFlooredRectDeprecated( 6090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) gfx::ScaleRect(rect_in_dip, scale_factor)); 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace content 64