@@ -778,6 +778,82 @@ struct resample_params_t {
778
778
};
779
779
780
780
781
+ static void get_filter (const resample_params_t ¶ms,
782
+ agg::image_filter_lut &filter)
783
+ {
784
+ switch (params.interpolation ) {
785
+ case NEAREST:
786
+ case _n_interpolation:
787
+ // Never should get here. Here to silence compiler warnings.
788
+ break ;
789
+
790
+ case HANNING:
791
+ filter.calculate (agg::image_filter_hanning (), params.norm );
792
+ break ;
793
+
794
+ case HAMMING:
795
+ filter.calculate (agg::image_filter_hamming (), params.norm );
796
+ break ;
797
+
798
+ case HERMITE:
799
+ filter.calculate (agg::image_filter_hermite (), params.norm );
800
+ break ;
801
+
802
+ case BILINEAR:
803
+ filter.calculate (agg::image_filter_bilinear (), params.norm );
804
+ break ;
805
+
806
+ case BICUBIC:
807
+ filter.calculate (agg::image_filter_bicubic (), params.norm );
808
+ break ;
809
+
810
+ case SPLINE16:
811
+ filter.calculate (agg::image_filter_spline16 (), params.norm );
812
+ break ;
813
+
814
+ case SPLINE36:
815
+ filter.calculate (agg::image_filter_spline36 (), params.norm );
816
+ break ;
817
+
818
+ case KAISER:
819
+ filter.calculate (agg::image_filter_kaiser (), params.norm );
820
+ break ;
821
+
822
+ case QUADRIC:
823
+ filter.calculate (agg::image_filter_quadric (), params.norm );
824
+ break ;
825
+
826
+ case CATROM:
827
+ filter.calculate (agg::image_filter_catrom (), params.norm );
828
+ break ;
829
+
830
+ case GAUSSIAN:
831
+ filter.calculate (agg::image_filter_gaussian (), params.norm );
832
+ break ;
833
+
834
+ case BESSEL:
835
+ filter.calculate (agg::image_filter_bessel (), params.norm );
836
+ break ;
837
+
838
+ case MITCHELL:
839
+ filter.calculate (agg::image_filter_mitchell (), params.norm );
840
+ break ;
841
+
842
+ case SINC:
843
+ filter.calculate (agg::image_filter_sinc (params.radius ), params.norm );
844
+ break ;
845
+
846
+ case LANCZOS:
847
+ filter.calculate (agg::image_filter_lanczos (params.radius ), params.norm );
848
+ break ;
849
+
850
+ case BLACKMAN:
851
+ filter.calculate (agg::image_filter_blackman (params.radius ), params.norm );
852
+ break ;
853
+ }
854
+ }
855
+
856
+
781
857
template <class T >
782
858
void resample (
783
859
const T *input, int in_width, int in_height,
@@ -878,76 +954,7 @@ void resample(
878
954
}
879
955
} else {
880
956
agg::image_filter_lut filter;
881
- switch (params.interpolation ) {
882
- case NEAREST:
883
- case _n_interpolation:
884
- // Never should get here. Here to silence compiler warnings.
885
- break ;
886
-
887
- case HANNING:
888
- filter.calculate (agg::image_filter_hanning (), params.norm );
889
- break ;
890
-
891
- case HAMMING:
892
- filter.calculate (agg::image_filter_hamming (), params.norm );
893
- break ;
894
-
895
- case HERMITE:
896
- filter.calculate (agg::image_filter_hermite (), params.norm );
897
- break ;
898
-
899
- case BILINEAR:
900
- filter.calculate (agg::image_filter_bilinear (), params.norm );
901
- break ;
902
-
903
- case BICUBIC:
904
- filter.calculate (agg::image_filter_bicubic (), params.norm );
905
- break ;
906
-
907
- case SPLINE16:
908
- filter.calculate (agg::image_filter_spline16 (), params.norm );
909
- break ;
910
-
911
- case SPLINE36:
912
- filter.calculate (agg::image_filter_spline36 (), params.norm );
913
- break ;
914
-
915
- case KAISER:
916
- filter.calculate (agg::image_filter_kaiser (), params.norm );
917
- break ;
918
-
919
- case QUADRIC:
920
- filter.calculate (agg::image_filter_quadric (), params.norm );
921
- break ;
922
-
923
- case CATROM:
924
- filter.calculate (agg::image_filter_catrom (), params.norm );
925
- break ;
926
-
927
- case GAUSSIAN:
928
- filter.calculate (agg::image_filter_gaussian (), params.norm );
929
- break ;
930
-
931
- case BESSEL:
932
- filter.calculate (agg::image_filter_bessel (), params.norm );
933
- break ;
934
-
935
- case MITCHELL:
936
- filter.calculate (agg::image_filter_mitchell (), params.norm );
937
- break ;
938
-
939
- case SINC:
940
- filter.calculate (agg::image_filter_sinc (params.radius ), params.norm );
941
- break ;
942
-
943
- case LANCZOS:
944
- filter.calculate (agg::image_filter_lanczos (params.radius ), params.norm );
945
- break ;
946
-
947
- case BLACKMAN:
948
- filter.calculate (agg::image_filter_blackman (params.radius ), params.norm );
949
- break ;
950
- }
957
+ get_filter (params, filter);
951
958
952
959
if (params.is_affine && params.resample ) {
953
960
typedef typename type_mapping_t ::template span_gen_affine_type<image_accessor_t >::type span_gen_t ;
0 commit comments