blob: 675e6dcc2699e8014b4dceaa60ef2dcf208c47e0 [file] [log] [blame]
// Copyright 2016 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.
#ifndef CC_IPC_SHARED_QUAD_STATE_STRUCT_TRAITS_H_
#define CC_IPC_SHARED_QUAD_STATE_STRUCT_TRAITS_H_
#include "cc/ipc/shared_quad_state.mojom.h"
#include "cc/quads/shared_quad_state.h"
namespace mojo {
template <>
struct StructTraits<cc::mojom::SharedQuadState, cc::SharedQuadState> {
static const gfx::Transform& quad_to_target_transform(
const cc::SharedQuadState& sqs) {
return sqs.quad_to_target_transform;
}
static gfx::Size quad_layer_bounds(const cc::SharedQuadState& sqs) {
return sqs.quad_layer_bounds;
}
static gfx::Rect visible_quad_layer_rect(const cc::SharedQuadState& sqs) {
return sqs.visible_quad_layer_rect;
}
static gfx::Rect clip_rect(const cc::SharedQuadState& sqs) {
return sqs.clip_rect;
}
static bool is_clipped(const cc::SharedQuadState& sqs) {
return sqs.is_clipped;
}
static float opacity(const cc::SharedQuadState& sqs) { return sqs.opacity; }
static uint32_t blend_mode(const cc::SharedQuadState& sqs) {
return sqs.blend_mode;
}
static int32_t sorting_context_id(const cc::SharedQuadState& sqs) {
return sqs.sorting_context_id;
}
static bool Read(cc::mojom::SharedQuadStateDataView data,
cc::SharedQuadState* out) {
if (!data.ReadQuadToTargetTransform(&out->quad_to_target_transform) ||
!data.ReadQuadLayerBounds(&out->quad_layer_bounds) ||
!data.ReadVisibleQuadLayerRect(&out->visible_quad_layer_rect) ||
!data.ReadClipRect(&out->clip_rect)) {
return false;
}
out->is_clipped = data.is_clipped();
out->opacity = data.opacity();
if (data.blend_mode() > SkXfermode::kLastMode)
return false;
out->blend_mode = static_cast<SkXfermode::Mode>(data.blend_mode());
out->sorting_context_id = data.sorting_context_id();
return true;
}
};
} // namespace mojo
#endif // CC_IPC_SHARED_QUAD_STATE_STRUCT_TRAITS_H_