// Image colorspace
void Magick::Image::colorSpace( const ColorspaceType colorSpace_ )
{
- // Nothing to do?
- if ( image()->colorspace == colorSpace_ )
- return;
-
modifyImage();
ExceptionInfo exceptionInfo;
GetExceptionInfo( &exceptionInfo );
- if ( colorSpace_ != RGBColorspace &&
- colorSpace_ != sRGBColorspace &&
- colorSpace_ != TransparentColorspace &&
- colorSpace_ != GRAYColorspace )
- {
- if (image()->colorspace != RGBColorspace &&
- image()->colorspace != sRGBColorspace &&
- image()->colorspace != TransparentColorspace &&
- image()->colorspace != GRAYColorspace)
- {
- /* Transform to RGB colorspace as intermediate step */
- TransformRGBImage( image(), image()->colorspace, &exceptionInfo );
- throwImageException();
- }
- /* Transform to final non-RGB colorspace */
- RGBTransformImage( image(), colorSpace_, &exceptionInfo );
- throwException( exceptionInfo );
- (void) DestroyExceptionInfo( &exceptionInfo );
- return;
- }
-
- if ( colorSpace_ == RGBColorspace ||
- colorSpace_ == sRGBColorspace ||
- colorSpace_ == TransparentColorspace ||
- colorSpace_ == GRAYColorspace )
- {
- /* Transform to a RGB-type colorspace */
- TransformRGBImage( image(), image()->colorspace, &exceptionInfo );
- throwException( exceptionInfo );
- (void) DestroyExceptionInfo( &exceptionInfo );
- return;
- }
+ TransformImageColorspace(image(), colorSpace_, &exceptionInfo);
throwException( exceptionInfo );
(void) DestroyExceptionInfo( &exceptionInfo );
}
using MagickCore::ResourceLimitError;
using MagickCore::ResourceLimitFatalError;
using MagickCore::ResourceLimitWarning;
- using MagickCore::RGBTransformImage;
using MagickCore::RollImage;
using MagickCore::RotateImage;
using MagickCore::SampleImage;
using MagickCore::TextureImage;
using MagickCore::ThrowException;
using MagickCore::TransformImage;
- using MagickCore::TransformRGBImage;
+ using MagickCore::TransformImageColorspace;
using MagickCore::TransparentPaintImage;
using MagickCore::TransparentPaintImageChroma;
using MagickCore::TrimImage;