dip_util.h revision 116680a4aac90f2aa7413d9095a592090648e557
1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright (c) 2012 The Chromium Authors. All rights reserved.
2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file.
4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#ifndef UI_COMPOSITOR_DIP_UTIL_H_
6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define UI_COMPOSITOR_DIP_UTIL_H_
7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/compositor/compositor_export.h"
9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/basictypes.h"
10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "ui/gfx/point_f.h"
11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace gfx {
13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass Point;
14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass Size;
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass Rect;
16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}  // namespace gfx
17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace ui {
19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass Layer;
20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
21eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochCOMPOSITOR_EXPORT float GetDeviceScaleFactor(const Layer* layer);
22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Utility functions that convert point/size/rect between
24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// DIP and pixel coordinates system.
25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochCOMPOSITOR_EXPORT gfx::Point ConvertPointToDIP(
26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const Layer* layer,
27eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const gfx::Point& point_in_pixel);
28eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochCOMPOSITOR_EXPORT gfx::PointF ConvertPointToDIP(
29eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const Layer* layer,
30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const gfx::PointF& point_in_pixel);
31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochCOMPOSITOR_EXPORT gfx::Size ConvertSizeToDIP(
32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const Layer* layer,
33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const gfx::Size& size_in_pixel);
34eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochCOMPOSITOR_EXPORT gfx::Rect ConvertRectToDIP(
35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const Layer* layer,
36eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const gfx::Rect& rect_in_pixel);
37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochCOMPOSITOR_EXPORT gfx::Point ConvertPointToPixel(
38eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const Layer* layer,
39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const gfx::Point& point_in_dip);
40eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochCOMPOSITOR_EXPORT gfx::Size ConvertSizeToPixel(
41eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const Layer* layer,
42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const gfx::Size& size_in_dip);
43eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochCOMPOSITOR_EXPORT gfx::Rect ConvertRectToPixel(
44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const Layer* layer,
45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    const gfx::Rect& rect_in_dip);
46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Snaps the |layer_to_snap| to the physical pixel boundary.
48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// |snapped_layer| is a reference layer that should also be
49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// snapped at the pysical pixel boundary.
50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen MurdochCOMPOSITOR_EXPORT void SnapLayerToPhysicalPixelBoundary(
51eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    ui::Layer* snapped_layer,
52eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    ui::Layer* layer_to_snap);
53eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
54eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}  // namespace ui
55eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
56eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif  // UI_COMPOSITOR_DIP_UTIL_H_
57eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch