From 610b311a970877f3954ba829cf43caecce0ab72c Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Wed, 9 Sep 2009 09:48:24 +0100 Subject: [PATCH] [test] Variation of twin that intermixes antialiasing Check that we are substituting the right glyph depth and changing masks appropriately. --- test/Makefile.am | 2 + test/Makefile.sources | 1 + test/twin-antialias-mixed.c | 97 +++++++++++++++++++++++++ test/twin-antialias-mixed.ref.png | Bin 0 -> 2338 bytes test/twin-antialias-mixed.xlib.ref.png | Bin 0 -> 1760 bytes 5 files changed, 100 insertions(+) create mode 100644 test/twin-antialias-mixed.c create mode 100644 test/twin-antialias-mixed.ref.png create mode 100644 test/twin-antialias-mixed.xlib.ref.png diff --git a/test/Makefile.am b/test/Makefile.am index c03b7bf11..b3c98090b 100644 --- a/test/Makefile.am +++ b/test/Makefile.am @@ -979,6 +979,8 @@ REFERENCE_IMAGES = \ twin-antialias-gray.xlib.ref.png \ twin-antialias-none.ref.png \ twin-antialias-none.xlib.ref.png \ + twin-antialias-mixed.ref.png \ + twin-antialias-mixed.xlib.ref.png \ twin-antialias-subpixel.ref.png \ twin-antialias-subpixel.xlib.ref.png \ unantialiased-shapes.quartz.ref.png \ diff --git a/test/Makefile.sources b/test/Makefile.sources index 37762e0f5..00fbf3f62 100644 --- a/test/Makefile.sources +++ b/test/Makefile.sources @@ -218,6 +218,7 @@ test_sources = \ trap-clip.c \ twin.c \ twin-antialias-gray.c \ + twin-antialias-mixed.c \ twin-antialias-none.c \ twin-antialias-subpixel.c \ unantialiased-shapes.c \ diff --git a/test/twin-antialias-mixed.c b/test/twin-antialias-mixed.c new file mode 100644 index 000000000..43f58ceb3 --- /dev/null +++ b/test/twin-antialias-mixed.c @@ -0,0 +1,97 @@ +/* + * Copyright 2009 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 + */ + +#include "cairo-test.h" + +static cairo_scaled_font_t * +create_twin (cairo_t *cr, cairo_antialias_t antialias) +{ + cairo_font_options_t *options; + + cairo_select_font_face (cr, + "@cairo:", + CAIRO_FONT_SLANT_NORMAL, + CAIRO_FONT_WEIGHT_NORMAL); + + options = cairo_font_options_create (); + cairo_font_options_set_antialias (options, antialias); + cairo_set_font_options (cr, options); + cairo_font_options_destroy (options); + + return cairo_scaled_font_reference (cairo_get_scaled_font (cr)); +} + + +static cairo_test_status_t +draw (cairo_t *cr, int width, int height) +{ + cairo_scaled_font_t *subpixel, *gray, *none; + + cairo_set_source_rgb (cr, 1, 1, 1); + cairo_paint (cr); + cairo_set_source_rgb (cr, 0, 0, 0); + + cairo_set_font_size (cr, 16); + subpixel = create_twin (cr, CAIRO_ANTIALIAS_SUBPIXEL); + gray = create_twin (cr, CAIRO_ANTIALIAS_GRAY); + none = create_twin (cr, CAIRO_ANTIALIAS_NONE); + + cairo_move_to (cr, 4, 14); + cairo_set_scaled_font (cr, subpixel); + cairo_show_text (cr, "Is cairo's"); + cairo_set_scaled_font (cr, gray); + cairo_show_text (cr, " twin"); + cairo_set_scaled_font (cr, none); + cairo_show_text (cr, " giza?"); + + cairo_move_to (cr, 4, 34); + cairo_set_scaled_font (cr, gray); + cairo_show_text (cr, "Is cairo's"); + cairo_set_scaled_font (cr, none); + cairo_show_text (cr, " twin"); + cairo_set_scaled_font (cr, subpixel); + cairo_show_text (cr, " giza?"); + + cairo_move_to (cr, 4, 54); + cairo_set_scaled_font (cr, none); + cairo_show_text (cr, "Is cairo's"); + cairo_set_scaled_font (cr, gray); + cairo_show_text (cr, " twin"); + cairo_set_scaled_font (cr, subpixel); + cairo_show_text (cr, " giza?"); + + cairo_scaled_font_destroy (none); + cairo_scaled_font_destroy (gray); + cairo_scaled_font_destroy (subpixel); + + return CAIRO_TEST_SUCCESS; +} + +CAIRO_TEST (twin_antialias_mixed, + "Tests the internal font (with intermixed antialiasing)", + "twin, font", /* keywords */ + NULL, /* requirements */ + 140, 60, + NULL, draw) diff --git a/test/twin-antialias-mixed.ref.png b/test/twin-antialias-mixed.ref.png new file mode 100644 index 0000000000000000000000000000000000000000..67cfc5cfe8e85eb32eb76a85cd743863713f0084 GIT binary patch literal 2338 zcmV+-3ElRIP)I$jU8>f*}$_ zM(TxRRP;wEyeWyGc_re77lkNEUby~Q1VyN+G?*3%8RpLBs+G&~Y;JSz{Von2j_2Rb znQl41^Se6d+4H>b^SsZ_pS|z1Hvs?u@hoos`P&ZggojU3955$I004)>5v86YYkYWk zcxq~jlL`A?q8jf4GABvn-Dy^wQ(}B+wB^Srn0hBF)q(C5Gv)Lvm zCz*S4yWMuXJroL&?yrVV};xlX5(%jHt3)ai6OozA^`_W}T%PNznrDJ(2hC=~nl z?Xy@c1QUfqVK$oq0JF2RZ{EDYx(n+Pf*=PD97s-1-m_;(;I4r)SQb zX>M)?08C6w|Ly}hEMf?}}d4k9^8bjoywcnMvG09}%1W@fUpvoBn@(AwHMG&BSN zn4X>{SWZt*%jNP=D1=G8UN5B_9X0%jNTpJ|0@>u|&71Z0_4w}CxPm)H}C9FOH>SxmO<;%OfyK{1K zUcGvC?%cU8TejHkc7l%E?G}s0_-Eb9l`ARbWaM%=UV&_qnVIQyI=Q+;NpW%U)2C0L zJb7X;7_?gL>({S)dU^^93dkX|X^jo&>i{PcW_@bU00173r>v~3tgH-zpq7>vlgZTB z*ofB=i9}z%e3_Yd05CM!^6XwnVDQ&q9ivrcW7wH<#OGg`}gnYX($vTzq}i3{eB37 zy1Kdw3k$toFF|gxSU!CC!0ZIUq`$wvwYAk~G;(zbMJN=0{P+<&UAAnQPN$ognAo^+ zqh7Cn`SPV+uV?m$0p>eIGz=kV?yb<}aveN)5It^cYErA!VzF2zljY^*4G#~K@0DJ! zx4ODIJv}`oC1wBq{UakI1i4r&&d<-!&dzqZTv+4yUdT;}L?WF|H!v_j?v9O10Dysk zfz6vYr>3U%_xGccmX?;YXV0R?`T6;npL8x+t=3bgPEj^aIeO3nz1`8V@Ym-5hiKf{ zDB&kq*#z~48zuzyD$-aI2hMs=?`c*EM zW2>5YmRgNN48Yxyw^B@ zxw9vjgm6G9WEd8@c;#|AJ}$JvV*ekKlanuAyvQ&hgvPB_t3sg&27?qq;ZK%EjRQo# z$jy*BIxB{Fg+d`dE<7C_9XodHKFY*EoPbMTcO1Q^{=Nf*{D_@feN9#>Pf$ z`9G|oL?S6FDndt(lBHkcfP&SEM!by8GOqIS@?*!26%`e+H!LkJW$t#ZI0%9W1cKG8 zSO5EmYuBzZ3<%b2XJ=<;XD3}OfUj|w58JkF>+0$fi^b9Ih@W8P2Ks9hf}r>B-}`*N z7-R_IYaF;zUte!Fn*{;^f*|+q-HT19{Oyi22!aHI!FB7_#jHm@NpS%GOo{{eB*g)I zlHve9NpZjuOj3;ZahPW#Y-${cNt)N+Xrch~1_zYHcpr!PG}7MQu2QM$>gww1>QpLK zM@I*>9(mS_VG=3!P&&yBVYOz_vM@Cciv+;sms||?arnzM4uIpDKS7O74v}V>DXqeG z7uKa{@8hs2Y8(K^se3w|uyTekM+Dswh~7R9f2+oUX@V91cSFG9p2J3mC3H=3bqRtX zyaFA{Voi<765MXas3zz_w zkpGbynM=jR#W!x;aJ$_GgFz@1qWd^BH#Za1!tUb`)fxwhM8dho0RtO|nEi=2YPu(bLY-OhYq3gq@<*^YuDlrP*$y4B@hV6Et^cH zU@*90!v>K^bmz_;i9~|8^>{p2u3UNk{Q3Iz>xDw0P$QVgLXD07*qo IM6N<$g4Mru=Kufz literal 0 HcmV?d00001 diff --git a/test/twin-antialias-mixed.xlib.ref.png b/test/twin-antialias-mixed.xlib.ref.png new file mode 100644 index 0000000000000000000000000000000000000000..3263f7ced65916e7152aa9467e074c326559bc90 GIT binary patch literal 1760 zcmV<61|Ru}P)gwv8>#U=rqX@5DE*B1m zqtR$VUWF!795)QAs&2;@0l$R3IH)RaDLDY(^y$-2pFY)fo!`raiC6$*i=BE(L8&mP zs#;xLeeT@3zuD>6uU{7y7Bo%k>gp;hEA>MGwgOq=@wngbR}@86)%yDSk&zJ~kjZ5F z`}?b^suV?uL?VwKJtFO)P^h-HHg69GgXrMaty}pO2^q85?BL*FO-+rWD7CeZ+)vL|TO%!ctXz1wCqaQwe0DxpN8I4AVhlj~dd5DpD z0>FtACmuX_000LM9*jgH0FX!|kh_^%EEdys9RSklbVWr4H8?iztWGf_%aPUKkC7Ge z;>C*{9UWt1V-Fub{PN`s**5?L0)hAM-`m=$A}uT|U|zvsaCvzdoxXnkdjJ0YWN;p0 zK+Au8e7wKEKb1=Pd_JGg_xbbZzP`SRi3t`-Rve2q7Aq5HaC&#FMuuS|5{c{Aub)4E z-s|;FPEL}}Wo2c#T+Y@`70En@s9qZz8+-QbA%pV}16sDpWU{)tdUA5|(xpqiy}eUY zQ+~fcnM|@svf@~@A??nJluD(L@$K8UKA(?t-nVbx%E}5lMaP((DiRsZ@AsSM-}3Tu zO-&8ijE5L7?t@S$)ZE-WGc$Ad?%n3*=5RP{LDGUMk4W@|iz7ItJ64p+%F5@@pQqDl zUDsc}e7Se;UebABVBpM|GpST6olf7reY>%-5wmA9nd#|iPLYO&hN98vn>TN=+3eEN zQfFspEEXf1@el)mhK7cF_wIfF{@pw~2L=W_9?#m^+S=Nh$K$zn?HZXlr%1NXq=Fo+ zfj2@gIrs11KXBlHrfHg{H8eC#PfwH1zkmO}a^;HG>#eA$IDY*2yLazMdrM1;`Nau4 zFvBp6SS(gwU!Q+%8y+4;Z+B+!5Ced@xw+QX)~c$iy1F`KeD>_wv17;b$6Z}rb8~ZK z;utq7RdDR>jw+i-zxZ4Wr++w?`e&L12L$-y;98)MY)-F6a=8-#a=8-#QX~N&MG^o~ zBmp2r5&%*p0kCUp911Nr*iLx@LeYg1A3uKV>FKGgtW;Gs91hRV&u_WR^X;g#*xcMa zb?TI+X$5(?FcAwJIdUW(kN^1b0{{|G1_uW_J3Fyy!E!|S_U#*mHkn5LK=c|1M@7OCCw=eSxzpI# zxVpN^a>Pc)8oRc}0Zi{{m=QbRv|A*O+Mv7wfq?n#4%t~FgV5gIPIf2Kj|q1|*LAPg zo5^IH>q36JD-yG_vnwkrx~`9njTQRIs!&Lgip1jL;^D)GeLmmp?CjLkl%svgpm0000