MagickCore 7.1.0
Convert, Edit, Or Compose Bitmap Images
property.c File Reference
#include "MagickCore/studio.h"
#include "MagickCore/artifact.h"
#include "MagickCore/attribute.h"
#include "MagickCore/cache.h"
#include "MagickCore/cache-private.h"
#include "MagickCore/color.h"
#include "MagickCore/color-private.h"
#include "MagickCore/colorspace-private.h"
#include "MagickCore/compare.h"
#include "MagickCore/constitute.h"
#include "MagickCore/draw.h"
#include "MagickCore/effect.h"
#include "MagickCore/exception.h"
#include "MagickCore/exception-private.h"
#include "MagickCore/fx.h"
#include "MagickCore/fx-private.h"
#include "MagickCore/gem.h"
#include "MagickCore/geometry.h"
#include "MagickCore/histogram.h"
#include "MagickCore/image.h"
#include "MagickCore/layer.h"
#include "MagickCore/locale-private.h"
#include "MagickCore/list.h"
#include "MagickCore/magick.h"
#include "MagickCore/memory_.h"
#include "MagickCore/monitor.h"
#include "MagickCore/montage.h"
#include "MagickCore/option.h"
#include "MagickCore/policy.h"
#include "MagickCore/profile.h"
#include "MagickCore/property.h"
#include "MagickCore/quantum.h"
#include "MagickCore/resource_.h"
#include "MagickCore/splay-tree.h"
#include "MagickCore/signature.h"
#include "MagickCore/statistic.h"
#include "MagickCore/string_.h"
#include "MagickCore/string-private.h"
#include "MagickCore/token.h"
#include "MagickCore/token-private.h"
#include "MagickCore/utility.h"
#include "MagickCore/utility-private.h"
#include "MagickCore/version.h"
#include "MagickCore/xml-tree.h"
#include "MagickCore/xml-tree-private.h"
Include dependency graph for property.c:

Go to the source code of this file.

Macros

#define MaxDirectoryStack   16
 
#define EXIF_DELIMITER   "\n"
 
#define EXIF_NUM_FORMATS   12
 
#define EXIF_FMT_BYTE   1
 
#define EXIF_FMT_STRING   2
 
#define EXIF_FMT_USHORT   3
 
#define EXIF_FMT_ULONG   4
 
#define EXIF_FMT_URATIONAL   5
 
#define EXIF_FMT_SBYTE   6
 
#define EXIF_FMT_UNDEFINED   7
 
#define EXIF_FMT_SSHORT   8
 
#define EXIF_FMT_SLONG   9
 
#define EXIF_FMT_SRATIONAL   10
 
#define EXIF_FMT_SINGLE   11
 
#define EXIF_FMT_DOUBLE   12
 
#define TAG_EXIF_OFFSET   0x8769
 
#define TAG_GPS_OFFSET   0x8825
 
#define TAG_INTEROP_OFFSET   0xa005
 
#define EXIFMultipleValues(size, format, arg)
 
#define EXIFMultipleFractions(size, format, arg1, arg2)
 
#define WarnNoImageReturn(format, arg)
 
#define WarnNoImageInfoReturn(format, arg)
 
#define ExtendInterpretText(string_length)
 
#define AppendKeyValue2Text(key, value)
 
#define AppendString2Text(string)
 

Functions

MagickExport MagickBooleanType CloneImageProperties (Image *image, const Image *clone_image)
 
MagickExport MagickBooleanType DefineImageProperty (Image *image, const char *property, ExceptionInfo *exception)
 
MagickExport MagickBooleanType DeleteImageProperty (Image *image, const char *property)
 
MagickExport void DestroyImageProperties (Image *image)
 
MagickExport MagickBooleanType FormatImageProperty (Image *image, const char *property, const char *format,...)
 
static char * TracePSClippath (const unsigned char *, size_t)
 
static char * TraceSVGClippath (const unsigned char *, size_t, const size_t, const size_t)
 
static MagickBooleanType GetIPTCProperty (const Image *image, const char *key, ExceptionInfo *exception)
 
static int ReadPropertyByte (const unsigned char **p, size_t *length)
 
static signed int ReadPropertyMSBLong (const unsigned char **p, size_t *length)
 
static signed short ReadPropertyMSBShort (const unsigned char **p, size_t *length)
 
static MagickBooleanType Get8BIMProperty (const Image *image, const char *key, ExceptionInfo *exception)
 
static signed int ReadPropertySignedLong (const EndianType endian, const unsigned char *buffer)
 
static unsigned int ReadPropertyUnsignedLong (const EndianType endian, const unsigned char *buffer)
 
static signed short ReadPropertySignedShort (const EndianType endian, const unsigned char *buffer)
 
static unsigned short ReadPropertyUnsignedShort (const EndianType endian, const unsigned char *buffer)
 
static MagickBooleanType GetEXIFProperty (const Image *image, const char *property, ExceptionInfo *exception)
 
static MagickBooleanType GetICCProperty (const Image *image, const char *property, ExceptionInfo *exception)
 
static MagickBooleanType SkipXMPValue (const char *value)
 
static MagickBooleanType GetXMPProperty (const Image *image, const char *property)
 
static void TraceBezierCurve (char *message, PointInfo *last, PointInfo *point)
 
MagickExport const char * GetImageProperty (const Image *image, const char *property, ExceptionInfo *exception)
 
static const char * GetMagickPropertyLetter (ImageInfo *image_info, Image *image, const char letter, ExceptionInfo *exception)
 
MagickExport const char * GetMagickProperty (ImageInfo *image_info, Image *image, const char *property, ExceptionInfo *exception)
 
MagickExport const char * GetNextImageProperty (const Image *image)
 
MagickExport char * InterpretImageProperties (ImageInfo *image_info, Image *image, const char *embed_text, ExceptionInfo *exception)
 
MagickExport char * RemoveImageProperty (Image *image, const char *property)
 
MagickExport void ResetImagePropertyIterator (const Image *image)
 
MagickExport MagickBooleanType SetImageProperty (Image *image, const char *property, const char *value, ExceptionInfo *exception)
 

Macro Definition Documentation

◆ AppendKeyValue2Text

#define AppendKeyValue2Text (   key,
  value 
)
Value:
{ \
size_t length=strlen(key)+strlen(value)+2; \
if ((size_t) (q-interpret_text+length+1) >= extent) \
{ \
extent+=length; \
interpret_text=(char *) ResizeQuantumMemory(interpret_text,extent+ \
MagickPathExtent,sizeof(*interpret_text)); \
if (interpret_text == (char *) NULL) \
{ \
if (property_image != image) \
property_image=DestroyImage(property_image); \
if (property_info != image_info) \
property_info=DestroyImageInfo(property_info); \
return((char *) NULL); \
} \
q=interpret_text+strlen(interpret_text); \
} \
q+=FormatLocaleString(q,extent,"%s=%s\n",(key),(value)); \
}
MagickExport ImageInfo * DestroyImageInfo(ImageInfo *image_info)
Definition: image.c:1252
MagickExport Image * DestroyImage(Image *image)
Definition: image.c:1181
MagickExport ssize_t FormatLocaleString(char *magick_restrict string, const size_t length, const char *magick_restrict format,...)
Definition: locale.c:466
MagickExport void * ResizeQuantumMemory(void *memory, const size_t count, const size_t quantum)
Definition: memory.c:1457
#define MagickPathExtent

◆ AppendString2Text

#define AppendString2Text (   string)
Value:
{ \
size_t length=strlen((string)); \
if ((size_t) (q-interpret_text+length+1) >= extent) \
{ \
extent+=length; \
interpret_text=(char *) ResizeQuantumMemory(interpret_text,extent+ \
MagickPathExtent,sizeof(*interpret_text)); \
if (interpret_text == (char *) NULL) \
{ \
if (property_image != image) \
property_image=DestroyImage(property_image); \
if (property_info != image_info) \
property_info=DestroyImageInfo(property_info); \
return((char *) NULL); \
} \
q=interpret_text+strlen(interpret_text); \
} \
(void) CopyMagickString(q,(string),extent); \
q+=length; \
}
MagickExport size_t CopyMagickString(char *magick_restrict destination, const char *magick_restrict source, const size_t length)
Definition: string.c:731

◆ EXIF_DELIMITER

#define EXIF_DELIMITER   "\n"

◆ EXIF_FMT_BYTE

#define EXIF_FMT_BYTE   1

◆ EXIF_FMT_DOUBLE

#define EXIF_FMT_DOUBLE   12

◆ EXIF_FMT_SBYTE

#define EXIF_FMT_SBYTE   6

◆ EXIF_FMT_SINGLE

#define EXIF_FMT_SINGLE   11

◆ EXIF_FMT_SLONG

#define EXIF_FMT_SLONG   9

◆ EXIF_FMT_SRATIONAL

#define EXIF_FMT_SRATIONAL   10

◆ EXIF_FMT_SSHORT

#define EXIF_FMT_SSHORT   8

◆ EXIF_FMT_STRING

#define EXIF_FMT_STRING   2

◆ EXIF_FMT_ULONG

#define EXIF_FMT_ULONG   4

◆ EXIF_FMT_UNDEFINED

#define EXIF_FMT_UNDEFINED   7

◆ EXIF_FMT_URATIONAL

#define EXIF_FMT_URATIONAL   5

◆ EXIF_FMT_USHORT

#define EXIF_FMT_USHORT   3

◆ EXIF_NUM_FORMATS

#define EXIF_NUM_FORMATS   12

◆ EXIFMultipleFractions

#define EXIFMultipleFractions (   size,
  format,
  arg1,
  arg2 
)
Value:
{ \
ssize_t \
component; \
\
size_t \
len; \
\
unsigned char \
*p1; \
\
len=0; \
p1=p; \
for (component=0; component < components; component++) \
{ \
len+=FormatLocaleString(buffer+len,MagickPathExtent-len,format", ", \
(arg1),(arg2)); \
if (len >= (MagickPathExtent-1)) \
p1+=size; \
} \
if (len > 1) \
buffer[len-2]='\0'; \
value=AcquireString(buffer); \
}
MagickExport char * AcquireString(const char *source)
Definition: string.c:94

◆ EXIFMultipleValues

#define EXIFMultipleValues (   size,
  format,
  arg 
)
Value:
{ \
ssize_t \
component; \
\
size_t \
len; \
\
unsigned char \
*p1; \
\
len=0; \
p1=p; \
for (component=0; component < components; component++) \
{ \
len+=FormatLocaleString(buffer+len,MagickPathExtent-len,format", ",arg); \
if (len >= (MagickPathExtent-1)) \
p1+=size; \
} \
if (len > 1) \
buffer[len-2]='\0'; \
value=AcquireString(buffer); \
}

◆ ExtendInterpretText

#define ExtendInterpretText (   string_length)
Value:
{ \
size_t length=(string_length); \
if ((size_t) (q-interpret_text+length+1) >= extent) \
{ \
extent+=length; \
interpret_text=(char *) ResizeQuantumMemory(interpret_text,extent+ \
MagickPathExtent,sizeof(*interpret_text)); \
if (interpret_text == (char *) NULL) \
{ \
if (property_image != image) \
property_image=DestroyImage(property_image); \
if (property_info != image_info) \
property_info=DestroyImageInfo(property_info); \
return((char *) NULL); \
} \
q=interpret_text+strlen(interpret_text); \
} \
}

◆ MaxDirectoryStack

#define MaxDirectoryStack   16

◆ TAG_EXIF_OFFSET

#define TAG_EXIF_OFFSET   0x8769

◆ TAG_GPS_OFFSET

#define TAG_GPS_OFFSET   0x8825

◆ TAG_INTEROP_OFFSET

#define TAG_INTEROP_OFFSET   0xa005

◆ WarnNoImageInfoReturn

#define WarnNoImageInfoReturn (   format,
  arg 
)
Value:
if (image_info == (ImageInfo *) NULL ) { \
"NoImageInfoForProperty",format,arg); \
return((const char *) NULL); \
}
MagickExport MagickBooleanType ThrowMagickException(ExceptionInfo *exception, const char *module, const char *function, const size_t line, const ExceptionType severity, const char *tag, const char *format,...)
Definition: exception.c:1145
@ OptionWarning
Definition: exception.h:33
#define GetMagickModule()
Definition: log.h:28

◆ WarnNoImageReturn

#define WarnNoImageReturn (   format,
  arg 
)
Value:
if (image == (Image *) NULL ) { \
"NoImageForProperty",format,arg); \
return((const char *) NULL); \
}
Definition: image.h:152

Function Documentation

◆ CloneImageProperties()

◆ DefineImageProperty()

MagickExport MagickBooleanType DefineImageProperty ( Image image,
const char *  property,
ExceptionInfo exception 
)

Definition at line 233 of file property.c.

References CopyMagickString(), MagickPathExtent, and SetImageProperty().

◆ DeleteImageProperty()

◆ DestroyImageProperties()

◆ FormatImageProperty()

MagickExport MagickBooleanType FormatImageProperty ( Image image,
const char *  property,
const char *  format,
  ... 
)

◆ Get8BIMProperty()

◆ GetEXIFProperty()

◆ GetICCProperty()

static MagickBooleanType GetICCProperty ( const Image image,
const char *  property,
ExceptionInfo exception 
)
static

◆ GetImageProperty()

◆ GetIPTCProperty()

static MagickBooleanType GetIPTCProperty ( const Image image,
const char *  key,
ExceptionInfo exception 
)
static

◆ GetMagickProperty()

MagickExport const char * GetMagickProperty ( ImageInfo image_info,
Image image,
const char *  property,
ExceptionInfo exception 
)

Definition at line 2846 of file property.c.

References AcquireString(), _Image::alpha_trait, BasePath, _Image::colors, _Image::colorspace, _Image::columns, CommandOptionToMnemonic(), _Image::compose, _Image::compression, ConcatenateMagickString(), ConcatenateString(), CopyMagickString(), _Image::depth, DestroyString(), ExtensionPath, _Image::filename, _ImageInfo::filename, FormatLocaleString(), FormatMagickSize(), _Image::gamma, GetBlobSize(), GetImageArtifact(), GetImageBoundingBox(), GetImageConvexHull(), GetImageDepth(), GetImageEntropy(), GetImageKurtosis(), GetImageListLength(), GetImageMean(), GetImageMedian(), GetImageMinimumBoundingBox(), GetImageOption(), GetImageProfile(), GetImageProperty(), GetImageRange(), GetMagickCopyright(), GetMagickModule, GetMagickPrecision(), GetMagickPropertyLetter(), GetMagickVersion(), GetNextImageProfile(), GetNumberColors(), GetPageGeometry(), GetPathComponent(), GetStringInfoDatum(), GetStringInfoLength(), HeadPath, _RectangleInfo::height, IdentifyImageType(), _Image::interlace, IsEventLogging(), IsImageOpaque(), LocaleCompare(), LocaleLower(), LocaleNCompare(), LogMagickEvent(), _Image::magick, _Image::magick_columns, _Image::magick_filename, _Image::magick_rows, MagickBooleanOptions, MagickColorspaceOptions, MagickComposeOptions, MagickCompressOptions, MagickFalse, MagickInterlaceOptions, MagickOrientationOptions, MagickPathExtent, MagickResolutionOptions, MagickTypeOptions, _ImageInfo::number_scenes, _Image::orientation, _Image::page, ParseAbsoluteGeometry(), PerceptibleReciprocal(), _Image::quality, RelinquishMagickMemory(), ResetImageProfileIterator(), _Image::resolution, _Image::rows, _Image::scene, _ImageInfo::scene, SetImageArtifact(), SetImageOption(), SetImageProperty(), TraceEvent, UndefinedPixelTrait, _ImageInfo::unique, _Image::units, WarnNoImageInfoReturn, WarnNoImageReturn, _RectangleInfo::width, _PointInfo::x, _RectangleInfo::x, _PointInfo::y, and _RectangleInfo::y.

Referenced by InterpretImageProperties().

◆ GetMagickPropertyLetter()

static const char * GetMagickPropertyLetter ( ImageInfo image_info,
Image image,
const char  letter,
ExceptionInfo exception 
)
static

◆ GetNextImageProperty()

◆ GetXMPProperty()

◆ InterpretImageProperties()

MagickExport char * InterpretImageProperties ( ImageInfo image_info,
Image image,
const char *  embed_text,
ExceptionInfo exception 
)

Definition at line 3630 of file property.c.

References AcquireFxInfo(), AcquireImage(), AcquireString(), _PixelInfo::alpha, AlphaPixelChannel, AppendKeyValue2Text, AppendString2Text, _PixelInfo::black, BlackPixelChannel, _PixelInfo::blue, BluePixelChannel, CloneImageInfo(), CMYKColorspace, _Image::colorspace, _Image::columns, CompositePixelChannel, ConstantString(), DeleteImageArtifact(), DeleteImageOption(), DestroyFxInfo(), DestroyImage(), DestroyImageInfo(), DestroyString(), ExtendInterpretText, _Image::filename, _ImageInfo::filename, FileToString(), FormatLocaleString(), FxEvaluateChannelExpression(), GetColorTuple(), GetImageArtifact(), GetImageOption(), GetImageProperty(), GetMagickModule, GetMagickPrecision(), GetMagickProperty(), GetMagickPropertyLetter(), GetNextImageArtifact(), GetNextImageOption(), GetNextImageProperty(), GetPixelInfo(), GlobExpression(), _PixelInfo::green, GreenPixelChannel, IsEventLogging(), IsGlob(), IsPathAccessible(), IsRightsAuthorized(), LocaleNCompare(), LogMagickEvent(), MagickComplianceOptions, MagickFalse, MagickPathExtent, MagickTrue, OptionError, OptionWarning, ParseCommandOption(), PathPolicyDomain, PolicyError, QuantumRange, QueryColorname(), ReadPolicyRights, _PixelInfo::red, RedPixelChannel, ResetImageArtifactIterator(), ResetImageOptionIterator(), ResetImagePropertyIterator(), _Image::rows, SetImageBackgroundColor(), SetImageExtent(), ThrowMagickException(), and TraceEvent.

Referenced by GetProperty(), InvokeDelegate(), MontageImageList(), PolaroidImage(), and ReadImage().

◆ ReadPropertyByte()

static int ReadPropertyByte ( const unsigned char **  p,
size_t *  length 
)
inlinestatic

Definition at line 490 of file property.c.

Referenced by Get8BIMProperty(), and GetEXIFProperty().

◆ ReadPropertyMSBLong()

static signed int ReadPropertyMSBLong ( const unsigned char **  p,
size_t *  length 
)
inlinestatic

Definition at line 502 of file property.c.

Referenced by Get8BIMProperty(), TracePSClippath(), and TraceSVGClippath().

◆ ReadPropertyMSBShort()

static signed short ReadPropertyMSBShort ( const unsigned char **  p,
size_t *  length 
)
inlinestatic

Definition at line 542 of file property.c.

Referenced by Get8BIMProperty(), TracePSClippath(), and TraceSVGClippath().

◆ ReadPropertySignedLong()

static signed int ReadPropertySignedLong ( const EndianType  endian,
const unsigned char *  buffer 
)
inlinestatic

Definition at line 733 of file property.c.

References LSBEndian.

Referenced by GetEXIFProperty().

◆ ReadPropertySignedShort()

static signed short ReadPropertySignedShort ( const EndianType  endian,
const unsigned char *  buffer 
)
inlinestatic

Definition at line 786 of file property.c.

References LSBEndian.

Referenced by GetEXIFProperty().

◆ ReadPropertyUnsignedLong()

static unsigned int ReadPropertyUnsignedLong ( const EndianType  endian,
const unsigned char *  buffer 
)
inlinestatic

Definition at line 765 of file property.c.

References LSBEndian.

Referenced by GetEXIFProperty().

◆ ReadPropertyUnsignedShort()

static unsigned short ReadPropertyUnsignedShort ( const EndianType  endian,
const unsigned char *  buffer 
)
inlinestatic

Definition at line 814 of file property.c.

References LSBEndian.

Referenced by GetEXIFProperty().

◆ RemoveImageProperty()

MagickExport char * RemoveImageProperty ( Image image,
const char *  property 
)

◆ ResetImagePropertyIterator()

◆ SetImageProperty()

MagickExport MagickBooleanType SetImageProperty ( Image image,
const char *  property,
const char *  value,
ExceptionInfo exception 
)

Definition at line 4360 of file property.c.

References AcquireImageInfo(), AddValueToSplayTree(), AllCompliance, _Image::background_color, CastDoubleToLong(), CompareSplayTreeString(), _Image::compose, _Image::compression, ConstantString(), CopyMagickString(), _Image::delay, DeleteImageProperty(), _Image::depth, DestroyImageInfo(), DestroyString(), DestroyStringInfo(), _Image::dispose, _Image::filename, _ImageInfo::filename, FileToStringInfo(), _Image::gamma, GetMagickModule, GetPageGeometry(), _Image::gravity, GreaterValue, _Image::intensity, _Image::interpolate, IsEventLogging(), _Image::iterations, LessValue, LocaleCompare(), LocaleNCompare(), LogMagickEvent(), _ImageInfo::magick, MagickColorspaceOptions, MagickComposeOptions, MagickCompressOptions, MagickCoreSignature, MagickDisposeOptions, MagickFalse, MagickGravityOptions, MagickIntensityOptions, MagickIntentOptions, MagickInterpolateOptions, MagickPathExtent, MagickResolutionOptions, MagickTrue, MagickTypeOptions, NewSplayTree(), OptionError, OptionWarning, _Image::page, ParseAbsoluteGeometry(), ParseCommandOption(), ParseGeometry(), _Image::properties, QueryColorCompliance(), RelinquishMagickMemory(), _Image::rendering_intent, _Image::resolution, _GeometryInfo::rho, RhoValue, SetImageColorspace(), SetImageInfo(), SetImageProfile(), _GeometryInfo::sigma, SigmaValue, _Image::signature, StringToDouble(), StringToUnsignedLong(), ThrowMagickException(), _Image::ticks_per_second, _Image::tile_offset, TraceEvent, _Image::type, _Image::units, _PointInfo::x, and _PointInfo::y.

Referenced by AutoThresholdImage(), DefineImageProperty(), FormatImageProperty(), Get8BIMProperty(), GetEXIFProperty(), GetICCProperty(), GetIPTCProperty(), GetMagickProperty(), KmeansImage(), PreviewImage(), ReadImage(), SignatureImage(), and ThumbnailImage().

◆ SkipXMPValue()

static MagickBooleanType SkipXMPValue ( const char *  value)
static

Definition at line 1786 of file property.c.

References MagickFalse, and MagickTrue.

Referenced by GetXMPProperty().

◆ TraceBezierCurve()

static void TraceBezierCurve ( char *  message,
PointInfo last,
PointInfo point 
)
inlinestatic

Definition at line 2092 of file property.c.

References FormatLocaleString(), MagickPathExtent, _PointInfo::x, and _PointInfo::y.

Referenced by TraceSVGClippath().

◆ TracePSClippath()

static char * TracePSClippath ( const unsigned char *  blob,
size_t  length 
)
static

◆ TraceSVGClippath()

static char * TraceSVGClippath ( const unsigned char *  blob,
size_t  length,
const size_t  columns,
const size_t  rows 
)