From 95e147bfa05a122541645f32be52cf1902c3a4b2 Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Tue, 30 Sep 2014 14:30:45 +0100 Subject: [PATCH] test: Explicitly flip the reference image for recordflip Signed-off-by: Chris Wilson --- test/recordflip.c | 58 +++++++++++++++++- test/reference/recordflip-fill-alpha.ref.png | Bin 2790 -> 2864 bytes .../recordflip-paint-alpha-clip-mask.ref.png | Bin 340 -> 372 bytes .../recordflip-paint-alpha-clip.ref.png | Bin 291 -> 316 bytes .../recordflip-paint-alpha-solid-clip.ref.png | Bin 280 -> 291 bytes test/reference/recordflip-paint-alpha.ref.png | Bin 242 -> 257 bytes .../recordflip-select-font-face.ref.png | Bin 2229 -> 2240 bytes .../recordflip-text-transform.ref.png | Bin 5606 -> 5609 bytes 8 files changed, 55 insertions(+), 3 deletions(-) diff --git a/test/recordflip.c b/test/recordflip.c index ecf82f828..7ddf21ea0 100644 --- a/test/recordflip.c +++ b/test/recordflip.c @@ -357,9 +357,61 @@ record_replay (cairo_t *cr, cairo_t *(*func)(cairo_t *), int width, int height) int x, y; #if GENERATE_REF - cairo_scale (cr, -1, -1); - cairo_translate (cr, -width, -height); - func(cr); + { + cairo_surface_t *image; + uint8_t *data, *tmp; + int stride, bpp; + + surface = cairo_get_target (cr); + + func(cr); + + image = cairo_surface_map_to_image (surface, NULL); + + switch (cairo_image_surface_get_format (image)) { + case CAIRO_FORMAT_ARGB32: + case CAIRO_FORMAT_RGB24: + case CAIRO_FORMAT_RGB30: + bpp=4; + break; + case CAIRO_FORMAT_RGB16_565: + bpp=2; + break; + case CAIRO_FORMAT_A8: + bpp=1; + break; + case CAIRO_FORMAT_A1: + case CAIRO_FORMAT_INVALID: + default: + return CAIRO_TEST_FAILURE; + } + + data = cairo_image_surface_get_data (image); + stride = cairo_image_surface_get_stride (image); + + tmp = malloc (stride); + if (tmp == NULL) + return CAIRO_TEST_FAILURE; + + for (y = 0; y < height; y++) { + uint8_t *row = data + y * stride; + for (x = 0; x < width/2; x++) { + memcpy (tmp, row + bpp * x, bpp); + memcpy (row + bpp * x, row + bpp * (width - x - 1), bpp); + memcpy (row + bpp * (width - x - 1), tmp, bpp); + } + } + + for (y = 0; y < height/2; y++) { + memcpy (tmp, data + y * stride, stride); + memcpy (data + y * stride, data + (height - y - 1) * stride, stride); + memcpy (data + (height - y - 1) * stride, tmp, stride); + } + + free (tmp); + + cairo_surface_unmap_image (surface, image); + } #else surface = record_get (func (record_create (cr))); diff --git a/test/reference/recordflip-fill-alpha.ref.png b/test/reference/recordflip-fill-alpha.ref.png index 76b73001dff1df55d9c35914d91cc29d5dcb63d6..86d9fd101ea48a392ca960a441018f423c1f12ea 100644 GIT binary patch delta 2839 zcmV+y3+VLb6|feNHh<+wL_t(|ob8=$R}yI$$NzvJg_wXKl3FgV4?(qAr<2vOvNwH! z{gnG1I=g#X_iT3JxbfgaR$?AhP!L2x1op+Sh{!Mx+z&J4?@gzfo4GINe_b=z{Wykd zwTdhFVdQPVk4}&9&)c`y-{)(IGTd&we97Ag64W9f5a4TuVt;04cw0b-ngByXaJl$e zq5!uWLqoicAjJ7QKu1A9!~OI5e7RgEe_big1<*?nP;&pBot>qnCH6Vtg)B%HK|ty0 zpUdU8wzl5Cf6rKh3j%0A2GNKmdRKsjgCz(02byrE+|HELkiZ4x7#9iHQlxlKFi8@bEC3 z&1SRNbUJ->bR?u$KA+EQHa8V+Cx8$He8&mcxWCM%ZzvQpnM~v3=T9RaK71$?3Kok+xao(7ho`5fa(;O0)~y>i zZd^VtApqYXVAJofNB{sT5>unmc<0WY)~6(Y%rPBeGwjtq1tP-u__)nxYk5jq0AA@3 zvtci#5ug;4$t33fkU1-YOAs&{^`$Mq#KeTvYJU|wD@y?OLBP!Y%jL4198@(Hi)E&* zE6JS~#5f3;J^h!KmZ(-SH8piP_iscZ3#!919b(}Axm+$5i*0RfHT6Q1#cH)mHr(V2 z0ETS>+8v+aaCm!ro58r_^z?L3kHj5TAOM>npy&SCY&H^!u(|aBY&M(U@0Tp5Kmafa z0)HCrpUGsx;qcDR4$IN@nVA`*QTi3DOaR(JK-~S)>2xF#NhA^^FDirn{{GvyZ_6pE zOaM?00)p<(>(&bd0s(`;Ag82a0q6w*Dfd4(I0%QsySuvtuB8fx!!a^4BD1h!0YEJX zI(PqMG8v6V_xAQkn4_M1_wLCrtY(1*jemwQ5%({ZN?az`HX-NTdtO*w9mE^PM4tXW zpKoDd;n}ligM)(vE~genlUY;>KsE@-COeq-73<4UtzaYbl z7caQTAb-$Cy#S8NDwgS_!MMVSXdZhxUwl4jep8% zcy}Z~=Rv@7wU^7~nxCJ4{rWW<8FIPY*RNkCi*>qAxWgb|zu3{~bP6&I4-eC>D;A4M zrp28K&`A(*To zpegr<@(2h9gR`@K;zv9U@#c^ z`}_O*`|Cqs<#M@ktw1`RE))s?DwRq&9DefTNz*k+3IG{Fpf&dgU^1DmU%%eCP`f3; zV6gop!}`@64u`|xs2{0TtA9sFN5Xo7QmNE5QI4FH@XcfTbD zgTZdMi@j;c?-|!79nzrt3$%X?OifMQy?d8Z)#L>bONTV;{%9+J-|ts6$gUJByC${_ z0?oQV#4}O9-#>I)_{ixdI9$l+JJlpa(r>n60qdVYkEXfMXDY zCJ=qv{`MQmtFhtNU(vY$MHJ(RZ)1BO`xUfa^n8lbQ=I0J-$$*V+6bcyuA8_yhOu7s zc4&jHQ7=FWsa32dkf=iOYrKL=63HZz%UJfpJB2AX+^Q|nHGgUZNFo_QB#C6_)mKqX zAdx^~5Q9Mke?S?O2~b3F8Oxj4ByL9vsXy??1Sam_js>!&8gvH=1lY#*5|&D6u_GN3 zs;I7G{TseL!lMz$UFNBGWTl}MR6+>b{vk!EI16B%Uw z!e3?ZUwcgtQ2{EbEMoBh2Q00*%s%$t;awNM4@3nBBh2N=bD2Ht{fmEjTS1G~0&HV@ z746n_FlHU=3Gmr?hBhq(D4?(ex_b$#;2-=`K!LXvNh?)gR zBKZy9cvvFMCN}rLc`qR1Gz$<#l#3lQ(YSdkxFA3ZDUG{W63P0YLU(XM08M2+V#J{G zTQ1tX}9huTDU28&S>zz(`Q2Y(VrcLs}bB>-n?0yyAkUruZ2&R{WW z0=VEZ>L(>N!Z-+?Ux^{ec^c{hkMCxy!U<=$WkCRZ@Nu+55jrwel5+vZFlGRwJz6@! z0K*u@cw0e?a{;Wddg0}0icGxlUIWDq=NWV1#XE^fv2xnsXZ+0D1d?13zypsHPF|+S z!G8tU5cIJBlWdw(&wHS_M`q^)K>8bsylED|4Yy|3=-$N5E^~jh91nPa2O8`gHN*S> z4|rQao)!XFVb$QDI*ZwEN`C6J?tZw1TjLmKY)Tt$<90XY{*8$C|IA|60}o46#Bjqs z3+h`4^FmYrBaCyH>qkFJYc4Z@foFKu#eW+XwCe%2!159=2Qa|QnkEJ?Fpqf+W&{M0 z=z{J=?>y$Yw9W=G_yRAwenT_qF@Rq5zQQX%{0ywA^AmoW$NZ15bCaxIbt8&k`1=!c)o|d2!A3e zqzKyKf-8VP_w_VLqGn*v1CIxuB$BIG-NBBEZ7b^-VDQ2_iAjyLIoP9qWYrC~8}0%M z!p5x!IFP@{(g>pyPGRHLu9;$`j!uWRt*}mFauSngI7=awK_-V>7TF?-Op7#Fxj@~@f0S)|3lI;RJoNwo002ovPDHLkV1f&YR6+m% delta 2764 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 SNbvmt0000tfz04d z5ND#uL}UOKsG$?|U_w#{`%xqmRpLMXe*QmO_&wp}c@7}UGW=GOB!)Au<^>DOi=t@a zS?1L&euEY8e1JEl56|)Y&x5gRP9Ny>M}J>^sLR`h+)e;&=~`u2 zk_;EXoj#Fa1xQJ!4-6T|Ie;nYeX$*2okjb7V>q01;P#3D^zRA)uo0WloW=X#)wYl# zH5?A!uUu8&b^`%1n)Clhg%wcy{`8cps%%THS@eE9`gJ`x#w^11U3Fcjl+w=MX3^Jf z_r2Y^&wigiDnQ~JxEW+R4bY61u}5D@Nv6Zm2lr|jYZ((w0{}t{ejLZ--u1tT)Czb$ Z;0F+Zj;ebT(J%l2002ovPDHLkV1lf>n>GLd delta 295 zcmV+?0oeZZ0@MPKHh&38L_t(YiS3rl4TCTYhJUKw2^(|-q%M#Vkh%b)WCK>nC|Mwq zr7XY(%?Lg4XnDlWp;cQ6pO7E_mw;_iIOhNuW3aS$c~1DS6c=uK)lSd)d|b_#B*50Ryx0Xy`FAnS-03E$pt&|F4Q9Ae3dk zN(dnp;&zcDQuOS<)h@!+S24yI<6O1U;a*X!>sZ(9(HH8wCVT^)A*#y&hCxK4I+!`w tGHl-ifVH!~X&@T0_V_On?Eriq@Blu&jSN|(Mxd;|LiIZ~1v!3lzIAa0RT zrOPeW8wl(gh8-pY6IC8d){FIJO{!rSfWGgUTido*JI}>zc(GL>ga^OnxtN#VU zsNVh^Y|HL(+>PVzd#&mK!g2D75u2<{_Fn)IGXuE&CBUgG1AjiCi^{V|)#b{7_a30@ zrkEI`5o3O8_-me}yC`sUWK}&LfNt_eq9B44GQ7XYOV1)BVkDP1#t5@6^4_bes!lt% zdG3gutW}rWR8A)VIZImCbxNt6;XWYQJPG7*xB@gyQ$Efoh`jVHy0rDbXa)RXU!;(A VN+wV)2LJ#700>D%PDHLkV1gfwd*uKC delta 245 zcmV;zh`)TdY z03f`YdwioEc#9MB%BbWNt)r4j;xjx{CzL80NJA z0ODd*sKE?YiO_zLkDf(jMwU}Nd6r!yBJS?)n^UEBikw1l&TVQF$?hd(=9E%B!ag8{ vJPC|w11RtQOzju>=vnmsPWvf30lT^Z3j}rbqo)Y`00000NkvXXu0mjf2A6Kj diff --git a/test/reference/recordflip-paint-alpha-solid-clip.ref.png b/test/reference/recordflip-paint-alpha-solid-clip.ref.png index 4fb798adcbb73ce18d79328c6e9fc64f870268d5..10dde68c5289f5f61f3b98efd7b4e12fbbe4455e 100644 GIT binary patch delta 245 zcmVSM;_b!{c&MaB_1BHW=w z#UQDr7mZD$I>A?O=Ewx*z>GVTs2C(wdQma>U8NT#wM=%=7&*}@cbwz)z&Rsh-OgYQ kEy+YGIUEfxFxgA=0ZF-NF)$*~rT_o{07*qoM6N<$f{GAlRsaA1 diff --git a/test/reference/recordflip-paint-alpha.ref.png b/test/reference/recordflip-paint-alpha.ref.png index 7e48cc2bdcc225c0f5f0bc353d1bee630353bcd5..599acfba27d64492ba3743c3a31016261cbae313 100644 GIT binary patch delta 211 zcmV;^04)FV0f7RLHh;EBL_t(YiS1U~4Z|P|JgV+NHi1#dB)}x`CJ~#!CjFtbCD25X z5JKX<(Ao0g2NrDKcL3H}{6cG;G535PXbdK$ym*&;KFu?j0{sP8?HzEwWsGwU0E|hD z5F(wGSH(EvmuL!{qPmOLHDpYjnXf5|a|HlcXeq{Np24$bFibERBOs#X4Tnz#1S-ZE zzsdb}(Z+ek{NF|1`(m8&OVsZjc%?FiLI41w#PCC(j+pPmP!Ve9(zoC-{`!b)L1hYe{NZlCx8ECQ+|9&xIBe+`y_kyZlS||bz!YICHZcw z6%3D%i{44_Uq*K>bK57t%Vl<{O2xap8^*osd}>FxEE5+5LByDtn53j{T`}oM!Q5vq z_bAKh(Vnfbv9a0N*)C5>`3jirR*liqR zkx@`k(A-RQc7`*&j8H<7<$6Ryf^~Y2$ZhbQ6obL^^Z93n!LMrzr6&>c39&CKHwrFOLWw{MA&k&$Hb^4qu1h};(MoSd8|JRWy~Y*j=F4i-*M zDjLkLeXXvpzITyC8W0E+@uKPJkx=sxB2h$cDJcmclmGCn?e*ZJ(CCEk+bMAu0s@BL zN#lvxRB-XbhuEkn(Z!;>cR$Y0&wuW2^$Ci068YooEOgFv0zP_ere`i>5 zumQ*2)7A9=4tFCfOS-WUL?Ar-AJcS+3GTWz7+OI2=C&bj&w9Q%g*{_H-YI4)l|{vm?&&&ru~b>V(~1x%)MVxmonr#($h_VLjG9B^zws5#KxlMeTAcaMKd4hw?= z{(*sk1VV+7+5j< zz;e1wCc}UkoH|Un6qlEm7tx#)8d`Pl-avoXAx43I ztt6n!P=Vgm*0xt&o!ilI!qzrv>80`h+dP{9eWbFoG5|b$^r*73GP*G}f;K16?96Ix z1Xm6>B2G7qLwQgD>Khs&#ck^9>hykJoMw^>H7*Xy91ISB| z>+up#6I52)()jqeKNuSu zn}Mh2K#u0Vqma4#_3Tr{Ut^MJw3Osz062B(l#VJK0K4BrDXXYlzI=H%>=~rd+W*+- zjI6Ie_N=9SnxQ-B&qVza5D+lOX({Dlk2vjggMhbGp`o*wYc zaFKOLNQmTV3RJ^~)m1e$HGZdhn;Vn@9Gegn1guL(ndv1ks~hMrP*x!U7FUOk}ZGgL9upMn?F#dbbB>Z``;+A-4wQUoeZLP;@aE^CL$V zmzJb5*-jvNdlSMV98epRb?a!rUB`a}`xphzg1@ zg~oILHbU9i*>Sg>oSaNNi)YrpPESu~W@aj87@C+c9rVHE@7ubvb(yR)NfvSbJcmy2 zSzaaw2HxG4C@bNtux4g|F_AD=cXw#t)`wRQwl+5fLqjUc%1GFo7@n!A>7G4%&YwT; zgFA-BBK#l^2y-oPxccg9V_Vz8K4Lll#jYqeWG#r56bj`*U}s@zshW~f$dSEM;zgN^ z3bNgd^IQ%cI@A(T#%60mE*FarvE7CQf{u<30DwquWo30Zu*2WqAB)48TUaRV-fe(H zNTt%(uU~t3cm#E&svrz?_;MaE(btz#pqI;?dyWWK`ut#U}&fj+l?9@FaPwZsij3Om7YWz85kItnW?h8>c*f9 zr2H*+t$z9Zha3T*#1k@zp04gV${d25!=eJw&Qfnc^Z1my4%~9V?Gbn_MXbbGx+8WeSXvn6gr+*7m<@$?- zLMc=6xpNRoAz>xAuA!kpF+*YFy7)B7vXI01d6~u{G@iq;|K3=Yyl<30Afl~b>;r#l f*ZzW-dKWpPmv&2x5}kT=5P;-*+SBnq{$koc0t`%L delta 2199 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 delta 5602 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