// Copyright 2013 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/tiles/tile_draw_info.h" #include "base/metrics/histogram_macros.h" #include "cc/base/math_util.h" namespace cc { TileDrawInfo::TileDrawInfo() = default; TileDrawInfo::~TileDrawInfo() { DCHECK(!resource_); } void TileDrawInfo::AsValueInto(base::trace_event::TracedValue* state) const { state->SetBoolean("is_solid_color", mode_ == SOLID_COLOR_MODE); state->SetBoolean("is_transparent", mode_ == SOLID_COLOR_MODE && !SkColorGetA(solid_color_)); } void TileDrawInfo::SetResource(ResourcePool::InUsePoolResource resource, bool resource_is_checker_imaged, bool contents_swizzled, bool is_premultiplied) { DCHECK(!resource_); DCHECK(resource); mode_ = RESOURCE_MODE; is_resource_ready_to_draw_ = false; resource_is_checker_imaged_ = resource_is_checker_imaged; contents_swizzled_ = contents_swizzled; is_premultiplied_ = is_premultiplied; resource_ = std::move(resource); } const ResourcePool::InUsePoolResource& TileDrawInfo::GetResource() { DCHECK_EQ(mode_, RESOURCE_MODE); DCHECK(resource_); return resource_; } ResourcePool::InUsePoolResource TileDrawInfo::TakeResource() { DCHECK_EQ(mode_, RESOURCE_MODE); DCHECK(resource_); is_resource_ready_to_draw_ = false; resource_is_checker_imaged_ = false; contents_swizzled_ = false; is_premultiplied_ = false; return std::move(resource_); } } // namespace cc