Chromium Code Reviews| Index: cc/output/overlay_candidate.cc |
| diff --git a/cc/output/overlay_candidate.cc b/cc/output/overlay_candidate.cc |
| index 5ecdc32ed3602e8095e7876e57778ea59db0d154..e3f3298a9898201242eb4ccb493ff38c9c5f7707 100644 |
| --- a/cc/output/overlay_candidate.cc |
| +++ b/cc/output/overlay_candidate.cc |
| @@ -12,6 +12,7 @@ |
| #include "cc/quads/solid_color_draw_quad.h" |
| #include "cc/quads/stream_video_draw_quad.h" |
| #include "cc/quads/texture_draw_quad.h" |
| +#include "cc/quads/tile_draw_quad.h" |
| #include "ui/gfx/geometry/rect_conversions.h" |
| #include "ui/gfx/geometry/vector3d_f.h" |
| @@ -172,12 +173,28 @@ OverlayCandidate::OverlayCandidate() |
| is_clipped(false), |
| use_output_surface_for_resource(false), |
| resource_id(0), |
| + solid_color(SK_ColorTRANSPARENT), |
| plane_z_order(0), |
| overlay_handled(false) {} |
| OverlayCandidate::~OverlayCandidate() {} |
| // static |
| +bool OverlayCandidate::IsAllowedQuad(const DrawQuad* quad) { |
| + switch (quad->material) { |
| + case DrawQuad::TEXTURE_CONTENT: |
| + return TextureDrawQuad::MaterialCast(quad)->allow_overlay(); |
| + case DrawQuad::STREAM_VIDEO_CONTENT: |
| + return StreamVideoDrawQuad::MaterialCast(quad)->allow_overlay(); |
| + case DrawQuad::IO_SURFACE_CONTENT: |
| + return IOSurfaceDrawQuad::MaterialCast(quad)->allow_overlay; |
| + default: |
| + break; |
| + } |
| + return false; |
| +} |
| + |
| +// static |
| bool OverlayCandidate::FromDrawQuad(const DrawQuad* quad, |
| OverlayCandidate* candidate) { |
| if (quad->needs_blending || quad->shared_quad_state->opacity != 1.f || |
| @@ -203,6 +220,11 @@ bool OverlayCandidate::FromDrawQuad(const DrawQuad* quad, |
| case DrawQuad::IO_SURFACE_CONTENT: |
| return FromIOSurfaceQuad(IOSurfaceDrawQuad::MaterialCast(quad), |
| candidate); |
|
ccameron
2015/09/30 18:52:09
We're also going to want to make sure that things
Andre
2015/09/30 21:15:15
It's currently using OverlayCandidate::IsAllowedQu
|
| + case DrawQuad::TILED_CONTENT: |
| + return FromTileQuad(TileDrawQuad::MaterialCast(quad), candidate); |
| + case DrawQuad::SOLID_COLOR: |
| + return FromSolidColorQuad(SolidColorDrawQuad::MaterialCast(quad), |
| + candidate); |
| default: |
| break; |
| } |
| @@ -213,8 +235,6 @@ bool OverlayCandidate::FromDrawQuad(const DrawQuad* quad, |
| // static |
| bool OverlayCandidate::FromTextureQuad(const TextureDrawQuad* quad, |
| OverlayCandidate* candidate) { |
| - if (!quad->allow_overlay()) |
| - return false; |
| gfx::OverlayTransform overlay_transform = GetOverlayTransform( |
| quad->shared_quad_state->quad_to_target_transform, quad->y_flipped); |
| if (quad->background_color != SK_ColorTRANSPARENT || |
| @@ -231,8 +251,6 @@ bool OverlayCandidate::FromTextureQuad(const TextureDrawQuad* quad, |
| // static |
| bool OverlayCandidate::FromStreamVideoQuad(const StreamVideoDrawQuad* quad, |
| OverlayCandidate* candidate) { |
| - if (!quad->allow_overlay()) |
| - return false; |
| gfx::OverlayTransform overlay_transform = GetOverlayTransform( |
| quad->shared_quad_state->quad_to_target_transform, false); |
| if (overlay_transform == gfx::OVERLAY_TRANSFORM_INVALID) |
| @@ -276,8 +294,6 @@ bool OverlayCandidate::FromStreamVideoQuad(const StreamVideoDrawQuad* quad, |
| // static |
| bool OverlayCandidate::FromIOSurfaceQuad(const IOSurfaceDrawQuad* quad, |
| OverlayCandidate* candidate) { |
| - if (!quad->allow_overlay) |
| - return false; |
| gfx::OverlayTransform overlay_transform = GetOverlayTransform( |
| quad->shared_quad_state->quad_to_target_transform, false); |
| if (overlay_transform != gfx::OVERLAY_TRANSFORM_NONE) |
| @@ -289,4 +305,30 @@ bool OverlayCandidate::FromIOSurfaceQuad(const IOSurfaceDrawQuad* quad, |
| return true; |
| } |
| +// static |
| +bool OverlayCandidate::FromTileQuad(const TileDrawQuad* quad, |
| + OverlayCandidate* candidate) { |
|
ccameron
2015/09/30 18:52:09
We're going to need to plumb through a "allow_over
Andre
2015/09/30 20:57:17
I'm not sure how to do this.
I think we want to Ti
|
| + candidate->transform = GetOverlayTransform( |
| + quad->shared_quad_state->quad_to_target_transform, false); |
| + if (candidate->transform != gfx::OVERLAY_TRANSFORM_NONE) |
| + return false; |
| + candidate->resource_id = quad->resource_id(); |
| + candidate->resource_size_in_pixels = quad->texture_size; |
| + candidate->uv_rect = quad->tex_coord_rect; |
| + candidate->uv_rect.Scale(1.f / quad->texture_size.width(), |
| + 1.f / quad->texture_size.height()); |
| + return true; |
| +} |
| + |
| +// static |
| +bool OverlayCandidate::FromSolidColorQuad(const SolidColorDrawQuad* quad, |
| + OverlayCandidate* candidate) { |
| + candidate->transform = GetOverlayTransform( |
| + quad->shared_quad_state->quad_to_target_transform, false); |
| + if (candidate->transform != gfx::OVERLAY_TRANSFORM_NONE) |
| + return false; |
| + candidate->solid_color = quad->color; |
| + return true; |
| +} |
| + |
| } // namespace cc |