Home | History | Annotate | Download | only in quads
      1 // Copyright 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "cc/quads/picture_draw_quad.h"
      6 
      7 #include "base/values.h"
      8 #include "cc/base/math_util.h"
      9 
     10 namespace cc {
     11 
     12 PictureDrawQuad::PictureDrawQuad() {
     13 }
     14 
     15 PictureDrawQuad::~PictureDrawQuad() {
     16 }
     17 
     18 scoped_ptr<PictureDrawQuad> PictureDrawQuad::Create() {
     19   return make_scoped_ptr(new PictureDrawQuad);
     20 }
     21 
     22 void PictureDrawQuad::SetNew(const SharedQuadState* shared_quad_state,
     23                              gfx::Rect rect,
     24                              gfx::Rect opaque_rect,
     25                              const gfx::RectF& tex_coord_rect,
     26                              gfx::Size texture_size,
     27                              bool swizzle_contents,
     28                              gfx::Rect content_rect,
     29                              float contents_scale,
     30                              bool can_draw_direct_to_backbuffer,
     31                              scoped_refptr<PicturePileImpl> picture_pile) {
     32   ContentDrawQuadBase::SetNew(shared_quad_state, DrawQuad::PICTURE_CONTENT,
     33                               rect, opaque_rect, tex_coord_rect, texture_size,
     34                               swizzle_contents);
     35   this->content_rect = content_rect;
     36   this->contents_scale = contents_scale;
     37   this->can_draw_direct_to_backbuffer = can_draw_direct_to_backbuffer;
     38   this->picture_pile = picture_pile;
     39 }
     40 
     41 void PictureDrawQuad::SetAll(const SharedQuadState* shared_quad_state,
     42                              gfx::Rect rect,
     43                              gfx::Rect opaque_rect,
     44                              gfx::Rect visible_rect,
     45                              bool needs_blending,
     46                              const gfx::RectF& tex_coord_rect,
     47                              gfx::Size texture_size,
     48                              bool swizzle_contents,
     49                              gfx::Rect content_rect,
     50                              float contents_scale,
     51                              bool can_draw_direct_to_backbuffer,
     52                              scoped_refptr<PicturePileImpl> picture_pile) {
     53   ContentDrawQuadBase::SetAll(shared_quad_state,
     54                               DrawQuad::PICTURE_CONTENT, rect, opaque_rect,
     55                               visible_rect, needs_blending, tex_coord_rect,
     56                               texture_size, swizzle_contents);
     57   this->content_rect = content_rect;
     58   this->contents_scale = contents_scale;
     59   this->can_draw_direct_to_backbuffer = can_draw_direct_to_backbuffer;
     60   this->picture_pile = picture_pile;
     61 }
     62 
     63 void PictureDrawQuad::IterateResources(
     64     const ResourceIteratorCallback& callback) {
     65   // TODO(danakj): Convert to TextureDrawQuad?
     66   NOTIMPLEMENTED();
     67 }
     68 
     69 const PictureDrawQuad* PictureDrawQuad::MaterialCast(const DrawQuad* quad) {
     70   DCHECK(quad->material == DrawQuad::PICTURE_CONTENT);
     71   return static_cast<const PictureDrawQuad*>(quad);
     72 }
     73 
     74 void PictureDrawQuad::ExtendValue(base::DictionaryValue* value) const {
     75   ContentDrawQuadBase::ExtendValue(value);
     76   value->Set("content_rect", MathUtil::AsValue(content_rect).release());
     77   value->SetDouble("contents_scale", contents_scale);
     78   value->SetBoolean("can_draw_direct_to_backbuffer",
     79                     can_draw_direct_to_backbuffer);
     80   // TODO(piman): picture_pile?
     81 }
     82 
     83 }  // namespace cc
     84