diff options
author | danakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-20 23:06:26 +0000 |
---|---|---|
committer | danakj@chromium.org <danakj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-11-20 23:06:26 +0000 |
commit | c22418befbc72b25c7ee2ca8e6fe0a7c9344437e (patch) | |
tree | 64f7a701344241c0663aaaf97ba2ce9c04d60c29 /cc/render_pass_draw_quad.cc | |
parent | 62669313d2d987074bd63f8d7687bfc314b37d99 (diff) | |
download | chromium_src-c22418befbc72b25c7ee2ca8e6fe0a7c9344437e.zip chromium_src-c22418befbc72b25c7ee2ca8e6fe0a7c9344437e.tar.gz chromium_src-c22418befbc72b25c7ee2ca8e6fe0a7c9344437e.tar.bz2 |
cc: Make the DrawQuad subclasses into a struct-like classes.
I've replaced the create() and constructor on each class with a SetNew() method:
void SetNew(const SharedQuadState* shared_quad_state,
gfx::Rect rect,
...);
This method sets everything in the base class, based on the subclass'
interpretation of the minimal parameters given to it. This is used when
creating a new quad of this type - hence the name. The "..." represents
all the quad-type-specific arguments.
I've also added a new SetAll() method, that takes all of the data held by this
quad type, and simply passes on the appropriate things to the super class:
void SetAll(const SharedQuadState* shared_quad_state,
gfx::Rect rect,
gfx::Rect opaque_rect,
gfx::Rect visible_rect,
bool needs_blending,
...);
This method is used for deserializing, or other cases where you have all the
data for the quad well defined, and want to set every field at once. The
"..." represents all the quad-type-specific arguments.
Added tests for SetAll() in cc_unittests:DrawQuadTest.*
TBR=aelias
BUG=152337
Review URL: https://chromiumcodereview.appspot.com/11411050
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@168903 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'cc/render_pass_draw_quad.cc')
-rw-r--r-- | cc/render_pass_draw_quad.cc | 107 |
1 files changed, 77 insertions, 30 deletions
diff --git a/cc/render_pass_draw_quad.cc b/cc/render_pass_draw_quad.cc index 6a06825..937a621 100644 --- a/cc/render_pass_draw_quad.cc +++ b/cc/render_pass_draw_quad.cc @@ -6,42 +6,89 @@ namespace cc { -scoped_ptr<RenderPassDrawQuad> RenderPassDrawQuad::create(const SharedQuadState* sharedQuadState, const gfx::Rect& quadRect, RenderPass::Id renderPassId, bool isReplica, const ResourceProvider::ResourceId maskResourceId, const gfx::Rect& contentsChangedSinceLastFrame, float maskTexCoordScaleX, float maskTexCoordScaleY, float maskTexCoordOffsetX, float maskTexCoordOffsetY) -{ - return make_scoped_ptr(new RenderPassDrawQuad(sharedQuadState, quadRect, renderPassId, isReplica, maskResourceId, contentsChangedSinceLastFrame, maskTexCoordScaleX, maskTexCoordScaleY, maskTexCoordOffsetX, maskTexCoordOffsetY)); +RenderPassDrawQuad::RenderPassDrawQuad() + : render_pass_id(RenderPass::Id(-1, -1)), + is_replica(false), + mask_resource_id(-1), + mask_tex_coord_scale_x(0), + mask_tex_coord_scale_y(0), + mask_tex_coord_offset_x(0), + mask_tex_coord_offset_y(0) { } -RenderPassDrawQuad::RenderPassDrawQuad(const SharedQuadState* sharedQuadState, const gfx::Rect& quadRect, RenderPass::Id renderPassId, bool isReplica, ResourceProvider::ResourceId maskResourceId, const gfx::Rect& contentsChangedSinceLastFrame, float maskTexCoordScaleX, float maskTexCoordScaleY, float maskTexCoordOffsetX, float maskTexCoordOffsetY) - : m_renderPassId(renderPassId) - , m_isReplica(isReplica) - , m_maskResourceId(maskResourceId) - , m_contentsChangedSinceLastFrame(contentsChangedSinceLastFrame) - , m_maskTexCoordScaleX(maskTexCoordScaleX) - , m_maskTexCoordScaleY(maskTexCoordScaleY) - , m_maskTexCoordOffsetX(maskTexCoordOffsetX) - , m_maskTexCoordOffsetY(maskTexCoordOffsetY) -{ - DCHECK(m_renderPassId.layerId > 0); - DCHECK(m_renderPassId.index >= 0); - - gfx::Rect opaqueRect; - gfx::Rect visibleRect = quadRect; - bool needsBlending = false; - DrawQuad::SetAll(sharedQuadState, DrawQuad::RENDER_PASS, quadRect, opaqueRect, visibleRect, needsBlending); +scoped_ptr<RenderPassDrawQuad> RenderPassDrawQuad::Create() { + return make_scoped_ptr(new RenderPassDrawQuad); } -const RenderPassDrawQuad* RenderPassDrawQuad::materialCast(const DrawQuad* quad) -{ - DCHECK(quad->material == DrawQuad::RENDER_PASS); - return static_cast<const RenderPassDrawQuad*>(quad); +scoped_ptr<RenderPassDrawQuad> RenderPassDrawQuad::Copy( + const SharedQuadState* copied_shared_quad_state, + RenderPass::Id copied_render_pass_id) const { + scoped_ptr<RenderPassDrawQuad> copy_quad(new RenderPassDrawQuad(*MaterialCast(this))); + copy_quad->shared_quad_state = copied_shared_quad_state; + copy_quad->render_pass_id = copied_render_pass_id; + return copy_quad.Pass(); } -scoped_ptr<RenderPassDrawQuad> RenderPassDrawQuad::copy(const SharedQuadState* copiedSharedQuadState, RenderPass::Id copiedRenderPassId) const -{ - scoped_ptr<RenderPassDrawQuad> copyQuad(new RenderPassDrawQuad(*materialCast(this))); - copyQuad->shared_quad_state = copiedSharedQuadState; - copyQuad->m_renderPassId = copiedRenderPassId; - return copyQuad.Pass(); +void RenderPassDrawQuad::SetNew(const SharedQuadState* shared_quad_state, + gfx::Rect rect, + RenderPass::Id render_pass_id, + bool is_replica, + ResourceProvider::ResourceId mask_resource_id, + gfx::Rect contents_changed_since_last_frame, + float mask_tex_coord_scale_x, + float mask_tex_coord_scale_y, + float mask_tex_coord_offset_x, + float mask_tex_coord_offset_y) { + DCHECK(render_pass_id.layerId > 0); + DCHECK(render_pass_id.index >= 0); + + gfx::Rect opaque_rect; + gfx::Rect visible_rect = rect; + bool needs_blending = false; + DrawQuad::SetAll(shared_quad_state, DrawQuad::RENDER_PASS, rect, opaque_rect, + visible_rect, needs_blending); + this->render_pass_id = render_pass_id; + this->is_replica = is_replica; + this->mask_resource_id = mask_resource_id; + this->contents_changed_since_last_frame = contents_changed_since_last_frame; + this->mask_tex_coord_scale_x = mask_tex_coord_scale_x; + this->mask_tex_coord_scale_y = mask_tex_coord_scale_y; + this->mask_tex_coord_offset_x = mask_tex_coord_offset_x; + this->mask_tex_coord_offset_y = mask_tex_coord_offset_y; +} + +void RenderPassDrawQuad::SetAll(const SharedQuadState* shared_quad_state, + gfx::Rect rect, + gfx::Rect opaque_rect, + gfx::Rect visible_rect, + bool needs_blending, + RenderPass::Id render_pass_id, + bool is_replica, + ResourceProvider::ResourceId mask_resource_id, + gfx::Rect contents_changed_since_last_frame, + float mask_tex_coord_scale_x, + float mask_tex_coord_scale_y, + float mask_tex_coord_offset_x, + float mask_tex_coord_offset_y) { + DCHECK(render_pass_id.layerId > 0); + DCHECK(render_pass_id.index >= 0); + + DrawQuad::SetAll(shared_quad_state, DrawQuad::RENDER_PASS, rect, opaque_rect, + visible_rect, needs_blending); + this->render_pass_id = render_pass_id; + this->is_replica = is_replica; + this->mask_resource_id = mask_resource_id; + this->contents_changed_since_last_frame = contents_changed_since_last_frame; + this->mask_tex_coord_scale_x = mask_tex_coord_scale_x; + this->mask_tex_coord_scale_y = mask_tex_coord_scale_y; + this->mask_tex_coord_offset_x = mask_tex_coord_offset_x; + this->mask_tex_coord_offset_y = mask_tex_coord_offset_y; +} + +const RenderPassDrawQuad* RenderPassDrawQuad::MaterialCast( + const DrawQuad* quad) { + DCHECK(quad->material == DrawQuad::RENDER_PASS); + return static_cast<const RenderPassDrawQuad*>(quad); } } // namespace cc |