[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