blob: c59ff126c55a8f483f82b01a34af3bb6d0f5e9a6 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#include "cru/osx/graphics/quartz/ImageFactory.hpp"
#include "cru/osx/graphics/quartz/Convert.hpp"
#include "cru/osx/graphics/quartz/Image.hpp"
#include "cru/platform/graphics/Image.hpp"
#include <ImageIO/ImageIO.h>
namespace cru::platform::graphics::osx::quartz {
QuartzImageFactory::QuartzImageFactory(IGraphicsFactory* graphics_factory)
: OsxQuartzResource(graphics_factory) {}
QuartzImageFactory::~QuartzImageFactory() {}
std::unique_ptr<IImage> QuartzImageFactory::DecodeFromStream(
io::Stream* stream) {
CGDataProviderRef data_provider = ConvertStreamToCGDataProvider(stream);
CGImageSourceRef image_source =
CGImageSourceCreateWithDataProvider(data_provider, nullptr);
CGImageRef cg_image =
CGImageSourceCreateImageAtIndex(image_source, 0, nullptr);
QuartzImage* image =
new QuartzImage(GetGraphicsFactory(), this, cg_image, true);
CFRelease(cg_image);
CGDataProviderRelease(data_provider);
return std::unique_ptr<IImage>(image);
}
} // namespace cru::platform::graphics::osx::quartz
|