Re: [PATCH 1/3 v2] test: Add test for image downscaling
"Bryce W. Harrington" <[email protected]>
| Newsgroups | gmane.comp.lib.cairo |
|---|---|
| Message-ID | <[email protected]> |
On Tue, Sep 10, 2013 at 10:47:21AM +0200, Uli Schlachter wrote: > On 10.09.2013 00:59, Bryce W. Harrington wrote: > > This adds pixman-downscale.c, which tests correctness of PNG images > > scaled down using pixman routines. > > > > Signed-off-by: Bryce Harrington <[email protected]> > > --- > > This does not build: > > CC cairo_test_suite-pixman-downscale.o > pixman-downscale.c: In function ‘draw’: > pixman-downscale.c:47:15: error: ‘WIDTH’ undeclared (first use in this function) > pixman-downscale.c:47:15: note: each undeclared identifier is reported only once > for each function it appears in > pixman-downscale.c:48:15: error: ‘HEIGHT’ undeclared (first use in this function) The fix for this is in the second patch. I can move it to the first one to clean this up. > > test/Makefile.sources | 1 + > > test/pixman-downscale.c | 68 +++++++++++++++++++++++++++++++ > > test/quad-color.png | Bin 0 -> 301 bytes > > test/reference/pixman-downscale.ref.png | Bin 0 -> 191 bytes > > 4 files changed, 69 insertions(+) > > create mode 100644 test/pixman-downscale.c > > create mode 100644 test/quad-color.png > > create mode 100644 test/reference/pixman-downscale.ref.png > > > > diff --git a/test/Makefile.sources b/test/Makefile.sources > > index 509c11c..9fbfb96 100644 > > --- a/test/Makefile.sources > > +++ b/test/Makefile.sources > > @@ -248,6 +248,7 @@ test_sources = \ > > pattern-get-type.c \ > > pattern-getters.c \ > > pdf-isolated-group.c \ > > + pixman-downscale.c \ > > pixman-rotate.c \ > > png.c \ > > push-group.c \ > > diff --git a/test/pixman-downscale.c b/test/pixman-downscale.c > > new file mode 100644 > > index 0000000..0562015 > > --- /dev/null > > +++ b/test/pixman-downscale.c > > @@ -0,0 +1,68 @@ > > +/* > > + * Copyright © 2013 Samsung Electronics > > + * > > + * Permission is hereby granted, free of charge, to any person > > + * obtaining a copy of this software and associated documentation > > + * files (the "Software"), to deal in the Software without > > + * restriction, including without limitation the rights to use, copy, > > + * modify, merge, publish, distribute, sublicense, and/or sell copies > > + * of the Software, and to permit persons to whom the Software is > > + * furnished to do so, subject to the following conditions: > > + * > > + * The above copyright notice and this permission notice shall be > > + * included in all copies or substantial portions of the Software. > > + * > > + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, > > + * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF > > + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND > > + * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS > > + * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN > > + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN > > + * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE > > + * SOFTWARE. > > + * > > + * Author: Bryce Harrington <[email protected]> > > + */ > > + > > +#include <stdio.h> > > +#include <stdlib.h> > > +#include <math.h> > > + > > +#include <cairo.h> > > + > > +#include "cairo-test.h" > > + > > +static const char *png_filename = "quad-color.png"; > > Shouldn't make much of a difference, but can you make this const char[] instead? > (I only noticed this because you did the same in one of your other test suite > patches.) Sure > > + > > +/* Draw an image scaled down, with antialiasing disabled */ > > +static cairo_test_status_t > > +draw (cairo_t *cr, int width, int height) > > +{ > > + const cairo_test_context_t *ctx = cairo_test_get_context (cr); > > + cairo_surface_t *image; > > + double x_scale, y_scale, scale; > > + > > + cairo_set_source_rgb (cr, 1, 1, 1); > > + image = cairo_test_create_surface_from_png (ctx, png_filename); > > + x_scale = WIDTH * 1.0 / cairo_image_surface_get_width (image); > > + y_scale = HEIGHT * 1.0 / cairo_image_surface_get_height (image); > > + scale = fmin(x_scale, y_scale); > > + > > + cairo_save (cr); > > + cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); > > + cairo_pattern_set_filter (cairo_get_source (cr), CAIRO_FILTER_NEAREST); > > + cairo_scale (cr, scale, scale); > > + cairo_set_source_surface (cr, image, 0, 0); > > + cairo_paint (cr); > > + cairo_restore (cr); > > + cairo_surface_destroy (image); > > + > > + return CAIRO_TEST_SUCCESS; > > +} > > + > > +CAIRO_TEST (pixman_downscale, > > + "Exposes errors when downscaling", > > + "image, transform, raster", /* keywords */ > > + NULL, /* requirements */ > > + 96, 96, > > + NULL, draw) > > diff --git a/test/quad-color.png b/test/quad-color.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.ref.png b/test/reference/pixman-downscale.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 > > Also, I don't know why, but the mail body is base64 encoded and contains dos > line endings which "git am" does not like. This made it a little harder to apply > the patch. Probably because of the included binary image I guess? Let me know if there's some special incantation to give git format-patch / send-patch to handle these better. Otherwise, I'm also keeping the patches up to date on my fdo branch. Bryce -- cairo mailing list [email protected] http://lists.cairographics.org/mailman/listinfo/cairo