| 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/quads/io_surface_draw_quad.h" | 10 #include "cc/quads/io_surface_draw_quad.h" |
| 10 #include "cc/quads/solid_color_draw_quad.h" | 11 #include "cc/quads/solid_color_draw_quad.h" |
| 11 #include "cc/quads/stream_video_draw_quad.h" | 12 #include "cc/quads/stream_video_draw_quad.h" |
| 12 #include "cc/quads/texture_draw_quad.h" | 13 #include "cc/quads/texture_draw_quad.h" |
| 13 #include "cc/resources/resource_provider.h" | 14 #include "cc/resources/resource_provider.h" |
| 14 #include "ui/gfx/geometry/point3_f.h" | 15 #include "ui/gfx/geometry/point3_f.h" |
| 15 #include "ui/gfx/geometry/rect_conversions.h" | 16 #include "ui/gfx/geometry/rect_conversions.h" |
| 16 #include "ui/gfx/transform.h" | 17 #include "ui/gfx/transform.h" |
| 17 | 18 |
| 18 namespace cc { | 19 namespace cc { |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 80 OverlayCandidate::GetOverlayTransform( | 81 OverlayCandidate::GetOverlayTransform( |
| 81 quad.shared_quad_state->quad_to_target_transform, quad.y_flipped); | 82 quad.shared_quad_state->quad_to_target_transform, quad.y_flipped); |
| 82 if (quad.background_color != SK_ColorTRANSPARENT || | 83 if (quad.background_color != SK_ColorTRANSPARENT || |
| 83 quad.premultiplied_alpha || | 84 quad.premultiplied_alpha || |
| 84 overlay_transform == gfx::OVERLAY_TRANSFORM_INVALID) | 85 overlay_transform == gfx::OVERLAY_TRANSFORM_INVALID) |
| 85 return false; | 86 return false; |
| 86 quad_info->resource_id = quad.resource_id(); | 87 quad_info->resource_id = quad.resource_id(); |
| 87 quad_info->resource_size_in_pixels = quad.resource_size_in_pixels(); | 88 quad_info->resource_size_in_pixels = quad.resource_size_in_pixels(); |
| 88 quad_info->transform = overlay_transform; | 89 quad_info->transform = overlay_transform; |
| 89 quad_info->uv_rect = BoundingRect(quad.uv_top_left, quad.uv_bottom_right); | 90 quad_info->uv_rect = BoundingRect(quad.uv_top_left, quad.uv_bottom_right); |
| 91 quad_info->quad_rect_in_target_space = MathUtil::MapEnclosingClippedRect( |
| 92 quad.shared_quad_state->quad_to_target_transform, quad.rect); |
| 93 quad_info->clip_rect = quad.shared_quad_state->clip_rect; |
| 94 quad_info->is_clipped = quad.shared_quad_state->is_clipped; |
| 90 return true; | 95 return true; |
| 91 } | 96 } |
| 92 | 97 |
| 93 bool OverlayStrategyCommon::GetVideoQuadInfo(const StreamVideoDrawQuad& quad, | 98 bool OverlayStrategyCommon::GetVideoQuadInfo(const StreamVideoDrawQuad& quad, |
| 94 OverlayCandidate* quad_info) { | 99 OverlayCandidate* quad_info) { |
| 95 gfx::OverlayTransform overlay_transform = | 100 gfx::OverlayTransform overlay_transform = |
| 96 OverlayCandidate::GetOverlayTransform( | 101 OverlayCandidate::GetOverlayTransform( |
| 97 quad.shared_quad_state->quad_to_target_transform, false); | 102 quad.shared_quad_state->quad_to_target_transform, false); |
| 98 if (overlay_transform == gfx::OVERLAY_TRANSFORM_INVALID) | 103 if (overlay_transform == gfx::OVERLAY_TRANSFORM_INVALID) |
| 99 return false; | 104 return false; |
| 100 if (!quad.matrix.IsScaleOrTranslation()) { | 105 if (!quad.matrix.IsScaleOrTranslation()) { |
| 101 // We cannot handle anything other than scaling & translation for texture | 106 // We cannot handle anything other than scaling & translation for texture |
| 102 // coordinates yet. | 107 // coordinates yet. |
| 103 return false; | 108 return false; |
| 104 } | 109 } |
| 105 quad_info->resource_id = quad.resource_id(); | 110 quad_info->resource_id = quad.resource_id(); |
| 106 quad_info->resource_size_in_pixels = quad.resource_size_in_pixels(); | 111 quad_info->resource_size_in_pixels = quad.resource_size_in_pixels(); |
| 107 quad_info->transform = overlay_transform; | 112 quad_info->transform = overlay_transform; |
| 113 quad_info->quad_rect_in_target_space = MathUtil::MapEnclosingClippedRect( |
| 114 quad.shared_quad_state->quad_to_target_transform, quad.rect); |
| 115 quad_info->clip_rect = quad.shared_quad_state->clip_rect; |
| 116 quad_info->is_clipped = quad.shared_quad_state->is_clipped; |
| 108 | 117 |
| 109 gfx::Point3F uv0 = gfx::Point3F(0, 0, 0); | 118 gfx::Point3F uv0 = gfx::Point3F(0, 0, 0); |
| 110 gfx::Point3F uv1 = gfx::Point3F(1, 1, 0); | 119 gfx::Point3F uv1 = gfx::Point3F(1, 1, 0); |
| 111 quad.matrix.TransformPoint(&uv0); | 120 quad.matrix.TransformPoint(&uv0); |
| 112 quad.matrix.TransformPoint(&uv1); | 121 quad.matrix.TransformPoint(&uv1); |
| 113 gfx::Vector3dF delta = uv1 - uv0; | 122 gfx::Vector3dF delta = uv1 - uv0; |
| 114 if (delta.x() < 0) { | 123 if (delta.x() < 0) { |
| 115 quad_info->transform = OverlayCandidate::ModifyTransform( | 124 quad_info->transform = OverlayCandidate::ModifyTransform( |
| 116 quad_info->transform, gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL); | 125 quad_info->transform, gfx::OVERLAY_TRANSFORM_FLIP_HORIZONTAL); |
| 117 float x0 = uv0.x(); | 126 float x0 = uv0.x(); |
| (...skipping 19 matching lines...) Expand all Loading... |
| 137 OverlayCandidate* quad_info) { | 146 OverlayCandidate* quad_info) { |
| 138 gfx::OverlayTransform overlay_transform = | 147 gfx::OverlayTransform overlay_transform = |
| 139 OverlayCandidate::GetOverlayTransform( | 148 OverlayCandidate::GetOverlayTransform( |
| 140 quad.shared_quad_state->quad_to_target_transform, false); | 149 quad.shared_quad_state->quad_to_target_transform, false); |
| 141 if (overlay_transform != gfx::OVERLAY_TRANSFORM_NONE) | 150 if (overlay_transform != gfx::OVERLAY_TRANSFORM_NONE) |
| 142 return false; | 151 return false; |
| 143 quad_info->resource_id = quad.io_surface_resource_id(); | 152 quad_info->resource_id = quad.io_surface_resource_id(); |
| 144 quad_info->resource_size_in_pixels = quad.io_surface_size; | 153 quad_info->resource_size_in_pixels = quad.io_surface_size; |
| 145 quad_info->transform = overlay_transform; | 154 quad_info->transform = overlay_transform; |
| 146 quad_info->uv_rect = gfx::Rect(0, 0, 1, 1); | 155 quad_info->uv_rect = gfx::Rect(0, 0, 1, 1); |
| 156 quad_info->quad_rect_in_target_space = MathUtil::MapEnclosingClippedRect( |
| 157 quad.shared_quad_state->quad_to_target_transform, quad.rect); |
| 158 quad_info->clip_rect = quad.shared_quad_state->clip_rect; |
| 159 quad_info->is_clipped = quad.shared_quad_state->is_clipped; |
| 147 return true; | 160 return true; |
| 148 } | 161 } |
| 149 | 162 |
| 150 bool OverlayStrategyCommon::GetCandidateQuadInfo(const DrawQuad& draw_quad, | 163 bool OverlayStrategyCommon::GetCandidateQuadInfo(const DrawQuad& draw_quad, |
| 151 OverlayCandidate* quad_info) { | 164 OverlayCandidate* quad_info) { |
| 152 // All quad checks. | 165 // All quad checks. |
| 153 if (draw_quad.needs_blending || draw_quad.shared_quad_state->opacity != 1.f || | 166 if (draw_quad.needs_blending || draw_quad.shared_quad_state->opacity != 1.f || |
| 154 draw_quad.shared_quad_state->blend_mode != SkXfermode::kSrcOver_Mode) | 167 draw_quad.shared_quad_state->blend_mode != SkXfermode::kSrcOver_Mode) |
| 155 return false; | 168 return false; |
| 156 | 169 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 174 return false; | 187 return false; |
| 175 } | 188 } |
| 176 | 189 |
| 177 quad_info->format = RGBA_8888; | 190 quad_info->format = RGBA_8888; |
| 178 quad_info->display_rect = OverlayCandidate::GetOverlayRect( | 191 quad_info->display_rect = OverlayCandidate::GetOverlayRect( |
| 179 draw_quad.shared_quad_state->quad_to_target_transform, draw_quad.rect); | 192 draw_quad.shared_quad_state->quad_to_target_transform, draw_quad.rect); |
| 180 return true; | 193 return true; |
| 181 } | 194 } |
| 182 | 195 |
| 183 } // namespace cc | 196 } // namespace cc |
| OLD | NEW |