| Index: cc/playback/compositing_display_item.cc
|
| diff --git a/cc/playback/compositing_display_item.cc b/cc/playback/compositing_display_item.cc
|
| index c9b74fc478654b6de58158b70bb7624cbb4b31ef..4705b8022e6c97ce3537fb94f9d255617b985d8e 100644
|
| --- a/cc/playback/compositing_display_item.cc
|
| +++ b/cc/playback/compositing_display_item.cc
|
| @@ -6,7 +6,13 @@
|
|
|
| #include "base/strings/stringprintf.h"
|
| #include "base/trace_event/trace_event_argument.h"
|
| +#include "cc/proto/display_item.pb.h"
|
| +#include "cc/proto/gfx_conversions.h"
|
| +#include "cc/proto/skia_conversions.h"
|
| #include "third_party/skia/include/core/SkCanvas.h"
|
| +#include "third_party/skia/include/core/SkData.h"
|
| +#include "third_party/skia/include/core/SkFlattenable.h"
|
| +#include "third_party/skia/include/core/SkFlattenableSerialization.h"
|
| #include "third_party/skia/include/core/SkPaint.h"
|
| #include "third_party/skia/include/core/SkXfermode.h"
|
| #include "ui/gfx/skia_util.h"
|
| @@ -36,6 +42,46 @@ void CompositingDisplayItem::SetNew(uint8_t alpha,
|
| external_memory_usage);
|
| }
|
|
|
| +void CompositingDisplayItem::ToProtobuf(proto::DisplayItem* proto) {
|
| + proto->set_type(proto::DisplayItem::Type_Compositing);
|
| +
|
| + proto::CompositingDisplayItem* details = proto->mutable_details_compositing();
|
| + details->set_alpha(static_cast<uint32_t>(alpha_));
|
| + details->set_mode(SkXfermodeModeToProto(xfermode_));
|
| + if (has_bounds_)
|
| + RectFToProto(gfx::SkRectToRectF(bounds_), details->mutable_bounds());
|
| +
|
| + if (color_filter_) {
|
| + skia::RefPtr<SkData> data =
|
| + skia::AdoptRef(SkValidatingSerializeFlattenable(color_filter_.get()));
|
| + if (data->size() > 0)
|
| + details->set_color_filter(data->data(), data->size());
|
| + }
|
| +}
|
| +
|
| +void CompositingDisplayItem::FromProtobuf(const proto::DisplayItem& proto) {
|
| + DCHECK_EQ(proto::DisplayItem::Type_Compositing, proto.type());
|
| +
|
| + const proto::CompositingDisplayItem& details = proto.details_compositing();
|
| + uint8_t alpha = static_cast<uint8_t>(details.alpha());
|
| + SkXfermode::Mode xfermode = SkXfermodeModeFromProto(details.mode());
|
| + scoped_ptr<SkRect> bounds;
|
| + if (details.has_bounds()) {
|
| + bounds.reset(
|
| + new SkRect(gfx::RectFToSkRect(ProtoToRectF(details.bounds()))));
|
| + }
|
| +
|
| + skia::RefPtr<SkColorFilter> filter;
|
| + if (details.has_color_filter()) {
|
| + SkFlattenable* flattenable = SkValidatingDeserializeFlattenable(
|
| + details.color_filter().c_str(), details.color_filter().size(),
|
| + SkColorFilter::GetFlattenableType());
|
| + filter = skia::AdoptRef(static_cast<SkColorFilter*>(flattenable));
|
| + }
|
| +
|
| + SetNew(alpha, xfermode, bounds.get(), filter.Pass());
|
| +}
|
| +
|
| void CompositingDisplayItem::Raster(
|
| SkCanvas* canvas,
|
| const gfx::Rect& canvas_target_playback_rect,
|
| @@ -72,6 +118,14 @@ EndCompositingDisplayItem::EndCompositingDisplayItem() {
|
| EndCompositingDisplayItem::~EndCompositingDisplayItem() {
|
| }
|
|
|
| +void EndCompositingDisplayItem::ToProtobuf(proto::DisplayItem* proto) {
|
| + proto->set_type(proto::DisplayItem::Type_EndCompositing);
|
| +}
|
| +
|
| +void EndCompositingDisplayItem::FromProtobuf(const proto::DisplayItem& proto) {
|
| + DCHECK_EQ(proto::DisplayItem::Type_EndCompositing, proto.type());
|
| +}
|
| +
|
| void EndCompositingDisplayItem::Raster(
|
| SkCanvas* canvas,
|
| const gfx::Rect& canvas_target_playback_rect,
|
|
|