| /* | |
| * Copyright 2022 Rive | |
| */ | |
| #ifndef _RIVE_CG_RENDERER_HPP_ | |
| #define _RIVE_CG_RENDERER_HPP_ | |
| #include "rive/renderer.hpp" | |
| #include "utils/auto_cf.hpp" | |
| #if defined(RIVE_BUILD_FOR_OSX) | |
| #include <ApplicationServices/ApplicationServices.h> | |
| #elif defined(RIVE_BUILD_FOR_IOS) | |
| #include <CoreGraphics/CoreGraphics.h> | |
| #include <ImageIO/ImageIO.h> | |
| #endif | |
| namespace rive | |
| { | |
| class CGRenderer : public Renderer | |
| { | |
| protected: | |
| CGContextRef m_ctx; | |
| public: | |
| CGRenderer(CGContextRef ctx, int width, int height); | |
| ~CGRenderer() override; | |
| void save() override; | |
| void restore() override; | |
| void transform(const Mat2D& transform) override; | |
| void clipPath(RenderPath* path) override; | |
| void drawPath(RenderPath* path, RenderPaint* paint) override; | |
| void drawImage(const RenderImage*, BlendMode, float opacity) override; | |
| void drawImageMesh(const RenderImage*, | |
| rcp<RenderBuffer> vertices_f32, | |
| rcp<RenderBuffer> uvCoords_f32, | |
| rcp<RenderBuffer> indices_u16, | |
| uint32_t vertexCount, | |
| uint32_t indexCount, | |
| BlendMode, | |
| float opacity) override; | |
| static AutoCF<CGImageRef> DecodeToCGImage(Span<const uint8_t>); | |
| static AutoCF<CGImageRef> FlipCGImageInY(AutoCF<CGImageRef>); | |
| }; | |
| } // namespace rive | |
| #endif |