| 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/base/math_util.h" | 9 #include "cc/base/math_util.h" |
| 10 #include "cc/quads/io_surface_draw_quad.h" | 10 #include "cc/quads/io_surface_draw_quad.h" |
| (...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 94 OverlayCandidate::GetOverlayTransform( | 94 OverlayCandidate::GetOverlayTransform( |
| 95 quad.shared_quad_state->quad_to_target_transform, quad.y_flipped); | 95 quad.shared_quad_state->quad_to_target_transform, quad.y_flipped); |
| 96 if (quad.background_color != SK_ColorTRANSPARENT || | 96 if (quad.background_color != SK_ColorTRANSPARENT || |
| 97 quad.premultiplied_alpha || | 97 quad.premultiplied_alpha || |
| 98 overlay_transform == gfx::OVERLAY_TRANSFORM_INVALID) | 98 overlay_transform == gfx::OVERLAY_TRANSFORM_INVALID) |
| 99 return false; | 99 return false; |
| 100 quad_info->resource_id = quad.resource_id(); | 100 quad_info->resource_id = quad.resource_id(); |
| 101 quad_info->resource_size_in_pixels = quad.resource_size_in_pixels(); | 101 quad_info->resource_size_in_pixels = quad.resource_size_in_pixels(); |
| 102 quad_info->transform = overlay_transform; | 102 quad_info->transform = overlay_transform; |
| 103 quad_info->uv_rect = BoundingRect(quad.uv_top_left, quad.uv_bottom_right); | 103 quad_info->uv_rect = BoundingRect(quad.uv_top_left, quad.uv_bottom_right); |
| 104 quad_info->quad_rect_in_target_space = MathUtil::MapEnclosingClippedRect( | |
| 105 quad.shared_quad_state->quad_to_target_transform, quad.rect); | |
| 106 quad_info->clip_rect = quad.shared_quad_state->clip_rect; | |
| 107 quad_info->is_clipped = quad.shared_quad_state->is_clipped; | |
| 108 return true; | 104 return true; |
| 109 } | 105 } |
| 110 | 106 |
| 111 bool OverlayStrategyCommon::GetVideoQuadInfo(const StreamVideoDrawQuad& quad, | 107 bool OverlayStrategyCommon::GetVideoQuadInfo(const StreamVideoDrawQuad& quad, |
| 112 OverlayCandidate* quad_info) { | 108 OverlayCandidate* quad_info) { |
| 113 if (!quad.allow_overlay()) | 109 if (!quad.allow_overlay()) |
| 114 return false; | 110 return false; |
| 115 gfx::OverlayTransform overlay_transform = | 111 gfx::OverlayTransform overlay_transform = |
| 116 OverlayCandidate::GetOverlayTransform( | 112 OverlayCandidate::GetOverlayTransform( |
| 117 quad.shared_quad_state->quad_to_target_transform, false); | 113 quad.shared_quad_state->quad_to_target_transform, false); |
| 118 if (overlay_transform == gfx::OVERLAY_TRANSFORM_INVALID) | 114 if (overlay_transform == gfx::OVERLAY_TRANSFORM_INVALID) |
| 119 return false; | 115 return false; |
| 120 if (!quad.matrix.IsScaleOrTranslation()) { | 116 if (!quad.matrix.IsScaleOrTranslation()) { |
| 121 // We cannot handle anything other than scaling & translation for texture | 117 // We cannot handle anything other than scaling & translation for texture |
| 122 // coordinates yet. | 118 // coordinates yet. |
| 123 return false; | 119 return false; |
| 124 } | 120 } |
| 125 quad_info->resource_id = quad.resource_id(); | 121 quad_info->resource_id = quad.resource_id(); |
| 126 quad_info->resource_size_in_pixels = quad.resource_size_in_pixels(); | 122 quad_info->resource_size_in_pixels = quad.resource_size_in_pixels(); |
| 127 quad_info->transform = overlay_transform; | 123 quad_info->transform = overlay_transform; |
| 128 quad_info->quad_rect_in_target_space = MathUtil::MapEnclosingClippedRect( | |
| 129 quad.shared_quad_state->quad_to_target_transform, quad.rect); | |
| 130 quad_info->clip_rect = quad.shared_quad_state->clip_rect; | |
| 131 quad_info->is_clipped = quad.shared_quad_state->is_clipped; | |
| 132 | 124 |
| 133 gfx::Point3F uv0 = gfx::Point3F(0, 0, 0); | 125 gfx::Point3F uv0 = gfx::Point3F(0, 0, 0); |
| 134 gfx::Point3F uv1 = gfx::Point3F(1, 1, 0); | 126 gfx::Point3F uv1 = gfx::Point3F(1, 1, 0); |
| 135 quad.matrix.TransformPoint(&uv0); | 127 quad.matrix.TransformPoint(&uv0); |
| 136 quad.matrix.TransformPoint(&uv1); | 128 quad.matrix.TransformPoint(&uv1); |
| 137 gfx::Vector3dF delta = uv1 - uv0; | 129 gfx::Vector3dF delta = uv1 - uv0; |
| 138 if (delta.x() < 0) { | 130 if (delta.x() < 0) { |
| 139 quad_info->transform = OverlayCandidate::ModifyTransform( | 131 quad_info->transform = OverlayCandidate::ModifyTransform( |
| 140 quad_info->transform, gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL); | 132 quad_info->transform, gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL); |
| 141 float x0 = uv0.x(); | 133 float x0 = uv0.x(); |
| (...skipping 21 matching lines...) Expand all Loading... |
| 163 return false; | 155 return false; |
| 164 gfx::OverlayTransform overlay_transform = | 156 gfx::OverlayTransform overlay_transform = |
| 165 OverlayCandidate::GetOverlayTransform( | 157 OverlayCandidate::GetOverlayTransform( |
| 166 quad.shared_quad_state->quad_to_target_transform, false); | 158 quad.shared_quad_state->quad_to_target_transform, false); |
| 167 if (overlay_transform != gfx::OVERLAY_TRANSFORM_NONE) | 159 if (overlay_transform != gfx::OVERLAY_TRANSFORM_NONE) |
| 168 return false; | 160 return false; |
| 169 quad_info->resource_id = quad.io_surface_resource_id(); | 161 quad_info->resource_id = quad.io_surface_resource_id(); |
| 170 quad_info->resource_size_in_pixels = quad.io_surface_size; | 162 quad_info->resource_size_in_pixels = quad.io_surface_size; |
| 171 quad_info->transform = overlay_transform; | 163 quad_info->transform = overlay_transform; |
| 172 quad_info->uv_rect = gfx::RectF(1.f, 1.f); | 164 quad_info->uv_rect = gfx::RectF(1.f, 1.f); |
| 173 quad_info->quad_rect_in_target_space = MathUtil::MapEnclosingClippedRect( | |
| 174 quad.shared_quad_state->quad_to_target_transform, quad.rect); | |
| 175 quad_info->clip_rect = quad.shared_quad_state->clip_rect; | |
| 176 quad_info->is_clipped = quad.shared_quad_state->is_clipped; | |
| 177 return true; | 165 return true; |
| 178 } | 166 } |
| 179 | 167 |
| 180 bool OverlayStrategyCommon::GetCandidateQuadInfo(const DrawQuad& draw_quad, | 168 bool OverlayStrategyCommon::GetCandidateQuadInfo(const DrawQuad& draw_quad, |
| 181 OverlayCandidate* quad_info) { | 169 OverlayCandidate* quad_info) { |
| 182 // All quad checks. | 170 // All quad checks. |
| 183 if (draw_quad.needs_blending || draw_quad.shared_quad_state->opacity != 1.f || | 171 if (draw_quad.needs_blending || draw_quad.shared_quad_state->opacity != 1.f || |
| 184 draw_quad.shared_quad_state->blend_mode != SkXfermode::kSrcOver_Mode) | 172 draw_quad.shared_quad_state->blend_mode != SkXfermode::kSrcOver_Mode) |
| 185 return false; | 173 return false; |
| 186 | 174 |
| (...skipping 13 matching lines...) Expand all Loading... |
| 200 if (!GetIOSurfaceQuadInfo(*quad, quad_info)) | 188 if (!GetIOSurfaceQuadInfo(*quad, quad_info)) |
| 201 return false; | 189 return false; |
| 202 } break; | 190 } break; |
| 203 default: | 191 default: |
| 204 return false; | 192 return false; |
| 205 } | 193 } |
| 206 | 194 |
| 207 quad_info->format = RGBA_8888; | 195 quad_info->format = RGBA_8888; |
| 208 quad_info->display_rect = OverlayCandidate::GetOverlayRect( | 196 quad_info->display_rect = OverlayCandidate::GetOverlayRect( |
| 209 draw_quad.shared_quad_state->quad_to_target_transform, draw_quad.rect); | 197 draw_quad.shared_quad_state->quad_to_target_transform, draw_quad.rect); |
| 198 quad_info->quad_rect_in_target_space = MathUtil::MapEnclosingClippedRect( |
| 199 draw_quad.shared_quad_state->quad_to_target_transform, draw_quad.rect); |
| 200 quad_info->clip_rect = draw_quad.shared_quad_state->clip_rect; |
| 201 quad_info->is_clipped = draw_quad.shared_quad_state->is_clipped; |
| 210 return true; | 202 return true; |
| 211 } | 203 } |
| 212 | 204 |
| 213 } // namespace cc | 205 } // namespace cc |
| OLD | NEW |