From d12256b0f8e826080956b9b156ffb901b18368e7 Mon Sep 17 00:00:00 2001
From: sam <sam@92316355-f0b4-4df1-b90c-862c8a59935f>
Date: Sat, 23 Aug 2008 13:07:47 +0000
Subject: [PATCH]   * stock.c: add new error diffusion kernels: Fan, Shiau-Fan,
 Stucki, Burkes,     Sierra, two-row Sierra, Filter Lite.

git-svn-id: file:///srv/caca.zoy.org/var/lib/svn/libpipi/trunk@2760 92316355-f0b4-4df1-b90c-862c8a59935f
---
 pipi/stock.c | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 75 insertions(+), 1 deletion(-)

diff --git a/pipi/stock.c b/pipi/stock.c
index 3960cda..947c8e3 100644
--- a/pipi/stock.c
+++ b/pipi/stock.c
@@ -84,7 +84,7 @@ pipi_image_t *pipi_load_stock(char const *name)
             static float const myker[] =
             {
                    0.,     1.,  7./16,
-                3./16,  5./16,  1./16
+                3./16,  5./16,  1./16,
             };
             ker = myker; w = 3; h = 2;
         }
@@ -108,6 +108,80 @@ pipi_image_t *pipi_load_stock(char const *name)
             };
             ker = myker; w = 4; h = 3;
         }
+        else if(!strcmp(name + 6, "fan"))
+        {
+            static float const myker[] =
+            {
+                   0.,     0.,     1.,  7./16,
+                1./16,  3./16,  5./16,     0.,
+            };
+            ker = myker; w = 4; h = 2;
+        }
+        else if(!strcmp(name + 6, "shiaufan"))
+        {
+            static float const myker[] =
+            {
+                  0.,    0.,    1.,  1./2,
+                1./8,  1./8,  1./4,    0.,
+            };
+            ker = myker; w = 4; h = 2;
+        }
+        else if(!strcmp(name + 6, "shiaufan2"))
+        {
+            static float const myker[] =
+            {
+                   0.,     0.,    0.,    1.,  1./2,
+                1./16,  1./16,  1./8,  1./4,    0.,
+            };
+            ker = myker; w = 5; h = 2;
+        }
+        else if(!strcmp(name + 6, "stucki"))
+        {
+            static float const myker[] =
+            {
+                   0.,     0.,     1.,  8./42,  4./42,
+                2./42,  4./42,  8./42,  4./42,  2./42,
+                1./42,  2./42,  4./42,  2./42,  1./42,
+            };
+            ker = myker; w = 5; h = 3;
+        }
+        else if(!strcmp(name + 6, "burkes"))
+        {
+            static float const myker[] =
+            {
+                   0.,     0.,     1.,  4./16,  2./16,
+                1./16,  2./16,  4./16,  2./16,  1./16,
+            };
+            ker = myker; w = 5; h = 2;
+        }
+        else if(!strcmp(name + 6, "sierra"))
+        {
+            static float const myker[] =
+            {
+                   0.,     0.,     1.,  5./32,  3./32,
+                2./32,  4./32,  5./32,  4./32,  2./32,
+                   0.,  2./32,  3./32,  2./32,     0.,
+            };
+            ker = myker; w = 5; h = 3;
+        }
+        else if(!strcmp(name + 6, "sierra2"))
+        {
+            static float const myker[] =
+            {
+                   0.,     0.,     1.,  4./16,  3./16,
+                1./16,  2./16,  3./16,  2./16,  1./16,
+            };
+            ker = myker; w = 5; h = 2;
+        }
+        else if(!strcmp(name + 6, "lite"))
+        {
+            static float const myker[] =
+            {
+                  0.,    1.,  1./2,
+                1./4,  1./4,    0.,
+            };
+            ker = myker; w = 3; h = 2;
+        }
         else
             return NULL;