OLD | NEW |
---|---|
(Empty) | |
1 // Copyright (c) 2017 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #ifndef UI_COMPOSITOR_PAINT_INFO_H_ | |
6 #define UI_COMPOSITOR_PAINT_INFO_H_ | |
7 | |
8 #include "ui/compositor/paint_context.h" | |
9 #include "ui/gfx/geometry/rect.h" | |
10 | |
11 namespace ui { | |
12 | |
13 class COMPOSITOR_EXPORT PaintInfo { | |
danakj
2017/07/21 17:29:39
move this to ui/views/? It's not used by composito
malaykeshav
2017/07/21 23:30:17
Done
| |
14 public: | |
15 enum class ScaleType { | |
16 // Scales the context by the default dsf. Use this if you dont want any form | |
17 // of distortion during scaling. | |
18 kScaleToScaleFactor = 0, | |
19 | |
20 // Scales the context based on the effective dsf. This may lead to minor | |
21 // distortion during scaling due to edge snapping. | |
22 kScaleToFit | |
23 }; | |
24 | |
25 PaintInfo(const PaintContext& context, const gfx::Size& size); | |
26 PaintInfo(const PaintInfo& other, | |
27 const gfx::Rect& bounds, | |
28 const gfx::Rect& parent_bounds, | |
29 ScaleType scale_type); | |
30 PaintInfo(const PaintInfo& other); | |
31 ~PaintInfo(); | |
32 | |
33 const PaintContext& context() const { | |
34 return root_context_ ? *root_context_ : context_; | |
35 } | |
36 | |
37 gfx::Vector2d offset_from_root() const { | |
38 return paint_recording_bounds_.OffsetFromOrigin(); | |
39 } | |
40 | |
41 static bool IsPixelCanvas(); | |
42 | |
43 gfx::Vector2d offset_from_parent() const { return offset_from_parent_; } | |
44 | |
45 gfx::PointF paint_recording_scale() const { | |
46 return gfx::PointF(paint_recording_scale_x_, paint_recording_scale_y_); | |
47 } | |
48 | |
49 const gfx::Size& paint_recording_size() const { | |
50 return paint_recording_bounds_.size(); | |
51 } | |
52 | |
53 const gfx::Rect& paint_recording_bounds() const { | |
54 return paint_recording_bounds_; | |
55 } | |
56 | |
57 private: | |
58 // The scale at which the paint commands are recorded at. Due to the decimal | |
59 // rounding and snapping to edges during scaling operations, the effective | |
60 // paint recording scale may end up being slightly different between the x and | |
61 // y axis. | |
62 float paint_recording_scale_x_; | |
63 float paint_recording_scale_y_; | |
64 | |
65 // Paint Recording bounds for this view. The offset is relative to the root | |
66 // paint context. | |
67 const gfx::Rect paint_recording_bounds_; | |
68 | |
69 // Offset relative to the parent paint context. | |
70 gfx::Vector2d offset_from_parent_; | |
71 | |
72 // PaintContext associated with the view this object belongs to. | |
73 PaintContext context_; | |
74 const PaintContext* root_context_; | |
75 | |
76 // Given the DIP |size|, this function updates the paint recording scales. | |
77 void ComputePaintRecordingScales(const gfx::Size& size, ScaleType scale_type); | |
78 | |
79 // Scales the |child_bounds| to its recording bounds based on the | |
80 // |context.device_scale_factor()|. The recording bounds are snapped to the | |
81 // |parent_bound|'s right and/or bottom edge if required. | |
82 // If pixel canvas is disabled, this function returns |child_bounds| as is. | |
83 gfx::Rect GetSnappedRecordingBounds(const gfx::Rect& parent_bounds, | |
84 const gfx::Rect& child_bounds) const; | |
85 }; | |
86 | |
87 } // namespace ui | |
88 | |
89 #endif // UI_COMPOSITOR_PAINT_INFO_H_ | |
OLD | NEW |