summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Worth <cworth@cworth.org>2005-07-27 13:28:15 +0000
committerCarl Worth <cworth@cworth.org>2005-07-27 13:28:15 +0000
commit255913de9ef5da40604d55ca8d0d53ac606f7710 (patch)
tree7f2f3475e80fb36c0c040bbad26f5540f2618ffa
parent8cb451962b4be046024264fd6251f26ea1bf033c (diff)
Note that the XFAIL tests all need to be fixed before 1.0.
Add three new tests for testing the various antialiasing options for text rendering.
-rw-r--r--ChangeLog15
-rw-r--r--ROADMAP4
-rw-r--r--test/.cvsignore3
-rw-r--r--test/Makefile.am8
-rw-r--r--test/text-antialias-gray-ref.pngbin0 -> 723 bytes
-rw-r--r--test/text-antialias-gray.c77
-rw-r--r--test/text-antialias-none-ref.pngbin0 -> 277 bytes
-rw-r--r--test/text-antialias-none.c78
-rw-r--r--test/text-antialias-subpixel.c82
9 files changed, 267 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 7ebb9236..d598a4a3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,20 @@
2005-07-27 Carl Worth <cworth@cworth.org>
+ * ROADMAP: Note that the XFAIL tests all need to be fixed before
+ 1.0.
+
+ * test/.cvsignore:
+ * test/Makefile.am:
+ * test/text-antialias-gray-ref.png:
+ * test/text-antialias-gray.c: (draw), (main):
+ * test/text-antialias-none-ref.png:
+ * test/text-antialias-none.c: (draw), (main):
+ * test/text-antialias-subpixel.c: (draw), (main): Add three new
+ tests for testing the various antialiasing options for text
+ rendering.
+
+2005-07-27 Carl Worth <cworth@cworth.org>
+
* src/cairo-png.c: (cairo_image_surface_create_from_png_stream):
Fix typo that caused cairo_image_surface_create_from_png_stream to
segfault. Closes bug #3863 (thanks to Steve Chaplin).
diff --git a/ROADMAP b/ROADMAP
index 141b4cfb..ed0ee80d 100644
--- a/ROADMAP
+++ b/ROADMAP
@@ -48,6 +48,10 @@ Implementation work
I5. Finish the workaround for Render's overlapping source/dest bug
(Copy the source as needed)
+ I6. Fix all expected failures (XFAIL) in the test suite. Either
+ there's a bug that needs to be fixed, or there are illegitimate
+ tests that should be removed.
+
API additions (more detail in TODO file)
----------------------------------------
A3. Add cairo_begin/end/get_group
diff --git a/test/.cvsignore b/test/.cvsignore
index 73721493..1d037fa0 100644
--- a/test/.cvsignore
+++ b/test/.cvsignore
@@ -41,6 +41,9 @@ source-clip
source-surface-scale-paint
surface-finish-twice
surface-pattern
+text-antialias-gray
+text-antialias-none
+text-antialias-subpixel
text-cache-crash
text-rotate
transforms
diff --git a/test/Makefile.am b/test/Makefile.am
index b2b9e630..22ff497c 100644
--- a/test/Makefile.am
+++ b/test/Makefile.am
@@ -30,6 +30,9 @@ source-clip \
source-surface-scale-paint \
surface-finish-twice \
surface-pattern \
+text-antialias-gray \
+text-antialias-none \
+text-antialias-subpixel \
text-cache-crash \
text-rotate \
transforms \
@@ -105,6 +108,8 @@ filter-nearest-offset \
pixman-rotate \
self-intersecting \
source-surface-scale-paint \
+text-antialias-none \
+text-antialias-subpixel \
text-rotate
check_PROGRAMS = $(TESTS)
@@ -172,6 +177,9 @@ source_clip_LDADD = $(LDADDS)
source_surface_scale_paint_LDADD = $(LDADDS)
surface_finish_twice_LDADD = $(LDADDS)
surface_pattern_LDADD = $(LDADDS)
+text_antialias_gray_LDADD = $(LDADDS)
+text_antialias_none_LDADD = $(LDADDS)
+text_antialias_subpixel_LDADD = $(LDADDS)
text_cache_crash_LDADD = $(LDADDS)
text_rotate_LDADD = $(LDADDS)
transforms_LDADD = $(LDADDS)
diff --git a/test/text-antialias-gray-ref.png b/test/text-antialias-gray-ref.png
new file mode 100644
index 00000000..1367ea9e
--- /dev/null
+++ b/test/text-antialias-gray-ref.png
Binary files differ
diff --git a/test/text-antialias-gray.c b/test/text-antialias-gray.c
new file mode 100644
index 00000000..caa260ad
--- /dev/null
+++ b/test/text-antialias-gray.c
@@ -0,0 +1,77 @@
+/*
+ * Copyright © 2005 Red Hat, Inc.
+ *
+ * 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
+ * Red Hat, Inc. not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior
+ * permission. Red Hat, Inc. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as
+ * is" without express or implied warranty.
+ *
+ * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL RED HAT, INC. 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: Carl D. Worth <cworth@cworth.org>
+ */
+
+#include "cairo-test.h"
+
+#define WIDTH 31
+#define HEIGHT 20
+#define TEXT_SIZE 12
+
+cairo_test_t test = {
+ "text-antialias-gray",
+ "Tests text rendering with grayscale antialiasing",
+ WIDTH, HEIGHT
+};
+
+static cairo_test_status_t
+draw (cairo_t *cr, int width, int height)
+{
+ cairo_text_extents_t extents;
+ cairo_font_options_t *font_options;
+ static char black[] = "black", blue[] = "blue";
+
+ cairo_select_font_face (cr, "Bitstream Vera Sans",
+ CAIRO_FONT_SLANT_NORMAL,
+ CAIRO_FONT_WEIGHT_NORMAL);
+ cairo_set_font_size (cr, TEXT_SIZE);
+
+ font_options = cairo_font_options_create ();
+
+ cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE);
+ cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_OFF);
+ cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_GRAY);
+
+ cairo_set_font_options (cr, font_options);
+ cairo_font_options_destroy (font_options);
+
+ cairo_set_source_rgb (cr, 0, 0, 0); /* black */
+ cairo_text_extents (cr, black, &extents);
+ cairo_move_to (cr, -extents.x_bearing, -extents.y_bearing);
+ cairo_show_text (cr, black);
+ cairo_translate (cr, 0, -extents.y_bearing + 1);
+
+ cairo_set_source_rgb (cr, 0, 0, 1); /* blue */
+ cairo_text_extents (cr, blue, &extents);
+ cairo_move_to (cr, -extents.x_bearing, -extents.y_bearing);
+ cairo_show_text (cr, blue);
+
+ return CAIRO_TEST_SUCCESS;
+}
+
+int
+main (void)
+{
+ return cairo_test (&test, draw);
+}
diff --git a/test/text-antialias-none-ref.png b/test/text-antialias-none-ref.png
new file mode 100644
index 00000000..c0281938
--- /dev/null
+++ b/test/text-antialias-none-ref.png
Binary files differ
diff --git a/test/text-antialias-none.c b/test/text-antialias-none.c
new file mode 100644
index 00000000..e74b7fe7
--- /dev/null
+++ b/test/text-antialias-none.c
@@ -0,0 +1,78 @@
+/*
+ * Copyright © 2005 Red Hat, Inc.
+ *
+ * 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
+ * Red Hat, Inc. not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior
+ * permission. Red Hat, Inc. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as
+ * is" without express or implied warranty.
+ *
+ * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL RED HAT, INC. 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: Carl D. Worth <cworth@cworth.org>
+ */
+
+#include "cairo-test.h"
+
+#define WIDTH 31
+#define HEIGHT 20
+#define TEXT_SIZE 12
+
+cairo_test_t test = {
+ "text-antialias-none",
+ "Tests text rendering with no antialiasing",
+ WIDTH, HEIGHT
+};
+
+static cairo_test_status_t
+draw (cairo_t *cr, int width, int height)
+{
+ cairo_text_extents_t extents;
+ cairo_font_options_t *font_options;
+ static char black[] = "black", blue[] = "blue";
+
+ cairo_select_font_face (cr, "Bitstream Vera Sans",
+ CAIRO_FONT_SLANT_NORMAL,
+ CAIRO_FONT_WEIGHT_NORMAL);
+ cairo_set_font_size (cr, TEXT_SIZE);
+
+ font_options = cairo_font_options_create ();
+
+ cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE);
+ cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_OFF);
+ cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_NONE);
+
+ cairo_set_font_options (cr, font_options);
+ cairo_font_options_destroy (font_options);
+
+ cairo_set_source_rgb (cr, 0, 0, 0); /* black */
+ cairo_text_extents (cr, black, &extents);
+ cairo_move_to (cr, -extents.x_bearing, -extents.y_bearing);
+ cairo_show_text (cr, black);
+ cairo_translate (cr, 0, -extents.y_bearing + 1);
+
+ cairo_set_source_rgb (cr, 0, 0, 1); /* blue */
+ cairo_text_extents (cr, blue, &extents);
+ cairo_move_to (cr, -extents.x_bearing, -extents.y_bearing);
+ cairo_show_text (cr, blue);
+
+ return CAIRO_TEST_SUCCESS;
+}
+
+int
+main (void)
+{
+ return cairo_test_expect_failure (&test, draw,
+ "Bugs in non-antialiased text rendering in non-xlib backends");
+}
diff --git a/test/text-antialias-subpixel.c b/test/text-antialias-subpixel.c
new file mode 100644
index 00000000..c72a7128
--- /dev/null
+++ b/test/text-antialias-subpixel.c
@@ -0,0 +1,82 @@
+/*
+ * Copyright © 2005 Red Hat, Inc.
+ *
+ * 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
+ * Red Hat, Inc. not be used in advertising or publicity pertaining to
+ * distribution of the software without specific, written prior
+ * permission. Red Hat, Inc. makes no representations about the
+ * suitability of this software for any purpose. It is provided "as
+ * is" without express or implied warranty.
+ *
+ * RED HAT, INC. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS
+ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND
+ * FITNESS, IN NO EVENT SHALL RED HAT, INC. 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: Carl D. Worth <cworth@cworth.org>
+ */
+
+#include "cairo-test.h"
+
+#define WIDTH 31
+#define HEIGHT 20
+#define TEXT_SIZE 12
+
+cairo_test_t test = {
+ "text-antialias-subpixel",
+ "Tests text rendering with subpixel antialiasing",
+ WIDTH, HEIGHT
+};
+
+static cairo_test_status_t
+draw (cairo_t *cr, int width, int height)
+{
+ cairo_text_extents_t extents;
+ cairo_font_options_t *font_options;
+ static char black[] = "black", blue[] = "blue";
+
+ cairo_select_font_face (cr, "Bitstream Vera Sans",
+ CAIRO_FONT_SLANT_NORMAL,
+ CAIRO_FONT_WEIGHT_NORMAL);
+ cairo_set_font_size (cr, TEXT_SIZE);
+
+ /* Sub-pixel antialiasing with unhinted glyphs can be pretty ugly
+ * (bad color fringing). The reason we turn off hints here is to
+ * try to get repeatable glyph shapes on multiple systems, not for
+ * any aesthetic reason. */
+ font_options = cairo_font_options_create ();
+
+ cairo_font_options_set_hint_style (font_options, CAIRO_HINT_STYLE_NONE);
+ cairo_font_options_set_hint_metrics (font_options, CAIRO_HINT_METRICS_OFF);
+ cairo_font_options_set_antialias (font_options, CAIRO_ANTIALIAS_SUBPIXEL);
+ cairo_font_options_set_subpixel_order (font_options, CAIRO_SUBPIXEL_ORDER_RGB);
+ cairo_set_font_options (cr, font_options);
+ cairo_font_options_destroy (font_options);
+
+ cairo_set_source_rgb (cr, 0, 0, 0); /* black */
+ cairo_text_extents (cr, black, &extents);
+ cairo_move_to (cr, -extents.x_bearing, -extents.y_bearing);
+ cairo_show_text (cr, black);
+ cairo_translate (cr, 0, -extents.y_bearing + 1);
+
+ cairo_set_source_rgb (cr, 0, 0, 1); /* blue */
+ cairo_text_extents (cr, blue, &extents);
+ cairo_move_to (cr, -extents.x_bearing, -extents.y_bearing);
+ cairo_show_text (cr, blue);
+
+ return CAIRO_TEST_SUCCESS;
+}
+
+int
+main (void)
+{
+ return cairo_test_expect_failure (&test, draw,
+ "Bugs in subpixel-antialiased text rendering");
+}