1116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// found in the LICENSE file.
4116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
5116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#ifndef MOJO_SERVICES_PUBLIC_CPP_SURFACES_SURFACES_TYPE_CONVERTERS_H_
6116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#define MOJO_SERVICES_PUBLIC_CPP_SURFACES_SURFACES_TYPE_CONVERTERS_H_
7116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
8116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "base/memory/scoped_ptr.h"
9116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "cc/resources/returned_resource.h"
10116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "cc/resources/transferable_resource.h"
11116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "cc/surfaces/surface_id.h"
12116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "gpu/command_buffer/common/mailbox.h"
13116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "gpu/command_buffer/common/mailbox_holder.h"
14116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/services/public/cpp/surfaces/mojo_surfaces_export.h"
15116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/services/public/interfaces/surfaces/quads.mojom.h"
16116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/services/public/interfaces/surfaces/surface_id.mojom.h"
17116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "mojo/services/public/interfaces/surfaces/surfaces.mojom.h"
18116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#include "third_party/skia/include/core/SkColor.h"
19116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
20116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace cc {
21116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass CompositorFrame;
22116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass DrawQuad;
23116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass RenderPass;
241320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucciclass RenderPassId;
25116680a4aac90f2aa7413d9095a592090648e557Ben Murdochclass SharedQuadState;
26116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace cc
27116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
28116680a4aac90f2aa7413d9095a592090648e557Ben Murdochnamespace mojo {
29116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
30116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Types from surface_id.mojom
31116680a4aac90f2aa7413d9095a592090648e557Ben Murdochtemplate <>
321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT TypeConverter<SurfaceIdPtr, cc::SurfaceId> {
331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static SurfaceIdPtr Convert(const cc::SurfaceId& input);
341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
351320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitemplate <>
361320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT TypeConverter<cc::SurfaceId, SurfaceIdPtr> {
371320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static cc::SurfaceId Convert(const SurfaceIdPtr& input);
38116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
39116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
40116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Types from quads.mojom
41116680a4aac90f2aa7413d9095a592090648e557Ben Murdochtemplate <>
421320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT TypeConverter<ColorPtr, SkColor> {
431320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static ColorPtr Convert(const SkColor& input);
441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitemplate <>
461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT TypeConverter<SkColor, ColorPtr> {
471320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static SkColor Convert(const ColorPtr& input);
481320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitemplate <>
511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT TypeConverter<RenderPassIdPtr, cc::RenderPassId> {
521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static RenderPassIdPtr Convert(const cc::RenderPassId& input);
531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
541320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci
551320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitemplate <>
561320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT TypeConverter<cc::RenderPassId, RenderPassIdPtr> {
571320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static cc::RenderPassId Convert(const RenderPassIdPtr& input);
58116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
59116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
60116680a4aac90f2aa7413d9095a592090648e557Ben Murdochtemplate <>
611320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT TypeConverter<QuadPtr, cc::DrawQuad> {
621320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static QuadPtr Convert(const cc::DrawQuad& input);
63116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
64116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
65116680a4aac90f2aa7413d9095a592090648e557Ben Murdochtemplate <>
661320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT
675f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)TypeConverter<SharedQuadStatePtr, cc::SharedQuadState> {
681320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static SharedQuadStatePtr Convert(const cc::SharedQuadState& input);
69116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
70116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
71116680a4aac90f2aa7413d9095a592090648e557Ben Murdochtemplate <>
721320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT TypeConverter<PassPtr, cc::RenderPass> {
731320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static PassPtr Convert(const cc::RenderPass& input);
74116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
75116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
761320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitemplate <>
771320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT TypeConverter<scoped_ptr<cc::RenderPass>, PassPtr> {
781320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static scoped_ptr<cc::RenderPass> Convert(const PassPtr& input);
791320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
80116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
81116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch// Types from surfaces.mojom
82116680a4aac90f2aa7413d9095a592090648e557Ben Murdochtemplate <>
831320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT TypeConverter<MailboxPtr, gpu::Mailbox> {
841320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static MailboxPtr Convert(const gpu::Mailbox& input);
851320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
861320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitemplate <>
871320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT TypeConverter<gpu::Mailbox, MailboxPtr> {
881320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static gpu::Mailbox Convert(const MailboxPtr& input);
89116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
90116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
91116680a4aac90f2aa7413d9095a592090648e557Ben Murdochtemplate <>
921320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT
935f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)TypeConverter<MailboxHolderPtr, gpu::MailboxHolder> {
941320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static MailboxHolderPtr Convert(const gpu::MailboxHolder& input);
951320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
961320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitemplate <>
971320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT
981320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTypeConverter<gpu::MailboxHolder, MailboxHolderPtr> {
991320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static gpu::MailboxHolder Convert(const MailboxHolderPtr& input);
100116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
101116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
102116680a4aac90f2aa7413d9095a592090648e557Ben Murdochtemplate <>
1031320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT
1045f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)TypeConverter<TransferableResourcePtr, cc::TransferableResource> {
1051320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static TransferableResourcePtr Convert(const cc::TransferableResource& input);
1061320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
1071320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitemplate <>
1081320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT
1091320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTypeConverter<cc::TransferableResource, TransferableResourcePtr> {
1101320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static cc::TransferableResource Convert(const TransferableResourcePtr& input);
111116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
112116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
113116680a4aac90f2aa7413d9095a592090648e557Ben Murdochtemplate <>
1141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT
1155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)TypeConverter<Array<TransferableResourcePtr>, cc::TransferableResourceArray> {
1161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static Array<TransferableResourcePtr> Convert(
117116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const cc::TransferableResourceArray& input);
1181320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
1191320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitemplate <>
1201320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT
1211320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTypeConverter<cc::TransferableResourceArray, Array<TransferableResourcePtr> > {
1221320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static cc::TransferableResourceArray Convert(
1235f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      const Array<TransferableResourcePtr>& input);
124116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
125116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
126116680a4aac90f2aa7413d9095a592090648e557Ben Murdochtemplate <>
1271320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT
1285f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)TypeConverter<ReturnedResourcePtr, cc::ReturnedResource> {
1291320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static ReturnedResourcePtr Convert(const cc::ReturnedResource& input);
1301320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
1311320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitemplate <>
1321320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT
1331320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTypeConverter<cc::ReturnedResource, ReturnedResourcePtr> {
1341320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static cc::ReturnedResource Convert(const ReturnedResourcePtr& input);
135116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
136116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
137116680a4aac90f2aa7413d9095a592090648e557Ben Murdochtemplate <>
1381320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT
1395f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)TypeConverter<Array<ReturnedResourcePtr>, cc::ReturnedResourceArray> {
1401320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static Array<ReturnedResourcePtr> Convert(
141116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch      const cc::ReturnedResourceArray& input);
142116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
143116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
144116680a4aac90f2aa7413d9095a592090648e557Ben Murdochtemplate <>
1451320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT TypeConverter<FramePtr, cc::CompositorFrame> {
1461320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static FramePtr Convert(const cc::CompositorFrame& input);
147116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch};
148116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
1491320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccitemplate <>
1501320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tuccistruct MOJO_SURFACES_EXPORT
1511320f92c476a1ad9d19dba2a48c72b75566198e9Primiano TucciTypeConverter<scoped_ptr<cc::CompositorFrame>, FramePtr> {
1521320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci  static scoped_ptr<cc::CompositorFrame> Convert(const FramePtr& input);
1531320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci};
154116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
155116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch}  // namespace mojo
156116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch
157116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch#endif  // MOJO_SERVICES_PUBLIC_CPP_SURFACES_SURFACES_TYPE_CONVERTERS_H_
158