13ed852eea50f9d4cd633efb8c2b054b8e33c253cristy/*
27ce65e7125a4e1df1a274ce373c537a9df9c16cdCristy  Copyright 1999-2016 ImageMagick Studio LLC, a non-profit organization
33ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  dedicated to making software imaging solutions freely available.
43ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
53ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  You may not use this file except in compliance with the License.
63ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  obtain a copy of the License at
73ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
83ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    http://www.imagemagick.org/script/license.php
93ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
103ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  Unless required by applicable law or agreed to in writing, software
113ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  distributed under the License is distributed on an "AS IS" BASIS,
123ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
133ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  See the License for the specific language governing permissions and
143ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  limitations under the License.
153ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
163ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  MagickCore graphic resample methods.
173ed852eea50f9d4cd633efb8c2b054b8e33c253cristy*/
1883bceaa5d7a1196e05c1ccba443f90f4b032fca6Cristy#ifndef MAGICKCORE_RESAMPLE_H
1983bceaa5d7a1196e05c1ccba443f90f4b032fca6Cristy#define MAGICKCORE_RESAMPLE_H
203ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
216398ec777e91813b64767e25358b7062a7de56cbcristy#include "MagickCore/cache-view.h"
226398ec777e91813b64767e25358b7062a7de56cbcristy
233ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#if defined(__cplusplus) || defined(c_plusplus)
243ed852eea50f9d4cd633efb8c2b054b8e33c253cristyextern "C" {
253ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#endif
263ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
27449887b1f6fa43afbf82ddbc0be4dfb0391124b9anthony/*
28d76c51ed30cf4084f4434ba08925d16001d1e340cristy  WARNING:  The order of this table must also match the order of a table
29cf4e33d9032a6cbeed57fd35ea9f567b0062d8caanthony  located in AcquireResizeFilter() in "resize.c" otherwise the users filter
30d76c51ed30cf4084f4434ba08925d16001d1e340cristy  will not match the actual filter that is setup.
31449887b1f6fa43afbf82ddbc0be4dfb0391124b9anthony*/
323ed852eea50f9d4cd633efb8c2b054b8e33c253cristytypedef enum
333ed852eea50f9d4cd633efb8c2b054b8e33c253cristy{
343ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  UndefinedFilter,
353ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  PointFilter,
363ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  BoxFilter,
373ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  TriangleFilter,
383ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  HermiteFilter,
39f60ffd7c60d7bf0122dc737c093d219fdb6cc5bcanthony  HannFilter,
403ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  HammingFilter,
413ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  BlackmanFilter,
423ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  GaussianFilter,
433ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  QuadraticFilter,
443ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  CubicFilter,
453ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  CatromFilter,
463ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  MitchellFilter,
4748f776236a1271df3f3e2643d7b550689538b5cdanthony  JincFilter,
483ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  SincFilter,
49152700d70cf214d222b90006fab16fcf76355dbdanthony  SincFastFilter,
503ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  KaiserFilter,
51f60ffd7c60d7bf0122dc737c093d219fdb6cc5bcanthony  WelchFilter,
523ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ParzenFilter,
533ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  BohmanFilter,
543ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  BartlettFilter,
55152700d70cf214d222b90006fab16fcf76355dbdanthony  LagrangeFilter,
56152700d70cf214d222b90006fab16fcf76355dbdanthony  LanczosFilter,
5706b1edf5335d949fe79620f42d01c493b20e83e6anthony  LanczosSharpFilter,
58152700d70cf214d222b90006fab16fcf76355dbdanthony  Lanczos2Filter,
59152700d70cf214d222b90006fab16fcf76355dbdanthony  Lanczos2SharpFilter,
60853d6979aa2981592af7020163b5030aa7185783anthony  RobidouxFilter,
6145531093f82a5328ab54d5386d5c4d60e9740c5danthony  RobidouxSharpFilter,
625d4a1707d28d7a581d42b1d3a2258de9a080ba4danthony  CosineFilter,
63cf4e33d9032a6cbeed57fd35ea9f567b0062d8caanthony  SplineFilter,
64aa806424b124f292f5d4cc7893cee4be0f679320anthony  LanczosRadiusFilter,
653ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  SentinelFilter  /* a count of all the filters, not a real filter */
668b9f21cab4c50eb7d6e558a7a43a68833fe0b55ddirk} FilterType;
673ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
682ab242ec7c723f9f95558b30f1275011aa582ca9cristy/*
692ab242ec7c723f9f95558b30f1275011aa582ca9cristy  Backward compatibility for the more correctly named Jinc Filter.  Original
702ab242ec7c723f9f95558b30f1275011aa582ca9cristy  source of this filter is from "zoom" but it refers to a reference by Pratt,
712ab242ec7c723f9f95558b30f1275011aa582ca9cristy  who does not actualy name the filter.
72f60ffd7c60d7bf0122dc737c093d219fdb6cc5bcanthony
73f60ffd7c60d7bf0122dc737c093d219fdb6cc5bcanthony  also miss-spellings of common filters
7448f776236a1271df3f3e2643d7b550689538b5cdanthony*/
75f60ffd7c60d7bf0122dc737c093d219fdb6cc5bcanthony#define BesselFilter  JincFilter
76f60ffd7c60d7bf0122dc737c093d219fdb6cc5bcanthony#define WelshFilter   WelchFilter
77f60ffd7c60d7bf0122dc737c093d219fdb6cc5bcanthony#define HanningFilter HannFilter
7848f776236a1271df3f3e2643d7b550689538b5cdanthony
793ed852eea50f9d4cd633efb8c2b054b8e33c253cristytypedef struct _ResampleFilter
803ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ResampleFilter;
813ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
823ed852eea50f9d4cd633efb8c2b054b8e33c253cristyextern MagickExport MagickBooleanType
833ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ResamplePixelColor(ResampleFilter *,const double,const double,
84db070957cf6bf959df9283a482377e8854c3d4d2cristy    PixelInfo *,ExceptionInfo *),
853ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  SetResampleFilterInterpolateMethod(ResampleFilter *,
865c4e2586d27d4299a742d170d41105de1689aa46cristy    const PixelInterpolateMethod),
873ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  SetResampleFilterVirtualPixelMethod(ResampleFilter *,
883ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    const VirtualPixelMethod);
893ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
903ed852eea50f9d4cd633efb8c2b054b8e33c253cristyextern MagickExport ResampleFilter
913ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  *AcquireResampleFilter(const Image *,ExceptionInfo *),
923ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  *DestroyResampleFilter(ResampleFilter *);
933ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
943ed852eea50f9d4cd633efb8c2b054b8e33c253cristyextern MagickExport void
953ed852eea50f9d4cd633efb8c2b054b8e33c253cristy  ScaleResampleFilter(ResampleFilter *,const double,const double,const double,
963ed852eea50f9d4cd633efb8c2b054b8e33c253cristy    const double),
978b9f21cab4c50eb7d6e558a7a43a68833fe0b55ddirk  SetResampleFilter(ResampleFilter *,const FilterType);
983ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
993ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#if defined(__cplusplus) || defined(c_plusplus)
1003ed852eea50f9d4cd633efb8c2b054b8e33c253cristy}
1013ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#endif
1023ed852eea50f9d4cd633efb8c2b054b8e33c253cristy
1033ed852eea50f9d4cd633efb8c2b054b8e33c253cristy#endif
104