| 103 | } // anonymous namespace |
| 104 | |
| 105 | void ImageTargetFileQuartz::setupImageDestOptions( ImageTarget::Options options ) |
| 106 | { |
| 107 | int bitsPerComponent = ImageIo::dataTypeBytes( getDataType() ) * 8; |
| 108 | |
| 109 | // setup the dictionary of options for CGImageDestinationAddImage |
| 110 | mImageDestOptions = std::shared_ptr<__CFDictionary>( ::CFDictionaryCreateMutable( kCFAllocatorDefault, 3, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks ), cocoa::safeCfRelease ); |
| 111 | ::CFDictionarySetValue( mImageDestOptions.get(), kCGImagePropertyIsFloat, ( getDataType() == ImageIo::FLOAT32 ) ? kCFBooleanTrue : kCFBooleanFalse ); |
| 112 | ::CFDictionarySetValue( mImageDestOptions.get(), kCGImagePropertyHasAlpha, ( hasAlpha() ) ? kCFBooleanTrue : kCFBooleanFalse ); |
| 113 | ::CFNumberRef depthNumber = ::CFNumberCreate( kCFAllocatorDefault, kCFNumberIntType, &bitsPerComponent ); |
| 114 | ::CFDictionarySetValue( mImageDestOptions.get(), kCGImagePropertyDepth, depthNumber ); |
| 115 | ::CFRelease( depthNumber ); |
| 116 | float qualityValue = options.getQuality(); |
| 117 | ::CFNumberRef qualityNumber = ::CFNumberCreate( kCFAllocatorDefault, kCFNumberFloatType, &qualityValue ); |
| 118 | ::CFDictionarySetValue( mImageDestOptions.get(), kCGImageDestinationLossyCompressionQuality, qualityNumber ); |
| 119 | ::CFRelease( qualityNumber ); |
| 120 | } |
| 121 | |
| 122 | ImageTargetFileQuartz::ImageTargetFileQuartz( DataTargetRef dataTarget, ImageSourceRef imageSource, ImageTarget::Options options, const std::string &extensionData ) |
| 123 | : cocoa::ImageTargetCgImage( imageSource, options ) |
nothing calls this directly
no test coverage detected