MCPcopy Create free account
hub / github.com/cinder/Cinder / ImageTargetFileQuartz

Method ImageTargetFileQuartz

src/cinder/ImageTargetFileQuartz.cpp:122–151  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

120}
121
122ImageTargetFileQuartz::ImageTargetFileQuartz( DataTargetRef dataTarget, ImageSourceRef imageSource, ImageTarget::Options options, const std::string &extensionData )
123 : cocoa::ImageTargetCgImage( imageSource, options )
124{
125 cocoa::SafeCfString uti = cocoa::createSafeCfString( extensionData );
126
127 mImageDest = NULL;
128 if( dataTarget->providesFilePath() ) {
129 cocoa::SafeCfString pathString = cocoa::createSafeCfString( dataTarget->getFilePath().string() );
130 const std::shared_ptr<__CFURL> urlRef( (__CFURL*)::CFURLCreateWithFileSystemPath( kCFAllocatorDefault, pathString.get(), kCFURLPOSIXPathStyle, false ), cocoa::safeCfRelease );
131 mImageDest = ::CGImageDestinationCreateWithURL( urlRef.get(), uti.get(), 1, NULL );
132 }
133 else if( dataTarget->providesUrl() ) {
134 std::shared_ptr<__CFURL> urlRef( (__CFURL*)cocoa::createCfUrl( dataTarget->getUrl() ), cocoa::safeCfRelease );
135 mImageDest = ::CGImageDestinationCreateWithURL( urlRef.get(), uti.get(), 1, NULL );
136
137 }
138 else { // we'll wrap a cinder::OStream in a CGDataConsumer for output
139 OStreamRef *ostreamRef = new OStreamRef( dataTarget->getStream() );
140 ::CGDataConsumerCallbacks callbacks;
141 callbacks.putBytes = cgDataConsumerPutBytes;
142 callbacks.releaseConsumer = cgDataConsumerRelease;
143 std::shared_ptr<CGDataConsumer> consumer( ::CGDataConsumerCreate( ostreamRef, &callbacks ), ::CGDataConsumerRelease );
144 mImageDest = ::CGImageDestinationCreateWithDataConsumer( consumer.get(), uti.get(), 1, NULL );
145 }
146
147 if( ! mImageDest )
148 throw ImageIoExceptionFailedWrite( "Failed to write CGImageDestinationRef." );
149
150 setupImageDestOptions( options );
151}
152
153void ImageTargetFileQuartz::finalize()
154{

Callers

nothing calls this directly

Calls 3

getStreamMethod · 0.80
stringMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected