Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(137)

Side by Side Diff: cc/layers/painted_overlay_scrollbar_layer_impl.cc

Issue 2591863003: Use nine-patch resource for drawing Aura overlay scrollbar thumb. (Closed)
Patch Set: Move CheckGeometryLimitations back to where it used to be (AppendQuads) Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « cc/layers/painted_overlay_scrollbar_layer_impl.h ('k') | cc/quads/nine_patch_generator.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2016 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 #include "cc/layers/painted_overlay_scrollbar_layer_impl.h"
6
7 namespace cc {
8
9 std::unique_ptr<PaintedOverlayScrollbarLayerImpl>
10 PaintedOverlayScrollbarLayerImpl::Create(LayerTreeImpl* tree_impl,
11 int id,
12 ScrollbarOrientation orientation,
13 bool is_left_side_vertical_scrollbar) {
14 return base::WrapUnique(new PaintedOverlayScrollbarLayerImpl(
15 tree_impl, id, orientation, is_left_side_vertical_scrollbar));
16 }
17
18 PaintedOverlayScrollbarLayerImpl::PaintedOverlayScrollbarLayerImpl(
19 LayerTreeImpl* tree_impl,
20 int id,
21 ScrollbarOrientation orientation,
22 bool is_left_side_vertical_scrollbar)
23 : ScrollbarLayerImplBase(tree_impl,
24 id,
25 orientation,
26 is_left_side_vertical_scrollbar,
27 true),
28 thumb_ui_resource_id_(0),
29 thumb_thickness_(0),
30 thumb_length_(0),
31 track_start_(0),
32 track_length_(0) {}
33
34 PaintedOverlayScrollbarLayerImpl::~PaintedOverlayScrollbarLayerImpl() {}
35
36 std::unique_ptr<LayerImpl> PaintedOverlayScrollbarLayerImpl::CreateLayerImpl(
37 LayerTreeImpl* tree_impl) {
38 return PaintedOverlayScrollbarLayerImpl::Create(
39 tree_impl, id(), orientation(), is_left_side_vertical_scrollbar());
40 }
41
42 void PaintedOverlayScrollbarLayerImpl::PushPropertiesTo(LayerImpl* layer) {
43 ScrollbarLayerImplBase::PushPropertiesTo(layer);
44
45 PaintedOverlayScrollbarLayerImpl* scrollbar_layer =
46 static_cast<PaintedOverlayScrollbarLayerImpl*>(layer);
47
48 scrollbar_layer->SetThumbThickness(thumb_thickness_);
49 scrollbar_layer->SetThumbLength(thumb_length_);
50 scrollbar_layer->SetTrackStart(track_start_);
51 scrollbar_layer->SetTrackLength(track_length_);
52
53 scrollbar_layer->SetImageBounds(image_bounds_);
54 scrollbar_layer->SetAperture(aperture_);
55
56 scrollbar_layer->set_thumb_ui_resource_id(thumb_ui_resource_id_);
57 }
58
59 bool PaintedOverlayScrollbarLayerImpl::WillDraw(
60 DrawMode draw_mode,
61 ResourceProvider* resource_provider) {
62 DCHECK(draw_mode != DRAW_MODE_RESOURCELESS_SOFTWARE);
63 return LayerImpl::WillDraw(draw_mode, resource_provider);
64 }
65
66 void PaintedOverlayScrollbarLayerImpl::AppendQuads(
67 RenderPass* render_pass,
68 AppendQuadsData* append_quads_data) {
69 // For overlay scrollbars, the border should match the inset of the aperture
70 // and be symmetrical.
71 gfx::Rect border(aperture_.x(), aperture_.y(), aperture_.x() * 2,
72 aperture_.y() * 2);
73 gfx::Rect thumb_quad_rect(ComputeThumbQuadRect());
74 gfx::Rect layer_occlusion;
75 bool fill_center = true;
76 bool nearest_neighbor = false;
77
78 quad_generator_.SetLayout(image_bounds_, thumb_quad_rect.size(), aperture_,
79 border, layer_occlusion, fill_center,
80 nearest_neighbor);
81 quad_generator_.CheckGeometryLimitations();
82
83 SharedQuadState* shared_quad_state =
84 render_pass->CreateAndAppendSharedQuadState();
85 PopulateSharedQuadState(shared_quad_state);
86
87 AppendDebugBorderQuad(render_pass, bounds(), shared_quad_state,
88 append_quads_data);
89
90 std::vector<NinePatchGenerator::Patch> patches =
91 quad_generator_.GeneratePatches();
92
93 gfx::Vector2dF offset = thumb_quad_rect.OffsetFromOrigin();
94 for (auto& patch : patches)
95 patch.output_rect += offset;
96
97 quad_generator_.AppendQuads(this, thumb_ui_resource_id_, render_pass,
98 shared_quad_state, patches);
99 }
100
101 void PaintedOverlayScrollbarLayerImpl::SetThumbThickness(int thumb_thickness) {
102 if (thumb_thickness_ == thumb_thickness)
103 return;
104 thumb_thickness_ = thumb_thickness;
105 NoteLayerPropertyChanged();
106 }
107
108 int PaintedOverlayScrollbarLayerImpl::ThumbThickness() const {
109 return thumb_thickness_;
110 }
111
112 void PaintedOverlayScrollbarLayerImpl::SetThumbLength(int thumb_length) {
113 if (thumb_length_ == thumb_length)
114 return;
115 thumb_length_ = thumb_length;
116 NoteLayerPropertyChanged();
117 }
118
119 int PaintedOverlayScrollbarLayerImpl::ThumbLength() const {
120 return thumb_length_;
121 }
122
123 void PaintedOverlayScrollbarLayerImpl::SetTrackStart(int track_start) {
124 if (track_start_ == track_start)
125 return;
126 track_start_ = track_start;
127 NoteLayerPropertyChanged();
128 }
129
130 int PaintedOverlayScrollbarLayerImpl::TrackStart() const {
131 return track_start_;
132 }
133
134 void PaintedOverlayScrollbarLayerImpl::SetTrackLength(int track_length) {
135 if (track_length_ == track_length)
136 return;
137 track_length_ = track_length;
138 NoteLayerPropertyChanged();
139 }
140
141 void PaintedOverlayScrollbarLayerImpl::SetImageBounds(const gfx::Size& bounds) {
142 if (image_bounds_ == bounds)
143 return;
144 image_bounds_ = bounds;
145 NoteLayerPropertyChanged();
146 }
147
148 void PaintedOverlayScrollbarLayerImpl::SetAperture(const gfx::Rect& aperture) {
149 if (aperture_ == aperture)
150 return;
151 aperture_ = aperture;
152 NoteLayerPropertyChanged();
153 }
154
155 float PaintedOverlayScrollbarLayerImpl::TrackLength() const {
156 return track_length_ + (orientation() == VERTICAL ? vertical_adjust() : 0);
157 }
158
159 bool PaintedOverlayScrollbarLayerImpl::IsThumbResizable() const {
160 return false;
161 }
162
163 const char* PaintedOverlayScrollbarLayerImpl::LayerTypeAsString() const {
164 return "cc::PaintedOverlayScrollbarLayerImpl";
165 }
166
167 } // namespace cc
OLDNEW
« no previous file with comments | « cc/layers/painted_overlay_scrollbar_layer_impl.h ('k') | cc/quads/nine_patch_generator.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698