migrate colorspace:auto-grayscale from MagickCore to coders where it belongs

This commit is contained in:
Cristy
2021-07-21 20:32:00 -04:00
parent 11c49cde3c
commit 2af297015b
10 changed files with 51 additions and 28 deletions
+6 -14
View File
@@ -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);
}
+22
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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
View File
@@ -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)