Chromium Code Reviews| 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(), |
|
jamesr
2014/07/17 20:25:24
unfortunately std::vector<>::data() is c++11 and n
weiliangc
2014/07/17 21:27:10
Will leave to crrev.com/393583003
|
| + 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(); |
| } |