diff options
Diffstat (limited to 'test/operator-alpha-alpha.c')
-rw-r--r-- | test/operator-alpha-alpha.c | 166 |
1 files changed, 0 insertions, 166 deletions
diff --git a/test/operator-alpha-alpha.c b/test/operator-alpha-alpha.c deleted file mode 100644 index 2cef8585c..000000000 --- a/test/operator-alpha-alpha.c +++ /dev/null @@ -1,166 +0,0 @@ -/* -*- Mode: c; c-basic-offset: 4; indent-tabs-mode: t; tab-width: 8; -*- */ -/* cairo - a vector graphics library with display and print output - * - * Copyright 2002 University of Southern California - * Copyright 2005 Red Hat, Inc. - * Copyright 2007 Emmanuel Pacaud - * Copyright 2008 Benjamin Otte - * Copyright 2008 Chris Wilson - * - * This library is free software; you can redistribute it and/or - * modify it either under the terms of the GNU Lesser General Public - * License version 2.1 as published by the Free Software Foundation - * (the "LGPL") or, at your option, under the terms of the Mozilla - * Public License Version 1.1 (the "MPL"). If you do not alter this - * notice, a recipient may use your version of this file under either - * the MPL or the LGPL. - * - * You should have received a copy of the LGPL along with this library - * in the file COPYING-LGPL-2.1; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA - * You should have received a copy of the MPL along with this library - * in the file COPYING-MPL-1.1 - * - * The contents of this file are subject to the Mozilla Public License - * Version 1.1 (the "License"); you may not use this file except in - * compliance with the License. You may obtain a copy of the License at - * http://www.mozilla.org/MPL/ - * - * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY - * OF ANY KIND, either express or implied. See the LGPL or the MPL for - * the specific language governing rights and limitations. - * - * The Original Code is the cairo graphics library. - * - * The Initial Developer of the Original Code is University of Southern - * California. - * - * Contributor(s): - * Owen Taylor <otaylor@redhat.com> - * Kristian Høgsberg <krh@redhat.com> - * Emmanuel Pacaud <emmanuel.pacaud@lapp.in2p3.fr> - * Chris Wilson <chris@chris-wilson.co.uk> - * Andrea Canciani <ranma42@gmail.com> - */ - -#include "cairo-test.h" - -#define STEPS 16 -#define START_OPERATOR CAIRO_OPERATOR_CLEAR -#define STOP_OPERATOR CAIRO_OPERATOR_HSL_LUMINOSITY - -#define SIZE 3 -#define COUNT 6 -#define FULL_WIDTH ((STEPS + 1) * COUNT - 1) -#define FULL_HEIGHT ((COUNT + STOP_OPERATOR - START_OPERATOR) / COUNT) * (STEPS + 1) - -static void -create_patterns (cairo_t *bg, cairo_t *fg) -{ - int x; - - for (x = 0; x < STEPS; x++) { - double i = (double) x / (STEPS - 1); - cairo_set_source_rgba (bg, 0, 0, 0, i); - cairo_rectangle (bg, x, 0, 1, STEPS); - cairo_fill (bg); - - cairo_set_source_rgba (fg, 0, 0, 0, i); - cairo_rectangle (fg, 0, x, STEPS, 1); - cairo_fill (fg); - } -} - -/* expects a STEP*STEP pixel rectangle */ -static void -do_composite (cairo_t *cr, cairo_operator_t op, cairo_surface_t *bg, cairo_surface_t *fg) -{ - cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); - cairo_set_source_surface (cr, bg, 0, 0); - cairo_paint (cr); - - cairo_set_operator (cr, op); - cairo_set_source_surface (cr, fg, 0, 0); - cairo_paint (cr); -} - -static void -subdraw (cairo_t *cr, int width, int height) -{ - size_t i = 0; - cairo_operator_t op; - cairo_t *bgcr, *fgcr; - cairo_surface_t *bg, *fg; - - bg = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_ALPHA, SIZE * STEPS, SIZE * STEPS); - fg = cairo_surface_create_similar (cairo_get_target (cr), - CAIRO_CONTENT_ALPHA, SIZE * STEPS, SIZE * STEPS); - bgcr = cairo_create (bg); - fgcr = cairo_create (fg); - cairo_scale (bgcr, SIZE, SIZE); - cairo_scale (fgcr, SIZE, SIZE); - create_patterns (bgcr, fgcr); - cairo_destroy (bgcr); - cairo_destroy (fgcr); - - for (op = START_OPERATOR; op <= STOP_OPERATOR; op++, i++) { - cairo_save (cr); - cairo_translate (cr, - SIZE * (STEPS + 1) * (i % COUNT), - SIZE * (STEPS + 1) * (i / COUNT)); - cairo_rectangle (cr, 0, 0, SIZE * (STEPS + 1), SIZE * (STEPS+1)); - cairo_clip (cr); - do_composite (cr, op, bg, fg); - cairo_restore (cr); - } - - cairo_surface_destroy (fg); - cairo_surface_destroy (bg); -} - - -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); - - subdraw (cr, width, height); - - 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; - - cairo_set_source_rgb (cr, 1, 1, 1); - cairo_paint (cr); - - 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; -} - -CAIRO_TEST (operator_alpha_alpha, - "Tests result of compositing pure-alpha surfaces" - "\nCompositing of pure-alpha sources is inconsistent across backends.", - "alpha, similar, operator", /* keywords */ - NULL, /* requirements */ - FULL_WIDTH * SIZE, FULL_HEIGHT * SIZE, - NULL, draw) |