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

Side by Side Diff: cc/picture_layer_impl.cc

Issue 11649005: cc: Support anti-aliasing for solid color layers. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase and add DrawQuad::AntiAliasing struct. Created 7 years, 11 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "cc/picture_layer_impl.h" 5 #include "cc/picture_layer_impl.h"
6 6
7 #include "base/time.h" 7 #include "base/time.h"
8 #include "cc/append_quads_data.h" 8 #include "cc/append_quads_data.h"
9 #include "cc/checkerboard_draw_quad.h" 9 #include "cc/checkerboard_draw_quad.h"
10 #include "cc/debug_border_draw_quad.h" 10 #include "cc/debug_border_draw_quad.h"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 76
77 for (PictureLayerTilingSet::Iterator iter(&tilings_, contentsScaleX(), rect); 77 for (PictureLayerTilingSet::Iterator iter(&tilings_, contentsScaleX(), rect);
78 iter; 78 iter;
79 ++iter) { 79 ++iter) {
80 ResourceProvider::ResourceId resource = 0; 80 ResourceProvider::ResourceId resource = 0;
81 if (*iter) 81 if (*iter)
82 resource = iter->GetResourceId(); 82 resource = iter->GetResourceId();
83 83
84 gfx::Rect geometry_rect = iter.geometry_rect(); 84 gfx::Rect geometry_rect = iter.geometry_rect();
85 85
86 bool outside_left_edge = geometry_rect.x() == content_rect.x();
87 bool outside_top_edge = geometry_rect.y() == content_rect.y();
88 bool outside_right_edge = geometry_rect.right() == content_rect.right();
89 bool outside_bottom_edge = geometry_rect.bottom() == content_rect.bottom();
90
86 if (!resource) { 91 if (!resource) {
87 if (drawCheckerboardForMissingTiles()) { 92 if (drawCheckerboardForMissingTiles()) {
88 // TODO(enne): Figure out how to show debug "invalidated checker" color 93 // TODO(enne): Figure out how to show debug "invalidated checker" color
89 scoped_ptr<CheckerboardDrawQuad> quad = CheckerboardDrawQuad::Create(); 94 scoped_ptr<CheckerboardDrawQuad> quad = CheckerboardDrawQuad::Create();
90 SkColor color = DebugColors::DefaultCheckerboardColor(); 95 SkColor color = DebugColors::DefaultCheckerboardColor();
91 quad->SetNew(sharedQuadState, geometry_rect, color); 96 quad->SetNew(sharedQuadState, geometry_rect, color);
92 if (quadSink.append(quad.PassAs<DrawQuad>(), appendQuadsData)) 97 if (quadSink.append(quad.PassAs<DrawQuad>(), appendQuadsData))
93 appendQuadsData.numMissingTiles++; 98 appendQuadsData.numMissingTiles++;
94 } else { 99 } else {
95 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create(); 100 scoped_ptr<SolidColorDrawQuad> quad = SolidColorDrawQuad::Create();
96 quad->SetNew(sharedQuadState, geometry_rect, backgroundColor()); 101 quad->SetNew(sharedQuadState, geometry_rect,
102 DrawQuad::AntiAliasing(outside_left_edge && useAA,
103 outside_top_edge && useAA,
104 outside_right_edge && useAA,
105 outside_bottom_edge && useAA),
106 backgroundColor());
97 if (quadSink.append(quad.PassAs<DrawQuad>(), appendQuadsData)) 107 if (quadSink.append(quad.PassAs<DrawQuad>(), appendQuadsData))
98 appendQuadsData.numMissingTiles++; 108 appendQuadsData.numMissingTiles++;
99 } 109 }
100 continue; 110 continue;
101 } 111 }
102 112
103 gfx::RectF texture_rect = iter.texture_rect(); 113 gfx::RectF texture_rect = iter.texture_rect();
104 gfx::Rect opaque_rect = iter->opaque_rect(); 114 gfx::Rect opaque_rect = iter->opaque_rect();
105 opaque_rect.Intersect(content_rect); 115 opaque_rect.Intersect(content_rect);
106 116
107 bool outside_left_edge = geometry_rect.x() == content_rect.x();
108 bool outside_top_edge = geometry_rect.y() == content_rect.y();
109 bool outside_right_edge = geometry_rect.right() == content_rect.right();
110 bool outside_bottom_edge = geometry_rect.bottom() == content_rect.bottom();
111
112 scoped_ptr<TileDrawQuad> quad = TileDrawQuad::Create(); 117 scoped_ptr<TileDrawQuad> quad = TileDrawQuad::Create();
113 quad->SetNew(sharedQuadState, 118 quad->SetNew(sharedQuadState,
114 geometry_rect, 119 geometry_rect,
115 opaque_rect, 120 opaque_rect,
121 DrawQuad::AntiAliasing(outside_left_edge && useAA,
122 outside_top_edge && useAA,
123 outside_right_edge && useAA,
124 outside_bottom_edge && useAA),
116 resource, 125 resource,
117 texture_rect, 126 texture_rect,
118 iter.texture_size(), 127 iter.texture_size(),
119 iter->contents_swizzled(), 128 iter->contents_swizzled());
120 outside_left_edge && useAA,
121 outside_top_edge && useAA,
122 outside_right_edge && useAA,
123 outside_bottom_edge && useAA);
124 quadSink.append(quad.PassAs<DrawQuad>(), appendQuadsData); 129 quadSink.append(quad.PassAs<DrawQuad>(), appendQuadsData);
125 } 130 }
126 } 131 }
127 132
128 void PictureLayerImpl::dumpLayerProperties(std::string*, int indent) const { 133 void PictureLayerImpl::dumpLayerProperties(std::string*, int indent) const {
129 // TODO(enne): implement me 134 // TODO(enne): implement me
130 } 135 }
131 136
132 void PictureLayerImpl::didUpdateTransforms() { 137 void PictureLayerImpl::didUpdateTransforms() {
133 gfx::Transform current_screen_space_transform = 138 gfx::Transform current_screen_space_transform =
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
287 AddTiling(ideal_contents_scale, TileSize()); 292 AddTiling(ideal_contents_scale, TileSize());
288 // TODO(enne): Add a low-res tiling as well. 293 // TODO(enne): Add a low-res tiling as well.
289 } 294 }
290 } else { 295 } else {
291 // TODO(enne): This should be unnecessary once there are two trees. 296 // TODO(enne): This should be unnecessary once there are two trees.
292 tilings_.Reset(); 297 tilings_.Reset();
293 } 298 }
294 } 299 }
295 300
296 } // namespace cc 301 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698