mirror of
https://github.com/ImageMagick/ImageMagick.git
synced 2026-05-31 11:18:42 +02:00
migrate colorspace:auto-grayscale from MagickCore to coders where it belongs
This commit is contained in:
+6
-14
@@ -1500,9 +1500,6 @@ MagickExport MagickBooleanType SetImageColorspace(Image *image,
|
||||
MagickExport MagickBooleanType SetImageGray(Image *image,
|
||||
ExceptionInfo *exception)
|
||||
{
|
||||
const char
|
||||
*value;
|
||||
|
||||
ImageType
|
||||
type;
|
||||
|
||||
@@ -1514,9 +1511,6 @@ MagickExport MagickBooleanType SetImageGray(Image *image,
|
||||
return(MagickTrue);
|
||||
if (IssRGBCompatibleColorspace(image->colorspace) == MagickFalse)
|
||||
return(MagickFalse);
|
||||
value=GetImageProperty(image,"colorspace:auto-grayscale",exception);
|
||||
if (IsStringFalse(value) != MagickFalse)
|
||||
return(MagickFalse);
|
||||
type=IdentifyImageGray(image,exception);
|
||||
if (type == UndefinedType)
|
||||
return(MagickFalse);
|
||||
@@ -1557,26 +1551,24 @@ MagickExport MagickBooleanType SetImageGray(Image *image,
|
||||
MagickExport MagickBooleanType SetImageMonochrome(Image *image,
|
||||
ExceptionInfo *exception)
|
||||
{
|
||||
const char
|
||||
*value;
|
||||
ImageType
|
||||
type;
|
||||
|
||||
assert(image != (Image *) NULL);
|
||||
assert(image->signature == MagickCoreSignature);
|
||||
if (image->debug != MagickFalse)
|
||||
(void) LogMagickEvent(TraceEvent,GetMagickModule(),"%s",image->filename);
|
||||
if (image->type == BilevelType)
|
||||
if (IsImageMonochrome(image) != MagickFalse)
|
||||
return(MagickTrue);
|
||||
if (IssRGBCompatibleColorspace(image->colorspace) == MagickFalse)
|
||||
return(MagickFalse);
|
||||
value=GetImageProperty(image,"colorspace:auto-grayscale",exception);
|
||||
if (IsStringFalse(value) != MagickFalse)
|
||||
return(MagickFalse);
|
||||
if (IdentifyImageMonochrome(image,exception) == MagickFalse)
|
||||
type=IdentifyImageMonochrome(image,exception);
|
||||
if (type == UndefinedType)
|
||||
return(MagickFalse);
|
||||
image->colorspace=GRAYColorspace;
|
||||
if (SyncImagePixelCache((Image *) image,exception) == MagickFalse)
|
||||
return(MagickFalse);
|
||||
image->type=BilevelType;
|
||||
image->type=type;
|
||||
return(MagickTrue);
|
||||
}
|
||||
|
||||
|
||||
@@ -16,6 +16,10 @@
|
||||
#ifndef MAGICK_CODERS_PRIVATE_H
|
||||
#define MAGICK_CODERS_PRIVATE_H
|
||||
|
||||
#include "MagickCore/attribute.h"
|
||||
#include "MagickCore/property.h"
|
||||
#include "MagickCore/string_.h"
|
||||
|
||||
#define MagickCoderHeader(coder,offset,magic) { coder, offset, \
|
||||
(const unsigned char *) (magic), sizeof(magic)-1 },
|
||||
|
||||
@@ -27,4 +31,22 @@ extern ModuleExport size_t \
|
||||
extern ModuleExport void \
|
||||
Unregister ## coder ## Image(void);
|
||||
|
||||
static inline ImageType IdentifyImageCoderType(const Image *image,
|
||||
ExceptionInfo *exception)
|
||||
{
|
||||
const char
|
||||
*value;
|
||||
|
||||
ImageType
|
||||
type;
|
||||
|
||||
type=IdentifyImageType(image,exception);
|
||||
if ((type != GrayscaleType) && (type != BilevelType))
|
||||
return(type);
|
||||
value=GetImageProperty(image,"colorspace:auto-grayscale",exception);
|
||||
if (IsStringFalse(value) == MagickFalse)
|
||||
return(type);
|
||||
return(TrueColorType);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
+4
-3
@@ -85,6 +85,7 @@
|
||||
#include "MagickCore/utility.h"
|
||||
#include "MagickCore/xml-tree.h"
|
||||
#include "MagickCore/xml-tree-private.h"
|
||||
#include "coders/coders-private.h"
|
||||
#include <setjmp.h>
|
||||
#if defined(MAGICKCORE_JPEG_DELEGATE)
|
||||
#define JPEG_INTERNAL_OPTIONS
|
||||
@@ -340,8 +341,8 @@ static void JPEGErrorHandler(j_common_ptr jpeg_info)
|
||||
(void) LogMagickEvent(CoderEvent,GetMagickModule(),
|
||||
"[%s] JPEG Trace: \"%s\"",image->filename,message);
|
||||
if (client_info->finished != MagickFalse)
|
||||
(void) ThrowMagickException(exception,GetMagickModule(),CorruptImageWarning,
|
||||
(char *) message,"`%s'",image->filename);
|
||||
(void) ThrowMagickException(exception,GetMagickModule(),
|
||||
CorruptImageWarning,(char *) message,"`%s'",image->filename);
|
||||
else
|
||||
(void) ThrowMagickException(exception,GetMagickModule(),CorruptImageError,
|
||||
(char *) message,"`%s'",image->filename);
|
||||
@@ -2340,7 +2341,7 @@ static MagickBooleanType WriteJPEGImage_(const ImageInfo *image_info,
|
||||
(void) TransformImageColorspace(image,sRGBColorspace,exception);
|
||||
if (image_info->type == TrueColorType)
|
||||
break;
|
||||
type=IdentifyImageType(image,exception);
|
||||
type=IdentifyImageCoderType(image,exception);
|
||||
if ((type == GrayscaleType) || (type == BilevelType))
|
||||
{
|
||||
jpeg_info->input_components=1;
|
||||
|
||||
+2
-1
@@ -74,6 +74,7 @@
|
||||
#include "MagickCore/utility.h"
|
||||
#include "MagickCore/version.h"
|
||||
#include "MagickCore/module.h"
|
||||
#include "coders/coders-private.h"
|
||||
|
||||
/*
|
||||
Typedef declarations.
|
||||
@@ -1039,7 +1040,7 @@ static MagickBooleanType EncodeImageAttributes(Image *image,FILE *file,
|
||||
}
|
||||
JSONFormatLocaleFile(file," \"units\": %s,\n",CommandOptionToMnemonic(
|
||||
MagickResolutionOptions,(ssize_t) image->units));
|
||||
type=IdentifyImageType(image,exception);
|
||||
type=IdentifyImageCoderType(image,exception);
|
||||
JSONFormatLocaleFile(file," \"type\": %s,\n",CommandOptionToMnemonic(
|
||||
MagickTypeOptions,(ssize_t) type));
|
||||
if (image->type != type)
|
||||
|
||||
+3
-2
@@ -90,6 +90,7 @@
|
||||
#include "MagickCore/timer-private.h"
|
||||
#include "MagickCore/transform.h"
|
||||
#include "MagickCore/utility.h"
|
||||
#include "coders/coders-private.h"
|
||||
#if defined(MAGICKCORE_PNG_DELEGATE)
|
||||
|
||||
/* Suppress libpng pedantic warnings that were added in
|
||||
@@ -12884,7 +12885,7 @@ static MagickBooleanType WriteOneJNGImage(MngInfo *mng_info,
|
||||
if ((image_info->type != TrueColorAlphaType) &&
|
||||
(image_info->type != TrueColorType))
|
||||
{
|
||||
ImageType type = IdentifyImageType(image,exception);
|
||||
ImageType type = IdentifyImageCoderType(image,exception);
|
||||
if ((type == GrayscaleType) || (type == BilevelType))
|
||||
jng_color_type-=2;
|
||||
}
|
||||
@@ -13667,7 +13668,7 @@ static MagickBooleanType WriteMNGImage(const ImageInfo *image_info,
|
||||
|
||||
if (need_local_plte == 0)
|
||||
{
|
||||
ImageType type = IdentifyImageType(image,exception);
|
||||
ImageType type = IdentifyImageCoderType(image,exception);
|
||||
if ((type != GrayscaleType) && (type != BilevelType))
|
||||
all_images_are_gray=MagickFalse;
|
||||
mng_info->equal_palettes=PalettesAreEqual(image,next_image);
|
||||
|
||||
+4
-3
@@ -65,6 +65,7 @@
|
||||
#include "MagickCore/statistic.h"
|
||||
#include "MagickCore/string_.h"
|
||||
#include "MagickCore/string-private.h"
|
||||
#include "coders/coders-private.h"
|
||||
|
||||
/*
|
||||
Typedef declarations.
|
||||
@@ -1710,7 +1711,7 @@ static MagickBooleanType WritePNMImage(const ImageInfo *image_info,Image *image,
|
||||
format='F';
|
||||
if (image_info->type == TrueColorType)
|
||||
break;
|
||||
if (IdentifyImageType(image,exception) == GrayscaleType)
|
||||
if (IdentifyImageCoderType(image,exception) == GrayscaleType)
|
||||
format='f';
|
||||
break;
|
||||
}
|
||||
@@ -1728,7 +1729,7 @@ static MagickBooleanType WritePNMImage(const ImageInfo *image_info,Image *image,
|
||||
format='H';
|
||||
if (image_info->type == TrueColorType)
|
||||
break;
|
||||
if (IdentifyImageType(image,exception) == GrayscaleType)
|
||||
if (IdentifyImageCoderType(image,exception) == GrayscaleType)
|
||||
format='h';
|
||||
break;
|
||||
}
|
||||
@@ -1741,7 +1742,7 @@ static MagickBooleanType WritePNMImage(const ImageInfo *image_info,Image *image,
|
||||
format='6';
|
||||
if (image_info->type == TrueColorType)
|
||||
break;
|
||||
type=IdentifyImageType(image,exception);
|
||||
type=IdentifyImageCoderType(image,exception);
|
||||
if (type == GrayscaleType)
|
||||
{
|
||||
format='5';
|
||||
|
||||
+2
-1
@@ -79,6 +79,7 @@
|
||||
#include "MagickCore/transform.h"
|
||||
#include "MagickCore/utility.h"
|
||||
#include "coders/bytebuffer-private.h"
|
||||
#include "coders/coders-private.h"
|
||||
#include "coders/ghostscript-private.h"
|
||||
|
||||
/*
|
||||
@@ -1766,7 +1767,7 @@ static MagickBooleanType WritePSImage(const ImageInfo *image_info,Image *image,
|
||||
index=(Quantum) 0;
|
||||
x=0;
|
||||
if (image_info->type != TrueColorType)
|
||||
type=IdentifyImageType(image,exception);
|
||||
type=IdentifyImageCoderType(image,exception);
|
||||
if ((type == GrayscaleType) || (type == BilevelType))
|
||||
{
|
||||
if (type == GrayscaleType)
|
||||
|
||||
+3
-2
@@ -87,7 +87,8 @@
|
||||
#include "MagickCore/thread_.h"
|
||||
#include "MagickCore/token.h"
|
||||
#include "MagickCore/utility.h"
|
||||
#include "psd-private.h"
|
||||
#include "coders/coders-private.h"
|
||||
#include "coders/psd-private.h"
|
||||
#if defined(MAGICKCORE_TIFF_DELEGATE)
|
||||
# if defined(MAGICKCORE_HAVE_TIFFCONF_H)
|
||||
# include <tiffconf.h>
|
||||
@@ -3595,7 +3596,7 @@ static MagickBooleanType WriteTIFFImage(const ImageInfo *image_info,
|
||||
ImageType
|
||||
type;
|
||||
|
||||
type=IdentifyImageType(image,exception);
|
||||
type=IdentifyImageCoderType(image,exception);
|
||||
if ((image_info->type != PaletteType) &&
|
||||
((type == GrayscaleType) || (type == BilevelType)))
|
||||
{
|
||||
|
||||
+3
-1
@@ -44,6 +44,7 @@
|
||||
#include "MagickCore/blob.h"
|
||||
#include "MagickCore/blob-private.h"
|
||||
#include "MagickCore/cache.h"
|
||||
#include "MagickCore/coder-private.h"
|
||||
#include "MagickCore/color.h"
|
||||
#include "MagickCore/color-private.h"
|
||||
#include "MagickCore/colormap.h"
|
||||
@@ -70,6 +71,7 @@
|
||||
#include "MagickCore/module.h"
|
||||
#include "MagickCore/threshold.h"
|
||||
#include "MagickCore/utility.h"
|
||||
#include "coders/coders-private.h"
|
||||
|
||||
/*
|
||||
Global declarations.
|
||||
@@ -730,7 +732,7 @@ static MagickBooleanType WritePICONImage(const ImageInfo *image_info,
|
||||
blob_info=CloneImageInfo(image_info);
|
||||
*blob_info->magick='\0';
|
||||
(void) AcquireUniqueFilename(blob_info->filename);
|
||||
type=IdentifyImageType(image,exception);
|
||||
type=IdentifyImageCoderType(image,exception);
|
||||
if ((image_info->type != TrueColorType) &&
|
||||
((type == GrayscaleType) || (type == BilevelType)))
|
||||
affinity_image=BlobToImage(blob_info,Graymap,GraymapExtent,exception);
|
||||
|
||||
+2
-1
@@ -74,6 +74,7 @@
|
||||
#include "MagickCore/utility.h"
|
||||
#include "MagickCore/version.h"
|
||||
#include "MagickCore/module.h"
|
||||
#include "coders/coders-private.h"
|
||||
|
||||
/*
|
||||
Typedef declarations.
|
||||
@@ -1037,7 +1038,7 @@ static MagickBooleanType EncodeImageAttributes(Image *image,FILE *file,
|
||||
}
|
||||
YAMLFormatLocaleFile(file," units: %s\n",CommandOptionToMnemonic(
|
||||
MagickResolutionOptions,(ssize_t) image->units));
|
||||
type=IdentifyImageType(image,exception);
|
||||
type=IdentifyImageCoderType(image,exception);
|
||||
YAMLFormatLocaleFile(file," type: %s\n",CommandOptionToMnemonic(
|
||||
MagickTypeOptions,(ssize_t) type));
|
||||
if (image->type != type)
|
||||
|
||||
Reference in New Issue
Block a user