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 #include "cc/resources/platform_color.h"
     10 
     11 namespace cc {
     12 
     13 PictureDrawQuad::PictureDrawQuad() {
     14 }
     15 
     16 PictureDrawQuad::~PictureDrawQuad() {
     17 }
     18 
     19 scoped_ptr<PictureDrawQuad> PictureDrawQuad::Create() {
     20   return make_scoped_ptr(new PictureDrawQuad);
     21 }
     22 
     23 void PictureDrawQuad::SetNew(const SharedQuadState* shared_quad_state,
     24                              gfx::Rect rect,
     25                              gfx::Rect opaque_rect,
     26                              const gfx::RectF& tex_coord_rect,
     27                              gfx::Size texture_size,
     28                              ResourceFormat texture_format,
     29                              gfx::Rect content_rect,
     30                              float contents_scale,
     31                              scoped_refptr<PicturePileImpl> picture_pile) {
     32   ContentDrawQuadBase::SetNew(shared_quad_state,
     33                               DrawQuad::PICTURE_CONTENT,
     34                               rect,
     35                               opaque_rect,
     36                               tex_coord_rect,
     37                               texture_size,
     38                               !PlatformColor::SameComponentOrder(
     39                                   texture_format));
     40   this->content_rect = content_rect;
     41   this->contents_scale = contents_scale;
     42   this->picture_pile = picture_pile;
     43   this->texture_format = texture_format;
     44 }
     45 
     46 void PictureDrawQuad::SetAll(const SharedQuadState* shared_quad_state,
     47                              gfx::Rect rect,
     48                              gfx::Rect opaque_rect,
     49                              gfx::Rect visible_rect,
     50                              bool needs_blending,
     51                              const gfx::RectF& tex_coord_rect,
     52                              gfx::Size texture_size,
     53                              ResourceFormat texture_format,
     54                              gfx::Rect content_rect,
     55                              float contents_scale,
     56                              scoped_refptr<PicturePileImpl> picture_pile) {
     57   ContentDrawQuadBase::SetAll(shared_quad_state,
     58                               DrawQuad::PICTURE_CONTENT,
     59                               rect,
     60                               opaque_rect,
     61                               visible_rect,
     62                               needs_blending,
     63                               tex_coord_rect,
     64                               texture_size,
     65                               !PlatformColor::SameComponentOrder(
     66                                   texture_format));
     67   this->content_rect = content_rect;
     68   this->contents_scale = contents_scale;
     69   this->picture_pile = picture_pile;
     70   this->texture_format = texture_format;
     71 }
     72 
     73 void PictureDrawQuad::IterateResources(
     74     const ResourceIteratorCallback& callback) {
     75   // TODO(danakj): Convert to TextureDrawQuad?
     76   NOTIMPLEMENTED();
     77 }
     78 
     79 const PictureDrawQuad* PictureDrawQuad::MaterialCast(const DrawQuad* quad) {
     80   DCHECK(quad->material == DrawQuad::PICTURE_CONTENT);
     81   return static_cast<const PictureDrawQuad*>(quad);
     82 }
     83 
     84 void PictureDrawQuad::ExtendValue(base::DictionaryValue* value) const {
     85   ContentDrawQuadBase::ExtendValue(value);
     86   value->Set("content_rect", MathUtil::AsValue(content_rect).release());
     87   value->SetDouble("contents_scale", contents_scale);
     88   value->SetInteger("texture_format", texture_format);
     89   // TODO(piman): picture_pile?
     90 }
     91 
     92 }  // namespace cc
     93