gnash-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnash-commit] /srv/bzr/gnash/trunk r12357: Use the correct span generat


From: Benjamin Wolsey
Subject: [Gnash-commit] /srv/bzr/gnash/trunk r12357: Use the correct span generator.
Date: Thu, 05 Aug 2010 20:59:01 +0200
User-agent: Bazaar (2.0.3)

------------------------------------------------------------
revno: 12357 [merge]
committer: Benjamin Wolsey <address@hidden>
branch nick: trunk
timestamp: Thu 2010-08-05 20:59:01 +0200
message:
  Use the correct span generator.
modified:
  librender/Renderer_agg_style.h
=== modified file 'librender/Renderer_agg_style.h'
--- a/librender/Renderer_agg_style.h    2010-08-05 15:28:36 +0000
+++ b/librender/Renderer_agg_style.h    2010-08-05 18:48:32 +0000
@@ -115,10 +115,45 @@
 template<typename P, typename W>
 struct FilterType
 {
-    typedef P PixelFormat;
+    typedef typename P::PixelFormat PixelFormat;
     typedef typename W::template Type<PixelFormat>::type SourceType;
     typedef agg::span_allocator<PixelFormat> Allocator;
-    typedef agg::span_interpolator_linear<agg::trans_affine> Interpolator;
+    typedef agg::span_interpolator_linear<agg::trans_affine>
+        Interpolator;
+};
+
+/// Class with typedefs for RGBA operations.
+struct RGBA 
+{
+    typedef agg::pixfmt_rgba32_pre PixelFormat;
+
+    template<typename SourceType, typename Interpolator>
+    struct Simple {
+        typedef agg::span_image_filter_rgba_nn<SourceType, Interpolator> type;
+    };
+
+    template<typename SourceType, typename Interpolator>
+    struct AntiAlias {
+        typedef agg::span_image_filter_rgba_bilinear<SourceType, Interpolator>
+            type;
+    };
+};
+
+/// Class with typedefs for RGB operations.
+struct RGB 
+{
+    typedef agg::pixfmt_rgb24_pre PixelFormat;
+
+    template<typename SourceType, typename Interpolator>
+    struct Simple {
+        typedef agg::span_image_filter_rgb_nn<SourceType, Interpolator> type;
+    };
+
+    template<typename SourceType, typename Interpolator>
+    struct AntiAlias {
+        typedef agg::span_image_filter_rgb_bilinear<SourceType, Interpolator>
+            type;
+    };
 };
 
 /// Nearest Neighbour filter type for quick, lower quality scaling.
@@ -126,9 +161,9 @@
 struct NN : public FilterType<P, W>
 {
     typedef FilterType<P, W> BaseType;
-    typedef agg::span_image_filter_rgb_nn<
+    typedef typename P::template Simple<
                 typename BaseType::SourceType,
-                typename BaseType::Interpolator> Generator;
+                typename BaseType::Interpolator>::type Generator;
 };
 
 /// Bilinear filter type for higher quality scaling.
@@ -136,9 +171,9 @@
 struct AA : public FilterType<P, W>
 {
     typedef FilterType<P, W> BaseType;
-    typedef agg::span_image_filter_rgb_bilinear<
+    typedef typename P::template AntiAlias<
                 typename BaseType::SourceType,
-                typename BaseType::Interpolator> Generator;
+                typename BaseType::Interpolator>::type Generator;
 };
 
 /// A reflecting adaptor for Gradients.
@@ -636,9 +671,6 @@
 storeBitmap(StyleHandler& st, const agg_bitmap_info* bi,
         const SWFMatrix& mat, const cxform& cx, bool smooth)
 {
-    // Local typedefs for the handled formats.
-    typedef agg::pixfmt_rgba32_pre RGBA;
-    typedef agg::pixfmt_rgb24_pre RGB;
 
     if (bi->get_bpp() == 24) {
         storeBitmap<FillMode, RGB>(st, bi, mat, cx, smooth);


reply via email to

[Prev in Thread] Current Thread [Next in Thread]