OLD | NEW |
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 12 matching lines...) Expand all Loading... |
23 resource_provider_(resource_provider) { | 23 resource_provider_(resource_provider) { |
24 } | 24 } |
25 | 25 |
26 OverlayStrategyCommon::~OverlayStrategyCommon() { | 26 OverlayStrategyCommon::~OverlayStrategyCommon() { |
27 } | 27 } |
28 | 28 |
29 bool OverlayStrategyCommon::IsOverlayQuad(const DrawQuad* draw_quad) { | 29 bool OverlayStrategyCommon::IsOverlayQuad(const DrawQuad* draw_quad) { |
30 unsigned int resource_id; | 30 unsigned int resource_id; |
31 switch (draw_quad->material) { | 31 switch (draw_quad->material) { |
32 case DrawQuad::TEXTURE_CONTENT: | 32 case DrawQuad::TEXTURE_CONTENT: |
33 resource_id = TextureDrawQuad::MaterialCast(draw_quad)->resource_id; | 33 resource_id = TextureDrawQuad::MaterialCast(draw_quad)->resource_id(); |
34 break; | 34 break; |
35 case DrawQuad::STREAM_VIDEO_CONTENT: | 35 case DrawQuad::STREAM_VIDEO_CONTENT: |
36 resource_id = StreamVideoDrawQuad::MaterialCast(draw_quad)->resource_id; | 36 resource_id = StreamVideoDrawQuad::MaterialCast(draw_quad)->resource_id(); |
37 break; | 37 break; |
38 default: | 38 default: |
39 return false; | 39 return false; |
40 } | 40 } |
41 return resource_provider_->AllowOverlay(resource_id); | 41 return resource_provider_->AllowOverlay(resource_id); |
42 } | 42 } |
43 | 43 |
44 bool OverlayStrategyCommon::IsInvisibleQuad(const DrawQuad* draw_quad) { | 44 bool OverlayStrategyCommon::IsInvisibleQuad(const DrawQuad* draw_quad) { |
45 if (draw_quad->material == DrawQuad::SOLID_COLOR) { | 45 if (draw_quad->material == DrawQuad::SOLID_COLOR) { |
46 const SolidColorDrawQuad* solid_quad = | 46 const SolidColorDrawQuad* solid_quad = |
47 SolidColorDrawQuad::MaterialCast(draw_quad); | 47 SolidColorDrawQuad::MaterialCast(draw_quad); |
48 SkColor color = solid_quad->color; | 48 SkColor color = solid_quad->color; |
49 float opacity = solid_quad->opacity(); | 49 float opacity = solid_quad->opacity(); |
50 float alpha = (SkColorGetA(color) * (1.0f / 255.0f)) * opacity; | 50 float alpha = (SkColorGetA(color) * (1.0f / 255.0f)) * opacity; |
51 return solid_quad->ShouldDrawWithBlending() && | 51 return solid_quad->ShouldDrawWithBlending() && |
52 alpha < std::numeric_limits<float>::epsilon(); | 52 alpha < std::numeric_limits<float>::epsilon(); |
53 } | 53 } |
54 return false; | 54 return false; |
55 } | 55 } |
56 | 56 |
57 bool OverlayStrategyCommon::GetTextureQuadInfo(const TextureDrawQuad& quad, | 57 bool OverlayStrategyCommon::GetTextureQuadInfo(const TextureDrawQuad& quad, |
58 OverlayCandidate* quad_info) { | 58 OverlayCandidate* quad_info) { |
59 gfx::OverlayTransform overlay_transform = | 59 gfx::OverlayTransform overlay_transform = |
60 OverlayCandidate::GetOverlayTransform(quad.quadTransform(), | 60 OverlayCandidate::GetOverlayTransform(quad.quadTransform(), |
61 quad.y_flipped); | 61 quad.y_flipped); |
62 if (quad.background_color != SK_ColorTRANSPARENT || | 62 if (quad.background_color != SK_ColorTRANSPARENT || |
63 quad.premultiplied_alpha || | 63 quad.premultiplied_alpha || |
64 overlay_transform == gfx::OVERLAY_TRANSFORM_INVALID) | 64 overlay_transform == gfx::OVERLAY_TRANSFORM_INVALID) |
65 return false; | 65 return false; |
66 quad_info->resource_id = quad.resource_id; | 66 quad_info->resource_id = quad.resource_id(); |
67 quad_info->transform = overlay_transform; | 67 quad_info->transform = overlay_transform; |
68 quad_info->uv_rect = BoundingRect(quad.uv_top_left, quad.uv_bottom_right); | 68 quad_info->uv_rect = BoundingRect(quad.uv_top_left, quad.uv_bottom_right); |
69 return true; | 69 return true; |
70 } | 70 } |
71 | 71 |
72 bool OverlayStrategyCommon::GetVideoQuadInfo(const StreamVideoDrawQuad& quad, | 72 bool OverlayStrategyCommon::GetVideoQuadInfo(const StreamVideoDrawQuad& quad, |
73 OverlayCandidate* quad_info) { | 73 OverlayCandidate* quad_info) { |
74 gfx::OverlayTransform overlay_transform = | 74 gfx::OverlayTransform overlay_transform = |
75 OverlayCandidate::GetOverlayTransform(quad.quadTransform(), false); | 75 OverlayCandidate::GetOverlayTransform(quad.quadTransform(), false); |
76 if (overlay_transform == gfx::OVERLAY_TRANSFORM_INVALID) | 76 if (overlay_transform == gfx::OVERLAY_TRANSFORM_INVALID) |
77 return false; | 77 return false; |
78 if (!quad.matrix.IsScaleOrTranslation()) { | 78 if (!quad.matrix.IsScaleOrTranslation()) { |
79 // We cannot handle anything other than scaling & translation for texture | 79 // We cannot handle anything other than scaling & translation for texture |
80 // coordinates yet. | 80 // coordinates yet. |
81 return false; | 81 return false; |
82 } | 82 } |
83 quad_info->resource_id = quad.resource_id; | 83 quad_info->resource_id = quad.resource_id(); |
84 quad_info->transform = overlay_transform; | 84 quad_info->transform = overlay_transform; |
85 | 85 |
86 gfx::Point3F uv0 = gfx::Point3F(0, 0, 0); | 86 gfx::Point3F uv0 = gfx::Point3F(0, 0, 0); |
87 gfx::Point3F uv1 = gfx::Point3F(1, 1, 0); | 87 gfx::Point3F uv1 = gfx::Point3F(1, 1, 0); |
88 quad.matrix.TransformPoint(&uv0); | 88 quad.matrix.TransformPoint(&uv0); |
89 quad.matrix.TransformPoint(&uv1); | 89 quad.matrix.TransformPoint(&uv1); |
90 gfx::Vector3dF delta = uv1 - uv0; | 90 gfx::Vector3dF delta = uv1 - uv0; |
91 if (delta.x() < 0) { | 91 if (delta.x() < 0) { |
92 quad_info->transform = OverlayCandidate::ModifyTransform( | 92 quad_info->transform = OverlayCandidate::ModifyTransform( |
93 quad_info->transform, gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL); | 93 quad_info->transform, gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL); |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 return false; | 128 return false; |
129 } | 129 } |
130 | 130 |
131 quad_info->format = RGBA_8888; | 131 quad_info->format = RGBA_8888; |
132 quad_info->display_rect = OverlayCandidate::GetOverlayRect( | 132 quad_info->display_rect = OverlayCandidate::GetOverlayRect( |
133 draw_quad.quadTransform(), draw_quad.rect); | 133 draw_quad.quadTransform(), draw_quad.rect); |
134 return true; | 134 return true; |
135 } | 135 } |
136 | 136 |
137 } // namespace cc | 137 } // namespace cc |
OLD | NEW |