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#include "cc/quads/shared_quad_state.h" 6 7#include "base/debug/trace_event_argument.h" 8#include "base/values.h" 9#include "cc/base/math_util.h" 10#include "cc/debug/traced_value.h" 11 12namespace cc { 13 14SharedQuadState::SharedQuadState() 15 : is_clipped(false), 16 opacity(0.f), 17 blend_mode(SkXfermode::kSrcOver_Mode), 18 sorting_context_id(0) { 19} 20 21SharedQuadState::~SharedQuadState() { 22 TRACE_EVENT_OBJECT_DELETED_WITH_ID( 23 TRACE_DISABLED_BY_DEFAULT("cc.debug.quads"), 24 "cc::SharedQuadState", this); 25} 26 27void SharedQuadState::CopyFrom(const SharedQuadState* other) { 28 *this = *other; 29} 30 31void SharedQuadState::SetAll(const gfx::Transform& content_to_target_transform, 32 const gfx::Size& content_bounds, 33 const gfx::Rect& visible_content_rect, 34 const gfx::Rect& clip_rect, 35 bool is_clipped, 36 float opacity, 37 SkXfermode::Mode blend_mode, 38 int sorting_context_id) { 39 this->content_to_target_transform = content_to_target_transform; 40 this->content_bounds = content_bounds; 41 this->visible_content_rect = visible_content_rect; 42 this->clip_rect = clip_rect; 43 this->is_clipped = is_clipped; 44 this->opacity = opacity; 45 this->blend_mode = blend_mode; 46 this->sorting_context_id = sorting_context_id; 47} 48 49void SharedQuadState::AsValueInto(base::debug::TracedValue* value) const { 50 value->BeginArray("transform"); 51 MathUtil::AddToTracedValue(content_to_target_transform, value); 52 value->EndArray(); 53 54 value->BeginDictionary("layer_content_bounds"); 55 MathUtil::AddToTracedValue(content_bounds, value); 56 value->EndDictionary(); 57 58 value->BeginArray("layer_visible_content_rect"); 59 MathUtil::AddToTracedValue(visible_content_rect, value); 60 value->EndArray(); 61 62 value->SetBoolean("is_clipped", is_clipped); 63 64 value->BeginArray("clip_rect"); 65 MathUtil::AddToTracedValue(clip_rect, value); 66 value->EndArray(); 67 68 value->SetDouble("opacity", opacity); 69 value->SetString("blend_mode", SkXfermode::ModeName(blend_mode)); 70 TracedValue::MakeDictIntoImplicitSnapshotWithCategory( 71 TRACE_DISABLED_BY_DEFAULT("cc.debug.quads"), 72 value, 73 "cc::SharedQuadState", 74 this); 75} 76 77} // namespace cc 78