if ((magic_info != (const MagicInfo *) NULL) &&
(GetMagicName(magic_info) != (char *) NULL))
{
- (void) CopyMagickString(image_info->magick,GetMagicName(magic_info),
- MaxTextExtent);
- magick_info=GetMagickInfo(image_info->magick,sans_exception);
+ /*
+ Try to use magick_info that was determined earlier by the extension
+ */
+ if ((magick_info != (const MagickInfo *) NULL) &&
+ (GetMagickUseExtension(magick_info) != MagickFalse) &&
+ (LocaleCompare(magick_info->module,GetMagicName(
+ magic_info)) == 0))
+ (void) CopyMagickString(image_info->magick,magick_info->name,
+ MaxTextExtent);
+ else
+ {
+ (void) CopyMagickString(image_info->magick,GetMagicName(
+ magic_info),MaxTextExtent);
+ magick_info=GetMagickInfo(image_info->magick,sans_exception);
+ }
if ((magick_info == (const MagickInfo *) NULL) ||
(GetMagickEndianSupport(magick_info) == MagickFalse))
image_info->endian=UndefinedEndian;
assert(magick_info->signature == MagickSignature);
return(((magick_info->flags & Stealth) == 0) ? MagickFalse : MagickTrue);
}
+
+/*
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% %
+% %
++ G e t M a g i c k U s e E x t e n s i o n %
+% %
+% %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% GetMagickUseExtension() returns MagickTrue if the magick can use the
+% extension of the format if the format return by IsImageFormatHandler uses
+% the same coder.
+%
+% The format of the GetMagickUseExtension method is:
+%
+% MagickBooleanType GetMagickUseExtension(const MagickInfo *magick_info)
+%
+% A description of each parameter follows:
+%
+% o magick_info: The magick info.
+%
+*/
+MagickExport MagickBooleanType GetMagickUseExtension(
+ const MagickInfo *magick_info)
+{
+ assert(magick_info != (MagickInfo *) NULL);
+ assert(magick_info->signature == MagickSignature);
+ return(((magick_info->flags & UseExtension) == 0) ? MagickFalse :
+ MagickTrue);
+}
\f
/*
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
(void) ResetMagickMemory(magick_info,0,sizeof(*magick_info));
magick_info->name=ConstantString(name);
magick_info->flags=Adjoin | BlobSupport | DecoderThreadSupport |
- EncoderThreadSupport;
+ EncoderThreadSupport | UseExtension;
magick_info->signature=MagickSignature;
return(magick_info);
}
EndianSupport = 0x0010,
RawSupport = 0x0020,
SeekableStream = 0x0040,
- Stealth = 0x0080
+ Stealth = 0x0080,
+ UseExtension = 0x0100
} MagickFlagType;
typedef Image
GetMagickRawSupport(const MagickInfo *),
GetMagickSeekableStream(const MagickInfo *),
GetMagickStealth(const MagickInfo *),
+ GetMagickUseExtension(const MagickInfo *),
IsMagickCoreInstantiated(void),
UnregisterMagickInfo(const char *);
#endif
entry->magick=(IsImageFormatHandler *) IsJPEG;
entry->flags^=Adjoin;
+ entry->flags^=UseExtension;
entry->description=ConstantString(description);
if (*version != '\0')
entry->version=ConstantString(version);
entry->encoder=(EncodeImageHandler *) WriteJPEGImage;
#endif
entry->flags^=Adjoin;
+ entry->flags^=UseExtension;
entry->description=ConstantString(description);
if (*version != '\0')
entry->version=ConstantString(version);
entry->encoder=(EncodeImageHandler *) WriteJPEGImage;
#endif
entry->flags^=Adjoin;
+ entry->flags^=UseExtension;
entry->description=ConstantString(description);
if (*version != '\0')
entry->version=ConstantString(version);
entry->encoder=(EncodeImageHandler *) WriteJPEGImage;
#endif
entry->flags^=Adjoin;
+ entry->flags^=UseExtension;
entry->description=ConstantString(description);
if (*version != '\0')
entry->version=ConstantString(version);