From 40bbf3c14a782673bbd36c8a98adb0934b06add5 Mon Sep 17 00:00:00 2001 From: Yuqian Yang Date: Mon, 3 Nov 2025 20:48:22 +0800 Subject: Osx remove Resource.h. --- src/platform/graphics/quartz/Base.cpp | 62 +++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 src/platform/graphics/quartz/Base.cpp (limited to 'src/platform/graphics/quartz/Base.cpp') diff --git a/src/platform/graphics/quartz/Base.cpp b/src/platform/graphics/quartz/Base.cpp new file mode 100644 index 00000000..3d6e664a --- /dev/null +++ b/src/platform/graphics/quartz/Base.cpp @@ -0,0 +1,62 @@ +#include "cru/platform/graphics/quartz/Base.h" + +namespace cru::platform::graphics::quartz { + +CGPoint Convert(const Point& point) { return CGPoint{point.x, point.y}; } +Point Convert(const CGPoint& point) { return Point(point.x, point.y); } + +CGSize Convert(const Size& size) { return CGSize{size.width, size.height}; } +Size Convert(const CGSize& size) { return Size(size.width, size.height); } + +CGAffineTransform Convert(const Matrix& matrix) { + return CGAffineTransformMake(matrix.m11, matrix.m12, matrix.m21, matrix.m22, + matrix.m31, matrix.m32); +} + +Matrix Convert(const CGAffineTransform& matrix) { + return Matrix(matrix.a, matrix.b, matrix.c, matrix.d, matrix.tx, matrix.ty); +} + +CGRect Convert(const Rect& rect) { + return CGRect{CGPoint{rect.left, rect.top}, CGSize{rect.width, rect.height}}; +} + +Rect Convert(const CGRect& rect) { + return Rect{static_cast(rect.origin.x), + static_cast(rect.origin.y), + static_cast(rect.size.width), + static_cast(rect.size.height)}; +} + +const CGDataProviderSequentialCallbacks kStreamToCGDataProviderCallbacks{ + 1, + [](void* stream, void* buffer, size_t size) -> size_t { + return static_cast(stream)->Read( + static_cast(buffer), size); + }, + [](void* stream, off_t offset) -> off_t { + auto s = static_cast(stream); + auto current_position = s->Tell(); + s->Seek(offset, io::Stream::SeekOrigin::Current); + return s->Tell() - current_position; + }, + [](void* stream) { static_cast(stream)->Rewind(); }, + [](void* stream) {}}; + +CGDataProviderRef ConvertStreamToCGDataProvider(io::Stream* stream) { + return CGDataProviderCreateSequential(stream, + &kStreamToCGDataProviderCallbacks); +} + +const CGDataConsumerCallbacks kStreamToCGDataConsumerCallbacks{ + [](void* info, const void* buffer, size_t count) -> size_t { + return static_cast(info)->Write( + static_cast(buffer), count); + }, + [](void* info) {}}; + +CGDataConsumerRef ConvertStreamToCGDataConsumer(io::Stream* stream) { + return CGDataConsumerCreate(stream, &kStreamToCGDataConsumerCallbacks); +} + +} // namespace cru::platform::graphics::quartz -- cgit v1.2.3