From 5d0d0f4af2ada74d0ec7fdd5d9d6d8f7b1032dc7 Mon Sep 17 00:00:00 2001 From: Michael Brasser Date: Thu, 5 Jan 2012 09:58:47 +1000 Subject: [PATCH] Document new Path elements. Change-Id: Ic1e2aa7da63a7d9e12357a609fc52b3913f14f28 Reviewed-by: Bea Lam --- doc/src/declarative/elements.qdoc | 3 + doc/src/declarative/whatsnew.qdoc | 2 + doc/src/images/declarative-arcdirection.png | Bin 0 -> 8422 bytes doc/src/images/declarative-arcradius.png | Bin 0 -> 4535 bytes doc/src/images/declarative-largearc.png | Bin 0 -> 8340 bytes doc/src/images/declarative-patharc.png | Bin 0 -> 4827 bytes doc/src/images/declarative-pathcurve.png | Bin 0 -> 6092 bytes doc/src/images/declarative-pathsvg.png | Bin 0 -> 4233 bytes doc/src/snippets/declarative/path/arcdirection.qml | 51 ++++ doc/src/snippets/declarative/path/arcradius.qml | 63 +++++ doc/src/snippets/declarative/path/basicarc.qml | 52 ++++ doc/src/snippets/declarative/path/basiccurve.qml | 63 +++++ doc/src/snippets/declarative/path/largearc.qml | 51 ++++ src/quick/util/qdeclarativepath.cpp | 269 +++++++++++++++++++- tests/auto/qtquick2/examples/tst_examples.cpp | 1 + 15 files changed, 549 insertions(+), 6 deletions(-) create mode 100644 doc/src/images/declarative-arcdirection.png create mode 100644 doc/src/images/declarative-arcradius.png create mode 100644 doc/src/images/declarative-largearc.png create mode 100644 doc/src/images/declarative-patharc.png create mode 100644 doc/src/images/declarative-pathcurve.png create mode 100644 doc/src/images/declarative-pathsvg.png create mode 100644 doc/src/snippets/declarative/path/arcdirection.qml create mode 100644 doc/src/snippets/declarative/path/arcradius.qml create mode 100644 doc/src/snippets/declarative/path/basicarc.qml create mode 100644 doc/src/snippets/declarative/path/basiccurve.qml create mode 100644 doc/src/snippets/declarative/path/largearc.qml diff --git a/doc/src/declarative/elements.qdoc b/doc/src/declarative/elements.qdoc index 5cacd86..483f221 100644 --- a/doc/src/declarative/elements.qdoc +++ b/doc/src/declarative/elements.qdoc @@ -158,6 +158,9 @@ Elements that animate properties based on data types \o \l {PathLine} - Defines a line in \l {Path} \o \l {PathQuad} - Defines a quadratic Bezier curve in a \l {Path} \o \l {PathCubic} - Defines a cubic Bezier curve in a \l {Path} +\o \l {PathArc} - Defines an arc in a \l {Path} +\o \l {PathCurve} - Defines a point on a Catmull-Rom curve in a \l {Path} +\o \l {PathSvg} - Defines a sub-path specified as a SVG path data string in a \l {Path} \o \l {PathAttribute} - Allows the setting of attributes along a \l {Path} \o \l {PathPercent} - Modifies the item distribution along a \l {Path} \endlist diff --git a/doc/src/declarative/whatsnew.qdoc b/doc/src/declarative/whatsnew.qdoc index ef23d15..554ca6e 100644 --- a/doc/src/declarative/whatsnew.qdoc +++ b/doc/src/declarative/whatsnew.qdoc @@ -143,6 +143,8 @@ A new property type ("var") has been introduced which obsoletes "variant" proper Properties of this type are equivalent to regular JavaScript variables. See the documentation on \l{QML Basic Types} for more information about "var" properties. +New elements have been added for contructing paths: PathArc, PathCurve, PathSvg. + \section2 QtQuick 1 is now a separate library and module Writing C++ applications using QtQuick 1 specific API, i.e. QDeclarativeView or QDeclarativeItem diff --git a/doc/src/images/declarative-arcdirection.png b/doc/src/images/declarative-arcdirection.png new file mode 100644 index 0000000000000000000000000000000000000000..28f4dc2e51e2aeca5770cd2912b6ef078ee55896 GIT binary patch literal 8422 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 Mr)8+wqyc^Qe^%>rasU7T literal 0 HcmV?d00001 diff --git a/doc/src/images/declarative-largearc.png b/doc/src/images/declarative-largearc.png new file mode 100644 index 0000000000000000000000000000000000000000..9bb94b362ee5388e4d5859ae94592a1aa7ea5e75 GIT binary patch literal 8340 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 Aw*UYD literal 0 HcmV?d00001 diff --git a/doc/src/images/declarative-patharc.png b/doc/src/images/declarative-patharc.png new file mode 100644 index 0000000000000000000000000000000000000000..81c9b803e5e5d801aec80676b2b89edaa7c8b554 GIT binary patch literal 4827 zcma)8_d6R7(2t1Kd=VotYf~d;QBfHb6jiNRv?NAq@7mSYD78~9 zs+6KetQN2LdEP(Z{o(GO=bpR!eD3af?zt3GV_o`doYw#V0KL8*()`N4|6id6UTFap zoWn9g&zWF6s5!bb)OjAl(`1sYT8WgznYE0g;K zNs?heFo+AJO0o1pHzuo4Pr_r^hp?+Bc-i@Qemv%j*&u z0!&S)_uD-a6We-nFR?!4Q)u`~k1I^#r@b*u;(|-M3mkA`-`U2OQ~h~vL)cyqw>j=+ z)^5|BP*(OQ!y}fNq@+WAhL6*c&re5E73{ybhVyHFRFNJUkA1!h+KK=8$t3h5gYxk+ zG6}@ib3el<@NeFY>@{J+JUT{G$N9b7>-*Ggl7YTjesgkxXosF({`W$Ez8y1ikBPLN zRM~wL2`J(NOvE$F6#xUBso)yc5k4U*0la>;!{bbTt1OehjNhlEPQShx?t_SKuOg(p@%HjCOYrPZ%}j`dt4#O3$Q;lTCTKn%&csuL@8Z1MnT3JuJj%%47Kn1(FYIsRt9KP$;4QFH72!&L>{bkJ9lSFDQYwp1NKWs7C?JqT25jG5yb= zm!Y2POI$=fuYCNg?@Akhuit^K|JBCx%K&*Eo5@f(KKA@W@ktZ%BtaAc#UozNI>5b*9A=D0!%nE?3FJ&qW&$d9Fh2QruEf zt>&%L#m~_j_8YQ?@@EoBkImj~xcJE2y{ja`^E6Rx$P&$fHg=J6(UD=vXGFoRui+D$ z`XbPR^(k|zzZHKw`fxSV+)lebJoepB$@V4B7{hv|>++=kV5=92i4;yUB7t@Ui=NmF zy;%9WmmS8_4RK0QPg76sNr}xU7Q`^g(<*{ufyr42Q9*9LASPdk2yGzJzYO*{gZ=JZ zAzuM&Ci|3Um`u#Bo)Auaq@WQuAPmi_)*IHd(Q_>~aie=HHJ`|>J;wLw2Cu+z*6!19 zW}>V{SV3VN&UoI~v+`cKYH1W}DV7~8qpc*srR}A?pzVw8gb8E3Fe)jvOry{m);s(W zh{IfV&AS$#w9|x}H3`6=>jEpAybno679@IV#7()A6?b0;$zIZm~NOg3_y^ED{z1QzAD74s7$JwnSbCbyzebj)>fL z#x}kc_wq<;ZH57LKRoxF_kB*8PgnODS)HjI5;YQ46VI>BLLac^vfg1m#ZF_{piW}? zV#?ye;#Q)C76s;&;)@c2xe__!5O#6_8D) zO-5uQr&)R_?6r023|_IOmau~_s#_|%&`2ohozR<@d-b_a7GG7tQQ4;5fCw}<)Jd(% z#ZQ-!^1mlRfieG_d@gYTcvpPa|vEC+AdZHR2lY%WbCkm2Okh)8l0S@vw^O!Zvn zyo1_}@1E^kP*pcAj%iWS*zF@Lp+?K*(S`bTyj$2)4og+({OA1RS z(LvE5HHYr{x@Wsm-*jU*V^n(>V!w|cep|a#(vaX&`2NY@_lLOLCW&II0?<#IBO0@W z8S3i{XOQ3A_hA2Ikhg^d%WqlA%ZoQE2PuA1AgKDtlSHGUPnu}kXnm3HLQ-<_`_4Z; ziMLpF*cc&gkx<>Qwlz&Ek>q!rZ3-jaW3^C+k9Ls)oGjO2(Ml0TYvW#SqXROoo9N1U zso!^gKjYRlrg9gbk!n^w3V-QvFP!Ao>F}@iqzaV$$20IGg;+iwTkeV0_qr>>|m-n#pmzw&29 zQpgY^hwJmB=S|Of8?+jX-BR5T-qx*e{PY(e!LmP9|1 zluzHqHLVDH_)_$bsK)}5l+*aDMQgQhzwh`(zhWp<3jk#ZX0V#lhm-V(o?7zQwc&cyYCvG0!${doliN@1no^>;AFI zfW3Xv{+>g3$AZKLR2aG&TKDyisi&iDPjc%G*Kv2asZ|LqPd*;4=Zm!c`Puh|o_3ml)7qZYP;9zAG+UIbY9Epj zR=Yv!J0%_5yz{TfhHXVU?YMS3I!yN8%64~dbi%VvX@|DoF{kJri_24q5Sw-yA8KQ# z`}ek6AB5MOw-1sndTjrNcufSiZ~}dU@jvyotG5(FX*$?r~SFYgNc40^79!36Zcb+TL6+)-8 zRr(HV)3Bqbo5E){*ABG^w$+WlJF*-x)05xZ#^I%G=+WHr=;M-Si#Cx1UXN;$Z+zWM zMDZMMjP{mZ1ua^tkEc4u80!q|3npoa#OSc0#TuvVX&GOEiJi8kPsa~GlWQz!%w96l zO51DJiB-uGE1h{;ei2-mh(qMC8DonK?TkL#ZJw6h9M|j=h1%Y!P|k3;9I>(`@*YsG zJ*jIC^F98$9_N3ZzGXiA%EkBlPih zEs!m00bVkT##PnV$TysJm|!d{VGBvX5fn9T3?MGd@0I^oWAd6GU7AcsF(B6)VLV}S#cIso*`orZzy_j()$x1czLXR$q$2>TDlm zWzt4P_u?MMVuO)nR%I*zoh}ePr`CfR^bA8CPk%5P(@goBit_pk*$4w-f;)kV0CS=e z{X?Z)Zt^*Ij+X^7gj(YvB^}?4#@vmE!Gf^Y%lg2>nTSXRg9$ETM9WGzZ4`5AX(E>} zNG)9=JTJuxn58fc3P7i1PVa?%X9tGgQNs$qUY5m(HfC$+;4;yPHT%|zmHn<;EMcsI zH>`(-$s?wk((#=<%EZ30Oy47s_Xl_;QL`0ILT4_Xg5OC2n2A=!K$*p4EhX;*Pen{c z`x{W1zGpu*Le4-2IbkrveVj&O(I%TF(gcJ|V8#or2@q9tb)>u@qR`aRCLMLj1~{(` zPP+<~N5>M007B8Sjf%fx{q?O@4a%%B!gzmtE0et>p{d%AP~%~iCLG_MBK%yY5x%%A z8`9s3ldB%=lgu2w^|5NST8F3weOqCx3<}XKc|9n}Vu;P7{H*;;$mMQH+vjvNRZB#g zBDL0uBXBg?d9Kv~9$v(Dy0jA>-905PhBqX{CAO_uWe#;(axO?%A8?RR@|pDf6W?YW ziRE`02Kc*p8uc&v*_o{%;1+5!DTYfDFJy6@==ZVv*U#Icb`@eU-{+xA0hA8-oWW~} zSJ)s-jmf*R`(C;(qPPAjx@5mmGZwhe<&(!>&b|Y^ev4wh-oiXk^eCNx!;!C=7#DE} zY-spk04KE{jjuOVStX&D^Gu4htY@r8q@3zzKXS(BlwSCH6dnxi4LA1xxGwPvi-N`= zapP^*O`OxL%x7tdZd@eJ-HE>${RCW%E_WiaPo_l)CYa^IwmQOCfQolE6=zjW6XQy6 zG00~uL=lJ0#RDZKWxDbcBQj8r13qMCdxE>DiVedy%)+$CiD4C`F?VLg#oQOJ4ubpW zX8yYvHlD08Hp4TO^I>nUmVa46{MH-zUJ%g7BLRBAq;| zVaeH|HRg;r2W%ZFP<%T5Q-nG5s*BKR1O;Wprtrg(}?alRJB_iz|PMe|30D6VT!iYHl`lDQC!QTJX22x_4sNj%jy5C!Pk_D= zQq@5GZ>S}SrJu%qqIZnKw@%4o1N?TP(}7R|cBqOc9?c$UvW&~&dgUlGi2xR?_F;j* zglMeq;WZ!M9@;7f8#ojcvfAlLC$MR$Pbct~N$4}FKhLq9nKz^2+w}V2qt5$AsgF_) z8)rCEUJvP<(@bG7r&<()lVNYK`V+)0e>jG)DG$mB^^QiqT>~AU28SL8{Y}D;$~;>D z(RVs0={@_C!Si~9t7_Kag|fQcH_>uu!qx}Ryj6T>M4vfWckcLE1#NyD(Q|nbh8UMQ z^a%sx!vJF_O3`fKGdlu7B}Axapo~AOuSMS|mG2tO_>TU!xP-~_MO8=u5vBBV%M?%M0l#wa_ytXToJeJ4w$2vy%#l9 z8t%G+##4pGn`qMU;)xfMlcfl`5qqLIeDQ6%SV7TXEFo4IsEG$mAvo^lHXzgProb}& zK!##j#ZV>7Qrm#VWnc?g4T?<|$P#5JjAs+&_8V_V8G?@Hg+Nnd(%8r~DMe!#QsmbO zuar;*AX@UTa5-N5ftM2SQUhrdd~v1WvDz`WZJ-!{9DY$G;z|-q8i6qszE{>AkLC6R zJ+kAOVWPm8^&I)~=aSNQ&#&;eP$>YLd+3)veuL#mI?*l$05uh@A`=5bUcv!_jpTUM zuSKBuD9(^_n!8-iGd|Rk-(QJa9)o4u;*0X5N_}@Rlj1o?@0{0x}4tZ2rA3C z%-H1ELru<9{{HNS)Gu7nlnYSrR^P46>YZFsIBiipL%gt>6g!ieyV{(ZcYHe?SFC%iOk54sFtnOho-Gu9n$DoC zYdoa(imOSv3bEfXV_kR8??X#mOJ{KWrNmLsD*oylYAIqpVoBm8)z@EM#3fL#nb4Xh z?y5K&OBz!e2pRIYnrG7`YU#X7A5R)5bel+}PTfo`N}Ww@Om*SXC^az3Hqxzdst~PM zGYWdApd+9ytJSCNlkT0~!6z@kA+*LzBVf!v!TpH+#3JM29(NAsC*vmgdENad`expx zRv8Nltvdd->u$$Q$DUWzS8Kln^0-c3A<9XZtr~IL;5l_^VzZ!GFOO>4sob^q0#8n#&8uiZV z7!4DP=*kgAQq@$itkzP4j ze5RRG{HrkU!{Yl0OQOo2F|G00%17@=_nvHXZ%^(19E&~^JZlLJJHwobTu)ug-KyVy zB6Py%iPnv#ixz?N!C8A$dMJ9P)pyljtIH-{Cw4GeGVn053cqk=w_kNOavgU*o-&zE z^LpYDI{(UH)4S<=)x>^cYko-8mBL9Foe8OJ!UMX`bhd)kf&>}W8ODfR#CJphBIur& zI>3=>End8LZZ@-PSi%0I<_ zK8|=E0aCE;z}99SK3vjx!T3V1lOl3?^mJ+CPD)7tCcZqRy+43VZxkpX$Odf^of8>G zPZ2UxTtoKnThZMJtIBe6ypuE$6XS1?el9U2UM1%#w!j-6aoGrN1$(Qya6S|jJGNUN z;%_$nWTvNTp$gSlw5V>B2|MdzY!&bK7^#6;4?YQFXQW}Ki;xP<-xzgw8vY{exa&|h z`*2@=Kl8qZK7kAW)WasZ^N?I?tB?h!cI%s(%L>p-^Z?q-ir$<2La*4xA!5}tHFCV@ zUCcUmy@@tl`}u%dK1e8Tx>?`N`n=7)gQYV|G28u3n{2?7^Yg?thI|Z@ zMgEy-Qi9Gam-jcX>zwLBTEkAW${Ow%cahU05d`INM*LFAwPEADk%` zN3Q>sYMJ!(IGd{F%1x~-?JZ3&J(-`GulehAY&`jxbbhUgGQ%R{*F0*md*08byl14$ z|LAz(_{h5B)11IIlnZ(oRJ$l|;AUgd`Lcz_anv>av8hXA=vmV4RW>^N^^>i+CYhMF z>VWz%=`f#zXA9F$YRzq*++DdGj9xIxG0riGGYMQcUbq}Y2EtC2?u1_1W>XF@3(8+^ zKn}-TjqQwW>rJ1X*vIrZKk(I2AN=w9JqKLFIytb3u|c9it1+DgzfUyj^QHLpv~1t! zN8%%}=Y}sACS% z3#~zty9e9yBcJ>K^j|E=eG3=9z%Em58umNZ^`$?i%@_Mya}qZHeq(!9WV&weadf`I zeV63U8;)PeS8>HIX)fub=>?LHv-JZXw>~ESY<}jj%5}G~P`Rr3^{y(c`u2L=HYw7& zfTAEjm?OCUci_D2Y|zV}Ih}`j#91N7Y#Tibp8XoL$$AA01=or%BVH(EiYMpPUKgK~ z?p0n)YmoAhl7?p>8@CAzzJdF`;{85{0MfvK_pw6U@q!^MU%{^Zog9LvM+r866+`-k zgnBK3*iItYIUa!3spcU-X@cqqrb+)qMfK(IP)C3&Ra1l1qX{+SH~(1i9Sif|PXNF} zMx;Ty2H=6wY)C9lRjueB5$8bh z|Bko;;DKOc_^7@$@%R^!v~&VhW&`(?Vf?6y>T!mrtR+eArQQg00Rt%l)Hdkn-K|dm znDy@FbEv{VKarxQxVFg;Vw4_mkZZEHMmRz6eJf;Y^Zqg^_>u<(ybivT77Boyw^|rH zW2?%A5kX>Amvu}-5+tpim}lK(My?{tmab&g&HsuPv4i)i-xp;uUMw(w`6_f}j7wN< zAp>%Q_}{A8xb+X~^_K3ZK{KdnhhcWQg{dE&mbgz0RvF)FAk0G%4QS*&)KeC}jvo#& z&JqMW3_xvQKjPONU6fY&OC@uAX7*w{kRY*n90#9KMnFci?ddRy2MSFC@r8E{AnqZh zDsQhJ(hJKfnLmPsqmiV*7rHCuskCI4D)jYl*kQt4%L7z3Ha#3wJ8~-wz;lq*thVo^ zA06&vL7@o%rQ20h{Z4{sM8!PhgD(Kj5$Ns3WhEy?YJYFkuO1E^FX-uk^kpf1g;aXdne_EJ;bS zDYe;WI5!46H*6Rhg@m}C2RGwA9C4qZ$GP{swSoOsQ}UcVX7fRI%nk~oCt-SR$bX7k zrat{ubz(haiuF+(CFH$!VUC%ZWt#h8Ak`FI$Oybp7mE z2(5IKu4aJ!Dv1FLZ0ijtehkgW ztADUEKmVssh`8BTBYKztlTb}Ef~prDMwmCsrCV@QJEigrPs02FR62M`2-Nq=m@B2lc}RWAG1ad*{bjea!Do?u7qTrtBEX z8gCpDHKL(n%Z1L<`ML|XS5kPp6nNz8$CkJsmCyIRF3OerDGcFm4HDTzZerYswFiP# zv|fx_s-_zNqobWnGR}f^J9FR=`ssI%{7(*%)kXNGdeQy+J;i?W$R7qeFSyS;$$^Fcy_T)=V{x=7 z90=Zv`I2W%1@kuZTX(3b!uA@P_Hq)rEz5q|`-j1BD@`>Wc^xT!#-%bPUM-Xvmaohc zY8{e;J>?&ex0NO6+MQX**5Ok3`bG#PvGYSN312yk1$ZVrQ^k zP)lEEtNv?mYwE7}#DQ9hJ$z!8l!*hd~?t@H@{Ff2xlPMO< z5FMu{qo-G);kQ*COLvkhJM83VyF4io^ z91^?snOC0BjD)ZutJ^t?YVhqV3@eyc1;zOXG5v^)#fb|p;1X``lIlg~LBCqT-RR`0 z+;2^(0+RMNf0nVzb|2;Hn?{ToN74Zm#Qw-+p~QS+mzKQMgw67*Y)PPMVDVK*SO}-N zONb8ZzoArZDRJZVZR6A~)-e+MPRlBio>c@qqEGCr&WMBjYoYQ&`L`kqO zf@4f$@mu!Ad+3rZ7ZN*15M4i4XR{YKyv&$xw{>ZZn?m*1pqI9op7kLTQD(bIPy`n? zrx|K`Br0aXTGQ0^qPjLuv}gU3Y-)}6+tQ*q?UmeH0V({C9o@`C|c zLHzBBhat_PrG_^Q?O$Kd{Y-&oJh-ck3~;qlEnjr3{2Qfae*U(MJfYpCPN=km1Z%2c z-+_t3+6a;*f3a|_Gy$aus*TS_Kr%8_gUN0AiR++3b2>-Q16a`;ycD^n{A8Y{@$Z`d zzyxjMmaB3?e(&ybD{W<-Of%*Zeu)lZV<@yn((O?r%=J&SbsmJ!uQez{I@=3GzD=u* zg(5=A2o8BiRuhNVj64Hk-zO7RVXd~l2|Un~o6&|>Bujt?!;+*t6xl4$2hA(<-e4>j z84cH7th0%OK+}+p=;wU<7%2Dbsrkq3tg@KuGBHBwr!i1L*L)*lGKy|)?;?K-dnj;r zSE7Af`(2%B<<4deE5iJM-HXiS2xV{?m(?L&awL~b6MkLp~;hS+{@FdQ$t69?O zn}>UvMqZ+1)JZ?xOxx_{HK1%l1$)Z3Jhx=BQA zEmw=*h9lxz_mURu*Fczv@F209s_K`5QJNfQ*kXHo zaa@{!xH{T2-l_dhmPbO2X}gxAwFvH`epg#0jaL!>-b~4PGPao8to=ZOTI9&l53w*7 z55Rq7KWtb6s)WedIEE>l_@QLC!u*8!@zCP##~N!L+nE*B?-I6*y*E|}?!FgZ{glN+ zZ^*NqTz_me;_4f>0Po$dO&^(VM!!SCKoCSqVR)K!`n0!IS-7SAW#m038ZOA83z z;}p(5q%p6;{)9{^h;+!qk&!yV7&h@e=u>WTry{T{qHvdXsPL|)~MJ;{U7OQ B+8F=< literal 0 HcmV?d00001 diff --git a/doc/src/images/declarative-pathsvg.png b/doc/src/images/declarative-pathsvg.png new file mode 100644 index 0000000000000000000000000000000000000000..949149e722cf4907f095b466d0b92e079eaf7a4e GIT binary patch literal 4233 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 literal 0 HcmV?d00001 diff --git a/doc/src/snippets/declarative/path/arcdirection.qml b/doc/src/snippets/declarative/path/arcdirection.qml new file mode 100644 index 0000000..a3e4156 --- /dev/null +++ b/doc/src/snippets/declarative/path/arcdirection.qml @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +//![0] +Path { + startX: 50; startY: 50 + + PathArc { + x: 150; y: 50 + radiusX: 75; radiusY: 50 + } +} +//![0] diff --git a/doc/src/snippets/declarative/path/arcradius.qml b/doc/src/snippets/declarative/path/arcradius.qml new file mode 100644 index 0000000..d486366 --- /dev/null +++ b/doc/src/snippets/declarative/path/arcradius.qml @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +//![0] +Path { + startX: 0; startY: 100 + + PathArc { + relativeX: 50; y: 100 + radiusX: 25; radiusY: 15 + } + PathArc { + relativeX: 50; y: 100 + radiusX: 25; radiusY: 25 + } + PathArc { + relativeX: 50; y: 100 + radiusX: 25; radiusY: 50 + } + PathArc { + relativeX: 50; y: 100 + radiusX: 50; radiusY: 100 + } +} +//![0] diff --git a/doc/src/snippets/declarative/path/basicarc.qml b/doc/src/snippets/declarative/path/basicarc.qml new file mode 100644 index 0000000..0002d26 --- /dev/null +++ b/doc/src/snippets/declarative/path/basicarc.qml @@ -0,0 +1,52 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +//![0] +Path { + startX: 100; startY: 0 + + PathArc { + x: 0; y: 100 + radiusX: 100; radiusY: 100 + useLargeArc: true + } +} +//![0] diff --git a/doc/src/snippets/declarative/path/basiccurve.qml b/doc/src/snippets/declarative/path/basiccurve.qml new file mode 100644 index 0000000..c2dd85f --- /dev/null +++ b/doc/src/snippets/declarative/path/basiccurve.qml @@ -0,0 +1,63 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +//![0] +import QtQuick 2.0 + +Canvas { + width: 400; height: 200 + + Path { + id: myPath + startX: 0; startY: 100 + + PathCurve { x: 75; y: 75 } + PathCurve { x: 200; y: 150 } + PathCurve { x: 325; y: 25 } + PathCurve { x: 400; y: 100 } + } + + onPaint: { + context.strokeStyle = Qt.rgba(.4,.6,.8); + context.path = myPath; + context.stroke(); + } +} +//![0] diff --git a/doc/src/snippets/declarative/path/largearc.qml b/doc/src/snippets/declarative/path/largearc.qml new file mode 100644 index 0000000..81b05f9 --- /dev/null +++ b/doc/src/snippets/declarative/path/largearc.qml @@ -0,0 +1,51 @@ +/**************************************************************************** +** +** Copyright (C) 2012 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the documentation of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:BSD$ +** You may use this file under the terms of the BSD license as follows: +** +** "Redistribution and use in source and binary forms, with or without +** modification, are permitted provided that the following conditions are +** met: +** * Redistributions of source code must retain the above copyright +** notice, this list of conditions and the following disclaimer. +** * Redistributions in binary form must reproduce the above copyright +** notice, this list of conditions and the following disclaimer in +** the documentation and/or other materials provided with the +** distribution. +** * Neither the name of Nokia Corporation and its Subsidiary(-ies) nor +** the names of its contributors may be used to endorse or promote +** products derived from this software without specific prior written +** permission. +** +** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT +** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." +** $QT_END_LICENSE$ +** +****************************************************************************/ + +import QtQuick 2.0 +//![0] +Path { + startX: 0; startY: 100 + PathArc { + x: 100; y: 200 + radiusX: 100; radiusY: 100 + direction: PathArc.Clockwise + } +} +//![0] diff --git a/src/quick/util/qdeclarativepath.cpp b/src/quick/util/qdeclarativepath.cpp index 2ba7c37..a4f4591 100644 --- a/src/quick/util/qdeclarativepath.cpp +++ b/src/quick/util/qdeclarativepath.cpp @@ -61,7 +61,7 @@ QT_BEGIN_NAMESPACE This type is the base for all path types. It cannot be instantiated. - \sa Path, PathAttribute, PathPercent, PathLine, PathQuad, PathCubic + \sa Path, PathAttribute, PathPercent, PathLine, PathQuad, PathCubic, PathArc, PathCurve, PathSvg */ /*! @@ -71,7 +71,7 @@ QT_BEGIN_NAMESPACE \brief A Path object defines a path for use by \l PathView. A Path is composed of one or more path segments - PathLine, PathQuad, - PathCubic. + PathCubic, PathArc, PathCurve, PathSvg. The spacing of the items along the Path can be adjusted via a PathPercent object. @@ -79,7 +79,7 @@ QT_BEGIN_NAMESPACE PathAttribute allows named attributes with values to be defined along the path. - \sa PathView, PathAttribute, PathPercent, PathLine, PathQuad, PathCubic + \sa PathView, PathAttribute, PathPercent, PathLine, PathQuad, PathCubic, PathArc, PathCurve, PathSvg */ QDeclarativePath::QDeclarativePath(QObject *parent) : QObject(*(new QDeclarativePathPrivate), parent) @@ -174,6 +174,9 @@ bool QDeclarativePath::hasEnd() const \i \l PathLine - a straight line to a given position. \i \l PathQuad - a quadratic Bezier curve to a given position with a control point. \i \l PathCubic - a cubic Bezier curve to a given position with two control points. + \i \l PathArc - an arc to a given position with a radius. + \i \l PathSvg - a path specified as an SVG path data string. + \i \l PathCurve - a point on a Catmull-Rom curve. \i \l PathAttribute - an attribute at a given position in the path. \i \l PathPercent - a way to spread out items along various segments of the path. \endlist @@ -889,7 +892,7 @@ void QDeclarativePathAttribute::setValue(qreal value) } \endqml - \sa Path, PathQuad, PathCubic + \sa Path, PathQuad, PathCubic, PathArc, PathCurve, PathSvg */ /*! @@ -897,6 +900,23 @@ void QDeclarativePathAttribute::setValue(qreal value) \qmlproperty real QtQuick2::PathLine::y Defines the end point of the line. + + \sa relativeX, relativeY +*/ + +/*! + \qmlproperty real QtQuick2::PathLine::relativeX + \qmlproperty real QtQuick2::PathLine::relativeY + + Defines the end point of the line relative to its start. + + If both a relative and absolute end position are specified for a single axis, the relative + position will be used. + + Relative and absolute positions can be mixed, for example it is valid to set a relative x + and an absolute y. + + \sa x, y */ inline QPointF positionForCurve(const QDeclarativePathData &data, const QPointF &prevPoint) @@ -933,7 +953,7 @@ void QDeclarativePathLine::addToPath(QPainterPath &path, const QDeclarativePathD \endqml \endtable - \sa Path, PathCubic, PathLine + \sa Path, PathCubic, PathLine, PathArc, PathCurve, PathSvg */ /*! @@ -941,6 +961,23 @@ void QDeclarativePathLine::addToPath(QPainterPath &path, const QDeclarativePathD \qmlproperty real QtQuick2::PathQuad::y Defines the end point of the curve. + + \sa relativeX, relativeY +*/ + +/*! + \qmlproperty real QtQuick2::PathQuad::relativeX + \qmlproperty real QtQuick2::PathQuad::relativeY + + Defines the end point of the curve relative to its start. + + If both a relative and absolute end position are specified for a single axis, the relative + position will be used. + + Relative and absolute positions can be mixed, for example it is valid to set a relative x + and an absolute y. + + \sa x, y */ /*! @@ -985,6 +1022,21 @@ void QDeclarativePathQuad::setControlY(qreal y) } } +/*! + \qmlproperty real QtQuick2::PathCubic::relativeControlX + \qmlproperty real QtQuick2::PathCubic::relativeControlY + + Defines the position of the control point relative to the curve's start. + + If both a relative and absolute control position are specified for a single axis, the relative + position will be used. + + Relative and absolute positions can be mixed, for example it is valid to set a relative control x + and an absolute control y. + + \sa controlX, controlY +*/ + qreal QDeclarativePathQuad::relativeControlX() const { return _relativeControlX; @@ -1056,7 +1108,7 @@ void QDeclarativePathQuad::addToPath(QPainterPath &path, const QDeclarativePathD \endqml \endtable - \sa Path, PathQuad, PathLine + \sa Path, PathQuad, PathLine, PathArc, PathCurve, PathSvg */ /*! @@ -1064,6 +1116,23 @@ void QDeclarativePathQuad::addToPath(QPainterPath &path, const QDeclarativePathD \qmlproperty real QtQuick2::PathCubic::y Defines the end point of the curve. + + \sa relativeX, relativeY +*/ + +/*! + \qmlproperty real QtQuick2::PathCubic::relativeX + \qmlproperty real QtQuick2::PathCubic::relativeY + + Defines the end point of the curve relative to its start. + + If both a relative and absolute end position are specified for a single axis, the relative + position will be used. + + Relative and absolute positions can be mixed, for example it is valid to set a relative x + and an absolute y. + + \sa x, y */ /*! @@ -1134,6 +1203,23 @@ void QDeclarativePathCubic::setControl2Y(qreal y) } } +/*! + \qmlproperty real QtQuick2::PathCubic::relativeControl1X + \qmlproperty real QtQuick2::PathCubic::relativeControl1Y + \qmlproperty real QtQuick2::PathCubic::relativeControl2X + \qmlproperty real QtQuick2::PathCubic::relativeControl2Y + + Defines the positions of the control points relative to the curve's start. + + If both a relative and absolute control position are specified for a control point's axis, the relative + position will be used. + + Relative and absolute positions can be mixed, for example it is valid to set a relative control1 x + and an absolute control1 y. + + \sa control1X, control1Y, control2X, control2Y +*/ + qreal QDeclarativePathCubic::relativeControl1X() const { return _relativeControl1X; @@ -1222,6 +1308,49 @@ void QDeclarativePathCubic::addToPath(QPainterPath &path, const QDeclarativePath /****************************************************************************/ +/*! + \qmlclass PathCurve QDeclarativePathCurve + \inqmlmodule QtQuick 2 + \ingroup qml-view-elements + \brief The PathCurve defines a point on a Catmull-Rom curve. + + PathCurve provides an easy way to specify a curve passing directly through a set of points. + Typically multiple PathCurves are used in a series, as the following example demonstrates: + + \snippet doc/src/snippets/declarative/path/basiccurve.qml 0 + + This example produces the following path (with the starting point and PathCurve points + highlighted in red): + + \image declarative-pathcurve.png + + \sa Path, PathLine, PathQuad, PathCubic, PathArc, PathSvg +*/ + +/*! + \qmlproperty real QtQuick2::PathCurve::x + \qmlproperty real QtQuick2::PathCurve::y + + Defines the end point of the curve. + + \sa relativeX, relativeY +*/ + +/*! + \qmlproperty real QtQuick2::PathCurve::relativeX + \qmlproperty real QtQuick2::PathCurve::relativeY + + Defines the end point of the curve relative to its start. + + If both a relative and absolute end position are specified for a single axis, the relative + position will be used. + + Relative and absolute positions can be mixed, for example it is valid to set a relative x + and an absolute y. + + \sa x, y +*/ + inline QPointF previousPathPosition(const QPainterPath &path) { int count = path.elementCount(); @@ -1294,6 +1423,67 @@ void QDeclarativePathCatmullRomCurve::addToPath(QPainterPath &path, const QDecla /****************************************************************************/ +/*! + \qmlclass PathArc QDeclarativePathArc + \inqmlmodule QtQuick 2 + \ingroup qml-view-elements + \brief The PathArc defines an arc with the given radius. + + PathArc provides a simple way of specifying an arc that ends at a given position + and uses the specified radius. It is modeled after the SVG elliptical arc command. + + The following QML produces the path shown below: + \table + \row + \o \image declarative-patharc.png + \o \snippet doc/src/snippets/declarative/path/basicarc.qml 0 + \endtable + + Note that a single PathArc cannot be used to specify a circle. Instead, you can + use two PathArc elements, each specifying half of the circle. + + \sa Path, PathLine, PathQuad, PathCubic, PathCurve, PathSvg +*/ + +/*! + \qmlproperty real QtQuick2::PathArc::x + \qmlproperty real QtQuick2::PathArc::y + + Defines the end point of the arc. + + \sa relativeX, relativeY +*/ + +/*! + \qmlproperty real QtQuick2::PathArc::relativeX + \qmlproperty real QtQuick2::PathArc::relativeY + + Defines the end point of the arc relative to its start. + + If both a relative and absolute end position are specified for a single axis, the relative + position will be used. + + Relative and absolute positions can be mixed, for example it is valid to set a relative x + and an absolute y. + + \sa x, y +*/ + +/*! + \qmlproperty real QtQuick2::PathArc::radiusX + \qmlproperty real QtQuick2::PathArc::radiusY + + Defines the radius of the arc. + + The following QML demonstrates how different radius values can be used to change + the shape of the arc: + \table + \row + \o \image declarative-arcradius.png + \o \snippet doc/src/snippets/declarative/path/arcradius.qml 0 + \endtable +*/ + qreal QDeclarativePathArc::radiusX() const { return _radiusX; @@ -1322,6 +1512,25 @@ void QDeclarativePathArc::setRadiusY(qreal radius) emit radiusYChanged(); } +/*! + \qmlproperty bool QtQuick2::PathArc::useLargeArc + Whether to use a large arc as defined by the arc points. + + Given fixed start and end positions, radius, and direction, + there are two possible arcs that can fit the data. useLargeArc + is used to distinguish between these. For example, the following + QML can produce either of the two illustrated arcs below by + changing the value of useLargeArc. + + \table + \row + \o \image declarative-largearc.png + \o \snippet doc/src/snippets/declarative/path/largearc.qml 0 + \endtable + + The default value is false. +*/ + bool QDeclarativePathArc::useLargeArc() const { return _useLargeArc; @@ -1336,6 +1545,23 @@ void QDeclarativePathArc::setUseLargeArc(bool largeArc) emit useLargeArcChanged(); } +/*! + \qmlproperty enum QtQuick2::PathArc::direction + + Defines the direction of the arc. Possible values are + PathArc.Clockwise (default) and PathArc.Counterclockwise. + + The following QML can produce either of the two illustrated arcs below + by changing the value of direction. + \table + \row + \o \image declarative-arcdirection.png + \o \snippet doc/src/snippets/declarative/path/arcdirection.qml 0 + \endtable + + \sa useLargeArc +*/ + QDeclarativePathArc::ArcDirection QDeclarativePathArc::direction() const { return _direction; @@ -1367,6 +1593,37 @@ void QDeclarativePathArc::addToPath(QPainterPath &path, const QDeclarativePathDa /****************************************************************************/ +/*! + \qmlclass PathSvg QDeclarativePathSvg + \inqmlmodule QtQuick 2 + \ingroup qml-view-elements + \brief The PathSvg defines a path using an SVG path data string. + + The following QML produces the path shown below: + \table + \row + \o \image declarative-pathsvg.png + \o + \qml + Path { + startX: 50; startY: 50 + PathSvg { path: "L 150 50 L 100 150 z" } + } + \endqml + \endtable + + \sa Path, PathLine, PathQuad, PathCubic, PathArc, PathCurve +*/ + +/*! + \qmlproperty string QtQuick2::PathSvg::path + + The SVG path data string specifying the path. + + See \l {http://www.w3.org/TR/SVG/paths.html#PathData}{W3C SVG Path Data} + for more details on this format. +*/ + QString QDeclarativePathSvg::path() const { return _path; diff --git a/tests/auto/qtquick2/examples/tst_examples.cpp b/tests/auto/qtquick2/examples/tst_examples.cpp index 3d9a8ad..fb3bb76 100644 --- a/tests/auto/qtquick2/examples/tst_examples.cpp +++ b/tests/auto/qtquick2/examples/tst_examples.cpp @@ -90,6 +90,7 @@ tst_examples::tst_examples() // Add directories you want excluded here excludedDirs << "examples/declarative/text/fonts"; // QTBUG-21415 + excludedDirs << "doc/src/snippets/declarative/path"; //No root QQuickItem // Not run in QQuickView excludedDirs << "examples/declarative/qtquick1"; -- 1.7.2.5