~ubuntu-branches/ubuntu/hardy/cairo/hardy-updates

« back to all changes in this revision

Viewing changes to test/source-clip-scale.c

  • Committer: Bazaar Package Importer
  • Author(s): Sebastien Bacher
  • Date: 2008-01-17 13:00:59 UTC
  • Revision ID: james.westby@ubuntu.com-20080117130059-3gbudaudr2w8bl4w
Tags: upstream-1.5.6
Import upstream version 1.5.6

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright © 2005 Mozilla Corporation
 
3
 *
 
4
 * Permission to use, copy, modify, distribute, and sell this software
 
5
 * and its documentation for any purpose is hereby granted without
 
6
 * fee, provided that the above copyright notice appear in all copies
 
7
 * and that both that copyright notice and this permission notice
 
8
 * appear in supporting documentation, and that the name of
 
9
 * Mozilla Corporation not be used in advertising or publicity pertaining to
 
10
 * distribution of the software without specific, written prior
 
11
 * permission. Mozilla Corporation makes no representations about the
 
12
 * suitability of this software for any purpose.  It is provided "as
 
13
 * is" without express or implied warranty.
 
14
 *
 
15
 * MOZILLA CORPORATION DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
 
16
 * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
 
17
 * FITNESS, IN NO EVENT SHALL MOZILLA CORPORATION BE LIABLE FOR ANY SPECIAL,
 
18
 * INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER
 
19
 * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
 
20
 * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
 
21
 * IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
 
22
 *
 
23
 * Author: Vladimir Vukicevic <vladimir@pobox.com>
 
24
 */
 
25
 
 
26
#include <math.h>
 
27
#include "cairo-test.h"
 
28
#include <stdio.h>
 
29
 
 
30
#define SIZE 12
 
31
 
 
32
static cairo_test_draw_function_t draw;
 
33
 
 
34
cairo_test_t test = {
 
35
    "source-clip-scale",
 
36
    "Test that a source surface is not affected by a clip when scaling",
 
37
    SIZE * 2, SIZE,
 
38
    draw
 
39
};
 
40
 
 
41
static cairo_test_status_t
 
42
draw (cairo_t *cr, int width, int height)
 
43
{
 
44
    cairo_surface_t *source;
 
45
    cairo_t *cr2;
 
46
 
 
47
    source = cairo_surface_create_similar (cairo_get_group_target (cr),
 
48
                                           CAIRO_CONTENT_COLOR_ALPHA,
 
49
                                           SIZE, SIZE);
 
50
    cr2 = cairo_create (source);
 
51
 
 
52
    /* Fill the source surface with green */
 
53
    cairo_set_source_rgb (cr2, 0, 1, 0);
 
54
    cairo_paint (cr2);
 
55
 
 
56
    /* Draw a blue square in the middle of the source with clipping.
 
57
     * Note that we are only clipping within a save/restore block but
 
58
     * the buggy behavior demonstrates that the clip remains present
 
59
     * on the surface. */
 
60
    cairo_save (cr2);
 
61
    cairo_rectangle (cr2,
 
62
                     SIZE / 4, SIZE / 4,
 
63
                     SIZE / 2, SIZE / 2);
 
64
    cairo_clip (cr2);
 
65
    cairo_set_source_rgb (cr2, 0, 0, 1);
 
66
    cairo_paint (cr2);
 
67
    cairo_restore (cr2);
 
68
 
 
69
    /* Fill the destination surface with solid red (should not appear
 
70
     * in final result) */
 
71
    cairo_set_source_rgb (cr, 1, 0, 0);
 
72
    cairo_paint (cr);
 
73
 
 
74
    /* Now draw the source surface onto the destination with scaling. */
 
75
    cairo_scale (cr, 2.0, 1.0);
 
76
 
 
77
    cairo_set_source_surface (cr, source, 0, 0);
 
78
    cairo_paint (cr);
 
79
 
 
80
    cairo_destroy (cr2);
 
81
    cairo_surface_destroy (source);
 
82
 
 
83
    return CAIRO_TEST_SUCCESS;
 
84
}
 
85
 
 
86
int
 
87
main (void)
 
88
{
 
89
    return cairo_test (&test);
 
90
}