@@ -500,91 +500,46 @@ typedef enum {
500
500
} interpolation_e;
501
501
502
502
503
- template <typename T> struct agg_type { typedef T type; };
503
+ template <class T > struct agg_type { typedef T type; };
504
504
template <> struct agg_type <double > { typedef agg::gray64 type; };
505
505
template <> struct agg_type <float > { typedef agg::gray32 type; };
506
506
template <> struct agg_type <unsigned short > { typedef agg::gray16 type; };
507
507
template <> struct agg_type <unsigned char > { typedef agg::gray8 type; };
508
508
509
509
510
- // Backport some C++11 utilities.
511
- template <bool , typename = void > struct enable_if {};
512
- template <typename T> struct enable_if <true , T> { typedef T type; };
513
- // (std::conditional + std::is_same)
514
- template <class U , class V , class T , class F > struct if_is_same { typedef F type; };
515
- template <class U , class T , class F > struct if_is_same <U, U, T, F> { typedef T type; };
516
-
517
- template <typename , typename = void > struct type_mapping ;
518
-
519
-
510
+ template <class , class = void > struct type_mapping ;
520
511
// Use this specialization if type::r exists, i.e. for RGBA types.
521
- template <typename T>
522
- struct type_mapping <T, typename enable_if<sizeof (agg_type<T>::type::r)>::type>
512
+ template <class T >
513
+ struct type_mapping <T, typename std:: enable_if<sizeof (agg_type<T>::type::r)>::type>
523
514
{
524
- typedef typename agg_type<T>::type color_type;
525
- typedef typename
526
- if_is_same<
527
- T, agg::rgba8,
528
- fixed_blender_rgba_plain<color_type, agg::order_rgba>,
529
- agg::blender_rgba_plain<color_type, agg::order_rgba>
530
- >::type
531
- blender_type;
532
- typedef typename
533
- if_is_same<
534
- T, agg::rgba8,
535
- fixed_blender_rgba_pre<color_type, agg::order_rgba>,
536
- agg::blender_rgba_pre<color_type, agg::order_rgba>
537
- >::type
538
- pre_blender_type;
539
- typedef agg::pixfmt_alpha_blend_rgba<blender_type, agg::rendering_buffer> pixfmt_type;
540
- typedef agg::pixfmt_alpha_blend_rgba<pre_blender_type, agg::rendering_buffer> pixfmt_pre_type;
541
-
542
- template <typename A>
543
- struct span_gen_affine_type
544
- {
545
- typedef agg::span_image_resample_rgba_affine<A> type;
546
- };
547
-
548
- template <typename A, typename B>
549
- struct span_gen_filter_type
550
- {
551
- typedef agg::span_image_filter_rgba<A, B> type;
552
- };
553
-
554
- template <typename A, typename B>
555
- struct span_gen_nn_type
556
- {
557
- typedef agg::span_image_filter_rgba_nn<A, B> type;
558
- };
515
+ using color_type = typename agg_type<T>::type;
516
+ using blender_type = typename std::conditional<
517
+ std::is_same<T, agg::rgba8>::value,
518
+ fixed_blender_rgba_plain<color_type, agg::order_rgba>,
519
+ agg::blender_rgba_plain<color_type, agg::order_rgba>>::type;
520
+ using pre_blender_type = typename std::conditional<
521
+ std::is_same<T, agg::rgba8>::value,
522
+ fixed_blender_rgba_pre<color_type, agg::order_rgba>,
523
+ agg::blender_rgba_pre<color_type, agg::order_rgba>>::type;
524
+ using pixfmt_type =
525
+ agg::pixfmt_alpha_blend_rgba<blender_type, agg::rendering_buffer>;
526
+ using pixfmt_pre_type =
527
+ agg::pixfmt_alpha_blend_rgba<pre_blender_type, agg::rendering_buffer>;
528
+ template <class A > using span_gen_affine_type = agg::span_image_resample_rgba_affine<A>;
529
+ template <class A , class B > using span_gen_filter_type = agg::span_image_filter_rgba<A, B>;
530
+ template <class A , class B > using span_gen_nn_type = agg::span_image_filter_rgba_nn<A, B>;
559
531
};
560
-
561
-
562
532
// Use this specialization if type::v exists, i.e. for grayscale types.
563
- template <typename T>
564
- struct type_mapping <T, typename enable_if<sizeof (agg_type<T>::type::v)>::type>
533
+ template <class T >
534
+ struct type_mapping <T, typename std:: enable_if<sizeof (agg_type<T>::type::v)>::type>
565
535
{
566
- typedef typename agg_type<T>::type color_type;
567
- typedef agg::blender_gray<color_type> blender_type;
568
- typedef agg::pixfmt_alpha_blend_gray<blender_type, agg::rendering_buffer> pixfmt_type;
569
- typedef pixfmt_type pixfmt_pre_type;
570
-
571
- template <typename A>
572
- struct span_gen_affine_type
573
- {
574
- typedef agg::span_image_resample_gray_affine<A> type;
575
- };
576
-
577
- template <typename A, typename B>
578
- struct span_gen_filter_type
579
- {
580
- typedef agg::span_image_filter_gray<A, B> type;
581
- };
582
-
583
- template <typename A, typename B>
584
- struct span_gen_nn_type
585
- {
586
- typedef agg::span_image_filter_gray_nn<A, B> type;
587
- };
536
+ using color_type = typename agg_type<T>::type;
537
+ using blender_type = agg::blender_gray<color_type>;
538
+ using pixfmt_type = agg::pixfmt_alpha_blend_gray<blender_type, agg::rendering_buffer>;
539
+ using pixfmt_pre_type = pixfmt_type;
540
+ template <class A > using span_gen_affine_type = agg::span_image_resample_gray_affine<A>;
541
+ template <class A , class B > using span_gen_filter_type = agg::span_image_filter_gray<A, B>;
542
+ template <class A , class B > using span_gen_nn_type = agg::span_image_filter_gray_nn<A, B>;
588
543
};
589
544
590
545
@@ -813,7 +768,7 @@ void resample(
813
768
814
769
if (params.interpolation == NEAREST) {
815
770
if (params.is_affine ) {
816
- typedef typename type_mapping_t ::template span_gen_nn_type<image_accessor_t , affine_interpolator_t >::type span_gen_t ;
771
+ typedef typename type_mapping_t ::template span_gen_nn_type<image_accessor_t , affine_interpolator_t > span_gen_t ;
817
772
typedef agg::span_converter<span_gen_t , span_conv_alpha_t > span_conv_t ;
818
773
typedef agg::renderer_scanline_aa<renderer_t , span_alloc_t , span_conv_t > nn_renderer_t ;
819
774
@@ -823,7 +778,7 @@ void resample(
823
778
nn_renderer_t nn_renderer (renderer, span_alloc, span_conv);
824
779
agg::render_scanlines (rasterizer, scanline, nn_renderer);
825
780
} else {
826
- typedef typename type_mapping_t ::template span_gen_nn_type<image_accessor_t , arbitrary_interpolator_t >::type span_gen_t ;
781
+ typedef typename type_mapping_t ::template span_gen_nn_type<image_accessor_t , arbitrary_interpolator_t > span_gen_t ;
827
782
typedef agg::span_converter<span_gen_t , span_conv_alpha_t > span_conv_t ;
828
783
typedef agg::renderer_scanline_aa<renderer_t , span_alloc_t , span_conv_t > nn_renderer_t ;
829
784
@@ -840,7 +795,7 @@ void resample(
840
795
get_filter (params, filter);
841
796
842
797
if (params.is_affine && params.resample ) {
843
- typedef typename type_mapping_t ::template span_gen_affine_type<image_accessor_t >::type span_gen_t ;
798
+ typedef typename type_mapping_t ::template span_gen_affine_type<image_accessor_t > span_gen_t ;
844
799
typedef agg::span_converter<span_gen_t , span_conv_alpha_t > span_conv_t ;
845
800
typedef agg::renderer_scanline_aa<renderer_t , span_alloc_t , span_conv_t > int_renderer_t ;
846
801
@@ -850,7 +805,7 @@ void resample(
850
805
int_renderer_t int_renderer (renderer, span_alloc, span_conv);
851
806
agg::render_scanlines (rasterizer, scanline, int_renderer);
852
807
} else {
853
- typedef typename type_mapping_t ::template span_gen_filter_type<image_accessor_t , arbitrary_interpolator_t >::type span_gen_t ;
808
+ typedef typename type_mapping_t ::template span_gen_filter_type<image_accessor_t , arbitrary_interpolator_t > span_gen_t ;
854
809
typedef agg::span_converter<span_gen_t , span_conv_alpha_t > span_conv_t ;
855
810
typedef agg::renderer_scanline_aa<renderer_t , span_alloc_t , span_conv_t > int_renderer_t ;
856
811
0 commit comments