aboutsummaryrefslogtreecommitdiff
path: root/include/cru/win/graphics/direct
diff options
context:
space:
mode:
Diffstat (limited to 'include/cru/win/graphics/direct')
-rw-r--r--include/cru/win/graphics/direct/Base.hpp12
-rw-r--r--include/cru/win/graphics/direct/Brush.hpp11
-rw-r--r--include/cru/win/graphics/direct/ComResource.hpp4
-rw-r--r--include/cru/win/graphics/direct/ConvertUtil.hpp2
-rw-r--r--include/cru/win/graphics/direct/Factory.hpp5
-rw-r--r--include/cru/win/graphics/direct/Font.hpp7
-rw-r--r--include/cru/win/graphics/direct/Geometry.hpp12
-rw-r--r--include/cru/win/graphics/direct/Painter.hpp7
-rw-r--r--include/cru/win/graphics/direct/Resource.hpp11
-rw-r--r--include/cru/win/graphics/direct/TextLayout.hpp7
-rw-r--r--include/cru/win/graphics/direct/WindowPainter.hpp3
-rw-r--r--include/cru/win/graphics/direct/WindowRenderTarget.hpp5
12 files changed, 55 insertions, 31 deletions
diff --git a/include/cru/win/graphics/direct/Base.hpp b/include/cru/win/graphics/direct/Base.hpp
new file mode 100644
index 00000000..b25a1c14
--- /dev/null
+++ b/include/cru/win/graphics/direct/Base.hpp
@@ -0,0 +1,12 @@
+#pragma once
+#include "../../WinPreConfig.hpp"
+
+#ifdef CRU_PLATFORM_WINDOWS
+#ifdef CRU_WIN_GRAPHICS_DIRECT_EXPORT_API
+#define CRU_WIN_GRAPHICS_DIRECT_API __declspec(dllexport)
+#else
+#define CRU_WIN_GRAPHICS_DIRECT_API __declspec(dllimport)
+#endif
+#else
+#define CRU_WIN_GRAPHICS_DIRECT_API
+#endif
diff --git a/include/cru/win/graphics/direct/Brush.hpp b/include/cru/win/graphics/direct/Brush.hpp
index 9d8e5384..22b0a8af 100644
--- a/include/cru/win/graphics/direct/Brush.hpp
+++ b/include/cru/win/graphics/direct/Brush.hpp
@@ -5,14 +5,15 @@
#include "cru/platform/graphics/Brush.hpp"
namespace cru::platform::graphics::win::direct {
-struct ID2DBrush : virtual IBrush {
+struct CRU_WIN_GRAPHICS_DIRECT_API ID2DBrush : virtual IBrush {
virtual ID2D1Brush* GetD2DBrushInterface() const = 0;
};
-class D2DSolidColorBrush : public DirectGraphicsResource,
- public virtual ISolidColorBrush,
- public virtual ID2DBrush,
- public virtual IComResource<ID2D1SolidColorBrush> {
+class CRU_WIN_GRAPHICS_DIRECT_API D2DSolidColorBrush
+ : public DirectGraphicsResource,
+ public virtual ISolidColorBrush,
+ public virtual ID2DBrush,
+ public virtual IComResource<ID2D1SolidColorBrush> {
public:
explicit D2DSolidColorBrush(DirectGraphicsFactory* factory);
diff --git a/include/cru/win/graphics/direct/ComResource.hpp b/include/cru/win/graphics/direct/ComResource.hpp
index 34ea39ed..f8738f6e 100644
--- a/include/cru/win/graphics/direct/ComResource.hpp
+++ b/include/cru/win/graphics/direct/ComResource.hpp
@@ -1,11 +1,11 @@
#pragma once
-#include "../../WinPreConfig.hpp"
+#include "Base.hpp"
#include "cru/common/Base.hpp"
namespace cru::platform::graphics::win::direct {
template <typename TInterface>
-struct IComResource : virtual Interface {
+struct CRU_WIN_GRAPHICS_DIRECT_API IComResource : virtual Interface {
virtual TInterface* GetComInterface() const = 0;
};
} // namespace cru::platform::graphics::win::direct
diff --git a/include/cru/win/graphics/direct/ConvertUtil.hpp b/include/cru/win/graphics/direct/ConvertUtil.hpp
index 0d8da8a1..963b22f3 100644
--- a/include/cru/win/graphics/direct/ConvertUtil.hpp
+++ b/include/cru/win/graphics/direct/ConvertUtil.hpp
@@ -1,5 +1,5 @@
#pragma once
-#include "../../WinPreConfig.hpp"
+#include "Base.hpp"
#include "cru/platform/graphics/Base.hpp"
diff --git a/include/cru/win/graphics/direct/Factory.hpp b/include/cru/win/graphics/direct/Factory.hpp
index efcebba7..932d302b 100644
--- a/include/cru/win/graphics/direct/Factory.hpp
+++ b/include/cru/win/graphics/direct/Factory.hpp
@@ -4,8 +4,9 @@
#include "cru/platform/graphics/Factory.hpp"
namespace cru::platform::graphics::win::direct {
-class DirectGraphicsFactory : public DirectResource,
- public virtual IGraphicsFactory {
+class CRU_WIN_GRAPHICS_DIRECT_API DirectGraphicsFactory
+ : public DirectResource,
+ public virtual IGraphicsFactory {
public:
DirectGraphicsFactory();
diff --git a/include/cru/win/graphics/direct/Font.hpp b/include/cru/win/graphics/direct/Font.hpp
index 3cd94f82..3bf423a0 100644
--- a/include/cru/win/graphics/direct/Font.hpp
+++ b/include/cru/win/graphics/direct/Font.hpp
@@ -7,9 +7,10 @@
#include <string_view>
namespace cru::platform::graphics::win::direct {
-class DWriteFont : public DirectGraphicsResource,
- public virtual IFont,
- public virtual IComResource<IDWriteTextFormat> {
+class CRU_WIN_GRAPHICS_DIRECT_API DWriteFont
+ : public DirectGraphicsResource,
+ public virtual IFont,
+ public virtual IComResource<IDWriteTextFormat> {
public:
DWriteFont(DirectGraphicsFactory* factory, String font_family,
float font_size);
diff --git a/include/cru/win/graphics/direct/Geometry.hpp b/include/cru/win/graphics/direct/Geometry.hpp
index b3b82f9c..3849045e 100644
--- a/include/cru/win/graphics/direct/Geometry.hpp
+++ b/include/cru/win/graphics/direct/Geometry.hpp
@@ -5,8 +5,9 @@
#include "cru/platform/graphics/Geometry.hpp"
namespace cru::platform::graphics::win::direct {
-class D2DGeometryBuilder : public DirectGraphicsResource,
- public virtual IGeometryBuilder {
+class CRU_WIN_GRAPHICS_DIRECT_API D2DGeometryBuilder
+ : public DirectGraphicsResource,
+ public virtual IGeometryBuilder {
public:
explicit D2DGeometryBuilder(DirectGraphicsFactory* factory);
@@ -33,9 +34,10 @@ class D2DGeometryBuilder : public DirectGraphicsResource,
Microsoft::WRL::ComPtr<ID2D1GeometrySink> geometry_sink_;
};
-class D2DGeometry : public DirectGraphicsResource,
- public virtual IGeometry,
- public IComResource<ID2D1Geometry> {
+class CRU_WIN_GRAPHICS_DIRECT_API D2DGeometry
+ : public DirectGraphicsResource,
+ public virtual IGeometry,
+ public IComResource<ID2D1Geometry> {
public:
D2DGeometry(DirectGraphicsFactory* factory,
Microsoft::WRL::ComPtr<ID2D1PathGeometry> geometry);
diff --git a/include/cru/win/graphics/direct/Painter.hpp b/include/cru/win/graphics/direct/Painter.hpp
index d7b90d19..81d102f1 100644
--- a/include/cru/win/graphics/direct/Painter.hpp
+++ b/include/cru/win/graphics/direct/Painter.hpp
@@ -7,9 +7,10 @@
#include <vector>
namespace cru::platform::graphics::win::direct {
-class D2DPainter : public DirectResource,
- public virtual IPainter,
- public virtual IComResource<ID2D1RenderTarget> {
+class CRU_WIN_GRAPHICS_DIRECT_API D2DPainter
+ : public DirectResource,
+ public virtual IPainter,
+ public virtual IComResource<ID2D1RenderTarget> {
public:
explicit D2DPainter(ID2D1RenderTarget* render_target);
diff --git a/include/cru/win/graphics/direct/Resource.hpp b/include/cru/win/graphics/direct/Resource.hpp
index c376628d..112af26f 100644
--- a/include/cru/win/graphics/direct/Resource.hpp
+++ b/include/cru/win/graphics/direct/Resource.hpp
@@ -1,5 +1,5 @@
#pragma once
-#include "../../WinPreConfig.hpp"
+#include "Base.hpp"
#include "cru/platform/graphics/Resource.hpp"
@@ -8,7 +8,9 @@
namespace cru::platform::graphics::win::direct {
class DirectGraphicsFactory;
-class DirectResource : public Object, public virtual IPlatformResource {
+class CRU_WIN_GRAPHICS_DIRECT_API DirectResource
+ : public Object,
+ public virtual IPlatformResource {
public:
static String kPlatformId;
@@ -25,8 +27,9 @@ class DirectResource : public Object, public virtual IPlatformResource {
String GetPlatformId() const final { return kPlatformId; }
};
-class DirectGraphicsResource : public DirectResource,
- public virtual IGraphicsResource {
+class CRU_WIN_GRAPHICS_DIRECT_API DirectGraphicsResource
+ : public DirectResource,
+ public virtual IGraphicsResource {
protected:
// Param factory can't be null.
explicit DirectGraphicsResource(DirectGraphicsFactory* factory);
diff --git a/include/cru/win/graphics/direct/TextLayout.hpp b/include/cru/win/graphics/direct/TextLayout.hpp
index b1843dd7..41698862 100644
--- a/include/cru/win/graphics/direct/TextLayout.hpp
+++ b/include/cru/win/graphics/direct/TextLayout.hpp
@@ -10,9 +10,10 @@
namespace cru::platform::graphics::win::direct {
class DWriteFont;
-class DWriteTextLayout : public DirectGraphicsResource,
- public virtual ITextLayout,
- public virtual IComResource<IDWriteTextLayout> {
+class CRU_WIN_GRAPHICS_DIRECT_API DWriteTextLayout
+ : public DirectGraphicsResource,
+ public virtual ITextLayout,
+ public virtual IComResource<IDWriteTextLayout> {
public:
DWriteTextLayout(DirectGraphicsFactory* factory, std::shared_ptr<IFont> font,
String text);
diff --git a/include/cru/win/graphics/direct/WindowPainter.hpp b/include/cru/win/graphics/direct/WindowPainter.hpp
index b5faf7b5..a39bc2b7 100644
--- a/include/cru/win/graphics/direct/WindowPainter.hpp
+++ b/include/cru/win/graphics/direct/WindowPainter.hpp
@@ -3,7 +3,8 @@
#include "WindowRenderTarget.hpp"
namespace cru::platform::graphics::win::direct {
-class D2DWindowPainter : public graphics::win::direct::D2DPainter {
+class CRU_WIN_GRAPHICS_DIRECT_API D2DWindowPainter
+ : public graphics::win::direct::D2DPainter {
public:
explicit D2DWindowPainter(D2DWindowRenderTarget* window);
diff --git a/include/cru/win/graphics/direct/WindowRenderTarget.hpp b/include/cru/win/graphics/direct/WindowRenderTarget.hpp
index c197841d..4774a1d3 100644
--- a/include/cru/win/graphics/direct/WindowRenderTarget.hpp
+++ b/include/cru/win/graphics/direct/WindowRenderTarget.hpp
@@ -3,9 +3,10 @@
namespace cru::platform::graphics::win::direct {
// Represents a window render target.
-class D2DWindowRenderTarget : public Object {
+class CRU_WIN_GRAPHICS_DIRECT_API D2DWindowRenderTarget : public Object {
public:
- D2DWindowRenderTarget(gsl::not_null<DirectGraphicsFactory*> factory, HWND hwnd);
+ D2DWindowRenderTarget(gsl::not_null<DirectGraphicsFactory*> factory,
+ HWND hwnd);
CRU_DELETE_COPY(D2DWindowRenderTarget)
CRU_DELETE_MOVE(D2DWindowRenderTarget)