~ted/cairo/trunk

« back to all changes in this revision

Viewing changes to test/text-subpixel.c

  • Committer: Behdad Esfahbod
  • Author(s): Matthias Clasen
  • Date: 2019-07-18 21:38:47 UTC
  • Revision ID: git-v1:6fd4222ab00c3b93f038172a8c9d48375c5f86f0
Add a testcase for subpixel positioning

With the image compositor, you can see different
phases. The XLib compositor always uses the same
glyph rendering.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright © 2019 Matthias Clasen
 
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
 * Red Hat, Inc. not be used in advertising or publicity pertaining to
 
10
 * distribution of the software without specific, written prior
 
11
 * permission. Red Hat, Inc. 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
 * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
 
16
 * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
 
17
 * FITNESS, IN NO EVENT SHALL RED HAT, INC. 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: Adrian Johnson <ajohnson@redneon.com>
 
24
 */
 
25
 
 
26
#include "cairo-test.h"
 
27
 
 
28
#define WIDTH  300
 
29
#define HEIGHT 200
 
30
 
 
31
static cairo_test_status_t
 
32
draw (cairo_t *cr, int width, int height)
 
33
{
 
34
    cairo_font_options_t *font_options;
 
35
    double size, y;
 
36
 
 
37
    cairo_set_source_rgb (cr, 1, 1, 1);
 
38
    cairo_paint (cr);
 
39
 
 
40
    cairo_select_font_face (cr, CAIRO_TEST_FONT_FAMILY "DejaVu Sans Mono",
 
41
                            CAIRO_FONT_SLANT_NORMAL,
 
42
                            CAIRO_FONT_WEIGHT_NORMAL);
 
43
 
 
44
    font_options = cairo_font_options_create();
 
45
    cairo_get_font_options (cr, font_options);
 
46
    cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_OFF);
 
47
    cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE);
 
48
    cairo_set_font_options (cr, font_options);
 
49
    cairo_font_options_destroy (font_options);
 
50
 
 
51
    y = 0.0;
 
52
    cairo_set_source_rgb (cr, 0, 0, 0);
 
53
    for (size = 10.0; size <= 40.0; size += 3.3) {
 
54
        cairo_set_font_size (cr, size);
 
55
        y += size + 2.3;
 
56
        cairo_move_to (cr, 5, y);
 
57
        cairo_show_text (cr, "aaaaaaaaaa");
 
58
    }
 
59
 
 
60
    return CAIRO_TEST_SUCCESS;
 
61
}
 
62
 
 
63
CAIRO_TEST (text_subpixel_positioning,
 
64
            "Test subpixel positioning",
 
65
            "text, font", /* keywords */
 
66
            NULL, /* requirements */
 
67
            WIDTH, HEIGHT,
 
68
            NULL, draw)