[test] Add a test case for create_similar(CONTENT_ALPHA)

Application of a pure-alpha similar source is inconsistently handled
across the backends. The PDF/PS backends allow the rgb channels to bleed
through and the SVG backend mixes in pure white.
This commit is contained in:
Chris Wilson 2008-09-23 22:52:42 +01:00
parent 5e54084126
commit 3c6d3684e9
5 changed files with 80 additions and 0 deletions

1
test/.gitignore vendored
View file

@ -10,6 +10,7 @@ a1-image-sample
a1-mask
a1-traps-sample
a8-mask
alpha-similar
any2ppm
.any2ppm
.any2ppm.pid

View file

@ -8,6 +8,7 @@ a1-image-sample$(EXEEXT) \
a1-mask$(EXEEXT) \
a1-traps-sample$(EXEEXT) \
a8-mask$(EXEEXT) \
alpha-similar$(EXEEXT) \
big-line$(EXEEXT) \
big-trap$(EXEEXT) \
bilevel-image$(EXEEXT) \
@ -291,6 +292,8 @@ REFERENCE_IMAGES = \
a1-mask-ref.png \
a1-traps-sample-ref.png \
a8-mask-ref.png \
alpha-similar-ref.png \
alpha-similar-rgb24-ref.png \
big-line-ref.png \
big-line-rgb24-ref.png \
big-line-ps-ref.png \

BIN
test/alpha-similar-ref.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 99 B

76
test/alpha-similar.c Normal file
View file

@ -0,0 +1,76 @@
/*
* Copyright 2008 Chris Wilson
*
* Permission to use, copy, modify, distribute, and sell this software
* and its documentation for any purpose is hereby granted without
* fee, provided that the above copyright notice appear in all copies
* and that both that copyright notice and this permission notice
* appear in supporting documentation, and that the name of
* Chris Wilson not be used in advertising or publicity pertaining to
* distribution of the software without specific, written prior
* permission. Chris Wilson makes no representations about the
* suitability of this software for any purpose. It is provided "as
* is" without express or implied warranty.
*
* CHRIS WILSON DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
* SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
* FITNESS, IN NO EVENT SHALL CHRIS WILSON BE LIABLE FOR ANY SPECIAL,
* INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
* RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
* OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
* IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
*
* Author: Chris Wilson <chris@chris-wilson.co.uk>
*/
#include "cairo-test.h"
static cairo_test_draw_function_t draw;
static const cairo_test_t test = {
"alpha-similar",
"Tests creation of similar alpha surfaces",
10, 10,
draw
};
static cairo_surface_t *
create_source (cairo_surface_t *target, int width, int height)
{
cairo_surface_t *similar;
cairo_t *cr;
similar = cairo_surface_create_similar (target,
CAIRO_CONTENT_ALPHA,
width, height);
cr = cairo_create (similar);
cairo_surface_destroy (similar);
cairo_set_source_rgba (cr, 1, 0, 0, .5);
cairo_paint (cr);
similar = cairo_surface_reference (cairo_get_target (cr));
cairo_destroy (cr);
return similar;
}
static cairo_test_status_t
draw (cairo_t *cr, int width, int height)
{
cairo_surface_t *source;
source = create_source (cairo_get_target (cr), width, height);
cairo_set_source_surface (cr, source, 0, 0);
cairo_surface_destroy (source);
cairo_paint (cr);
return CAIRO_TEST_SUCCESS;
}
int
main (void)
{
return cairo_test (&test);
}