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