resize.c File Reference

#include "MagickCore/studio.h"
#include "MagickCore/accelerate-private.h"
#include "MagickCore/artifact.h"
#include "MagickCore/blob.h"
#include "MagickCore/cache.h"
#include "MagickCore/cache-view.h"
#include "MagickCore/channel.h"
#include "MagickCore/color.h"
#include "MagickCore/color-private.h"
#include "MagickCore/draw.h"
#include "MagickCore/exception.h"
#include "MagickCore/exception-private.h"
#include "MagickCore/gem.h"
#include "MagickCore/image.h"
#include "MagickCore/image-private.h"
#include "MagickCore/list.h"
#include "MagickCore/memory_.h"
#include "MagickCore/memory-private.h"
#include "MagickCore/magick.h"
#include "MagickCore/pixel-accessor.h"
#include "MagickCore/property.h"
#include "MagickCore/monitor.h"
#include "MagickCore/monitor-private.h"
#include "MagickCore/nt-base-private.h"
#include "MagickCore/option.h"
#include "MagickCore/pixel.h"
#include "MagickCore/pixel-private.h"
#include "MagickCore/quantum-private.h"
#include "MagickCore/resample.h"
#include "MagickCore/resample-private.h"
#include "MagickCore/resize.h"
#include "MagickCore/resize-private.h"
#include "MagickCore/resource_.h"
#include "MagickCore/string_.h"
#include "MagickCore/string-private.h"
#include "MagickCore/thread-private.h"
#include "MagickCore/token.h"
#include "MagickCore/utility.h"
#include "MagickCore/utility-private.h"
#include "MagickCore/version.h"

Data Structures

struct  _ResizeFilter
struct  _ContributionInfo

Defines

#define InterpolativeResizeImageTag   "Resize/Image"
#define caseA(N, A, B, C, D)
#define caseB(N, A, B, C, D, E, F, G, H)
#define Rotated(p)   p[2], p[4], p[7], p[1], p[6], p[0], p[3], p[5]
#define Corner(A, B, C, D)
#define Line(A, B, C, D)
#define WeightVar(M, N)
#define HelperCond(a, b, c, d, e, f, g)
#define MagnifyImageTag   "Magnify/Image"
#define ResampleImageTag   "Resample/Image"
#define ResizeImageTag   "Resize/Image"
#define SampleImageTag   "Sample/Image"
#define ScaleImageTag   "Scale/Image"
#define SampleFactor   5

Typedefs

typedef struct _ContributionInfo ContributionInfo

Functions

static double I0 (double x)
static double BesselOrderOne (double)
static double Sinc (const double, const ResizeFilter *)
static double SincFast (const double, const ResizeFilter *)
static double Blackman (const double x, const ResizeFilter *magick_unused(resize_filter))
static double Bohman (const double x, const ResizeFilter *magick_unused(resize_filter))
static double Box (const double magick_unused(x), const ResizeFilter *magick_unused(resize_filter))
static double Cosine (const double x, const ResizeFilter *magick_unused(resize_filter))
static double CubicBC (const double x, const ResizeFilter *resize_filter)
static double CubicSpline (const double x, const ResizeFilter *resize_filter)
static double Gaussian (const double x, const ResizeFilter *resize_filter)
static double Hann (const double x, const ResizeFilter *magick_unused(resize_filter))
static double Hamming (const double x, const ResizeFilter *magick_unused(resize_filter))
static double Jinc (const double x, const ResizeFilter *magick_unused(resize_filter))
static double Kaiser (const double x, const ResizeFilter *resize_filter)
static double Lagrange (const double x, const ResizeFilter *resize_filter)
static double Quadratic (const double x, const ResizeFilter *magick_unused(resize_filter))
static double Sinc (const double x, const ResizeFilter *magick_unused(resize_filter))
static double SincFast (const double x, const ResizeFilter *magick_unused(resize_filter))
static double Triangle (const double x, const ResizeFilter *magick_unused(resize_filter))
static double Welch (const double x, const ResizeFilter *magick_unused(resize_filter))
MagickPrivate ResizeFilterAcquireResizeFilter (const Image *image, const FilterType filter, const MagickBooleanType cylindrical, ExceptionInfo *exception)
MagickExport ImageAdaptiveResizeImage (const Image *image, const size_t columns, const size_t rows, ExceptionInfo *exception)
static double J1 (double x)
static double P1 (double x)
static double Q1 (double x)
MagickPrivate ResizeFilterDestroyResizeFilter (ResizeFilter *resize_filter)
MagickPrivate double * GetResizeFilterCoefficient (const ResizeFilter *resize_filter)
MagickPrivate double GetResizeFilterBlur (const ResizeFilter *resize_filter)
MagickPrivate double GetResizeFilterScale (const ResizeFilter *resize_filter)
MagickPrivate double GetResizeFilterWindowSupport (const ResizeFilter *resize_filter)
MagickPrivate
ResizeWeightingFunctionType 
GetResizeFilterWeightingType (const ResizeFilter *resize_filter)
MagickPrivate
ResizeWeightingFunctionType 
GetResizeFilterWindowWeightingType (const ResizeFilter *resize_filter)
MagickPrivate double GetResizeFilterSupport (const ResizeFilter *resize_filter)
MagickPrivate double GetResizeFilterWeight (const ResizeFilter *resize_filter, const double x)
MagickExport ImageInterpolativeResizeImage (const Image *image, const size_t columns, const size_t rows, const PixelInterpolateMethod method, ExceptionInfo *exception)
MagickExport ImageLiquidRescaleImage (const Image *image, const size_t magick_unused(columns), const size_t magick_unused(rows), const double magick_unused(delta_x), const double magick_unused(rigidity), ExceptionInfo *exception)
static void CopyPixels (const Quantum *source, const ssize_t source_offset, Quantum *destination, const ssize_t destination_offset, const size_t channels)
static void MixPixels (const Quantum *source, const ssize_t *source_offset, const size_t source_size, Quantum *destination, const ssize_t destination_offset, const size_t channels)
static void Mix2Pixels (const Quantum *source, const ssize_t source_offset1, const ssize_t source_offset2, Quantum *destination, const ssize_t destination_offset, const size_t channels)
static int PixelsEqual (const Quantum *source1, ssize_t offset1, const Quantum *source2, ssize_t offset2, const size_t channels)
static void Eagle2X (const Image *source, const Quantum *pixels, Quantum *result, const size_t channels)
static void Hq2XHelper (const unsigned int rule, const Quantum *source, Quantum *destination, const ssize_t destination_offset, const size_t channels, const ssize_t e, const ssize_t a, const ssize_t b, const ssize_t d, const ssize_t f, const ssize_t h)
static unsigned int Hq2XPatternToNumber (const int *pattern)
static void Hq2X (const Image *source, const Quantum *pixels, Quantum *result, const size_t channels)
static void Fish2X (const Image *source, const Quantum *pixels, Quantum *result, const size_t channels)
static void Xbr2X (const Image *source, const Quantum *pixels, Quantum *result, const size_t channels)
static void Scale2X (const Image *source, const Quantum *pixels, Quantum *result, const size_t channels)
static void Epbx2X (const Image *source, const Quantum *pixels, Quantum *result, const size_t channels)
static void Eagle3X (const Image *source, const Quantum *pixels, Quantum *result, const size_t channels)
static void Eagle3XB (const Image *source, const Quantum *pixels, Quantum *result, const size_t channels)
static void Scale3X (const Image *source, const Quantum *pixels, Quantum *result, const size_t channels)
MagickExport ImageMagnifyImage (const Image *image, ExceptionInfo *exception)
MagickExport ImageMinifyImage (const Image *image, ExceptionInfo *exception)
MagickExport ImageResampleImage (const Image *image, const double x_resolution, const double y_resolution, const FilterType filter, ExceptionInfo *exception)
static ContributionInfo ** DestroyContributionThreadSet (ContributionInfo **contribution)
static ContributionInfo ** AcquireContributionThreadSet (const size_t count)
static MagickBooleanType HorizontalFilter (const ResizeFilter *magick_restrict resize_filter, const Image *magick_restrict image, Image *magick_restrict resize_image, const double x_factor, const MagickSizeType span, MagickOffsetType *magick_restrict progress, ExceptionInfo *exception)
static MagickBooleanType VerticalFilter (const ResizeFilter *magick_restrict resize_filter, const Image *magick_restrict image, Image *magick_restrict resize_image, const double y_factor, const MagickSizeType span, MagickOffsetType *magick_restrict progress, ExceptionInfo *exception)
MagickExport ImageResizeImage (const Image *image, const size_t columns, const size_t rows, const FilterType filter, ExceptionInfo *exception)
MagickExport ImageSampleImage (const Image *image, const size_t columns, const size_t rows, ExceptionInfo *exception)
MagickExport ImageScaleImage (const Image *image, const size_t columns, const size_t rows, ExceptionInfo *exception)
MagickExport ImageThumbnailImage (const Image *image, const size_t columns, const size_t rows, ExceptionInfo *exception)

Define Documentation

#define caseA ( N,
A,
B,
C,
 ) 
Value:
case N: \
  { \
    const ssize_t \
      offsets[4] = { A, B, C, D }; \
 \
    MixPixels(source,offsets,4,destination,destination_offset,channels);\
    break; \
  }

Referenced by Hq2XHelper().

#define caseB ( N,
A,
B,
C,
D,
E,
F,
G,
 ) 
Value:
case N: \
  { \
    const ssize_t \
      offsets[8] = { A, B, C, D, E, F, G, H }; \
 \
    MixPixels(source,offsets,8,destination,destination_offset,channels);\
    break; \
  }

Referenced by Hq2XHelper().

#define Corner ( A,
B,
C,
 ) 
Value:
{ \
    if (intensities[B] > intensities[A]) \
      { \
        ssize_t    \
          offsets[3] = { B, C, D }; \
 \
        MixPixels(pixels,offsets,3,result,3,channels); \
      } \
    else \
      { \
        ssize_t    \
          offsets[3] = { A, B, C }; \
 \
        MixPixels(pixels,offsets,3,result,3,channels); \
      } \
  }

Referenced by Fish2X().

#define HelperCond ( a,
b,
c,
d,
e,
f,
 ) 
Value:
( \
  PixelsEqual(pixels,a,pixels,b,channels) && ( \
    PixelsEqual(pixels,c,pixels,d,channels) || \
    PixelsEqual(pixels,c,pixels,e,channels) || \
    PixelsEqual(pixels,a,pixels,f,channels) || \
    PixelsEqual(pixels,b,pixels,g,channels) \
    ) \
  )

Referenced by Epbx2X().

#define InterpolativeResizeImageTag   "Resize/Image"
#define Line ( A,
B,
C,
 ) 
Value:
{ \
    if (intensities[C] > intensities[A]) \
      Mix2Pixels(pixels,C,D,result,3,channels); \
    else \
      Mix2Pixels(pixels,A,B,result,3,channels); \
  }

Referenced by Fish2X().

#define MagnifyImageTag   "Magnify/Image"

Referenced by MagnifyImage().

#define ResampleImageTag   "Resample/Image"
#define ResizeImageTag   "Resize/Image"

Referenced by HorizontalFilter(), and VerticalFilter().

#define Rotated (  )     p[2], p[4], p[7], p[1], p[6], p[0], p[3], p[5]

Referenced by Hq2X().

#define SampleFactor   5

Referenced by ThumbnailImage().

#define SampleImageTag   "Sample/Image"

Referenced by SampleImage().

#define ScaleImageTag   "Scale/Image"

Referenced by ScaleImage().

#define WeightVar ( M,
 ) 
Value:
const int w_##M##_##N = \
  PixelsEqual(pixels,M,pixels,N,channels) ? 0 : 1;

Referenced by Xbr2X().


Typedef Documentation


Function Documentation

static ContributionInfo** AcquireContributionThreadSet ( const size_t  count  )  [static]
MagickPrivate ResizeFilter* AcquireResizeFilter ( const Image image,
const FilterType  filter,
const MagickBooleanType  cylindrical,
ExceptionInfo exception 
)

References AcquireCriticalMemory(), Blackman(), BlackmanFilter, BlackmanWeightingFunction, _ResizeFilter::blur, Bohman(), BohmanFilter, BohmanWeightingFunction, Box(), BoxFilter, BoxWeightingFunction, CatromFilter, _ResizeFilter::coefficient, CommandOptionToMnemonic(), Cosine(), CosineFilter, CosineWeightingFunction, CubicBC(), CubicBCWeightingFunction, CubicFilter, CubicSpline(), CubicSplineFilter, _Image::debug, DeleteImageArtifact(), _Image::filename, _ResizeFilter::filter, _ResizeFilter::filterWeightingType, FormatLocaleFile(), Gaussian(), GaussianFilter, GaussianWeightingFunction, GetImageArtifact(), GetMagickModule, GetMagickPrecision(), GetResizeFilterSupport(), GetResizeFilterWeight(), Hamming(), HammingFilter, HammingWeightingFunction, Hann(), HannFilter, HannWeightingFunction, HermiteFilter, I0(), IsStringTrue(), Jinc(), JincFilter, JincWeightingFunction, Kaiser(), KaiserFilter, KaiserWeightingFunction, Lagrange(), LagrangeFilter, LagrangeWeightingFunction, Lanczos2Filter, Lanczos2SharpFilter, LanczosFilter, LanczosRadiusFilter, LanczosSharpFilter, LogMagickEvent(), Magick2PI, MagickCoreSignature, MagickEpsilon, MagickFalse, MagickFilterOptions, MagickPI, MagickSQ1_2, MitchellFilter, ParseCommandOption(), PerceptibleReciprocal(), PointFilter, Quadratic(), QuadraticFilter, QuadraticWeightingFunction, RobidouxFilter, RobidouxSharpFilter, _ResizeFilter::scale, SentinelFilter, _ResizeFilter::signature, _ExceptionInfo::signature, _Image::signature, Sinc(), SincFast(), SincFastFilter, SincFastWeightingFunction, SincFilter, SincWeightingFunction, SplineFilter, StringToDouble(), StringToLong(), _ResizeFilter::support, TraceEvent, Triangle(), TriangleFilter, TriangleWeightingFunction, UndefinedFilter, Welch(), WelchFilter, WelchWeightingFunction, _ResizeFilter::window(), _ResizeFilter::window_support, and _ResizeFilter::windowWeightingType.

MagickExport Image* AdaptiveResizeImage ( const Image image,
const size_t  columns,
const size_t  rows,
ExceptionInfo exception 
)
static double BesselOrderOne ( double  x  ) 

References J1(), MagickPI, P1(), and Q1().

Referenced by Jinc().

static double Blackman ( const double  x,
const ResizeFilter magick_unusedresize_filter 
) [static]

References magick_unreferenced, and MagickPI.

Referenced by AcquireResizeFilter().

static double Bohman ( const double  x,
const ResizeFilter magick_unusedresize_filter 
) [static]

References magick_unreferenced, and MagickPI.

Referenced by AcquireResizeFilter().

static double Box ( const double   magick_unusedx,
const ResizeFilter magick_unusedresize_filter 
) [static]
static void CopyPixels ( const Quantum source,
const ssize_t  source_offset,
Quantum destination,
const ssize_t  destination_offset,
const size_t  channels 
) [inline, static]
static double Cosine ( const double  x,
const ResizeFilter magick_unusedresize_filter 
) [static]

References magick_unreferenced, and MagickPI2.

Referenced by AcquireResizeFilter().

static double CubicBC ( const double  x,
const ResizeFilter resize_filter 
) [static]
static double CubicSpline ( const double  x,
const ResizeFilter resize_filter 
) [static]

References _ResizeFilter::support.

Referenced by AcquireResizeFilter().

static ContributionInfo** DestroyContributionThreadSet ( ContributionInfo **  contribution  )  [static]
MagickPrivate ResizeFilter* DestroyResizeFilter ( ResizeFilter resize_filter  ) 
static void Eagle2X ( const Image source,
const Quantum pixels,
Quantum result,
const size_t  channels 
) [inline, static]

References CopyPixels(), and PixelsEqual().

Referenced by MagnifyImage().

static void Eagle3X ( const Image source,
const Quantum pixels,
Quantum result,
const size_t  channels 
) [inline, static]

References CopyPixels(), Mix2Pixels(), and PixelsEqual().

Referenced by MagnifyImage().

static void Eagle3XB ( const Image source,
const Quantum pixels,
Quantum result,
const size_t  channels 
) [inline, static]

References CopyPixels(), and PixelsEqual().

Referenced by MagnifyImage().

static void Epbx2X ( const Image source,
const Quantum pixels,
Quantum result,
const size_t  channels 
) [static]
static void Fish2X ( const Image source,
const Quantum pixels,
Quantum result,
const size_t  channels 
) [static]
static double Gaussian ( const double  x,
const ResizeFilter resize_filter 
) [static]
MagickPrivate double GetResizeFilterBlur ( const ResizeFilter resize_filter  ) 
MagickPrivate double* GetResizeFilterCoefficient ( const ResizeFilter resize_filter  ) 
MagickPrivate double GetResizeFilterScale ( const ResizeFilter resize_filter  ) 
MagickPrivate double GetResizeFilterSupport ( const ResizeFilter resize_filter  ) 
MagickPrivate double GetResizeFilterWeight ( const ResizeFilter resize_filter,
const double  x 
)
MagickPrivate ResizeWeightingFunctionType GetResizeFilterWeightingType ( const ResizeFilter resize_filter  ) 
MagickPrivate double GetResizeFilterWindowSupport ( const ResizeFilter resize_filter  ) 
MagickPrivate ResizeWeightingFunctionType GetResizeFilterWindowWeightingType ( const ResizeFilter resize_filter  ) 
static double Hamming ( const double  x,
const ResizeFilter magick_unusedresize_filter 
) [static]

References magick_unreferenced, and MagickPI.

Referenced by AcquireResizeFilter().

static double Hann ( const double  x,
const ResizeFilter magick_unusedresize_filter 
) [static]

References magick_unreferenced, and MagickPI.

Referenced by AcquireResizeFilter().

static MagickBooleanType HorizontalFilter ( const ResizeFilter *magick_restrict  resize_filter,
const Image *magick_restrict  image,
Image *magick_restrict  resize_image,
const double  x_factor,
const MagickSizeType  span,
MagickOffsetType *magick_restrict  progress,
ExceptionInfo exception 
) [static]
static void Hq2X ( const Image source,
const Quantum pixels,
Quantum result,
const size_t  channels 
) [inline, static]
static void Hq2XHelper ( const unsigned int  rule,
const Quantum source,
Quantum destination,
const ssize_t  destination_offset,
const size_t  channels,
const ssize_t  e,
const ssize_t  a,
const ssize_t  b,
const ssize_t  d,
const ssize_t  f,
const ssize_t  h 
) [static]

References caseA, caseB, CopyPixels(), MixPixels(), and PixelsEqual().

Referenced by Hq2X().

static unsigned int Hq2XPatternToNumber ( const int *  pattern  )  [inline, static]

Referenced by Hq2X().

static double I0 ( double  x  )  [static]

References MagickEpsilon.

Referenced by AcquireResizeFilter(), and Kaiser().

MagickExport Image* InterpolativeResizeImage ( const Image image,
const size_t  columns,
const size_t  rows,
const PixelInterpolateMethod  method,
ExceptionInfo exception 
)
static double J1 ( double  x  )  [static]

Referenced by BesselOrderOne().

static double Jinc ( const double  x,
const ResizeFilter magick_unusedresize_filter 
) [static]
static double Kaiser ( const double  x,
const ResizeFilter resize_filter 
) [static]

References _ResizeFilter::coefficient, and I0().

Referenced by AcquireResizeFilter().

static double Lagrange ( const double  x,
const ResizeFilter resize_filter 
) [static]
MagickExport Image* LiquidRescaleImage ( const Image image,
const size_t   magick_unusedcolumns,
const size_t   magick_unusedrows,
const double   magick_unuseddelta_x,
const double   magick_unusedrigidity,
ExceptionInfo exception 
)
MagickExport Image* MagnifyImage ( const Image image,
ExceptionInfo exception 
)
MagickExport Image* MinifyImage ( const Image image,
ExceptionInfo exception 
)
static void Mix2Pixels ( const Quantum source,
const ssize_t  source_offset1,
const ssize_t  source_offset2,
Quantum destination,
const ssize_t  destination_offset,
const size_t  channels 
) [inline, static]

References MixPixels().

Referenced by Eagle3X(), Epbx2X(), Fish2X(), and Xbr2X().

static void MixPixels ( const Quantum source,
const ssize_t *  source_offset,
const size_t  source_size,
Quantum destination,
const ssize_t  destination_offset,
const size_t  channels 
) [inline, static]

Referenced by Fish2X(), Hq2XHelper(), and Mix2Pixels().

static double P1 ( double  x  )  [static]

Referenced by BesselOrderOne().

static int PixelsEqual ( const Quantum source1,
ssize_t  offset1,
const Quantum source2,
ssize_t  offset2,
const size_t  channels 
) [inline, static]
static double Q1 ( double  x  )  [static]

Referenced by BesselOrderOne().

static double Quadratic ( const double  x,
const ResizeFilter magick_unusedresize_filter 
) [static]

References magick_unreferenced.

Referenced by AcquireResizeFilter().

MagickExport Image* ResampleImage ( const Image image,
const double  x_resolution,
const double  y_resolution,
const FilterType  filter,
ExceptionInfo exception 
)
MagickExport Image* ResizeImage ( const Image image,
const size_t  columns,
const size_t  rows,
const FilterType  filter,
ExceptionInfo exception 
)
MagickExport Image* SampleImage ( const Image image,
const size_t  columns,
const size_t  rows,
ExceptionInfo exception 
)
static void Scale2X ( const Image source,
const Quantum pixels,
Quantum result,
const size_t  channels 
) [static]

References CopyPixels(), and PixelsEqual().

Referenced by MagnifyImage().

static void Scale3X ( const Image source,
const Quantum pixels,
Quantum result,
const size_t  channels 
) [inline, static]

References CopyPixels(), and PixelsEqual().

Referenced by MagnifyImage().

MagickExport Image* ScaleImage ( const Image image,
const size_t  columns,
const size_t  rows,
ExceptionInfo exception 
)
static double Sinc ( const double  x,
const ResizeFilter magick_unusedresize_filter 
) [static]

References magick_unreferenced, and MagickPI.

static double Sinc ( const   double,
const ResizeFilter  
)

Referenced by AcquireResizeFilter().

static double SincFast ( const double  x,
const ResizeFilter magick_unusedresize_filter 
) [static]

References magick_unreferenced, and MagickPI.

static double SincFast ( const   double,
const ResizeFilter  
)

Referenced by AcquireResizeFilter().

MagickExport Image* ThumbnailImage ( const Image image,
const size_t  columns,
const size_t  rows,
ExceptionInfo exception 
)
static double Triangle ( const double  x,
const ResizeFilter magick_unusedresize_filter 
) [static]

References magick_unreferenced.

Referenced by AcquireResizeFilter().

static MagickBooleanType VerticalFilter ( const ResizeFilter *magick_restrict  resize_filter,
const Image *magick_restrict  image,
Image *magick_restrict  resize_image,
const double  y_factor,
const MagickSizeType  span,
MagickOffsetType *magick_restrict  progress,
ExceptionInfo exception 
) [static]
static double Welch ( const double  x,
const ResizeFilter magick_unusedresize_filter 
) [static]

References magick_unreferenced.

Referenced by AcquireResizeFilter().

static void Xbr2X ( const Image source,
const Quantum pixels,
Quantum result,
const size_t  channels 
) [static]

References CopyPixels(), Mix2Pixels(), and WeightVar.

Referenced by MagnifyImage().


Generated on 11 May 2020 for MagickCore by  doxygen 1.6.1