Index: mojo/services/public/cpp/surfaces/lib/surfaces_type_converters.cc |
diff --git a/mojo/services/public/cpp/surfaces/lib/surfaces_type_converters.cc b/mojo/services/public/cpp/surfaces/lib/surfaces_type_converters.cc |
index 7b5602eb178bc92cf3fbd00e6fcd20b828df68c8..cca117511c3b5beb5acd47ce68788f4ae43e7cf8 100644 |
--- a/mojo/services/public/cpp/surfaces/lib/surfaces_type_converters.cc |
+++ b/mojo/services/public/cpp/surfaces/lib/surfaces_type_converters.cc |
@@ -16,6 +16,80 @@ |
namespace mojo { |
+namespace { |
+ |
+cc::SharedQuadState* ConvertToSharedQuadState( |
+ const surfaces::SharedQuadStatePtr& input, |
+ cc::RenderPass* render_pass) { |
+ cc::SharedQuadState* state = render_pass->CreateAndAppendSharedQuadState(); |
+ state->SetAll(input->content_to_target_transform.To<gfx::Transform>(), |
+ input->content_bounds.To<gfx::Size>(), |
+ input->visible_content_rect.To<gfx::Rect>(), |
+ input->clip_rect.To<gfx::Rect>(), |
+ input->is_clipped, |
+ input->opacity, |
+ static_cast<SkXfermode::Mode>(input->blend_mode), |
+ input->sorting_context_id); |
+ return state; |
+} |
+ |
+cc::DrawQuad* ConvertToDrawQuad(const surfaces::QuadPtr& input, |
+ cc::SharedQuadState* sqs, |
+ cc::RenderPass* render_pass) { |
+ switch (input->material) { |
+ case surfaces::MATERIAL_SOLID_COLOR: { |
+ cc::SolidColorDrawQuad* color_quad = |
+ render_pass->CreateAndAppendDrawQuad<cc::SolidColorDrawQuad>(); |
+ color_quad->SetAll( |
+ sqs, |
+ input->rect.To<gfx::Rect>(), |
+ input->opaque_rect.To<gfx::Rect>(), |
+ input->visible_rect.To<gfx::Rect>(), |
+ input->needs_blending, |
+ input->solid_color_quad_state->color.To<SkColor>(), |
+ input->solid_color_quad_state->force_anti_aliasing_off); |
+ return color_quad; |
+ } |
+ case surfaces::MATERIAL_SURFACE_CONTENT: { |
+ cc::SurfaceDrawQuad* surface_quad = |
+ render_pass->CreateAndAppendDrawQuad<cc::SurfaceDrawQuad>(); |
+ surface_quad->SetAll( |
+ sqs, |
+ input->rect.To<gfx::Rect>(), |
+ input->opaque_rect.To<gfx::Rect>(), |
+ input->visible_rect.To<gfx::Rect>(), |
+ input->needs_blending, |
+ input->surface_quad_state->surface.To<cc::SurfaceId>()); |
+ return surface_quad; |
+ } |
+ case surfaces::MATERIAL_TEXTURE_CONTENT: { |
+ cc::TextureDrawQuad* texture_quad = |
+ render_pass->CreateAndAppendDrawQuad<cc::TextureDrawQuad>(); |
+ surfaces::TextureQuadStatePtr& texture_quad_state = |
+ input->texture_quad_state; |
+ texture_quad->SetAll( |
+ sqs, |
+ input->rect.To<gfx::Rect>(), |
+ input->opaque_rect.To<gfx::Rect>(), |
+ input->visible_rect.To<gfx::Rect>(), |
+ input->needs_blending, |
+ texture_quad_state->resource_id, |
+ texture_quad_state->premultiplied_alpha, |
+ texture_quad_state->uv_top_left.To<gfx::PointF>(), |
+ texture_quad_state->uv_bottom_right.To<gfx::PointF>(), |
+ texture_quad_state->background_color.To<SkColor>(), |
+ texture_quad_state->vertex_opacity.storage().data(), |
+ texture_quad_state->flipped); |
+ return texture_quad; |
+ } |
+ default: |
+ NOTREACHED() << "Unsupported material " << input->material; |
+ } |
+ return NULL; |
+} |
+ |
+} // namespace |
+ |
// static |
surfaces::SurfaceIdPtr |
TypeConverter<surfaces::SurfaceIdPtr, cc::SurfaceId>::ConvertFrom( |
@@ -109,58 +183,6 @@ surfaces::QuadPtr TypeConverter<surfaces::QuadPtr, cc::DrawQuad>::ConvertFrom( |
} |
// static |
-scoped_ptr<cc::DrawQuad> ConvertTo(const surfaces::QuadPtr& input, |
- cc::SharedQuadState* sqs) { |
- switch (input->material) { |
- case surfaces::MATERIAL_SOLID_COLOR: { |
- scoped_ptr<cc::SolidColorDrawQuad> color_quad(new cc::SolidColorDrawQuad); |
- color_quad->SetAll( |
- sqs, |
- input->rect.To<gfx::Rect>(), |
- input->opaque_rect.To<gfx::Rect>(), |
- input->visible_rect.To<gfx::Rect>(), |
- input->needs_blending, |
- input->solid_color_quad_state->color.To<SkColor>(), |
- input->solid_color_quad_state->force_anti_aliasing_off); |
- return color_quad.PassAs<cc::DrawQuad>(); |
- } |
- case surfaces::MATERIAL_SURFACE_CONTENT: { |
- scoped_ptr<cc::SurfaceDrawQuad> surface_quad(new cc::SurfaceDrawQuad); |
- surface_quad->SetAll( |
- sqs, |
- input->rect.To<gfx::Rect>(), |
- input->opaque_rect.To<gfx::Rect>(), |
- input->visible_rect.To<gfx::Rect>(), |
- input->needs_blending, |
- input->surface_quad_state->surface.To<cc::SurfaceId>()); |
- return surface_quad.PassAs<cc::DrawQuad>(); |
- } |
- case surfaces::MATERIAL_TEXTURE_CONTENT: { |
- scoped_ptr<cc::TextureDrawQuad> texture_quad(new cc::TextureDrawQuad); |
- surfaces::TextureQuadStatePtr& texture_quad_state = |
- input->texture_quad_state; |
- texture_quad->SetAll( |
- sqs, |
- input->rect.To<gfx::Rect>(), |
- input->opaque_rect.To<gfx::Rect>(), |
- input->visible_rect.To<gfx::Rect>(), |
- input->needs_blending, |
- texture_quad_state->resource_id, |
- texture_quad_state->premultiplied_alpha, |
- texture_quad_state->uv_top_left.To<gfx::PointF>(), |
- texture_quad_state->uv_bottom_right.To<gfx::PointF>(), |
- texture_quad_state->background_color.To<SkColor>(), |
- texture_quad_state->vertex_opacity.storage().data(), |
- texture_quad_state->flipped); |
- return texture_quad.PassAs<cc::DrawQuad>(); |
- } |
- default: |
- NOTREACHED() << "Unsupported material " << input->material; |
- } |
- return scoped_ptr<cc::DrawQuad>(); |
-} |
- |
-// static |
surfaces::SharedQuadStatePtr |
TypeConverter<surfaces::SharedQuadStatePtr, cc::SharedQuadState>::ConvertFrom( |
const cc::SharedQuadState& input) { |
@@ -178,21 +200,6 @@ TypeConverter<surfaces::SharedQuadStatePtr, cc::SharedQuadState>::ConvertFrom( |
} |
// static |
-scoped_ptr<cc::SharedQuadState> ConvertTo( |
- const surfaces::SharedQuadStatePtr& input) { |
- scoped_ptr<cc::SharedQuadState> state(new cc::SharedQuadState); |
- state->SetAll(input->content_to_target_transform.To<gfx::Transform>(), |
- input->content_bounds.To<gfx::Size>(), |
- input->visible_content_rect.To<gfx::Rect>(), |
- input->clip_rect.To<gfx::Rect>(), |
- input->is_clipped, |
- input->opacity, |
- static_cast<SkXfermode::Mode>(input->blend_mode), |
- input->sorting_context_id); |
- return state.Pass(); |
-} |
- |
-// static |
surfaces::PassPtr TypeConverter<surfaces::PassPtr, cc::RenderPass>::ConvertFrom( |
const cc::RenderPass& input) { |
surfaces::PassPtr pass = surfaces::Pass::New(); |
@@ -236,14 +243,13 @@ scoped_ptr<cc::RenderPass> ConvertTo(const surfaces::PassPtr& input) { |
cc::SharedQuadStateList& sqs_list = pass->shared_quad_state_list; |
sqs_list.reserve(input->shared_quad_states.size()); |
for (size_t i = 0; i < input->shared_quad_states.size(); ++i) { |
- sqs_list.push_back(ConvertTo(input->shared_quad_states[i])); |
+ ConvertToSharedQuadState(input->shared_quad_states[i], pass.get()); |
} |
- cc::QuadList& quad_list = pass->quad_list; |
- quad_list.reserve(input->quads.size()); |
+ pass->quad_list.reserve(input->quads.size()); |
for (size_t i = 0; i < input->quads.size(); ++i) { |
surfaces::QuadPtr quad = input->quads[i].Pass(); |
- quad_list.push_back( |
- ConvertTo(quad, sqs_list[quad->shared_quad_state_index])); |
+ ConvertToDrawQuad( |
+ quad, sqs_list[quad->shared_quad_state_index], pass.get()); |
} |
return pass.Pass(); |
} |