From b1231e2ef349af1c0b130880603a924ff67b2967 Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Tue, 23 May 2006 10:45:18 -0700 Subject: [PATCH] Codify 1.0 behavior of cairo_set_line_width as a feature, not a bug. Clarify the documentation of cairo_set_line_width to indicate that the value will be interpreted within the user space at the time of the stroke. Also adjust the comments in test/line-width-scale as well as the reference images for that test to match. --- src/cairo.c | 25 ++++++++++++++++----- test/line-width-scale-ps-argb32-ref.png | Bin 1470 -> 1599 bytes test/line-width-scale-ref.png | Bin 4884 -> 6445 bytes test/line-width-scale.c | 28 +++++++++++++----------- 4 files changed, 34 insertions(+), 19 deletions(-) diff --git a/src/cairo.c b/src/cairo.c index 8ec603a52..cf87464e8 100644 --- a/src/cairo.c +++ b/src/cairo.c @@ -802,16 +802,28 @@ cairo_set_fill_rule (cairo_t *cr, cairo_fill_rule_t fill_rule) /** * cairo_set_line_width: * @cr: a #cairo_t - * @width: a line width, as a user-space value + * @width: a line width * * Sets the current line width within the cairo context. The line - * width specifies the diameter of a pen that is circular in - * user space. + * width value specifies the diameter of a pen that is circular in + * user space, (though device-space pen may be an ellipse in general + * due to scaling/shear/rotation of the CTM). + * + * Note: When the description above refers to user space and CTM it + * refers to the user space and CTM in effect at the time of the + * stroking operation, not the user space and CTM in effect at the + * time of the call to cairo_set_line_width(). The simplest usage + * makes both of these spaces identical. That is, if there is no + * change to the CTM between a call to cairo_set_line_with() and the + * stroking operation, then one can just pass user-space values to + * cairo_set_line_width() and ignore this note. * * As with the other stroke parameters, the current line width is * examined by cairo_stroke(), cairo_stroke_extents(), and * cairo_stroke_to_path(), but does not have any effect during path * construction. + * + * The default line width value is 2.0. **/ void cairo_set_line_width (cairo_t *cr, double width) @@ -2591,9 +2603,10 @@ cairo_get_fill_rule (cairo_t *cr) * cairo_get_line_width: * @cr: a cairo context * - * Gets the current line width, as set by cairo_set_line_width(). - * - * Return value: the current line width, in user-space units. + * Return value: the current line width value exactly as set by + * cairo_set_line_width(). Note that the value is unchanged even if + * the CTM has changed between the calls to cairo_set_line_width() and + * cairo_get_line_width(). **/ double cairo_get_line_width (cairo_t *cr) diff --git a/test/line-width-scale-ps-argb32-ref.png b/test/line-width-scale-ps-argb32-ref.png index ab4d5529913244027504a70a5a6d807f10eef61a..2f01fc70843a4fbd53009cbeeda91567f0d516b9 100644 GIT binary patch delta 1517 zcmaKsdpOez7{~owX6HAT;WtyRql-mkN>`WW(iUlEiO`fg#UgQ}He;nILweAbOB*07rc!|I1RI?54DJ?pjsiVQcDcx#d^}^9Ii3IySw3y)aL1T6Pr%rc z37L@C8LeUX zfO8+9$A<0>W%zPpHsGRqryg~glEjEFy3J0Mc#o)h_p+R#y}nMU z608Y6H(e*%^=a;y?!h_YmerdyXl5S2o()r6%S+j%B<*$1mY2sub|0XUSBoh3!wyV~ zp%Jeht8`!#B5yBY(Pa!isQ;Qcf*a68Rw52|2ly?Q!d2k6Wq0eEa>^ME;N}xF3+r~x z>LbNAwt7<*kUDmV0b_aGf}PobR;Hl;`Tx9WDmU4K0t=eNqgtGA;CH4m>kw^9e0-eD zj0*-ED|T8yRa?y{CY6s~uxgfJh4>klrdB~o;E5LcC&mx3%@_$@;fr1}Hwpj@WS6&~ z^Cu#$M5euS8OFvFX91pU#`cZP8EbhvApZS=flu?>-?Vg*9>sa`k!(=;UljgNoQwal z{{Bj;Hiw^?L{C!8HP;?DYi_cx1s0oojZsXAJA$}bou}3quv~0wyd9gJ+uD;V z@a6ZWr0JLYhnf2$MVeac3Wm8~fl8A$4xa5?hRfAB<|uxM#PIY*5rYa5?Bz253z;B` z=NnkIeI&K@j|1kVkwbc_w6xa>U0h%ry9Y{(#|@3(u*bR_@HdxHJBJLvin(2WirQgu=-H@5lko$O^m!SzP&p*-E823KVig**csq)^>Y`QI_1!|o z!dx`+x@XCE{2Ssm+bBh1-uj&MxiFpG+n#vTrJp zpkZUtYdNwh(T)MxHTqtA1t8I=XdT0R6L%!)GPW8fpc(yF#4Big&SkMHaA`o7lh4p|+SXn7!T_{hle&N3(!fGZjhzQhbf@CHRJyRtBE)C+w7xZ9#3qmk zwA|kTl{?xJ*ESBa(qFISYL}LE^WW9&YS&jf=e-$t_igEflc7{aSqxH6d`Jj{1kYrh zzW&k|*l3%d*ty20X#TQUG8^cS!?yShEhtiK&PM}_DQMvg7~w;o5S-0`Ys_A~@vmem z4x*tIbhN50Imkgl;hv<(=92hd)G~ZXh4QvbW_@L#T<kgbC6&kMHll8jb6=>P^4J%mjwsj2a(ppI$N>Sum7wrgRm&gM!yn2-a<}+&* z5{P+uMIh!8hy`HbU6mVX>hTCg0=|BM{kiHUnuWaYQK#gYUtp=*pxbO+B2Mi%=zJ0W zk?a3d6qw|Faw#mivGUi`oU(Yfx`PUijcI+4?*AjSyAgS9tP>NbBgf3(oEsrc@U#2k zVO@7PdiDaWx zs45({o)FH@^hN%w9uoM?Epxs&cS_zMI}%*yf&uz}Ir z%*-2S%MK7di=}GUXziZVc+_x+nimIoP$6$};f{g)DHjtW@r9A9$5ycDepKc#fYb?? zua$^!SLL+LYCpv8=$OKX^Ai^cD=wPA^oHrCMh8~ zcjd5^b7?}yD)SG^jO;0fvvg27w^eIYCUg&9-m}(ow}Ji8V)J{CnicCle9hgc^UbB=kG%1|sJo{h-%&_oh;+1& z52B|IB|(fsp{pSBu>yj)+nQA$P@f2$cMfQvn%wgpU0zjEZ)e!?C4}K1J^G1t?EKzN zgoMsIlm4tN-Jpt->G{A7Xv^~yqP+v{MVq{0c>GPDHcMxaMu@rs5m*JUSsgzLjr=2t G!TB3}W{~Ir diff --git a/test/line-width-scale-ref.png b/test/line-width-scale-ref.png index 9f1975900fa9c03c787eba73e9f4c05beb91197d..c40bce39a67c8c9beb270238d8c3b88c3b6a7600 100644 GIT binary patch literal 6445 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