/* * Copyright 2021 Google LLC * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef skiatest_graphite_ContextFactory_DEFINED #define skiatest_graphite_ContextFactory_DEFINED #include #include "include/core/SkRefCnt.h" #include "include/gpu/graphite/GraphiteTypes.h" #include "tools/graphite/GraphiteTestContext.h" // TODO: This is only included to get access to GrContextFactory::ContextType. We should instead // move all of tools/gpu/ into tools/gpu/ganesh and tools/graphite into tools/gpu/graphite. Then in // tools gpu we can have files for shared things between ganesh and graphite like ContextType. #include "tools/gpu/GrContextFactory.h" using sk_gpu_test::GrContextFactory; namespace skgpu::graphite { class Context; } namespace skiatest::graphite { class ContextFactory { public: class ContextInfo { public: ContextInfo() = default; ContextInfo(ContextInfo&& other); ~ContextInfo() = default; GrContextFactory::ContextType type() const { return fType; } skgpu::graphite::Context* context() const { return fContext.get(); } GraphiteTestContext* testContext() const { return fTestContext.get(); } private: friend class ContextFactory; // for ctor ContextInfo(GrContextFactory::ContextType type, std::unique_ptr testContext, std::unique_ptr context); GrContextFactory::ContextType fType = GrContextFactory::kMock_ContextType; std::unique_ptr fTestContext; std::unique_ptr fContext; }; ContextFactory() = default; ContextFactory(const ContextFactory&) = delete; ContextFactory& operator=(const ContextFactory&) = delete; ~ContextFactory() = default; std::tuple getContextInfo( GrContextFactory::ContextType); private: std::vector fContexts; }; } // namespace skiatest::graphite #endif // skiatest_graphite_ContextFactory_DEFINED