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

Side by Side Diff: cc/output/overlay_strategy_common.cc

Issue 1152473006: cc: Remove DrawQuad::IterateResoruces (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: iterators! Created 5 years, 6 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
OLDNEW
1 // Copyright 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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/output/overlay_strategy_common.h" 5 #include "cc/output/overlay_strategy_common.h"
6 6
7 #include <limits> 7 #include <limits>
8 8
9 #include "cc/quads/solid_color_draw_quad.h" 9 #include "cc/quads/solid_color_draw_quad.h"
10 #include "cc/quads/stream_video_draw_quad.h" 10 #include "cc/quads/stream_video_draw_quad.h"
(...skipping 11 matching lines...) Expand all
22 resource_provider_(resource_provider) { 22 resource_provider_(resource_provider) {
23 } 23 }
24 24
25 OverlayStrategyCommon::~OverlayStrategyCommon() { 25 OverlayStrategyCommon::~OverlayStrategyCommon() {
26 } 26 }
27 27
28 bool OverlayStrategyCommon::IsOverlayQuad(const DrawQuad* draw_quad) { 28 bool OverlayStrategyCommon::IsOverlayQuad(const DrawQuad* draw_quad) {
29 unsigned int resource_id; 29 unsigned int resource_id;
30 switch (draw_quad->material) { 30 switch (draw_quad->material) {
31 case DrawQuad::TEXTURE_CONTENT: 31 case DrawQuad::TEXTURE_CONTENT:
32 resource_id = TextureDrawQuad::MaterialCast(draw_quad)->resource_id; 32 resource_id = TextureDrawQuad::MaterialCast(draw_quad)->resource_id();
33 break; 33 break;
34 case DrawQuad::STREAM_VIDEO_CONTENT: 34 case DrawQuad::STREAM_VIDEO_CONTENT:
35 resource_id = StreamVideoDrawQuad::MaterialCast(draw_quad)->resource_id; 35 resource_id = StreamVideoDrawQuad::MaterialCast(draw_quad)->resource_id();
36 break; 36 break;
37 default: 37 default:
38 return false; 38 return false;
39 } 39 }
40 return resource_provider_->AllowOverlay(resource_id); 40 return resource_provider_->AllowOverlay(resource_id);
41 } 41 }
42 42
43 bool OverlayStrategyCommon::IsInvisibleQuad(const DrawQuad* draw_quad) { 43 bool OverlayStrategyCommon::IsInvisibleQuad(const DrawQuad* draw_quad) {
44 if (draw_quad->material == DrawQuad::SOLID_COLOR) { 44 if (draw_quad->material == DrawQuad::SOLID_COLOR) {
45 const SolidColorDrawQuad* solid_quad = 45 const SolidColorDrawQuad* solid_quad =
46 SolidColorDrawQuad::MaterialCast(draw_quad); 46 SolidColorDrawQuad::MaterialCast(draw_quad);
47 SkColor color = solid_quad->color; 47 SkColor color = solid_quad->color;
48 float opacity = solid_quad->opacity(); 48 float opacity = solid_quad->opacity();
49 float alpha = (SkColorGetA(color) * (1.0f / 255.0f)) * opacity; 49 float alpha = (SkColorGetA(color) * (1.0f / 255.0f)) * opacity;
50 return solid_quad->ShouldDrawWithBlending() && 50 return solid_quad->ShouldDrawWithBlending() &&
51 alpha < std::numeric_limits<float>::epsilon(); 51 alpha < std::numeric_limits<float>::epsilon();
52 } 52 }
53 return false; 53 return false;
54 } 54 }
55 55
56 bool OverlayStrategyCommon::GetTextureQuadInfo(const TextureDrawQuad& quad, 56 bool OverlayStrategyCommon::GetTextureQuadInfo(const TextureDrawQuad& quad,
57 OverlayCandidate* quad_info) { 57 OverlayCandidate* quad_info) {
58 gfx::OverlayTransform overlay_transform = 58 gfx::OverlayTransform overlay_transform =
59 OverlayCandidate::GetOverlayTransform(quad.quadTransform(), 59 OverlayCandidate::GetOverlayTransform(quad.quadTransform(),
60 quad.y_flipped); 60 quad.y_flipped);
61 if (quad.background_color != SK_ColorTRANSPARENT || 61 if (quad.background_color != SK_ColorTRANSPARENT ||
62 quad.premultiplied_alpha || 62 quad.premultiplied_alpha ||
63 overlay_transform == gfx::OVERLAY_TRANSFORM_INVALID) 63 overlay_transform == gfx::OVERLAY_TRANSFORM_INVALID)
64 return false; 64 return false;
65 quad_info->resource_id = quad.resource_id; 65 quad_info->resource_id = quad.resource_id();
66 quad_info->transform = overlay_transform; 66 quad_info->transform = overlay_transform;
67 quad_info->uv_rect = BoundingRect(quad.uv_top_left, quad.uv_bottom_right); 67 quad_info->uv_rect = BoundingRect(quad.uv_top_left, quad.uv_bottom_right);
68 return true; 68 return true;
69 } 69 }
70 70
71 bool OverlayStrategyCommon::GetVideoQuadInfo(const StreamVideoDrawQuad& quad, 71 bool OverlayStrategyCommon::GetVideoQuadInfo(const StreamVideoDrawQuad& quad,
72 OverlayCandidate* quad_info) { 72 OverlayCandidate* quad_info) {
73 gfx::OverlayTransform overlay_transform = 73 gfx::OverlayTransform overlay_transform =
74 OverlayCandidate::GetOverlayTransform(quad.quadTransform(), false); 74 OverlayCandidate::GetOverlayTransform(quad.quadTransform(), false);
75 if (overlay_transform == gfx::OVERLAY_TRANSFORM_INVALID) 75 if (overlay_transform == gfx::OVERLAY_TRANSFORM_INVALID)
76 return false; 76 return false;
77 if (!quad.matrix.IsScaleOrTranslation()) { 77 if (!quad.matrix.IsScaleOrTranslation()) {
78 // We cannot handle anything other than scaling & translation for texture 78 // We cannot handle anything other than scaling & translation for texture
79 // coordinates yet. 79 // coordinates yet.
80 return false; 80 return false;
81 } 81 }
82 quad_info->resource_id = quad.resource_id; 82 quad_info->resource_id = quad.resource_id();
83 quad_info->transform = overlay_transform; 83 quad_info->transform = overlay_transform;
84 84
85 gfx::Point3F uv0 = gfx::Point3F(0, 0, 0); 85 gfx::Point3F uv0 = gfx::Point3F(0, 0, 0);
86 gfx::Point3F uv1 = gfx::Point3F(1, 1, 0); 86 gfx::Point3F uv1 = gfx::Point3F(1, 1, 0);
87 quad.matrix.TransformPoint(&uv0); 87 quad.matrix.TransformPoint(&uv0);
88 quad.matrix.TransformPoint(&uv1); 88 quad.matrix.TransformPoint(&uv1);
89 gfx::Vector3dF delta = uv1 - uv0; 89 gfx::Vector3dF delta = uv1 - uv0;
90 if (delta.x() < 0) { 90 if (delta.x() < 0) {
91 quad_info->transform = OverlayCandidate::ModifyTransform( 91 quad_info->transform = OverlayCandidate::ModifyTransform(
92 quad_info->transform, gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL); 92 quad_info->transform, gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL);
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 return false; 127 return false;
128 } 128 }
129 129
130 quad_info->format = RGBA_8888; 130 quad_info->format = RGBA_8888;
131 quad_info->display_rect = OverlayCandidate::GetOverlayRect( 131 quad_info->display_rect = OverlayCandidate::GetOverlayRect(
132 draw_quad.quadTransform(), draw_quad.rect); 132 draw_quad.quadTransform(), draw_quad.rect);
133 return true; 133 return true;
134 } 134 }
135 135
136 } // namespace cc 136 } // namespace cc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698