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 11 matching lines...) Expand all Loading... |
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 Loading... |
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 |
OLD | NEW |