diff options
Diffstat (limited to 'chromium/cc/quads/io_surface_draw_quad.cc')
-rw-r--r-- | chromium/cc/quads/io_surface_draw_quad.cc | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/chromium/cc/quads/io_surface_draw_quad.cc b/chromium/cc/quads/io_surface_draw_quad.cc new file mode 100644 index 00000000000..2c986dd3a23 --- /dev/null +++ b/chromium/cc/quads/io_surface_draw_quad.cc @@ -0,0 +1,79 @@ +// Copyright 2012 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "cc/quads/io_surface_draw_quad.h" + +#include "base/logging.h" +#include "base/values.h" +#include "cc/base/math_util.h" + +namespace cc { + +IOSurfaceDrawQuad::IOSurfaceDrawQuad() + : io_surface_resource_id(0), + orientation(FLIPPED) { +} + +scoped_ptr<IOSurfaceDrawQuad> IOSurfaceDrawQuad::Create() { + return make_scoped_ptr(new IOSurfaceDrawQuad); +} + +void IOSurfaceDrawQuad::SetNew(const SharedQuadState* shared_quad_state, + gfx::Rect rect, + gfx::Rect opaque_rect, + gfx::Size io_surface_size, + unsigned io_surface_resource_id, + Orientation orientation) { + gfx::Rect visible_rect = rect; + bool needs_blending = false; + DrawQuad::SetAll(shared_quad_state, DrawQuad::IO_SURFACE_CONTENT, rect, + opaque_rect, visible_rect, needs_blending); + this->io_surface_size = io_surface_size; + this->io_surface_resource_id = io_surface_resource_id; + this->orientation = orientation; +} + +void IOSurfaceDrawQuad::SetAll(const SharedQuadState* shared_quad_state, + gfx::Rect rect, + gfx::Rect opaque_rect, + gfx::Rect visible_rect, + bool needs_blending, + gfx::Size io_surface_size, + unsigned io_surface_resource_id, + Orientation orientation) { + DrawQuad::SetAll(shared_quad_state, DrawQuad::IO_SURFACE_CONTENT, rect, + opaque_rect, visible_rect, needs_blending); + this->io_surface_size = io_surface_size; + this->io_surface_resource_id = io_surface_resource_id; + this->orientation = orientation; +} + +void IOSurfaceDrawQuad::IterateResources( + const ResourceIteratorCallback& callback) { + io_surface_resource_id = callback.Run(io_surface_resource_id); +} + +const IOSurfaceDrawQuad* IOSurfaceDrawQuad::MaterialCast( + const DrawQuad* quad) { + DCHECK(quad->material == DrawQuad::IO_SURFACE_CONTENT); + return static_cast<const IOSurfaceDrawQuad*>(quad); +} + +void IOSurfaceDrawQuad::ExtendValue(base::DictionaryValue* value) const { + value->Set("io_surface_size", MathUtil::AsValue(io_surface_size).release()); + value->SetInteger("io_surface_resource_id", io_surface_resource_id); + const char* orientation_string = NULL; + switch (orientation) { + case FLIPPED: + orientation_string = "flipped"; + break; + case UNFLIPPED: + orientation_string = "unflipped"; + break; + } + + value->SetString("orientation", orientation_string); +} + +} // namespace cc |