Home | History | Annotate | Download | only in quads
      1 // Copyright 2012 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 #ifndef CC_QUADS_YUV_VIDEO_DRAW_QUAD_H_
      6 #define CC_QUADS_YUV_VIDEO_DRAW_QUAD_H_
      7 
      8 #include "base/basictypes.h"
      9 #include "base/memory/scoped_ptr.h"
     10 #include "cc/base/cc_export.h"
     11 #include "cc/layers/video_layer_impl.h"
     12 #include "cc/quads/draw_quad.h"
     13 
     14 namespace cc {
     15 
     16 class CC_EXPORT YUVVideoDrawQuad : public DrawQuad {
     17  public:
     18   enum ColorSpace {
     19     REC_601,       // SDTV standard with restricted "studio swing" color range.
     20     REC_601_JPEG,  // Full color range [0, 255] variant of the above.
     21     COLOR_SPACE_LAST = REC_601_JPEG
     22   };
     23 
     24   virtual ~YUVVideoDrawQuad();
     25 
     26   static scoped_ptr<YUVVideoDrawQuad> Create();
     27 
     28   void SetNew(const SharedQuadState* shared_quad_state,
     29               const gfx::Rect& rect,
     30               const gfx::Rect& opaque_rect,
     31               const gfx::Rect& visible_rect,
     32               const gfx::RectF& tex_coord_rect,
     33               unsigned y_plane_resource_id,
     34               unsigned u_plane_resource_id,
     35               unsigned v_plane_resource_id,
     36               unsigned a_plane_resource_id,
     37               ColorSpace color_space);
     38 
     39   void SetAll(const SharedQuadState* shared_quad_state,
     40               const gfx::Rect& rect,
     41               const gfx::Rect& opaque_rect,
     42               const gfx::Rect& visible_rect,
     43               bool needs_blending,
     44               const gfx::RectF& tex_coord_rect,
     45               unsigned y_plane_resource_id,
     46               unsigned u_plane_resource_id,
     47               unsigned v_plane_resource_id,
     48               unsigned a_plane_resource_id,
     49               ColorSpace color_space);
     50 
     51   gfx::RectF tex_coord_rect;
     52   unsigned y_plane_resource_id;
     53   unsigned u_plane_resource_id;
     54   unsigned v_plane_resource_id;
     55   unsigned a_plane_resource_id;
     56   ColorSpace color_space;
     57 
     58   virtual void IterateResources(const ResourceIteratorCallback& callback)
     59       OVERRIDE;
     60 
     61   static const YUVVideoDrawQuad* MaterialCast(const DrawQuad*);
     62 
     63  private:
     64   YUVVideoDrawQuad();
     65   virtual void ExtendValue(base::DictionaryValue* value) const OVERRIDE;
     66 };
     67 
     68 }  // namespace cc
     69 
     70 #endif  // CC_QUADS_YUV_VIDEO_DRAW_QUAD_H_
     71