diff options
author | crupest <crupest@outlook.com> | 2022-05-10 23:06:59 +0800 |
---|---|---|
committer | crupest <crupest@outlook.com> | 2022-05-10 23:06:59 +0800 |
commit | e6e6bba241e36722b23044a99b5b406457fb33b8 (patch) | |
tree | d6cb7fa940516e009c4a63e957591a5878807834 | |
parent | 891bf38d8580b83cdf6ae315cb2650dae7d79006 (diff) | |
download | cru-e6e6bba241e36722b23044a99b5b406457fb33b8.tar.gz cru-e6e6bba241e36722b23044a99b5b406457fb33b8.tar.bz2 cru-e6e6bba241e36722b23044a99b5b406457fb33b8.zip |
...
-rw-r--r-- | include/cru/platform/graphics/cairo/Base.h | 11 | ||||
-rw-r--r-- | include/cru/platform/graphics/cairo/CairoGraphicsFactory.h | 16 | ||||
-rw-r--r-- | include/cru/platform/graphics/cairo/CairoResource.h | 27 | ||||
-rw-r--r-- | src/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/platform/graphics/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/platform/graphics/cairo/CMakeLists.txt | 10 | ||||
-rw-r--r-- | src/platform/graphics/cairo/CairoGraphicsFactory.cpp | 8 | ||||
-rw-r--r-- | src/platform/graphics/cairo/CairoResource.cpp | 15 |
8 files changed, 91 insertions, 0 deletions
diff --git a/include/cru/platform/graphics/cairo/Base.h b/include/cru/platform/graphics/cairo/Base.h new file mode 100644 index 00000000..7e8eeaa1 --- /dev/null +++ b/include/cru/platform/graphics/cairo/Base.h @@ -0,0 +1,11 @@ +#pragma once + +#ifdef CRU_PLATFORM_WINDOWS +#ifdef CRU_PLATFORM_GRAPHICS_CAIRO_EXPORT_API +#define CRU_PLATFORM_GRAPHICS_CAIRO_API __declspec(dllexport) +#else +#define CRU_PLATFORM_GRAPHICS_CAIRO_API __declspec(dllimport) +#endif +#else +#define CRU_PLATFORM_GRAPHICS_CAIRO_API +#endif diff --git a/include/cru/platform/graphics/cairo/CairoGraphicsFactory.h b/include/cru/platform/graphics/cairo/CairoGraphicsFactory.h new file mode 100644 index 00000000..0c364d5e --- /dev/null +++ b/include/cru/platform/graphics/cairo/CairoGraphicsFactory.h @@ -0,0 +1,16 @@ +#pragma once + +#include "../Factory.h" +#include "CairoResource.h" + +namespace cru::platform::graphics::cairo { +class CRU_PLATFORM_GRAPHICS_CAIRO_API CairoGraphicsFactory + : public CairoResource, + public virtual IGraphicsFactory { + public: + CairoGraphicsFactory(); + ~CairoGraphicsFactory() override; + + public: +}; +} // namespace cru::platform::graphics::cairo diff --git a/include/cru/platform/graphics/cairo/CairoResource.h b/include/cru/platform/graphics/cairo/CairoResource.h new file mode 100644 index 00000000..bf35ab26 --- /dev/null +++ b/include/cru/platform/graphics/cairo/CairoResource.h @@ -0,0 +1,27 @@ +#pragma once +#include "Base.h" + +#include "../Resource.h" + +namespace cru::platform::graphics::cairo { +class CairoGraphicsFactory; + +class CRU_PLATFORM_GRAPHICS_CAIRO_API CairoResource + : public Object, + public virtual IGraphicsResource { + public: + explicit CairoResource(CairoGraphicsFactory* factory); + + CRU_DELETE_COPY(CairoResource) + CRU_DELETE_MOVE(CairoResource) + + ~CairoResource() override; + + String GetPlatformId() const override; + IGraphicsFactory* GetGraphicsFactory() override; + CairoGraphicsFactory* GetCairoGraphicsFactory() const { return factory_; } + + private: + CairoGraphicsFactory* factory_; +}; +} // namespace cru::platform::graphics::cairo diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 24adea96..48eb49d3 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -6,6 +6,8 @@ if(WIN32) add_subdirectory(win) elseif (APPLE) add_subdirectory(osx) +elseif (UNIX) + add_subdirectory(unix) endif() add_subdirectory(ui) diff --git a/src/platform/graphics/CMakeLists.txt b/src/platform/graphics/CMakeLists.txt index dc0a429e..a92fe0ff 100644 --- a/src/platform/graphics/CMakeLists.txt +++ b/src/platform/graphics/CMakeLists.txt @@ -6,3 +6,5 @@ add_library(cru_platform_graphics SHARED ) target_compile_definitions(cru_platform_graphics PRIVATE CRU_PLATFORM_GRAPHICS_EXPORT_API) target_link_libraries(cru_platform_graphics PUBLIC cru_platform_base) + +add_subdirectory(cairo) diff --git a/src/platform/graphics/cairo/CMakeLists.txt b/src/platform/graphics/cairo/CMakeLists.txt new file mode 100644 index 00000000..23f9a714 --- /dev/null +++ b/src/platform/graphics/cairo/CMakeLists.txt @@ -0,0 +1,10 @@ +if (UNIX) + find_library(LIB_CAIRO cairo REQUIRED) + + add_library(cru_platform_graphics_cairo SHARED + CairoGraphicsFactory.cpp + CairoResource.cpp + ) + target_compile_definitions(cru_platform_graphics_cairo PRIVATE CRU_PLATFORM_GRAPHICS_CAIRO_EXPORT_API) + target_link_libraries(cru_platform_graphics_cairo PUBLIC cru_platform_graphics PRIVATE ${LIB_CAIRO}) +endif() diff --git a/src/platform/graphics/cairo/CairoGraphicsFactory.cpp b/src/platform/graphics/cairo/CairoGraphicsFactory.cpp new file mode 100644 index 00000000..8ff72065 --- /dev/null +++ b/src/platform/graphics/cairo/CairoGraphicsFactory.cpp @@ -0,0 +1,8 @@ +#include "cru/platform/graphics/cairo/CairoGraphicsFactory.h" +#include "cru/platform/graphics/cairo/CairoResource.h" + +namespace cru::platform::graphics::cairo { +CairoGraphicsFactory::CairoGraphicsFactory() : CairoResource(this) {} + +CairoGraphicsFactory::~CairoGraphicsFactory() {} +} // namespace cru::platform::graphics::cairo diff --git a/src/platform/graphics/cairo/CairoResource.cpp b/src/platform/graphics/cairo/CairoResource.cpp new file mode 100644 index 00000000..ee371efc --- /dev/null +++ b/src/platform/graphics/cairo/CairoResource.cpp @@ -0,0 +1,15 @@ +#include "cru/platform/graphics/cairo/CairoResource.h" +#include "cru/platform/graphics/cairo/CairoGraphicsFactory.h" + +namespace cru::platform::graphics::cairo { +static const String kCairoGraphicsPlatformId(u"cairo"); + +CairoResource::CairoResource(CairoGraphicsFactory* factory) + : factory_(factory) {} + +CairoResource::~CairoResource() {} + +String CairoResource::GetPlatformId() const { return kCairoGraphicsPlatformId; } + +IGraphicsFactory* CairoResource::GetGraphicsFactory() { return factory_; } +} // namespace cru::platform::graphics::cairo |