[PATCH 3/3] test: Exercise image scaling quality when downscaling

"Bryce W. Harrington" <[email protected]>
Newsgroups gmane.comp.lib.cairo
Message-ID <5A5FB412583EA944A1D0228D52A9C57263B991@sisaex02sj>
This adds testcases for the various cairo filter options, each of which
match to corresponding pixman filters.

The 96-pixel reference images are simply copies of the original
quad-color.png file.  It is assumed that 1:1 downscaling operations
should produce no visible change to the original image.

The 24-pixel reference images were produced from quad-color.png using
Gimp's Scale Image command with Interpolation set to None.  It is
assumed that all filters should handle a 1:4 scaling cleanly with no
antialiased blurring.

The 95-pixel reference images assume differing types of antialiasing
based on the quality level.  These were produced with Gimp's Scale Image
command at a resolution of 72 pixels/inch, with different Interpolation
levels for each of Cairo's filter quality levels, as follows:

 Cairo Filter              Gimp Interpolation
 ------------	 	   ------------------
 CAIRO_FILTER_NEAREST      Linear
 CAIRO_FILTER_FAST         Linear
 CAIRO_FILTER_BILINEAR     Cubic
 CAIRO_FILTER_GOOD         Cubic
 CAIRO_FILTER_BEST         Lanczos3

These assumptions may need adjustment as development on this code
progresses.

Signed-off-by: Bryce Harrington <[email protected]>
---
 test/pixman-downscale.c                            |  140 ++++++++++++++++++--
 test/reference/pixman-downscale-24.ref.png         |  Bin 191 -> 0 bytes
 test/reference/pixman-downscale-95.ref.png         |  Bin 285 -> 0 bytes
 test/reference/pixman-downscale-96.ref.png         |  Bin 301 -> 0 bytes
 test/reference/pixman-downscale-best-24.ref.png    |  Bin 0 -> 191 bytes
 test/reference/pixman-downscale-best-95.ref.png    |  Bin 0 -> 1580 bytes
 test/reference/pixman-downscale-best-96.ref.png    |  Bin 0 -> 301 bytes
 .../reference/pixman-downscale-bilinear-24.ref.png |  Bin 0 -> 191 bytes
 .../reference/pixman-downscale-bilinear-95.ref.png |  Bin 0 -> 640 bytes
 .../reference/pixman-downscale-bilinear-96.ref.png |  Bin 0 -> 301 bytes
 test/reference/pixman-downscale-fast-24.ref.png    |  Bin 0 -> 191 bytes
 test/reference/pixman-downscale-fast-95.ref.png    |  Bin 0 -> 453 bytes
 test/reference/pixman-downscale-fast-96.ref.png    |  Bin 0 -> 301 bytes
 test/reference/pixman-downscale-good-24.ref.png    |  Bin 0 -> 191 bytes
 test/reference/pixman-downscale-good-95.ref.png    |  Bin 0 -> 640 bytes
 test/reference/pixman-downscale-good-96.ref.png    |  Bin 0 -> 301 bytes
 test/reference/pixman-downscale-nearest-24.ref.png |  Bin 0 -> 191 bytes
 test/reference/pixman-downscale-nearest-95.ref.png |  Bin 0 -> 453 bytes
 test/reference/pixman-downscale-nearest-96.ref.png |  Bin 0 -> 301 bytes
 19 files changed, 129 insertions(+), 11 deletions(-)
 delete mode 100644 test/reference/pixman-downscale-24.ref.png
 delete mode 100644 test/reference/pixman-downscale-95.ref.png
 delete mode 100644 test/reference/pixman-downscale-96.ref.png
 create mode 100644 test/reference/pixman-downscale-best-24.ref.png
 create mode 100644 test/reference/pixman-downscale-best-95.ref.png
 create mode 100644 test/reference/pixman-downscale-best-96.ref.png
 create mode 100644 test/reference/pixman-downscale-bilinear-24.ref.png
 create mode 100644 test/reference/pixman-downscale-bilinear-95.ref.png
 create mode 100644 test/reference/pixman-downscale-bilinear-96.ref.png
 create mode 100644 test/reference/pixman-downscale-fast-24.ref.png
 create mode 100644 test/reference/pixman-downscale-fast-95.ref.png
 create mode 100644 test/reference/pixman-downscale-fast-96.ref.png
 create mode 100644 test/reference/pixman-downscale-good-24.ref.png
 create mode 100644 test/reference/pixman-downscale-good-95.ref.png
 create mode 100644 test/reference/pixman-downscale-good-96.ref.png
 create mode 100644 test/reference/pixman-downscale-nearest-24.ref.png
 create mode 100644 test/reference/pixman-downscale-nearest-95.ref.png
 create mode 100644 test/reference/pixman-downscale-nearest-96.ref.png

diff --git a/test/pixman-downscale.c b/test/pixman-downscale.c
index 1f8a9b4..ac9d016 100644
--- a/test/pixman-downscale.c
+++ b/test/pixman-downscale.c
@@ -36,7 +36,7 @@ static const char *png_filename = "quad-color.png";
 
 /* Draw an image scaled down, with antialiasing disabled */
 static cairo_test_status_t
-draw (cairo_t *cr, int width, int height)
+draw (cairo_t *cr, int width, int height, cairo_filter_t filter)
 {
     const cairo_test_context_t *ctx = cairo_test_get_context (cr);
     cairo_surface_t *image;
@@ -49,7 +49,7 @@ draw (cairo_t *cr, int width, int height)
     scale = fmin(x_scale, y_scale);
 
     cairo_save (cr);
-    cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_FAST);
+    cairo_pattern_set_filter (cairo_get_source (cr), filter);
     cairo_scale (cr, scale, scale);
     cairo_set_source_surface (cr, image, 0, 0);
     cairo_paint (cr);
@@ -59,23 +59,141 @@ draw (cairo_t *cr, int width, int height)
     return CAIRO_TEST_SUCCESS;
 }
 
-CAIRO_TEST (pixman_downscale_96,
-	    "Tests scaling to equivalent size",
+static cairo_test_status_t
+draw_fast (cairo_t *cr, int width, int height)
+{
+  return draw (cr, width, height, CAIRO_FILTER_FAST);
+}
+
+static cairo_test_status_t
+draw_good (cairo_t *cr, int width, int height)
+{
+  return draw (cr, width, height, CAIRO_FILTER_GOOD);
+}
+
+static cairo_test_status_t
+draw_best (cairo_t *cr, int width, int height)
+{
+  return draw (cr, width, height, CAIRO_FILTER_BEST);
+}
+
+static cairo_test_status_t
+draw_nearest (cairo_t *cr, int width, int height)
+{
+  return draw (cr, width, height, CAIRO_FILTER_NEAREST);
+}
+
+static cairo_test_status_t
+draw_bilinear (cairo_t *cr, int width, int height)
+{
+  return draw (cr, width, height, CAIRO_FILTER_BILINEAR);
+}
+
+CAIRO_TEST (pixman_downscale_fast_96,
+	    "Tests scaling to equivalent size using the fast filter",
+	    "image, transform, raster", /* keywords */
+	    NULL, /* requirements */
+	    96, 96,
+	    NULL, draw_fast)
+
+CAIRO_TEST (pixman_downscale_fast_95,
+	    "Tests downscaling by a single pixel using the fast filter",
+	    "image, transform, raster", /* keywords */
+	    NULL, /* requirements */
+	    95, 95,
+	    NULL, draw_fast)
+
+CAIRO_TEST (pixman_downscale_fast_24,
+	    "Tests downscaling by an even multiple using the fast filter",
+	    "image, transform, raster", /* keywords */
+	    NULL, /* requirements */
+	    24, 24,
+	    NULL, draw_fast)
+
+
+CAIRO_TEST (pixman_downscale_good_96,
+	    "Tests scaling to equivalent size using the good filter",
+	    "image, transform, raster", /* keywords */
+	    NULL, /* requirements */
+	    96, 96,
+	    NULL, draw_good)
+
+CAIRO_TEST (pixman_downscale_good_95,
+	    "Tests downscaling by a single pixel using the good filter",
+	    "image, transform, raster", /* keywords */
+	    NULL, /* requirements */
+	    95, 95,
+	    NULL, draw_good)
+
+CAIRO_TEST (pixman_downscale_good_24,
+	    "Tests downscaling by an even multiple using the good filter",
+	    "image, transform, raster", /* keywords */
+	    NULL, /* requirements */
+	    24, 24,
+	    NULL, draw_good)
+
+
+CAIRO_TEST (pixman_downscale_best_96,
+	    "Tests scaling to equivalent size using the best filter",
+	    "image, transform, raster", /* keywords */
+	    NULL, /* requirements */
+	    96, 96,
+	    NULL, draw_best)
+
+CAIRO_TEST (pixman_downscale_best_95,
+	    "Tests downscaling by a single pixel using the best filter",
+	    "image, transform, raster", /* keywords */
+	    NULL, /* requirements */
+	    95, 95,
+	    NULL, draw_best)
+
+CAIRO_TEST (pixman_downscale_best_24,
+	    "Tests downscaling by an even multiple using the best filter",
+	    "image, transform, raster", /* keywords */
+	    NULL, /* requirements */
+	    24, 24,
+	    NULL, draw_best)
+
+
+CAIRO_TEST (pixman_downscale_nearest_96,
+	    "Tests scaling to equivalent size using the nearest filter",
+	    "image, transform, raster", /* keywords */
+	    NULL, /* requirements */
+	    96, 96,
+	    NULL, draw_nearest)
+
+CAIRO_TEST (pixman_downscale_nearest_95,
+	    "Tests downscaling by a single pixel using the nearest filter",
+	    "image, transform, raster", /* keywords */
+	    NULL, /* requirements */
+	    95, 95,
+	    NULL, draw_nearest)
+
+CAIRO_TEST (pixman_downscale_nearest_24,
+	    "Tests downscaling by an even multiple using the nearest filter",
+	    "image, transform, raster", /* keywords */
+	    NULL, /* requirements */
+	    24, 24,
+	    NULL, draw_nearest)
+
+
+CAIRO_TEST (pixman_downscale_bilinear_96,
+	    "Tests scaling to equivalent size using the bilinear filter",
 	    "image, transform, raster", /* keywords */
 	    NULL, /* requirements */
 	    96, 96,
-	    NULL, draw)
+	    NULL, draw_bilinear)
 
-CAIRO_TEST (pixman_downscale_95,
-	    "Tests downscaling by a single pixel",
+CAIRO_TEST (pixman_downscale_bilinear_95,
+	    "Tests downscaling by a single pixel using the bilinear filter",
 	    "image, transform, raster", /* keywords */
 	    NULL, /* requirements */
 	    95, 95,
-	    NULL, draw)
+	    NULL, draw_bilinear)
 
-CAIRO_TEST (pixman_downscale_24,
-	    "Tests downscaling by an even multiple",
+CAIRO_TEST (pixman_downscale_bilinear_24,
+	    "Tests downscaling by an even multiple using the bilinear filter",
 	    "image, transform, raster", /* keywords */
 	    NULL, /* requirements */
 	    24, 24,
-	    NULL, draw)
+	    NULL, draw_bilinear)
diff --git a/test/reference/pixman-downscale-24.ref.png b/test/reference/pixman-downscale-24.ref.png
deleted file mode 100644
index df0f9c0d84f3f48d00fdb0f3f08ae587754a269d..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 191
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1SIoCSFHz9jKx9jP7LeL$-D$|I14-?iy0WW
zg+Z8+Vb&awa`qBWUsv|K>|BC!7IA*pm4QNmo-U3d7N_3^pXOpv;3&RWA0EGNU1}T4
zrIUAMg4_8gwy>{ZJlV~aSJYV)vi6&EaICP+3<LMb7lqjZ5!yx;9>LS69R3%PQJ;M;
gq~!8p8PysezC2Ei17|)i02<EV>FVdQ&MBb@0ICT&&j0`b

diff --git a/test/reference/pixman-downscale-95.ref.png b/test/reference/pixman-downscale-95.ref.png
deleted file mode 100644
index 0a5917665f68cb6be8c3e80491e0b918111ac9a1..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 285
zcmeAS@N?(olHy`uVBq!ia0vp^@gU5>1SA>tdKQ7G;vjb?hIQv;UIICs1s;*b3=G`D
zAk4@xYmNj^kiEpy*OmP)JC~q=p!jdMWT4P`PZ!6Kid%1Q2XZwi2sk*J?<z0*^p>TL
zLwe?!-@PvEtqZbzC#iS>QN3PT{)scw(?wpd`L@CF#f62=?R;~2tzOFoznj%qbx`8w
zTUqsPK3S`h7ad>{q@WL?OxCK}<gcAJoBY8qn>0mxMBYlpZ7iRo15^rB<PIj=L3&)k
vWLWmU@6T$g-FBX<dJ8fRqz2-IU%S`?lQ`R|?%m!FbUK5ltDnm{r-UW|k@jd-

diff --git a/test/reference/pixman-downscale-96.ref.png b/test/reference/pixman-downscale-96.ref.png
deleted file mode 100644
index 0d68a82cc27532aa78fc12af7646f6821a730a2b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 301
zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1SE5RJ;(=AY)RhkE)4%caKYZ?lYt_SJY5_^
zD(1Ysy^*iUK*S+1>rej2(}h=B@0d(;Js;WVUVNE%S1wQ;!=K59zYi43gs*v=>!Y8U
z_vgvq?cQM@omse;SR0!h92Y1A>{u^la;*65g4(k)k}t|wYjB7lNebZM8vKpTne!)c
zbN%i~M<*ZqX0g}kFdxELd^!~Z1T@ab2krlH<ByqM{lP1D%YXuKdqK|r@Q}6kF=t0)
R<@7`l*VEO{Wt~$(698O(XEy)<

diff --git a/test/reference/pixman-downscale-best-24.ref.png b/test/reference/pixman-downscale-best-24.ref.png
new file mode 100644
index 0000000000000000000000000000000000000000..df0f9c0d84f3f48d00fdb0f3f08ae587754a269d
GIT binary patch
literal 191
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1SIoCSFHz9jKx9jP7LeL$-D$|I14-?iy0WW
zg+Z8+Vb&awa`qBWUsv|K>|BC!7IA*pm4QNmo-U3d7N_3^pXOpv;3&RWA0EGNU1}T4
zrIUAMg4_8gwy>{ZJlV~aSJYV)vi6&EaICP+3<LMb7lqjZ5!yx;9>LS69R3%PQJ;M;
gq~!8p8PysezC2Ei17|)i02<EV>FVdQ&MBb@0ICT&&j0`b

literal 0
HcmV?d00001

diff --git a/test/reference/pixman-downscale-best-95.ref.png b/test/reference/pixman-downscale-best-95.ref.png
new file mode 100644
index 0000000000000000000000000000000000000000..b3821e8dd706f56b1ce599ffb1ed3cb2d02c4b72
GIT binary patch
literal 1580
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

literal 0
HcmV?d00001

diff --git a/test/reference/pixman-downscale-best-96.ref.png b/test/reference/pixman-downscale-best-96.ref.png
new file mode 100644
index 0000000000000000000000000000000000000000..0d68a82cc27532aa78fc12af7646f6821a730a2b
GIT binary patch
literal 301
zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1SE5RJ;(=AY)RhkE)4%caKYZ?lYt_SJY5_^
zD(1Ysy^*iUK*S+1>rej2(}h=B@0d(;Js;WVUVNE%S1wQ;!=K59zYi43gs*v=>!Y8U
z_vgvq?cQM@omse;SR0!h92Y1A>{u^la;*65g4(k)k}t|wYjB7lNebZM8vKpTne!)c
zbN%i~M<*ZqX0g}kFdxELd^!~Z1T@ab2krlH<ByqM{lP1D%YXuKdqK|r@Q}6kF=t0)
R<@7`l*VEO{Wt~$(698O(XEy)<

literal 0
HcmV?d00001

diff --git a/test/reference/pixman-downscale-bilinear-24.ref.png b/test/reference/pixman-downscale-bilinear-24.ref.png
new file mode 100644
index 0000000000000000000000000000000000000000..df0f9c0d84f3f48d00fdb0f3f08ae587754a269d
GIT binary patch
literal 191
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1SIoCSFHz9jKx9jP7LeL$-D$|I14-?iy0WW
zg+Z8+Vb&awa`qBWUsv|K>|BC!7IA*pm4QNmo-U3d7N_3^pXOpv;3&RWA0EGNU1}T4
zrIUAMg4_8gwy>{ZJlV~aSJYV)vi6&EaICP+3<LMb7lqjZ5!yx;9>LS69R3%PQJ;M;
gq~!8p8PysezC2Ei17|)i02<EV>FVdQ&MBb@0ICT&&j0`b

literal 0
HcmV?d00001

diff --git a/test/reference/pixman-downscale-bilinear-95.ref.png b/test/reference/pixman-downscale-bilinear-95.ref.png
new file mode 100644
index 0000000000000000000000000000000000000000..20d85ed799225377cd589e9a0c1f9694dd683634
GIT binary patch
literal 640
zcmeAS@N?(olHy`uVBq!ia0vp^@gU5>1SA>tdKQ7G;vjb?hIQv;UIICs1s;*b3=G`D
zAk4@xYmNj^kiEpy*OmP)J2#_<)Ya%+5ey7WLY^*;Ar-gY-r1OS+d<~|$Mx@$l)j#E
zobJcA-=U1%Xv_Kw?I#6JNEBRBe=&jGtIXbMbB3Ud#7@y^Rw7)PmnS`b*R^23{!F3I
z=kFfxGMJbe;H9~AN)U*cRULX|@!GAcuV%>{SIRbQTc_OO6m9x}weP9U_19lRw!AHC
zDvEzyaiPOY*3{lwrmIiB`_-R(Pj{<JGgqE7@%<T>5VBJ(HS)4&pKR#wzuWJw+iG_9
zR;AN{W^butlQ~;=B+6MG$h$soetnZ#uFu({%H|iA_hwe?Nd9ahEt}12@<A>4jAl1$
z^^aM5=K1KKE(x2~SF%J|_N52Vf{A^TP&j@*>Jz8wXIt4^DVViwhT8RYG0Tz_{gyA@
z{q);`&E;MpA&mtGA2+$)TBf$*LG7E}U3HlWJJKJ2y!_d_&b0Knn3LvQhaHbzeScrQ
zqp`Lv{V#Kk&z=QOU##EBqZ9w@;qxY|ddo?_d8RL{n__jcprFP6MbE^=Q;-}}g2su9
zpZ9;)?Br$HfrlGj8+v{}XXcxK#zJ}Sx1QbXZnMpf9{k((+B@cw?#p96xxe$wtc05%
zXHHJGyeB-ZMKyAo>#Mm<mglTP_t}5xF%NteG40$bpodG+)&)y#UYEZ0{t4mTt)YM1
wC+?|xI#+#<?oaMhbxi%>7y}Vk_P@7|(Rt~zG1=G}m|z$@UHx3vIVCg!0EXElnE(I)

literal 0
HcmV?d00001

diff --git a/test/reference/pixman-downscale-bilinear-96.ref.png b/test/reference/pixman-downscale-bilinear-96.ref.png
new file mode 100644
index 0000000000000000000000000000000000000000..0d68a82cc27532aa78fc12af7646f6821a730a2b
GIT binary patch
literal 301
zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1SE5RJ;(=AY)RhkE)4%caKYZ?lYt_SJY5_^
zD(1Ysy^*iUK*S+1>rej2(}h=B@0d(;Js;WVUVNE%S1wQ;!=K59zYi43gs*v=>!Y8U
z_vgvq?cQM@omse;SR0!h92Y1A>{u^la;*65g4(k)k}t|wYjB7lNebZM8vKpTne!)c
zbN%i~M<*ZqX0g}kFdxELd^!~Z1T@ab2krlH<ByqM{lP1D%YXuKdqK|r@Q}6kF=t0)
R<@7`l*VEO{Wt~$(698O(XEy)<

literal 0
HcmV?d00001

diff --git a/test/reference/pixman-downscale-fast-24.ref.png b/test/reference/pixman-downscale-fast-24.ref.png
new file mode 100644
index 0000000000000000000000000000000000000000..df0f9c0d84f3f48d00fdb0f3f08ae587754a269d
GIT binary patch
literal 191
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1SIoCSFHz9jKx9jP7LeL$-D$|I14-?iy0WW
zg+Z8+Vb&awa`qBWUsv|K>|BC!7IA*pm4QNmo-U3d7N_3^pXOpv;3&RWA0EGNU1}T4
zrIUAMg4_8gwy>{ZJlV~aSJYV)vi6&EaICP+3<LMb7lqjZ5!yx;9>LS69R3%PQJ;M;
gq~!8p8PysezC2Ei17|)i02<EV>FVdQ&MBb@0ICT&&j0`b

literal 0
HcmV?d00001

diff --git a/test/reference/pixman-downscale-fast-95.ref.png b/test/reference/pixman-downscale-fast-95.ref.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba57c7f9a8b7ab1996aef6dfe9488a0b8925e6c0
GIT binary patch
literal 453
zcmeAS@N?(olHy`uVBq!ia0vp^@gU5>1SA>tdKQ7G;vjb?hIQv;UIICs1s;*b3=G`D
zAk4@xYmNj^kiEpy*OmP)J2#`S`Te5>uYh{OJzX3_DsH{KW0-fyK%(v8deKvJ7EZn4
zaB2!?UxHtg1!qCWxxnjwcNqEv_%0~UR;@n4p<__ea`aWc$dd1(!4CG%CeBekBqRs{
z7cW$M|0)R-2@Oq+@#E++y#FKq<)r+o*z4EVti2wtd4ILvpS|yM<V!9%vdfmlEtz<7
z%0Bz8Yt1E>bRL|sGrUr+$M5#9qmOPUOt8*MHAuUEqV$c<JL?w<n)$3=2v|XAFvp<*
zD6*jWT=$f3N7OWOw(Q)0Z*{qql<vvD^+)_RH=lBU{eM!D-rN;Cu73OX%SEk!;lB)?
z5-DA4U-`YCCoegC&IxEe*bNsP+o3c_L=h<XT=M20=9A~IzR_iSo0c_=?e)jUj4$VS
zm!3<yurS0tHNEgY$n6|+uUtBJKTz?hO`ZEg=a0tE#h=(Vws%0li=THH9$(u!xoQ<l
RIxy53JYD@<);T3K0RSAS!)yQm

literal 0
HcmV?d00001

diff --git a/test/reference/pixman-downscale-fast-96.ref.png b/test/reference/pixman-downscale-fast-96.ref.png
new file mode 100644
index 0000000000000000000000000000000000000000..0d68a82cc27532aa78fc12af7646f6821a730a2b
GIT binary patch
literal 301
zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1SE5RJ;(=AY)RhkE)4%caKYZ?lYt_SJY5_^
zD(1Ysy^*iUK*S+1>rej2(}h=B@0d(;Js;WVUVNE%S1wQ;!=K59zYi43gs*v=>!Y8U
z_vgvq?cQM@omse;SR0!h92Y1A>{u^la;*65g4(k)k}t|wYjB7lNebZM8vKpTne!)c
zbN%i~M<*ZqX0g}kFdxELd^!~Z1T@ab2krlH<ByqM{lP1D%YXuKdqK|r@Q}6kF=t0)
R<@7`l*VEO{Wt~$(698O(XEy)<

literal 0
HcmV?d00001

diff --git a/test/reference/pixman-downscale-good-24.ref.png b/test/reference/pixman-downscale-good-24.ref.png
new file mode 100644
index 0000000000000000000000000000000000000000..df0f9c0d84f3f48d00fdb0f3f08ae587754a269d
GIT binary patch
literal 191
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1SIoCSFHz9jKx9jP7LeL$-D$|I14-?iy0WW
zg+Z8+Vb&awa`qBWUsv|K>|BC!7IA*pm4QNmo-U3d7N_3^pXOpv;3&RWA0EGNU1}T4
zrIUAMg4_8gwy>{ZJlV~aSJYV)vi6&EaICP+3<LMb7lqjZ5!yx;9>LS69R3%PQJ;M;
gq~!8p8PysezC2Ei17|)i02<EV>FVdQ&MBb@0ICT&&j0`b

literal 0
HcmV?d00001

diff --git a/test/reference/pixman-downscale-good-95.ref.png b/test/reference/pixman-downscale-good-95.ref.png
new file mode 100644
index 0000000000000000000000000000000000000000..20d85ed799225377cd589e9a0c1f9694dd683634
GIT binary patch
literal 640
zcmeAS@N?(olHy`uVBq!ia0vp^@gU5>1SA>tdKQ7G;vjb?hIQv;UIICs1s;*b3=G`D
zAk4@xYmNj^kiEpy*OmP)J2#_<)Ya%+5ey7WLY^*;Ar-gY-r1OS+d<~|$Mx@$l)j#E
zobJcA-=U1%Xv_Kw?I#6JNEBRBe=&jGtIXbMbB3Ud#7@y^Rw7)PmnS`b*R^23{!F3I
z=kFfxGMJbe;H9~AN)U*cRULX|@!GAcuV%>{SIRbQTc_OO6m9x}weP9U_19lRw!AHC
zDvEzyaiPOY*3{lwrmIiB`_-R(Pj{<JGgqE7@%<T>5VBJ(HS)4&pKR#wzuWJw+iG_9
zR;AN{W^butlQ~;=B+6MG$h$soetnZ#uFu({%H|iA_hwe?Nd9ahEt}12@<A>4jAl1$
z^^aM5=K1KKE(x2~SF%J|_N52Vf{A^TP&j@*>Jz8wXIt4^DVViwhT8RYG0Tz_{gyA@
z{q);`&E;MpA&mtGA2+$)TBf$*LG7E}U3HlWJJKJ2y!_d_&b0Knn3LvQhaHbzeScrQ
zqp`Lv{V#Kk&z=QOU##EBqZ9w@;qxY|ddo?_d8RL{n__jcprFP6MbE^=Q;-}}g2su9
zpZ9;)?Br$HfrlGj8+v{}XXcxK#zJ}Sx1QbXZnMpf9{k((+B@cw?#p96xxe$wtc05%
zXHHJGyeB-ZMKyAo>#Mm<mglTP_t}5xF%NteG40$bpodG+)&)y#UYEZ0{t4mTt)YM1
wC+?|xI#+#<?oaMhbxi%>7y}Vk_P@7|(Rt~zG1=G}m|z$@UHx3vIVCg!0EXElnE(I)

literal 0
HcmV?d00001

diff --git a/test/reference/pixman-downscale-good-96.ref.png b/test/reference/pixman-downscale-good-96.ref.png
new file mode 100644
index 0000000000000000000000000000000000000000..0d68a82cc27532aa78fc12af7646f6821a730a2b
GIT binary patch
literal 301
zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1SE5RJ;(=AY)RhkE)4%caKYZ?lYt_SJY5_^
zD(1Ysy^*iUK*S+1>rej2(}h=B@0d(;Js;WVUVNE%S1wQ;!=K59zYi43gs*v=>!Y8U
z_vgvq?cQM@omse;SR0!h92Y1A>{u^la;*65g4(k)k}t|wYjB7lNebZM8vKpTne!)c
zbN%i~M<*ZqX0g}kFdxELd^!~Z1T@ab2krlH<ByqM{lP1D%YXuKdqK|r@Q}6kF=t0)
R<@7`l*VEO{Wt~$(698O(XEy)<

literal 0
HcmV?d00001

diff --git a/test/reference/pixman-downscale-nearest-24.ref.png b/test/reference/pixman-downscale-nearest-24.ref.png
new file mode 100644
index 0000000000000000000000000000000000000000..df0f9c0d84f3f48d00fdb0f3f08ae587754a269d
GIT binary patch
literal 191
zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1SIoCSFHz9jKx9jP7LeL$-D$|I14-?iy0WW
zg+Z8+Vb&awa`qBWUsv|K>|BC!7IA*pm4QNmo-U3d7N_3^pXOpv;3&RWA0EGNU1}T4
zrIUAMg4_8gwy>{ZJlV~aSJYV)vi6&EaICP+3<LMb7lqjZ5!yx;9>LS69R3%PQJ;M;
gq~!8p8PysezC2Ei17|)i02<EV>FVdQ&MBb@0ICT&&j0`b

literal 0
HcmV?d00001

diff --git a/test/reference/pixman-downscale-nearest-95.ref.png b/test/reference/pixman-downscale-nearest-95.ref.png
new file mode 100644
index 0000000000000000000000000000000000000000..ba57c7f9a8b7ab1996aef6dfe9488a0b8925e6c0
GIT binary patch
literal 453
zcmeAS@N?(olHy`uVBq!ia0vp^@gU5>1SA>tdKQ7G;vjb?hIQv;UIICs1s;*b3=G`D
zAk4@xYmNj^kiEpy*OmP)J2#`S`Te5>uYh{OJzX3_DsH{KW0-fyK%(v8deKvJ7EZn4
zaB2!?UxHtg1!qCWxxnjwcNqEv_%0~UR;@n4p<__ea`aWc$dd1(!4CG%CeBekBqRs{
z7cW$M|0)R-2@Oq+@#E++y#FKq<)r+o*z4EVti2wtd4ILvpS|yM<V!9%vdfmlEtz<7
z%0Bz8Yt1E>bRL|sGrUr+$M5#9qmOPUOt8*MHAuUEqV$c<JL?w<n)$3=2v|XAFvp<*
zD6*jWT=$f3N7OWOw(Q)0Z*{qql<vvD^+)_RH=lBU{eM!D-rN;Cu73OX%SEk!;lB)?
z5-DA4U-`YCCoegC&IxEe*bNsP+o3c_L=h<XT=M20=9A~IzR_iSo0c_=?e)jUj4$VS
zm!3<yurS0tHNEgY$n6|+uUtBJKTz?hO`ZEg=a0tE#h=(Vws%0li=THH9$(u!xoQ<l
RIxy53JYD@<);T3K0RSAS!)yQm

literal 0
HcmV?d00001

diff --git a/test/reference/pixman-downscale-nearest-96.ref.png b/test/reference/pixman-downscale-nearest-96.ref.png
new file mode 100644
index 0000000000000000000000000000000000000000..0d68a82cc27532aa78fc12af7646f6821a730a2b
GIT binary patch
literal 301
zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1SE5RJ;(=AY)RhkE)4%caKYZ?lYt_SJY5_^
zD(1Ysy^*iUK*S+1>rej2(}h=B@0d(;Js;WVUVNE%S1wQ;!=K59zYi43gs*v=>!Y8U
z_vgvq?cQM@omse;SR0!h92Y1A>{u^la;*65g4(k)k}t|wYjB7lNebZM8vKpTne!)c
zbN%i~M<*ZqX0g}kFdxELd^!~Z1T@ab2krlH<ByqM{lP1D%YXuKdqK|r@Q}6kF=t0)
R<@7`l*VEO{Wt~$(698O(XEy)<

literal 0
HcmV?d00001

-- 
1.7.9.5


--
Bryce Harrington
Senior Open Source Developer  -  [email protected]
Open Source Group             -  Samsung Research America

-- 
cairo mailing list
[email protected]
http://lists.cairographics.org/mailman/listinfo/cairo
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.