From 4e1c09c24bc1108ded599835a5fd4ce4ff23bf9e Mon Sep 17 00:00:00 2001 From: jkriege2 Date: Sun, 23 Aug 2020 13:13:53 +0200 Subject: [PATCH] improved arrows in geometric elements: - JKQTPGeoLine, JKQTPGeoPolyLines and JKQTPGeoInfiniteLine support decorators - improved decorator drawing - more decorator types - improved example geometry - added specific example geo_arrows - improved documentation - code cleanup --- doc/dox/examples_and_tutorials.dox | 15 +- doc/dox/jkqtplotter.dox | 2 +- doc/images/JKQTPArrow.png | Bin 929 -> 528 bytes doc/images/JKQTPArrowAndBar.png | Bin 0 -> 547 bytes doc/images/JKQTPArrowAndStop.png | Bin 849 -> 0 bytes doc/images/JKQTPBarDecorator.png | Bin 0 -> 426 bytes doc/images/JKQTPBracketDecorator.png | Bin 697 -> 483 bytes doc/images/JKQTPCircleDecorator.png | Bin 635 -> 562 bytes doc/images/JKQTPDiamondDecorator.png | Bin 0 -> 524 bytes doc/images/JKQTPDiamondDecoratorAndBar.png | Bin 0 -> 569 bytes doc/images/JKQTPDoubleArrow.png | Bin 875 -> 645 bytes doc/images/JKQTPDoubleArrowAndBar.png | Bin 0 -> 723 bytes doc/images/JKQTPDoubleArrowAndStop.png | Bin 937 -> 0 bytes doc/images/JKQTPFilledArrow.png | Bin 652 -> 471 bytes doc/images/JKQTPFilledCircleDecorator.png | Bin 634 -> 501 bytes doc/images/JKQTPFilledDiamondDecorator.png | Bin 0 -> 464 bytes .../JKQTPFilledDiamondDecoratorAndBar.png | Bin 0 -> 515 bytes doc/images/JKQTPFilledDoubleArrow.png | Bin 610 -> 555 bytes doc/images/JKQTPFilledRectangleDecorator.png | Bin 733 -> 498 bytes doc/images/JKQTPFilledTriangleDecorator.png | Bin 746 -> 475 bytes .../JKQTPFilledTriangleDecoratorAndBar.png | Bin 0 -> 555 bytes doc/images/JKQTPGeoLine_HeadTail.png | Bin 0 -> 6088 bytes doc/images/JKQTPHalfBarDecorator.png | Bin 0 -> 392 bytes doc/images/JKQTPHarpoonDecorator.png | Bin 0 -> 422 bytes doc/images/JKQTPHarpoonDecoratorAndBar.png | Bin 0 -> 512 bytes doc/images/JKQTPNoDecorator.png | Bin 0 -> 345 bytes doc/images/JKQTPRectangleDecorator.png | Bin 825 -> 541 bytes doc/images/JKQTPSkewedBarDecorator.png | Bin 0 -> 452 bytes doc/images/JKQTPTriangleDecorator.png | Bin 785 -> 527 bytes doc/images/JKQTPTriangleDecoratorAndBar.png | Bin 0 -> 601 bytes doc/images/JKQTPTriangleDecoratorAndStop.png | Bin 822 -> 0 bytes doc/images/JKQTPVerticalDecorator.png | Bin 560 -> 0 bytes doc/images/geo_arrow_inflines.png | Bin 0 -> 6092 bytes doc/images/geo_arrow_polylines.png | Bin 0 -> 2832 bytes doc/images/geo_arrow_small.png | Bin 13621 -> 13342 bytes doc/images/geo_arrow_tips.png | Bin 0 -> 51486 bytes doc/images/geo_arrow_tipsatlineend.png | Bin 0 -> 6348 bytes doc/images/plot_geoarrows.png | Bin 70849 -> 13626 bytes doc/images/plot_geoinfiniteline.png | Bin 13512 -> 17542 bytes examples/CMakeLists.txt | 1 + examples/README.md | 8 +- examples/geo_arrows/CMakeLists.txt | 29 +++ examples/geo_arrows/README.md | 76 ++++++ examples/geo_arrows/geo_arrows.cpp | 103 ++++++++ examples/geo_arrows/geo_arrows.pro | 27 +++ examples/geo_arrows/geo_arrows_and_lib.pro | 8 + examples/geometric/geometric.cpp | 82 +------ lib/jkqtcommon/jkqtpdrawingtools.cpp | 62 +++-- lib/jkqtcommon/jkqtpdrawingtools.h | 115 +++++++-- lib/jkqtplotter/graphs/jkqtpgeometric.cpp | 221 +++++++++--------- lib/jkqtplotter/graphs/jkqtpgeometric.h | 159 ++++++++----- .../jkqtpgraphsbasestylingmixins.cpp | 59 ++++- .../jkqtpgraphsbasestylingmixins.h | 65 +++++- screenshots/geo_arrows.png | Bin 0 -> 79826 bytes screenshots/geo_arrows_small.png | Bin 0 -> 13951 bytes 55 files changed, 752 insertions(+), 280 deletions(-) create mode 100644 doc/images/JKQTPArrowAndBar.png delete mode 100644 doc/images/JKQTPArrowAndStop.png create mode 100644 doc/images/JKQTPBarDecorator.png create mode 100644 doc/images/JKQTPDiamondDecorator.png create mode 100644 doc/images/JKQTPDiamondDecoratorAndBar.png create mode 100644 doc/images/JKQTPDoubleArrowAndBar.png delete mode 100644 doc/images/JKQTPDoubleArrowAndStop.png create mode 100644 doc/images/JKQTPFilledDiamondDecorator.png create mode 100644 doc/images/JKQTPFilledDiamondDecoratorAndBar.png create mode 100644 doc/images/JKQTPFilledTriangleDecoratorAndBar.png create mode 100644 doc/images/JKQTPGeoLine_HeadTail.png create mode 100644 doc/images/JKQTPHalfBarDecorator.png create mode 100644 doc/images/JKQTPHarpoonDecorator.png create mode 100644 doc/images/JKQTPHarpoonDecoratorAndBar.png create mode 100644 doc/images/JKQTPNoDecorator.png create mode 100644 doc/images/JKQTPSkewedBarDecorator.png create mode 100644 doc/images/JKQTPTriangleDecoratorAndBar.png delete mode 100644 doc/images/JKQTPTriangleDecoratorAndStop.png delete mode 100644 doc/images/JKQTPVerticalDecorator.png create mode 100644 doc/images/geo_arrow_inflines.png create mode 100644 doc/images/geo_arrow_polylines.png create mode 100644 doc/images/geo_arrow_tips.png create mode 100644 doc/images/geo_arrow_tipsatlineend.png create mode 100644 examples/geo_arrows/CMakeLists.txt create mode 100644 examples/geo_arrows/README.md create mode 100644 examples/geo_arrows/geo_arrows.cpp create mode 100644 examples/geo_arrows/geo_arrows.pro create mode 100644 examples/geo_arrows/geo_arrows_and_lib.pro create mode 100644 screenshots/geo_arrows.png create mode 100644 screenshots/geo_arrows_small.png diff --git a/doc/dox/examples_and_tutorials.dox b/doc/dox/examples_and_tutorials.dox index d5fa7a8353..f3c50e856c 100644 --- a/doc/dox/examples_and_tutorials.dox +++ b/doc/dox/examples_and_tutorials.dox @@ -56,9 +56,6 @@ All test-projects are Qt-projects that use qmake to build. You can load them int \image html parsedfunctionplot_small.png \subpage JKQTPlotterParsedFunctionPlot `JKQTPXParsedFunctionLineGraph`
plotting functions with the internal math equation parser/evaluator - \image html geometric_small.png - \subpage JKQTPlotterGeometricGraphs - `JKQTPPlotObject`, `JKQTPGeoArc`, `JKQTPGeoLine`, `JKQTPGeoRectangle`, ... \image html boxplot_small.png \subpage JKQTPlotterBoxplotsGraphs `JKQTPBoxplotVerticalGraph`, `JKQTPBoxplotHorizontalGraph`, ... @@ -68,6 +65,18 @@ All test-projects are Qt-projects that use qmake to build. You can load them int +\subsection jkqtp_extut_geometric Geometric Forms, Arrows, Annotaions ... + + +
Screenshot Description Notes +
\image html geometric_small.png + \subpage JKQTPlotterGeometricGraphs + `JKQTPPlotObject`, `JKQTPGeoArc`, `JKQTPGeoLine`, `JKQTPGeoRectangle`, ... +
\image html geo_arrows_small.png + \subpage JKQTPlotterGeometricArrows + `JKQTPGeoArrow`, ... +
+ \subsection jkqtp_extut_keyaxesstyles Styling the Plot, Keys, Axes, ... diff --git a/doc/dox/jkqtplotter.dox b/doc/dox/jkqtplotter.dox index 60dc74ee15..af030660d0 100644 --- a/doc/dox/jkqtplotter.dox +++ b/doc/dox/jkqtplotter.dox @@ -429,7 +429,7 @@ This group assembles graphs that show their data with symbols and optionally wit -
\image html geo_line_small.png JKQTPGeoLine, JKQTPGeoInfiniteLine, JKQTPGeoPolyLines
\image html geo_arrow_small.png + \image html geo_arrows_small.png JKQTPGeoArrow
\image html geo_rect_small.png diff --git a/doc/images/JKQTPArrow.png b/doc/images/JKQTPArrow.png index f94a4e24f88fbf8b6e27d5c981c2a12a5e540dc6..2677afc59d19ed9aac26d170c1d07a33d01c58ed 100644 GIT binary patch delta 458 zcmV;*0X6=i2ap6IiBL{Q4GJ0x0000DNk~Le0000%0000S2m$~A0I`KdJCPw$e*uR{ zL_t(oN9~rq%Rx~b$K^>qw>GbaDaKn34=+94>PI{J`%=HY=PHqY>>kpLUCXb-0;3pGUWg z?H0!)VlkLZ==Jz~89wfyoLl5@Kr{-o8T~%5$nz10#R826(rLI{O1VY$e|tnCuvjo0 z@`@sFbGXQ@*Wbx4!fx1LP`Fq}BVM`3OC280Ewb4l5P;2w@t9Xs@U+8qZl4di96BAf zxuq0~u-h@6@~%1_a$pZ(l&_Hvb!S_1=zcdVlJLrWP`2YX_07*qoM6N<$f)J$C AT>t<8 delta 862 zcmV-k1EKto1fd5ZiBL{Q4GJ0x0000DNk~Le0000r0000q2m$~A0HxUHf{`Ioe*+jv zL_t(&L+zJKC^cai#}BzBVPPS$P%g0~Qfwqe$$}k1Sy%~Ku|uqsLSkt_vXG4=8)YTg zNQy)$xuoQ>aecmLzW4dwbNRftdFPyCaelp>=6&XwnctcDpP4y6_}#?(?1=f<5%aSn z=4VID??=ABVSOErk7+6<;(o8Mf3UCsSy|xoL0lYMUsGK`1pO{9U}y+3GaWNNPETpA zfbjd_rQF$p=4R(?1)8z(@j-0@!s++&0`v1wS{fvjoa|rD%cD*);qf~^hrvO}$ndM+ zsH}vpE?SO{cRp)ss9%hyet0Rjx1p&i=u##oLPrPe@58|XBqdRWt!i(le+|WW- zw5p{AHaBT`agiFtxb^$`f~_rRY@{QxftRnd)47fz%+68+oiNl+=B{pzo#dd znSsJWItCj#IWRsBcX!kie@I~LnELQAZFO?;w?l@BA10}<57N?T?`%|8!|E!$zf(^L zfw9AH#b|4z3O-9znD|vx(0*~?ZLGT+4i9P7kA%byrwsf`Siwh}1}1)WbZ-ul+=^CTZrYb!0Q^t;g=PV_~X=`YpiV83MbYjQ2 zy`{F^UaF|D_S1|Ve*@p5S?A;=Ra98}X~vGRwnoj%%T!Te=cgGv&eRn7?d?%Tg@vDf z>^S)P$oj9YsG`EHpHb{M_%9v%6B6L_lPW6Q`WeNJQ(Nn7Qcyrs4P5z|#*VYG0cB;* z{{d~x{anP(0z*G{v9rL?&t2>+F!6I8I}5b^A{#r7o?pacG{@2Ni+Jof8h+7;9Y^IC orPy(#e$k5^N9q^7*bxAK09B9&lVsqiHvj+t07*qoM6N<$g2(!%6#xJL diff --git a/doc/images/JKQTPArrowAndBar.png b/doc/images/JKQTPArrowAndBar.png new file mode 100644 index 0000000000000000000000000000000000000000..8ce42bb12b5b65782b5f8761e35942610f8ec4e4 GIT binary patch literal 547 zcmV+;0^I$HP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D01|XXSaefwW^{L9 za%BKVa%E+1b7*gLUR4MM0004+Nklxg3T=9FH`_ zh{xe{QY@lSFK08<>j(s3GC`w(*^F=)?KW?4x69vQKBr0nrT69GfWZK%6g(cT%Np$U za?4_o3Ix<~dUiYX`+TkKcJ9g^n~jD9l(RgUu`c?2FdDg;)yj7&JL3+=+17lo<*#O; z5Nb6{CVZ!|wT?v4>F{8&pjq#*yly5@sX(hmBEir5YQ;O+YSGZEEN?WED3y2(tCy}M zmkY5N#m}_7*GwXx=f&A9r6-a}em9By&GKP0iA;viDikQa!2Om#%`6rKgQ!+99#hSY zuuG9mFPAC3%x#uWG?O!(qS2uEDwi!^WcCo>E!AWuN3h)Qkxr}4Opaj5ex=yQUS(!- lZaY0n^Rav$AIoO}d;tPK-geRaQ)~bL002ovPDHLkV1iBu?Ro$J literal 0 HcmV?d00001 diff --git a/doc/images/JKQTPArrowAndStop.png b/doc/images/JKQTPArrowAndStop.png deleted file mode 100644 index 0b1e3555dbb06d1aeb836a642278917deb24d2e0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 849 zcmV-X1FrmuP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D01|XXSaefwW^{L9 za%BKVa%E+1b7*gLUR4MM0008WNklv-Cb5>V%rCCa)R`9`1oLKj1_5o>w|cF zM0GU`1~fF_<%LBF*z=(ZM??g|!?C)`ims^kL0nuQHy3Vh z7#OhA(%aj3dg8S@9PvTCzM`>FluKC|9v)b<#Lo{sJ-k+jgFY0dr^QYwDL6c2#f^GC!@5K zLltQ7LC}6w2d=ItD8ThKiwgbyaCaA_tqyHI6qc3{9E|8_?Ch{Y(2vR68{OR;+CvW? z#OWzAGT`Nf(NR{2%1Xq=sjOC=d=NA+>gq&!*4N|tStx63B3xWFzWzgdJ8ElrZGwJ2 z6h=ni>50rtoSlh~db^~=_`=BStf=e0J`PRL+Xu0=g{UZmgkWU_gM**ddT;=Lf6+wN zPD+E1<6}%tie0IJ&A7Tke!l3Vjt+5c=<34#z3AkmB(boD1|Pk>;`o&(G!$7`sHi|o z3&zK>xhd|KO-}-UEeVU`Ap_xnfOC_9{ z;jgSAp*|?{G)U;ks5PppkdPouq^9y)8%XeB3Uv)-B`?o>@LM3$2Tc)b;K)c^Ub12v znLcQs(QR^LgTrr;=7R=2mBsKdhxU-;gPNB9H8nLHsz8npnwV2l4qZ`Y)`uhf_wki~ b!w2vICyETLc_xh!00000NkvXXu0mjf_=SCl diff --git a/doc/images/JKQTPBarDecorator.png b/doc/images/JKQTPBarDecorator.png new file mode 100644 index 0000000000000000000000000000000000000000..5072802fba2a3e22e4aea591b60ea891789be6c7 GIT binary patch literal 426 zcmV;b0agBqP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D01|XXSaefwW^{L9 za%BKVa%E+1b7*gLUR4MM0003YNkljCLE9 z3Je35MUS*(=ykDaqT9uEie4|_^z+jvh&LPDZuDB>>Hk)Ly`~cL4u|mc=W|-4Wv^G_ zAARCC9&hc^RQlLB<8)Y zSK`$Qu8U457cnoLUXqyiTrXA3)AS0he1gS1O~2oxUY9K9z5drqs?g_Gq0cMe4xXQX UUEwIqApigX07*qoM6N<$f^ki~c>n+a literal 0 HcmV?d00001 diff --git a/doc/images/JKQTPBracketDecorator.png b/doc/images/JKQTPBracketDecorator.png index 831afd550b639dc35c4ed31aa3b27cea6e5ae9cb..522ab774653b42a25f6ad27f5e58cd3e6d4b4c06 100644 GIT binary patch delta 412 zcmV;N0b~BT1>*xDiBL{Q4GJ0x0000DNk~Le0000x0000U2m$~A039arVUZzHe*s!a zL_t(oNA1D-n`e{s8wSPa)IEv<md+8 zy-q`G0>q!nejlY0;&JoohQmlEk;%{n*4`v`ROa(&wJ@9Ed`72(Xw-2l|DpI>C2z4X zFIX;V$O%-1~)Chmxo6e>%}Q%cIz?426)(q1nWA`U0hkT!@u&yTx#bO66Tj-WOtF zN*)snR`MR=!vU$3SS9ZvR=Ckftdi&A%@dX{)}Jrd9q<7pLjF<%WT%M$0000Ta@0cWyX;B1QQ6zC6mGJKlc`^67?qo~!%x{+{=Fo_+zm@c4*<0aRAv_*gPOz^ja0 zU7@)dZEd){m5guR$Vf7YvNDX0e@f_^_cF4&ia-GC>k@k9lZ*@vArisSk%a!pC%d^p zYpeS3i&yf=2#>|X4G&A`i2^dRv7w5`68fXCjPP3Wa`K9L;!7DDj%~;0V+;D=OBvxn z;aK5t;fQhOI~m#9QpH`XFNf9T0bCWGo~ z^!Bi)>ahCK$>{E{D20M5F4~ z7-B9X`}+umFg-1yHdZpSuz;c>#N!g`VJl+;^!KBx3MVI$c?&nx+?*=#du(Oo@)Au= z=;*-Ron&6%ZsNG%gqxX>f6OZmGIDr`a2Vs`5^_s$D^W8tqS}#7xw|VrJ>w=L%ggHD zH#gOOXm3~hZ*5KG`J5*wKXjzCjKpFnFGocMT3V1wNirYKGIra8tYmDUu`xA~`}%NxE=dinN@UyHsz`%_rn}8b z#!J!JiN;1;Tu4R_+nS}*YH_cuNT`Ry1>u{(Z#+g@{$*bHmwDl@%77;c;D->kp9f+9 O0000bww~N65#UjjRyuOk%{)ybK*({7k zjK{P+vRJ_7BD(uMUEz_{b+?1TfL4pPETa*bhfasKJhHmB+vN7ojV8hAL^@4t9$8&$ zHR$!U7UJ_E5}`GZ9In$T8Vy9FczGcgEqFr&F1hS>5(o_Ua-GenpVdnIe{?!{y~t$9 z4CM2456f@}wHos|ZF!`0J?r=OhJGL0E#1Qjy##9?Kih}{fi$9ch{v7 zv|9N6s8&%fBNT#0gFpZuA9T+*w{R8fCxlC=L;@xgi7>Yt_4-M&9=X<)o1|tFu^4Q& zEB(YH##QL&@gSE&uXiycL2t@$t|xv^Pj~iXIp?Y*KNiN7o3nUaX?`q>>w1k~P-%WF hV&0bAJY1y!_yVbamUrbEIy*IFUgM~qf zMWR@g&EQ|MkdndT&(Asep6=_qPx2}0{kp?F-@W(ryXSo0argtIB;x#IiH8T)*O{AR zVS(LUUS7<)54I(qpIKa_pa91qe>%6OFRArXQS~=ns9> zQNzK3R(^BSgkB_nZSAMo9403j9;UmSV33*`0s(SzG~LG~e^6LRWhIS`f3&sH*T>ix zv$HHOv$4V9A!ld06NiQNlHuU>N1b~C@yAd%G|rKw=p|A zwV_G4zSe@pVkUH9Phxddf2)0QVL~r5Kcs^PyH-Q2yzbP?8tmX0ssI203*TK00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D01|XXSaefwW^{L9 za%BKVa%E+1b7*gLUR4MM0004lNklMMh-fpW! zt2`UvN60lm8Ti(ts#jG6D!UD O0000=G`P)bpf00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D01|XXSaefwW^{L9 za%BKVa%E+1b7*gLUR4MM00057Nklg&{ZokjLCFk|ta5Wkc2q2wCqk&dS%qd7+@8v}#Q$(*vv52oPn9X>4THb;= zz4zB1R4VXzU@+kJ7FSoId9NxbmqWL^Okz&seYop3^EnSE@y7uJ`w-*YWwuIj83^Z~9MAz*T0y zw|cHJySyh8xZMi6%Ixx{PL$0m=qjWAyHtaV_j$Q^pA+C4HUq(48eP+-00000NkvXX Hu0mjf!X^2@ literal 0 HcmV?d00001 diff --git a/doc/images/JKQTPDoubleArrow.png b/doc/images/JKQTPDoubleArrow.png index 7c47f888d99194a29085044bd1e8fec84395a0fe..598fabc033daa8317c58c00b3735bb75d56adc7f 100644 GIT binary patch delta 576 zcmV-G0>Az1289J7iBL{Q4GJ0x0000DNk~Le0000y0000O2m$~A04bvh1(6|Ae*yeS zL_t(oN9~qBNJ3E*hpj|vh!E6lFPs`&1J}TzK{AjA$u^h7MZ`rYPzVgm{DV+57)mtd zP@9Y3Qo7iblY0pof@J-=r+0}brTNO927SEY+I!U9|_93Rt*u`@0fp;puU=_y|?V%Uu+f0PHS7K4El z*~3bOO>S>fytl`fbutWT=2R}@@DNrjG#ZkdnSs%Wu`#T!qTPniN0YG_U;hEQq{X6I zEf-x`K`2B$7mt%Mt94cwZa2k8M||UF{HAnoQFfvN2M3h$`)S7Mq;E(n#Zz4vv~-`M z@9gfwIJxVYfio_trD{UrN>Mx$6; zlOXyI+b(olB0)oTn@mpP>gp}`HBzL1C@RM5rOWT+gb(X=6bd}3k;rOQM6LQ~L1{HXHrt8a+`lozjg4Ha136RE(5H92x$l<>C)Y76Y%Bzv!$ZJgd6^ O0000GOu*14Oy_i*mF-E(g0o?mD1J@)?2Z?C=9`aTuDB?c`S{zI+TS8*VZ z-n4diVQGo*a8y-cejbmH;<_?)f2Xy#hvH&POyK;SPoJMLIEbt)czQymf|V8Gw_ws3&MccUl`82nc|Y5sZxy6ok@J%+BKWmba3OyStH^3MVI4bav)rxBqgD>l@-a4vTb1jc6NMgcvwt%L!Vmj&`wd1^7BOq=|^=ykRlyZ!fBvS zEwZ6{Y->YeqS!JDo2e;$d~kh@_IAF~*eC}7iXODi&M-29oE%Yu*49W)Mn?z6#$ap9 z`}pvH&Q88nUoWO;pd&3xe-vs?6%_~$=1Qb`3=BkB8Rq6h$68+IG@?wuzvmhxrMHE*x#I5b(9^>sD=WpVPmtHTxWM>0 z^77#2#eZO7!F`gFcYFKeCbYH&2M5H)au4h6O)zt_KgNX^- z`1_-zgc~LWKnqlWj*f_q#?1}-``L-w?4O(nty%{M9CPZ(v|Lhgb3FK;I zQlWsSrEyjs9f_M?hW0un1ecfMR2~%~B2ZU{l@%r58%m+(B>92$8}bd}pJ33E!Js9B lK}!aMmJ9|h8NQ_!@B^^r*Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D01|XXSaefwW^{L9 za%BKVa%E+1b7*gLUR4MM0006?Nklzg*UwNzK@v4J0TudWyzWM@Z$r?|MFy`A)QTrQH5Xl`bFoU=1)D+~`4AOHR_{HVLQ zNL-xAWoFXR!Q>>jx1zqjPJche#e|0w7DizqJw2kXcCM`Gv#*ou#Xbygadq zjHI%Xp&@p6#aqRDVuH3d($ZvAU9GM9;46X4-J>H$N2#yZAx}+}XV}`3B^C9Q6uDVa zVr_jRaJml<%+1l;OKGWu*&WWYF|M!0Qgw#TP7)ISNnii!+KOdmL`CVKHa1dFKtu#n zQ<4uwMIU^KRa8iwsRnm^Oiqq8 zxcz;->SkeqnHfE{@J&}K&d<}=C*LRaLOm+l*!8r$%)tR!S!8E(c&JxD=IgrOR^w<+0>%Lc1t^3=GChF~*_4F0~)^$$t zhcI+iD~XK_LPZlpSAFi(A4c#gns`@gK|@H_Nq&_s`~kThpog>Y{+j>*002ovPDHLk FV1nsvMalpG literal 0 HcmV?d00001 diff --git a/doc/images/JKQTPDoubleArrowAndStop.png b/doc/images/JKQTPDoubleArrowAndStop.png deleted file mode 100644 index 084c16d6c37a33cd741c4a4343ef15d9c36dfddf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 937 zcmV;a16KTrP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D01|XXSaefwW^{L9 za%BKVa%E+1b7*gLUR4MM0009ZNklRag9pQhWLqr7j_f^lu=#Y?rFJG{=r2?)*hpQ_jCnGo*Yilaz zGIa8|xj|YQ0s^qKqz}3Zy%@Q>Lsk}id@whsA}-)nj66J`un^wfn4DA*XJaBpo}N%# z3{Ovtjj70cPEN40qS|(1E=Hc8QBeVRcMK1!$QzoPq*`8HRM#Hfi4hJ|T@5!k^!BQV zDH|Km>He)$EQt~7{ro9|wzsQ@5l%fk9QF08YY$e$3^X>19-nV0DM4bQGzJDRG^7t{ z;zKdg(II+ub!Lmi?ZZXAxIk4EVq;ZM1GdCSU!SZWSJ9|jErD*R{qNIv5MP5 zgBan? zOihWu6cmWp?CnVcS68JxXmWH{4OkLmu0}_(xv3^$%KSWhePuScw}^_uj~_Ta71fy; z^}&Z&68rN9p`kKFP>`gkwH52@czjfEc{1>PNKHj)DdOWL5*LTcO8q+gbI;|ER(E*%@kT@b#-%ZLmEtf$MA4eMQ5XQFvzuot?;@!SzDEpm=Cll;rPuyC*E=c^em#!!d{7zTwv|EG|lE4-Uf1OFrN$>mIF5%oI-O-~hjWd z)n}HlU(6H=^N!o!FYZM#-kKP(j$>j5rl%!`Wn~{L5r@SV79@@IOru9z$1$Z4v`^Je*sQO zL_t(oN9~lot^q+9hL?sAf2E2}i;K|;5j8GDtCA>HDn#K1R7zJsr$8$a-t$e)SA1vJ zGB{^;PO?v?n3;WxXD9EBgMUaUZHiFZ6rr>!f|lOxP$-~OLcNaR5bHIrSN`OW1t&co zBb|ohAelrqi%0~;B5E}Z23W0de?D_eU`IXredKb=TaI`fnG8}X&IqjObi0j2!tG6G zzg%)a5UBLwfaw&S4$5WK3aJ~7s(;vSIr$Ug(k@XN)hc>D)okj+w=wBfDxANE5otfs z`5dPcXC@QXU^1q=*lO{n4}T_oJU$ndG@B|z&&X)RJO2Et^sAzhd|vfB zj-B>MXR@`${d8KA6N|OxjInI5RN(g`k-+;qm-qLWoa8K?pSPxsv1X^hEiNJ)<}2D^ zX^FE`t4V2u1^dej*48jLhiX+u+8iHu$zq$o>>nQ-L<&Z+C?j_G%f7$QZ|~|#N}F`G z(+#3j&~LAp+iAbF>%BcGe|y5jUMlffCzE{c4luG)HYg#htDF{R= zsCK%C>+A6O_-49+YTw@G>vwY_rDJ~B>F!bfG8rk|;LCn_iNQe}9!lvFEqkGWu`z6J zI?SIQ4UdnQnL#wl|ITisVR;#$5E=~`a1{-K0G^(tavKe|x6=Iw9n`$LP2X+|@Cmay V283mXbUXk6002ovPDHLkV1iOr8gKvr diff --git a/doc/images/JKQTPFilledCircleDecorator.png b/doc/images/JKQTPFilledCircleDecorator.png index 6a576ab3070b550bc284a486729131969197d744..63323149db6cf86e042c587415b9f546ff28f46d 100644 GIT binary patch delta 430 zcmV;f0a59%Y8TLGg<80S#04~>Zgb004waV65`E8YV)Si4E+bvsW=BstL zqacB3Pb!7kjIA{D&w9OLGC?va673<@>69%t`&%pVEf(}YS}IXZBtoAd-p3C)5Kbrd zMKkqQ+1F@bG{Sm~=M&>G;&BJ@J!Dy{#eTs`jrC`rP^Uw;kcWmss8raee_Wrldh!Vk z28c#cDA3nIv50nCK3qw^vkE?P0J-%`S$>4{400000NkvXX1g=70g2;=@u>b%7 delta 564 zcmV-40?YmN1NsCZiBL{Q4GJ0x0000DNk~Le0000l0000T2m$~A0JZm`U6CPEfAL8~ zK~z{r?UgZ0LQxdQpA?a0ArTto5N&<|p~b}|gb2jN!5Uop3@t7ZMGy_TxCA1BgWo_w zD0Ij{2ZeBP(8V>3O6}h{c!}53tESI#ct6hc?tS|@8yp^DeVxrVH{tgq8bzhT-edCcfc<@5VQmd7D{wdv3gP`- zjLMN$F`XBE+0_*e4zRk)W?Neb1Q3g%S{-JVOk#VR=c~hH!tUx)m&5rv zJRU4B^Xl}u$H%z4L#-y}^q{h%gI0T}gSKiYzrW#cZ^&j54#Vxn(h}#`+v9^sB+zJZ zK6QFc&<+KIVx2)u*Kb-aq|-P%<0@HP_= z;5+F5^Y|!c4nl7m!sX(Nqw%1iK9ov{ITB`IL!6#+lces_^PnxExW5;pa%N*g)a%?K z=}$su7msr{AA_0MOoU-0$FPxO*vK(#3IG5}MNUMnLSTXc C$_K*$ diff --git a/doc/images/JKQTPFilledDiamondDecorator.png b/doc/images/JKQTPFilledDiamondDecorator.png new file mode 100644 index 0000000000000000000000000000000000000000..a7ea0a7f5e65245db2695823377f497024751b52 GIT binary patch literal 464 zcmV;>0WbcEP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D01|XXSaefwW^{L9 za%BKVa%E+1b7*gLUR4MM0003;Nkls^yx&4%|2_jefhl9L?WnEP_N4^biD(~ zB>H{&)~(>JcYVDcW-}a*v__n)&8GATv}G+8>6TJ3Rxdui^%}LBJOL63Y&JBh^ggRU zpPpF1SkSez*Q~o8MkBP_C={eG9QNt+*7MfS`qaExbzixRZWq&O&_1=tRvtbzr}c7? z{~)Zw;p3u>x0Mcpp;Vz<|*J0000Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D01|XXSaefwW^{L9 za%BKVa%E+1b7*gLUR4MM0004cNklklpJ$FIy)*A|I&y~h)O>pv&&<5^@o(7hZ?ov1$fBFn zbc*?$XDP+#n+=*xo~cX*+lZ#+ z^C6c*B*HuOeTYun@fh_wl1bR@+FN`7mWzw7(#?^E^_m|j^hUaYOQ1vowHihv>~^SB z;PLSJ+oD6dS6(jKJ*VI2ClNB4{xjDQL9nI|WcJ9o}Wo;h>os_@@Xj9-sp{CX7Q2bj$e3?d#!y^dZFn+@NW zKn~;e8nqfqC3HGiF4;~d1A~Euf6WH177hoZQBl;3WdG&T%RQlj&Sh95g5G zHc$RU4&(hElL?wlB$I3^&MXf>EvGMVnDVdum9f~8=8~MqH5`V^b+R;@fB7g=<9$9} z_>ET@OIcPb7!0u6u^j5ay&+(fkc8GrPnRR6pL&Oyk54ZG`}CCk?`Oej~ZXM+-`Z=b<%0XVtjow_ZVNa z424iGqu;;PQp{q(7x(a!I`Pvje~pCkboy47VlElex&3CAVkCMz9KMyMn0x-b_dqdz aHNXcNf-G)E>#Irt00005u8I1 ze-P9nZ4pG^BGFcu2>R{0xa3XG(zwCl{qS%cchBAXy?eg*Dp(sdDIzo}A~Y!?WJqZ= zFc{$V6^R5Y6+XB+GNkP9V`Bs1e=xjWSS+l6c!=w3KD#tBq}<=bW`m;emO`h4!vU)m z@i=a8dD>q{@(Pv4Z00)Dq1VH1htrAkb38ooC7kRe}i%i24pgP zLlNInK0fgDgieRO#(bWY_T&W7C=L#=x5sQa-IToP^C1+%(GjyqHj82r^*UNDcIauE zI>;`h`|XW?YXJ)Ue&%-d%H3TA0*FL#e2iogmzOA&&}`!I5%2GO-8__OH2&C!f*z5_ zgLa$e{EC893RhRCR&jHKapz|YhkRyL=#QcnK|ZCHjfW*)rdq;pUO9x z@Y&^%B!%2#GU4ou{dwudcDsCh6=X;u%U@jJ<%RX{?!JcpgQQ!LfhI+SCPjoMMT90r d#M(#!J^`1J4>$!UrPKfb002ovPDHLkV1gKW_m2Po diff --git a/doc/images/JKQTPFilledRectangleDecorator.png b/doc/images/JKQTPFilledRectangleDecorator.png index d26a33ae8c0955a24760c5b9cccdffee17777376..bd599519094640ea47861e67b839725af0e7e72d 100644 GIT binary patch delta 428 zcmV;d0aO0n1@Z$SiBL{Q4GJ0x0000DNk~Le0000y0000Q2m$~A0Ay>Z4v`^Je*tMp zL_t(oNA1?Xt^q+5$MN+i5&uG`q$BYH)M}3*Jb}=72DKNU(Wr<>Jb;E$ry(kZQsQ@K zlare>vv)RgbFZC|_~t~2DL&a8yF9#MA9PeXi9Q~&+0gr+at1A+lL^{w6pP5`{nzc5 zz6xX&eL6|dY!;qJlT4!Dr(=Qaf1wWtlu8m*nR=a02C|2~-H=MDP(JZE9uGP!XLUU) z6&1=y?96&iC*`c7yIsU$s`Yyk3Ef)TL*MThjgU^ORz8}wjutJT%OwT_G#dVe6s(Xd zEk?7}uSW-=)vCW3(<#npl*^J*8O>V11|1INbvoLMEjA~Y!(u@vS^tMNe~0qsa}){^ zRD8^2&}v~k#(q!7EFp+h4RdPh>rC^N7WmmfiF=A W>ZOXL+iCy+002ovPDHLk0$_r@p1(-| delta 664 zcmV;J0%!g51KkB7iBL{Q4GJ0x0000DNk~Le0000k0000T2m$~A09rN4W04_Je*#oV zL_t(oN9~qPC~Z*`$FGlke`X-0d<`T@F*lJikuoDj%EUxMDJ2sFBLgET111JaiJ8Pe zBoiq~k%0`9lE~-({rB7J-JE^T_Rf8GA13eDnw)j_ZvW0*Ywvv`AO{C%YC=j1hKF%~ zuQETuZx!L?8vMbT&QUF_mPxjE*~4L zS4W3T@#0Q}Co&t^SlBnX`xX~v)+ZdP?Cz@9HI}qRO^wX*;z*^m)LhRN++RmWGRun# zm5~wElE#w0!SklKS7ybKunIr_#>azJhr8O2qXMn1sb=KuZLIw{ZdjUy1sU&$BNffi zkgAmLmS(cPUWQq4szP`tH#eJSKO;96r>8Q;f@>Ac^0GSV8QLQw0|Nu{lbvu>G`uF+ yKr9Va0uZJO;qBeffa7C%{F0DW;^DtaEWj^W+XDf?=ObYN00001_MeHY$!zl5%?t*m=UNqLGs z959`tRufy|j!U~G7{qGDE6piK-=N(tN+m=h!k5XIxHMuhWV5{9E+uGNXrqDANc?(G z`TVb#j$^g@bKAo{hJFf_Yqxn@)5+`idGc}pivAN+j_x9ED1^m=XB>MQYV8^-ce$Wa z!Rf?bpXCaDJYqIOuZMD(555cN8@-ISLepu~>lhBP+3*@wIihuf%Gsgka}A+#7W8f> y{*Cm5%Gtf?{hlv$?d5~0Q$AW%K3Y{@hz73CW(=j*hRw_X0000x?E^{3zc5r!#r6u(CqO1(rf7$T)aDFa-eUSnOlp_>EPY+5;kduS_e0V(2H2&@C zk{BI|9K63{b{5^;C@SI`&CBDIhC%wtiNxzra&E)fJkX`9*JeS(MaZ;b3;q3=MJNM@D$=2s#J!P1DxK-xUiBqBz2rgM$N9RG_>Z`}?9eMbyFKBHwyzE3U7j zqN8XS9p%Cg4)X4I1C85$ZceV;K*P?COkKk4JaCq@gR}$2Z3n;yO}!Exy@L$?00000 LNkvXXu0mjfddog< diff --git a/doc/images/JKQTPFilledTriangleDecoratorAndBar.png b/doc/images/JKQTPFilledTriangleDecoratorAndBar.png new file mode 100644 index 0000000000000000000000000000000000000000..d2fcdec37d1cfd190c9522195f5b2e4af635d766 GIT binary patch literal 555 zcmV+`0@VG9P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D01|XXSaefwW^{L9 za%BKVa%E+1b7*gLUR4MM0004^NklCo(Ev!})KT)s4V8CWWLkY5~?{?5? zp;AGogVhS75jGoqK4i0KG|=k_m)dPgmLPY*xZQ%^S!3^GvA|@4MuS|AG9}2Zo=(%k zOB?$FUM~Ux%9J3V`hJgoAIT)%-p-|2VqE-{CXuG8;VxFsh(k+z`4htp06zz7X z)go!V9!@9LYaxF!5h9(=$K-P!uP)VfI1r1WTE%#b!$DN;W;238ns~zHLZLu?F^^II zQI{u`qH<@&oykz}lldISBlX4HPo39gC*AkDJnTe2os7*UMXuv->c7_IVK-ra&E=AY zS97~Md(vQlav6~b>9VbMtL{CxPW_^8G>S?EqtP>UdA?Rxq%My{eK=IIE{|A!u~4`! tk7U(nGbQWtT(?aX$xB@hUh2;Wcn8l(m-S^+GN1qe002ovPDHLkV1j=J@G<}Z literal 0 HcmV?d00001 diff --git a/doc/images/JKQTPGeoLine_HeadTail.png b/doc/images/JKQTPGeoLine_HeadTail.png new file mode 100644 index 0000000000000000000000000000000000000000..6ab4a7916efb93b0014ddbf624da7f07e3b17892 GIT binary patch literal 6088 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 literal 0 HcmV?d00001 diff --git a/doc/images/JKQTPHarpoonDecorator.png b/doc/images/JKQTPHarpoonDecorator.png new file mode 100644 index 0000000000000000000000000000000000000000..6090e6c1e66813ce1fbd5c65115b5b9324e1b171 GIT binary patch literal 422 zcmV;X0a^ZuP)X0ssI21lAGc00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D01|XXSaefwW^{L9 za%BKVa%E+1b7*gLUR4MM0003UNkl_=toXpcLT@D0CVp;0hvI zABWIrID?MDNACPx#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D01|XXSaefwW^{L9 za%BKVa%E+1b7*gLUR4MM0004ZNkliYG_nMqELts!tZuAvv=e6T=v46xn#f9?CvD{+0D#I_*a=+ zBQv=#X}3ctgu#Gbs`2KYPIRD6=2j|ntj3jlIKb^jB7s&5vl+elS+R(CoQ~DFa*s#! zddTPD@j#Lg2%uC#zmNT%JneR2x05+cVyxZk72`3gRYaq(SYWdunMAovzTtlPinrBP zE8-4^VYL!&I!*5@iNQUeF&d#>M=Aw}gDCxeWV47w5R1_{O8mG#5_36pI#?`lyOBAX z<@;W)9wOUvN#+cP^zt2CnJ90gMuV(Er<1(i=lhNLtzZzf8XX(OeUivlD3F6$?RDJC zoopu}Zxe-J*eO#_Yw#Qsyh-@0}bV`XX z7a@AR+=*=W+|5QnBAe##ZnvTl+4OBSVKTYK1$+SQbmF~*AIFOT0000Y!!2~3`R~|M1QjEnx?oJHr&dIz4a#+$GeH|GX zHuiJ>Nn{1`ISV`@iy0XB4ude`@%$AjKtZ7r*NBqf{Irtt#G+IN_oCF)yyA@flDJR~ zkd_OcE{-7)?r*Pdeyzt5dL>}6g4dGn=|?}ZCq--ycGR2})?cMed) m|4HuGa?M_w-L}1ZfI0Zme~T-BO-q4(WAJqKb6Mw<&;$V4>5&uw literal 0 HcmV?d00001 diff --git a/doc/images/JKQTPRectangleDecorator.png b/doc/images/JKQTPRectangleDecorator.png index af32738b936ac4a6f218cf3e6ea81ab91a3247b6..6e41cfe8e489d07032f88766a87d93a688d2157c 100644 GIT binary patch delta 471 zcmV;|0Vw{t2Au>UiBL{Q4GJ0x0000DNk~Le0000!0000Q2m$~A0AQYYGm#-ue*u(9 zL_t(oNA1?TjsZ~|$8oZ#c>x6y6`@g3NW6(ls0b1Y3Xh?8i3UMILg6*EF44F}La6+9 zPWEKY&1DvQM&etYIcFyM6#p4Cc-ua77O9xNSm1P`Yq?ZLpG;6LBOHd+3XKN!I^CB` z1@!4uz}4yC^&*!e>sXB5BNtP8f3F9FLBQ?zvD?wpY!-GqUCYIkUMdlHr*r1=>vqZM zd`>SVF{O{k1UDSgOHtb`zP?ba(Mw6JXWe2!p+MKtJf17#&YB(y!SAPQX;;Uc5q-5n ztA%6|W;3)}?DuqE)YWnSNBS?<BkTqA_4+oKAAj7r$>F&9JbXUr_2gNj5yc`s74{^$QZB!ruX{Ru=GttCL{O=a zAKJ@3K5m_EUu`-fi9GE2VKf_I1rDc z(Rhgaa2M!mBSls;Lj1MQ=+7z5&?&0b{ytGjad` N002ovPDHLkV1ft~+<5>1 delta 757 zcmV*SKL`yb~a{a@b)GF zx50w^d{``qj6_clZf+#(27FfYf8YT1_3-n9uP^HAu($V_`enZK+3hWQdl4PYTbP%J z`FXs*OX@fHHUZRdb92beWqq-+=QCkZiANc#Dp#g`75;qG+u5o>h z?ruax@D>&nU}3?u5<60+czwmx6tc2dUqS)~2XTKdDTl1DaxgpVq^tjvGR4aa#>bJK&aX^L!tgL2A0?%DdO}DDIy(5Cx^r<6g@ycZRFpHW z{vXP$Y;2&S0$yGS4n}J$e@;&&K03<5^K)4$j*igSh=2fb_5FQ`f5R2Z6r`ZN9igG{ z^h8-1*4B`cg33zC+CU!J-;cOB-ongGyZ!1qWs2u#jEx~Rm0wBM=BC8$LM86%;>VVj zB=QAUD^t)w&@W6(j4XAiu10*kU5_+I*~tmlbYeo5TF{J>0SyeufAVjPQP$Fe@Ngbp zeW;Y=iyEeFfU<`N1O@S1^&#D)p6pr!1C%v4b5m2L^r2dlQEQ(f1}IBQV`W7}JaJlQ z1Cfz|k`lSMhXKmy_@AEU*(805i5ME<`r1HlLfMrSS=z&x2~ccrvnkN@QQJ|8X<)68 z11Bfz?WnQJ6qlDgOAXZQbpf00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D01|XXSaefwW^{L9 za%BKVa%E+1b7*gLUR4MM0003yNkl8*mwXThwy=z-qHgI z-a;+36(olcJb@ypMeIZnJb{IFK0Xtiz{sk^SDb+VYBsyYugI>3aQ1fxTNvEwG%Sl| zFY)fp29XE`16q2CcMpfqG_2RO^b+sxb`g)`bfTq~cz3M^!=RZZ*uCFlGC?MTQi;B> zgt;%)Mg#dgblv^4qft~Uw969UR;{TNOcR|BMkDtz>G$a*>qqVf*7+RABOM!$-L2J% zmaG8Xhl4LGuh&B?ramT4Uv@jz=@iW-3I)GbUcHWNmgeie;C|D}%jIrfN~aIGRckW& zqLsH?VzHq4x;Nb1nn;kfTt>SM+kV~ZuP5D(bv8q*g<>&yE6;~pjForCEz-(U+}o|| u6KUls?%fX6s!S{I$$KfLzdP8%=?2cRp5bz(BmBt#0000tVN3C%GKDT`ZTp<~~Bze^)CquGcY{pwU1!i(n8I3vb41rFbyl#aD=)b&m(h zB#+O`W~fwn1MN0XULjgN8im8b<1?cXoKBd{==XW%79!NwYqVNOr{VL_z_3>5!_@_AZ~L~uC#YOZs}6hvwg4Fi(LfRi00000NkvXXu0mjfuvE#^ delta 717 zcmV;;0y6!N1d#?IiBL{Q4GJ0x0000DNk~Le0000c0000d2m$~A0PF*;T#+GCe*%a} zL_t(oN9~r`D>ZQ#$A@fLl8~JcA|lz7P%d0hmLes~U%`bxLAett*HUg=SW=>t5+$-` z$u9f8gzx)%oafb<&dhOU&dj-Zdq16vdA?`rbIxym&-@+oxY_BOh@u(-&j z97C0-r|9WHULGWgK7Df{_u_ z)xp~vUS6oF!SFDipXsZD0yH*$-=u(c<<}RcrqJGwz(BaUp}ZUe1Gv8CZw2e?w5k&m zT-u;rIWxnLs=FIUM;uzy(SfKae0*?egLdWTCt6zI>50)%POK58$VhZ{e{!jWu4gH% zZEf`Y#>P1LVSJnxU}J+zCG>6|@o$=&Y2yqHablsN0fmKpt%6>qKy1$FXxc&3)0~J+ zBz{DHKbI=#RldHWstSI7C@qDrFJ@;c?Cph*54EXXbSXtgR#sBi&&}ce9ksRa_owUp zd^9!jJ?dyzK0VQkMl|L8e>^8|Z>X;3&Y7I#P#ulR$48WvAt(q73!GRG>ugb~x8o05 zl=t^2DM4^BmXwh!-)~7E5%fif0l;$cs(lJf8nNl8dfRz889#zwinkAwuIrsCv;6QhwUcXtsNhxBxuopE9U zR!TAN#>5~qlN!TJ{wg;&X=cgJrp7m!Z{^w=!o!i9E1L~XL&C}mLPKd_`Rz0}3W*M* z;$k|OT!lo#%fka#BQ8Or!NRrJyb8?6X0ssI2;Yieo00001b5ch_0Itp) z=>Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D01|XXSaefwW^{L9 za%BKVa%E+1b7*gLUR4MM0005dNklA&3*HOfQagbUclgeCzTtiD zz2~U#|JgXKfqEUC4%ISn@8Izu7^GST4jk_9ae9hk5#25(6Kc-5xWN8C)iQA4P%1&C zqDQC0!2v=cWV2|u@%DyVjrIF|8kT|shv#RO^5zD2ceuVrGzzyHMk8yg)o?hlwS`22 zhNa-+JP1K!F{;0rPVw-7t1J3GhlkXcf)9t26F8kz&v<%*%Z1%tcBXAMYD)2U4j&(A zHjzr<=m=UZd)cEAZ3#3QFqvStjifK`ul($c4GaI3Fmry+j>L>)64ffzbF9W; zKDXH{ky}hS46BvhNIN_1wpGIN9Da~nOeRC0==PR63-db%A$O~V%S#*|!(dRHTg-Tj zcpSqaEtR0$K{B`Bk9;1zp0eCaVlfB)a*L67;5)Y%DF@+J_IfGz-X5R1#Yj24z9JIg nJhvF-XPQ4Y4t%h2-~r$Zinc4f&6DkB00000NkvXXu0mjfL$?Is literal 0 HcmV?d00001 diff --git a/doc/images/JKQTPTriangleDecoratorAndStop.png b/doc/images/JKQTPTriangleDecoratorAndStop.png deleted file mode 100644 index 5f7d140ae5f8da443acee0e858c96fa9d15b8489..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 822 zcmV-61Ihe}P)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D01|XXSaefwW^{L9 za%BKVa%E+1b7*gLUR4MM00085NkliVZlOCN|H+{igF1hBBA7x-2UJ5_}YHD) zIPbqX&2QfKdFFj3{2Q1aa!e07|B1)J0d8)@Z-*G{k)O}k$A=gyW3b2aG9(F;lVYfh z@%2$#i}3Kju8#2@x3`FhKy|ekDqy6?%L|T=6_5=SlwlNJ>Ic5$fyF-HoX!Y;54{49UsJ%7ULC zIy=R`Y|!jcSjYx68CO^K`?I41zP>zRU0v|;!T!F;|FTp@p|MWM(2g9j~t04SIOo-=nIEtE8qzB*e)Hmo2rAIy8IC%y5ea2cx8fJL345LzaRz5R9v;xr!Up7F)dd#l zb3z{T^J1tP)gCnev9SmW!r&mUi{7a4xVS)hIlpCD8P3l|s5cHh-rq4a#63xy+3c(c zjX~LCX9wBYymvP@J6m+$z@Ep`6WZGNlbn`@%}o&+jEx8F;PLSY2tZ$-5%s9V7Y{l> z&{2x&vA7tgry_I}pC0rj9vww!D59b;J^h)x8VP%Q$j#;Lps^8mcOrH<61=^Unu_&x z5&RGmAKEPErJqCj`{7zl4>_iX9MeON>G2id7vk1XyOZS22LJ#707*qoM6N<$f>?ER A!2kdN diff --git a/doc/images/JKQTPVerticalDecorator.png b/doc/images/JKQTPVerticalDecorator.png deleted file mode 100644 index 265ecb3d52dcadb8149c1a80b3e2adb36b9a57f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 560 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 S_t$~e02(UKls_xIc=KOdivJA& literal 0 HcmV?d00001 diff --git a/doc/images/geo_arrow_polylines.png b/doc/images/geo_arrow_polylines.png new file mode 100644 index 0000000000000000000000000000000000000000..bba384be182a323eadc4b671adf24be99da52488 GIT binary patch literal 2832 zcmb_e`#;nBA0LrS<}&J#FRRFKB2msxW+t`CjOH@U#>uUwi!6lnQFJPoSh-)aVy?>^ z$8AWZ!VoehIwfIgliXU?7~h@$;QPb(hu7=+szaH=B>-|dhz+=?G`d|W=NXW&@XTu}?y|>9jz_(qT(OxnB^B+!~ z*A?vQUfSd8dXhYOyo@`V_mCd5yTrFc_ii#)7iXIYHcx%%eW~4gTZ&)Fwv-)k9nJlg zc9w9_UD!lb$Vm^)Tx}iQol15w8-r^Jj3*EBUyn}=6paHPaopEeKNo#3vSAF|KkBZ$ z`{oG^n&#iC|0gkvL1dbG9#f`7DA)MA{nI@B>E*$6j{>kiKB)A5Put&@ttp*fJRCyvj`YXs-r?l4?(+w09 zuKctX+-?X}hdsJu!7`vM0k~LLe}OU{O4a19oxHkkMQ!lkzTBbM^>}f1+LZ%al8uIUY9B??oPCa0as!Pq6|(L6%)=2A zR3$-omJ!d@N`!&=50bq9}v!#7oMHP>t(pa!aiKHgPA;4>XV-==%Y?P&y!jsc0T~(jxg1%l$g#r zF^E>C#QLYx?;A0WCvax>N?nVLGH=*Ml%R|O%j-HUf(a&Pk=`c9)$Z z;Y$cMJzZvdsO)1#6^uz~1ND@@?vdwkaWwND#9;A8O9HOyeX}BC}cFlOoMrK zL75pJLQ2Q4=^cQz0XRIi;=w3HIF+i?GzmeaQX2T~?K9QYBe)8D7-odGM}vT)Lr*M1Gq*G6 zYQt|cH~G*)>y`LzS3X41x)ag(J00%t1F>SU*Qs%Kr_GY(mse0>+d{C+9*zIf;T|6r zM%c`J@6y>aXzdx*NU}+wdzMd{E|dKD-U_!m!WE42>hyeGt>A5*41S989cX;p+fGwP zg!Bt%bNog^jJ%rSR(-72{yJ@Y269cZ8~Kyz7--sUP|Dsxj?Qnzx5w5$W}vvqupjlo zs^U2nRLF(3==@Jj=TDv=6)7<6rOq zJVF`R1EFc_tvege82=_oKEQQ}H$;7m-#ZN-fti{hWVn1q)FTx{Rf_D%qT+hiUargO zMbBF>)5Z?>N;JMVi9t^+!YQF{s37#ffZ}%A!Q3Ci&9%!mQRdgyYSK#YCl;l30mTW1 zz}KWAoC<0b4M{XAgsHeJdJ^bKKV0{}>i(vq!5>@$Hdc#1+(Gb-cZxP2!GSKnGqlPOg z-fPS}ydH!aMCJl0dXkfwSibj9-xS$R`0ShAr21Qi@pQw4qQe(T_F{q!LTbFEs;-d2 zAx7lXTNcr(y7Hl`Rheu};FHxs_-v|!VEI&quQHD0LJT}oH)WVzcDy%_B1Ki-R|Yo& zwuCf}NL2j?b_RHanCvGRr|$EyjXBU?V3G>&qoS@!;i%>h$3G@mO{<#6Ak@`GR&hUz z`Hv|q|Ed7s-m$EuvBCPmeSG&tnn-k(XPm#(+$%sUMhO&v~S$}K|`w`V4&y4Gqk>@zN+5kQi4 zh{k29E($6Hz=q+N33OO?R~{x|9MHUUt7M`oyLlqBeQR5thQEHYZIrtl3AZa z1z~feuUnQS)N`3jaz4#;8vdBS+*05`AqyAgFSY6)c>a;UArnRlzRL@xJ&K;$1Tpeq zJFMYaNKH8M-T(MK=g&8%vQ{TtlUPS@pZ)aWlFSj`w9F|uLL@(k%6aR(`mLAWGMmD} z80ixKX)@{Zu9P#P@eH|L*2F0|TyveZG~LPX&9;uxy>G-tcXqLX^^@fN6cNqab2{qK zrH7o>X-F4 zaeacYu>-X%QCKdk+Ym}*BpBwg9M>HoDGt%%ml{)HJ=%gWkyix2BI6nB99xUX@;TLd z5Rg~ws&~c6gZ{zvq^aU)agV7bF{n$@rf-WSAF}0;Wj_j^Sr3Zrf@`e@Uat!axcKRdnzhO>T A#{d8T literal 0 HcmV?d00001 diff --git a/doc/images/geo_arrow_small.png b/doc/images/geo_arrow_small.png index 7bb98025419771fc8dc15ef5435e5645ff231b71..8b6439c29ebfe3d8669fbf3a929c10a0ffa2c496 100644 GIT binary patch delta 10755 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 BcTxZV delta 11037 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 X%rl9)A^y?;0000<2SrXqu0mjf85Dm6 diff --git a/doc/images/geo_arrow_tips.png b/doc/images/geo_arrow_tips.png new file mode 100644 index 0000000000000000000000000000000000000000..ac4cb6ed8764fb13275b1ce97553982a75f7d871 GIT binary patch literal 51486 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 literal 0 HcmV?d00001 diff --git a/doc/images/geo_arrow_tipsatlineend.png b/doc/images/geo_arrow_tipsatlineend.png new file mode 100644 index 0000000000000000000000000000000000000000..7920c52e1cf706677a3e470a62a6102c1d6b0233 GIT binary patch literal 6348 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 literal 0 HcmV?d00001 diff --git a/doc/images/plot_geoarrows.png b/doc/images/plot_geoarrows.png index 554c7b68d9daf4cad5496dd308d28a67853f4274..144ef44d6ee64dbd005c07bb979bb46559f14e5b 100644 GIT binary patch literal 13626 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 NEoIH?1&a3r{vWW$gdYF^ diff --git a/doc/images/plot_geoinfiniteline.png b/doc/images/plot_geoinfiniteline.png index be6e8334cb3e0fa6fe0eeb5336001def6f61f9a6..a1b9896acb792f0c37fb4eed1e9cf26a7e2f8c9b 100644 GIT binary patch literal 17542 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

0U1}Y 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 literal 13512 zcmb_@by!qg`|co80#Z_vl1fU442XAf-sR4BgFH zgYWx0-}jyOI_LMhuJea@?U}u2uf5j2?&p4<=ib3DLUp(}4EEF}atI5bAPQd%FDM984@yf%hlW5QAV4X^fWfk_kG&7PgM#iLk8hSx zgHwHx$B;2pI=Yw0V}d5v$1vC}V5w;KLsRAA%uuI=tWl$ z2`t|ThDoQ)J%5vcg}mM~v-gJ>xTp64Ei->I`wj+^A7(;mn=fWusGzvNjAROJZL2Ru7_RlU}Q0RAwo(p^ZHZji&AG_8{=i`xOa-RvJGBQZ|b!ut? zlp3Jz7o=j_vO1cE=9-q3+UiuFd(`mDY8ryxi}RD3 z<1e+H9#mhtzJ1%Odz(7+6APR6dw2QBmyXVsePRj9<4irDD|5OSOT!&w<;qYY>oMJf z(*!*C1?Vz+FE4Dg9LYIq@2lga$k!d-eO1(J$@QZ7=0Ve@{m;Ft2eNRsq3Pxk#vnqe z6j~BX5^Xi)s23SKeNfF_Pm0;mQF~F!6z^N=wj}X6FA=ABx)vqg(Yq4pITpA6KAlBp zY=N$D7hjROe*1=n#rCvYOKiL!`rL$NsR3GhXxEHsZmKujUZmIdv@_{|mIB;OQS!a( ztEtwjvm%+!5*9{j_?FC98JCY7VXc^IGnMF;`q|pz$F6laSVp&7{Uvrs1ACa8i?$KZN?pEUyZZ9qEwJ? z;rm6j!}ko5&7|APqlp;Jg~9GVrLz_0^75=Bi;bNP6l=|uEACIQGm8`ouP}k?F5dEo zev#3{^k!x&r^Ju4bKLM92-Ll}6?nTX{&}Kr9IM^5OF(WM&)x{Cn}cPsd;}|P4@y?_ zJ-Qo%qwi)eNvbA&BShbGl5^dtnhHq2qHGBuPfEPIOfEL)y*DJ?d}5ZJS2ZIkhpXfI zpk~o+rp4oEE;|NC_G1+tIoPS({dwv0?G#)du4QD;6TI`%zQriKSHe-&g9a@qCtdog zfv485H<_D`mWY(1ZXWrFd2@SI74pzskc9o4+t%EC$Qd@Be7TWH+72KLL#ye~lf9kw z@-9XW(pN>Ti(TzY+02K4MbOKfIIZi6^U{*o&=)!uhNOljED{YM*I#Wf#%#Op6nnMl z-llqwC=Q&7ppW3?E)YSomCV3l7jyNo!TAzr*HhEfccTS%-4EIsOzyxadfF6z)Vp+$?r{aQ(WZN_0I^G2RhES@KkgF=n+LNWyWOCi63>lVS7XQLAIiI zarMp|+0?vk1??aI z?fAv!-C#_kY#l~}-Kl!RY+Z|GInJbjpK5>W)#qorh}g9P8YE_1 z`pKu1JL}XKLh45!(Ry{sIWh5E8>gbg{)$!+M=0$%tiJA2_*22oDPkv{k+FK6d(w@w zJwkw&-Gd?Afl`5qZf%A+U2j^XHzA4*J%-uv!d2ujf$zN!$*WBod;&%X2mK9=$+tv~ zo1sYTh|;XBJ#??mNDM}XgZE8ew=#3lIU5qRxJ_>-B|X&lwG+Y${4;GDT&L?i#~0OC zmy4;)^1@g?kcKM{iD4FhtqwdS`6FD{xxlP${951)#Ov@yQ>(zFmn2Jqe-KQgWFAQ& z$oLynrPI@8WnW0F1&XTa)N%SB;n~!`Tk0w2LxkGhk- zVfpfHzusNg_TJOzD(*$Bo}va;jVJxzHBhn-VP%_1)Srl3Nbn! zKQB+I+HX(CQqv^*-}1yLtD%yET5Ut9ne%(!Wd$$ZPC6T2bB&bPx8=V4kNRAL(zCAk zZn;A9iBm_)1m0>=k6x5Yl0)-DgzKW06^JbQgI4;Bp=jMOiG*L+=P-H_Hmbgj=OQ~n%u^S+5^RdCA(sgTURmfK_)t^?&s24DPnAuV|FJNrJ`TY^QQzbF(t%K0CvtfS^r{Oq zJoQRVhPW_yhuCcDd|dYMgIjgsv9sT0?Y8O#FOPfe*rwTj#~Rr^QwcC^C>bYh6P{4y z|C(+<3&Joat4E-k)YtONFGm3n#2$9U1V4WUFEt|=D{OA|+hL4hn!7x+YeoymWh{!# zN-=Jad6Y$9`ny#pgu&+MM=9&z*r3iw9Og%v4k=!bji8NJ(A?+EpHy}XY>(%*&vqib zO2`%?N-j`UKMWN5rG>1Iezte;QKHLyLRS8UxnBr_vo2EW?a)&*i*K#L7mdMhXP{_oZw_HG)8apV`Yywq7~8HR#-Viw^`)(7(%|K>6xdu=zvejuaa+O! z<_~{y*=J{%Cz7Q{NWx5phkOA4_VRQwuB3&i6g+hJWG6&Suip`aEtfAu{{*d6t$g*H zYoEc7>D{IH{Nj!Wc?|EH)954I=fBJDOuo4r;!~5%C?<}Mq#*Le-+79fA^rWwJ@+JD zXxG~>c6tO-IeyG=A!Y}>oj?1x7Oq^# zJW!qYuN>E#zP)oko?9%plz)U<@M^A?2Ylx`cS1+ko#%%!G~)k2X?sv&$KavGoz1U! z6ar;rK>>deR7U;oEg&YAldqX^S7y>fARIb2Sn>Xy@usO1%;a#V~qzm)3C&fxy zvK2lwnt)l_=LjBasNEg)5H*~cD9SqgViwhX<&pEj=rJOiP|F_c21<&pZ-$HFt3oY2 zLeoA$&&RP&U!8Q1#~bBms=20_ArI~7l9FtPo(ANqgc5cLhtuFIHh7k&U&IrARR6&P(;y zG4l(Ff>^2+wA~?>)$Gwi2q#2uTW@4UZ_ng>RSN2NN4wmJ6qaJr6}kY%KlH__dPh=Z2evzw zEzkU_xczq?MH0#HhznG@wGO0sgsGELdx_}aG#v63s{5(x=yR1Y0NmYACDnN>hdb@Y zd1*gL>nx&HdZUBV&`cv%DtCjX)pxU1J87~xVdyu$dPgA5e3GT@W(`!D9<7Az90? ze&5a~I&Qdo%Nd{9FUzuTs%rUs-D)3iv^LXF7Gz3|AVJc0ZskPU=vYdGSHm>*H)WRZ`DA3ZU>XXhKQ-2^o+>LU`UU40O~dN_ z#dd;o!!IdEupN(~xNkWw_Nqg8B9(aQCoUTiab;h!-Q`L3ZnqJaZOwN7qw0n5;(*(H zygY=yLLGQoK3~wQ=%-5${Ffj-D2hyOM+U!NPQJlA+z8<$7o$F!^y}dSx`!}C2;sx+ z`@-riAuRWwH6<%yggQuMabNe4jEv25dOhP1I(uEH@lHvei-Vak9<4nFqa6t5`N`G^!B2b+t(c(xMvldd@l~>>dY^M1avAbE~$4@r8?{1x^gSc878OpWLC; zR%RLu!f$kRV=}&c6&fD0XXy!*6|=NP&MU1pVZvFd%YPBygLaS zPH#EQgnd*ZxZRPi&Ev`owu5D{{^{GS82UG}fb#a-cAk!m%mV$xDJx^!$5)Nu2&J+# z(=g&*r@>GB*`FGJ{#zk|k5wHk|&ih4Bo40+N>tiGNz}xr8T4Ns!PrI^u`mT1; z+Z|1rS+)ShnM#>R2vXw2!S=8O0leZyYA^MdzTGllUawUow*X*qrISUXNpRtbETu?3 z+wt*gR)puVe)aLX+V}TJu1#VqInSm*m`57NEmxh*dRjzk^| zIk|*~&DANL7KI{duMxR*Y`@`-h8fGDn8d9HeVHM?{5_`W`g2b}l2}HT@|N&&pZWY` zK!yuH&+2nkRYHaO%W#JWQr~cZ$|U?@7@^;MqA|c{grp8`{lXmq%G=~*TIdH+&A}D47&&^9bz-g6%~Q>By4HCd`Ds3q@=(Y z?|$@Et@74zE_pl=F=-kn9rwiLg<1n8b9xFJx?%h5cw>7AXBpXxdv>CCi3tc+vY=;d z78dwn?Yg(``lp}Y#Kk?H7zf-?2$Hp+=ksD$VEZ`lD>AGN|IPy$hhS3hTT#`D!a{1 zH*4n{6#kMLztSfwQn4Wtf!j@}fXW&#tm?=p?fe(*KcD;@P{Wa?G#EqeLTtyqGggN$ zl`tzOZaUA9hdIZx8`V@!SU--2{d8HtO>trR^r^&>6aw;J46&wMIZm&muYo|v3JYa2 z0F^yLXwN^w5^-cZ$}dPi)c-a)R-Vn-1XdGi+?yU@<3$lA?cSCB%=y&(d?(_#T>z&q z^gixAzzZlsCxv~iwS`dvc!>fVrn zcvV(SCi_8X(y4kuCHL{Msm;u986w1F5L-R7tf8pp1fj|rmFt%$M,oA+FT1 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 C++-style QVector as plot data
parametric curve plotting | | [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/functionplot_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/functionplot) | [Plotting Mathematical Functions as Line Graphs](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/functionplot) | `JKQTPXFunctionLineGraph`
diretly plotting C/C++-functions | | [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/parsedfunctionplot_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/parsedfunctionplot) | [Plotting Parsed Mathematical Functions as Line Graphs](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/parsedfunctionplot) | `JKQTPXParsedFunctionLineGraph`
plotting functions with the internal math equation parser/evaluator | -| [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/geometric_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/geometric) | [Plotting Geometric Objects](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/geometric) | | | [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/boxplot_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/boxplot) | [Plotting Box Plots](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/boxplot) | `JKQTPBoxplotVerticalGraph`, `JKQTPBoxplotHorizontalGraph` | | [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/violinplot_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/violinplot) | [Plotting Violin Plots](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/violinplot) | `JKQTPViolinplotVerticalElement`, `JKQTPViolinplotHorizontalElement` | ## Styling the Plot, Keys, Axes, ... +| Screenshot | Description | Notes | +|:-------------:| ------------- | ------------- | +| [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/geometric_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/geometric) | [Plotting Geometric Objects](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/geometric) | | +| [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/geo_arrows_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/geo_arrows) | [Plotting Arrows](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/geo_arrows) | | + +## Styling the Plot, Keys, Axes, ... + | Screenshot | Description | Notes | |:-------------:| ------------- | ------------- | | [![](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/logaxes_small.png)](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/logaxes) | [logarithmic axes](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/logaxes) | `JKQTPXYLineGraph` and `JKQTPGeoText`
C++ vector of data
logarithmic axes and styling
plot line styles
internal LaTeX parser
add commenting text to a graph | diff --git a/examples/geo_arrows/CMakeLists.txt b/examples/geo_arrows/CMakeLists.txt new file mode 100644 index 0000000000..777ce2f76d --- /dev/null +++ b/examples/geo_arrows/CMakeLists.txt @@ -0,0 +1,29 @@ +cmake_minimum_required(VERSION 3.0) + +set(EXAMPLE_NAME geo_arrows) +set(EXENAME jkqtptest_${EXAMPLE_NAME}) + +message( STATUS ".. Building Example ${EXAMPLE_NAME}" ) + + +# Set up source files +set(SOURCES ${EXAMPLE_NAME}.cpp) +set(HEADERS ) +set(RESOURCES ) +set(UIS ) + +add_executable(${EXENAME} WIN32 ${SOURCES} ${HEADERS} ${RESOURCES} ${UIS}) +target_include_directories(${EXENAME} PRIVATE ../../lib) +if(JKQtPlotter_BUILD_STATIC_LIBS) + target_link_libraries(${EXENAME} JKQTPlotterLib) +elseif(JKQtPlotter_BUILD_SHARED_LIBS) + target_link_libraries(${EXENAME} JKQTPlotterSharedLib) +endif() + + + +# Installation +install(TARGETS ${EXENAME} RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + +#Installation of Qt DLLs on Windows +jkqtplotter_deployqt(${EXENAME}) diff --git a/examples/geo_arrows/README.md b/examples/geo_arrows/README.md new file mode 100644 index 0000000000..5fcb6877d0 --- /dev/null +++ b/examples/geo_arrows/README.md @@ -0,0 +1,76 @@ +# Example (JKQTPlotter): Plotting Arrows {#JKQTPlotterGeometricArrows} + +This project shows the capabilities of JKQTPlotter to also draw arrows as geometric elements, using JKQTPGeoArrow. The arrow head/tail are defined by the enum values in JKQTPLineDecoratorStyle. + +The source code of the main application can be found in [`geo_arrows.cpp`](https://github.com/jkriege2/JKQtPlotter/tree/master/examples/geo_arrows/geo_arrows.cpp). First a plot is generated. Then several types of arrows are plotted onto the JKQtPlotter. + +## Different types of arrows + +A first table shows all available arrow tips in different sizes. +```.cpp + for (size_t i=0; i(JKQTPLineDecoratorCount); i++) { + auto const decor=static_cast(i); + plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.1, arr_y, 0.3, arr_y+0.05, QColor("red"), decor, JKQTPNoDecorator, 0.2)); + plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.4, arr_y, 0.6, arr_y+0.05, QColor("red"), decor, JKQTPNoDecorator, 0.5)); + plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.7, arr_y, 0.9, arr_y+0.05, QColor("red"), decor, JKQTPNoDecorator, 1)); + plot.addGraph(a=new JKQTPGeoArrow(&plot, 1.0, arr_y, 1.3, arr_y+0.05, QColor("red"), decor, JKQTPNoDecorator, 2)); + plot.addGraph(a=new JKQTPGeoArrow(&plot, 1.4, arr_y, 1.7, arr_y+0.05, QColor("red"), decor, JKQTPNoDecorator, 3)); + plot.addGraph(new JKQTPGeoText(&plot, a->getX2()+0.05, a->getY2(), "\\verb{"+JKQTPLineDecoratorStyle2String(decor)+"}", 12, a->getLineColor())); + arr_y+=arr_deltay; + } +``` + +Here is the resulting table: + +![geo_arrow_tips](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/doc/images/geo_arrow_tips.png) + +Note how the head-size scales with the line-width, but not linearly, but rather sub-linearly, so the tips do not grow too strongly. + +Also note that all arrows end at the designated line-end (here indicated by dashed grey lines), even circles and rectangle: + +![geo_arrow_tipsatlineend](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/doc/images/geo_arrow_tipsatlineend.png) + +## Classes with support for arrows + +You can use JKQTPGeoArrow and JKQTPGeoLine to draw arrows (JKQTPGeoArrow is just a convenience class that enables arrows by default, otherwise it is equal to JKQTPGeoLine). + +In addition, also other classes can show line-decorators: + - JKQTPGeoLine + - JKQTPGeoPolyLines + - JKQTPGeoInfiniteLine +. + +Here is an example of how to actiavate them for a JKQTPGeoPolyLines: + +```.cpp + QVector points; points<setHeadDecoratorStyle(JKQTPFilledDoubleArrow); + polyLine->setTailDecoratorStyle(JKQTPCircleDecorator); + plot.addGraph(polyLine); +``` + +Here is the result: + +![geo_arrow_polylines](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/doc/images/geo_arrow_polylines.png) + +For the class JKQTPGeoInfiniteLine the start can be decorated with an arrow (only if two_sided==false!): + +```.cpp + JKQTPGeoInfiniteLine* infLine=new JKQTPGeoInfiniteLine(&plot, 1.5, 0.2, 1, 0.25, QColor("blue"), 2); + infLine->setHeadDecoratorStyle(JKQTPFilledDoubleArrow); + plot.addGraph(infLine); +``` + +Here is the result: + +![geo_arrow_polylines](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/doc/images/geo_arrow_inflines.png) + +## Screenshot + +The result of the complete example looks like this: + +![geo_arrows](https://raw.githubusercontent.com/jkriege2/JKQtPlotter/master/screenshots/geo_arrows.png) + + + diff --git a/examples/geo_arrows/geo_arrows.cpp b/examples/geo_arrows/geo_arrows.cpp new file mode 100644 index 0000000000..24d228881a --- /dev/null +++ b/examples/geo_arrows/geo_arrows.cpp @@ -0,0 +1,103 @@ +/** \example geo_arrows.cpp + * Shows how to plot arrows as geometric elements with JKQTPlotter + * + * \ref JKQTPlotterGeometricArrows + */ + +#include +#include "jkqtplotter/jkqtplotter.h" +#include "jkqtplotter/graphs/jkqtpgeometric.h" + + +int main(int argc, char* argv[]) +{ + QApplication app(argc, argv); + + // 1. create a plotter window + JKQTPlotter plot; + + // 2. format graph: + // 2.1 set the graph scales manually + plot.setXY(0,4.05,0,3.15); + // 2.2 set the asxpect ratio to 1 + plot.getPlotter()->setMaintainAspectRatio(true); + plot.getPlotter()->setAspectRatio(4.05/3.05); + plot.getPlotter()->setMaintainAxisAspectRatio(true); + plot.getPlotter()->setAxisAspectRatio(4.05/3.05); + // 2.3 set the asxpect ratio to 1 + plot.getXAxis()->setDrawGrid(false); + plot.getYAxis()->setDrawGrid(false); + + + // 3.1 demonastrate all arrow heads + JKQTPGeoArrow* a; + double arr_y=0.1; + double arr_deltay=2.9/static_cast(JKQTPLineDecoratorCount); + plot.addGraph(new JKQTPGeoText(&plot, 0.1, 3.0, "w_{line}=0.2", 12, QColor("darkred"))); + plot.addGraph(new JKQTPGeoText(&plot, 0.4, 3.0, "w_{line}=0.5", 12, QColor("darkred"))); + plot.addGraph(new JKQTPGeoText(&plot, 0.7, 3.0, "w_{line}=1", 12, QColor("darkred"))); + plot.addGraph(new JKQTPGeoText(&plot, 1.0, 3.0, "w_{line}=2", 12, QColor("darkred"))); + plot.addGraph(new JKQTPGeoText(&plot, 1.4, 3.0, "w_{line}=3", 12, QColor("darkred"))); + for (size_t i=0; i(JKQTPLineDecoratorCount); i++) { + auto const decor=static_cast(i); + plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.1, arr_y, 0.3, arr_y+0.05, QColor("red"), decor, JKQTPNoDecorator, 0.2)); + plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.4, arr_y, 0.6, arr_y+0.05, QColor("red"), decor, JKQTPNoDecorator, 0.5)); + plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.7, arr_y, 0.9, arr_y+0.05, QColor("red"), decor, JKQTPNoDecorator, 1)); + plot.addGraph(a=new JKQTPGeoArrow(&plot, 1.0, arr_y, 1.3, arr_y+0.05, QColor("red"), decor, JKQTPNoDecorator, 2)); + plot.addGraph(a=new JKQTPGeoArrow(&plot, 1.4, arr_y, 1.7, arr_y+0.05, QColor("red"), decor, JKQTPNoDecorator, 3)); + plot.addGraph(new JKQTPGeoText(&plot, a->getX2()+0.05, a->getY2(), "\\verb{"+JKQTPLineDecoratorStyle2String(decor)+"}", 12, a->getLineColor())); + arr_y+=arr_deltay; + } + + // 3.2 note that all decorators are drawn in a way that lets them end at the intended end-point of the line, even circles! + for (size_t i=0; i<6; i++) { + plot.addGraph(a=new JKQTPGeoArrow(&plot, 3+static_cast(i)*0.15, 3, 3+static_cast(i)*0.15, 2.75, QColor("blue"), static_cast(i*4+1), static_cast(i*4+2), static_cast(i+1)*0.5)); + plot.addGraph(a=new JKQTPGeoArrow(&plot, 3+static_cast(i)*0.15, 2.5, 3+static_cast(i)*0.15, 2.75, QColor("red"), static_cast(i*4+3), static_cast(i*4+4), static_cast(i+1)*0.5)); + } + plot.addGraph(new JKQTPGeoLine(&plot, 2.9, 2.5, 4.0, 2.5, QColor("silver"), 0.25, Qt::DashLine)); + plot.addGraph(new JKQTPGeoLine(&plot, 2.9, 2.75, 4.0, 2.75, QColor("silver"), 0.25, Qt::DashLine)); + plot.addGraph(new JKQTPGeoLine(&plot, 2.9, 3, 4.6, 3, QColor("silver"), 0.25, Qt::DashLine)); + + // 3.3 a JKQTPGeoLine with and without errow heads: + JKQTPGeoLine* line=new JKQTPGeoLine(&plot, 2.9, 2.3, 3.6, 2.4, QColor("red"), 2.0); + JKQTPGeoLine* line_heads=new JKQTPGeoLine(&plot, 2.9, 2.1, 3.6, 2.2, QColor("red"), 2.0); + line_heads->setHeadDecoratorStyle(JKQTPFilledDoubleArrow); + line_heads->setTailDecoratorStyle(JKQTPCircleDecorator); + plot.addGraph(line); + plot.addGraph(line_heads); + plot.addGraph(new JKQTPGeoSymbol(&plot, line->getX1(), line->getY1(), JKQTPCirclePlus, 8, QColor("silver"))); + plot.addGraph(new JKQTPGeoSymbol(&plot, line->getX2(), line->getY2(), JKQTPCirclePlus, 8, QColor("silver"))); + plot.addGraph(new JKQTPGeoSymbol(&plot, line_heads->getX1(), line_heads->getY1(), JKQTPCirclePlus, 8, QColor("silver"))); + plot.addGraph(new JKQTPGeoSymbol(&plot, line_heads->getX2(), line_heads->getY2(), JKQTPCirclePlus, 8, QColor("silver"))); + + + // 3.4 also the class JKQTPGeoPolyLines can decorate its start/end with arrows + QVector points; points<setHeadDecoratorStyle(JKQTPFilledDoubleArrow); + polyLine->setTailDecoratorStyle(JKQTPCircleDecorator); + plot.addGraph(polyLine); + + + // 3.5 also the class JKQTPGeoInfiniteLine can decorate its start with arrows (only if two_sided==false!) + JKQTPGeoInfiniteLine* infLine=new JKQTPGeoInfiniteLine(&plot, 3.5, 0.2, 1, 0.25, QColor("blue"), 2); + infLine->setHeadDecoratorStyle(JKQTPFilledDoubleArrow); + plot.addGraph(infLine); + plot.addGraph(new JKQTPGeoSymbol(&plot, infLine->getX(), infLine->getY(), JKQTPCirclePlus, 8, QColor("silver"))); + plot.addGraph(new JKQTPGeoArrow(&plot, infLine->getX(), infLine->getY(), infLine->getX()+infLine->getDx(), infLine->getY()+infLine->getDy(), QColor("silver"), JKQTPArrow, JKQTPNoDecorator, 1)); +/* + infLine=new JKQTPGeoInfiniteLine(&plot, 3.5, 0.1, -1, 0.25, QColor("darkblue"), 2); + infLine->setHeadDecoratorStyle(JKQTPFilledDoubleArrow); + infLine->setTwoSided(true); + plot.addGraph(infLine); + plot.addGraph(new JKQTPGeoSymbol(&plot, infLine->getX(), infLine->getY(), JKQTPCirclePlus, 8, QColor("silver"))); + plot.addGraph(new JKQTPGeoArrow(&plot, infLine->getX(), infLine->getY(), infLine->getX()+infLine->getDx(), infLine->getY()+infLine->getDy(), QColor("silver"), JKQTPArrow, JKQTPNoDecorator, 1)); +*/ + + + // 4. show plotter and make it a decent size + plot.show(); + plot.resize(1200,800); + + return app.exec(); +} diff --git a/examples/geo_arrows/geo_arrows.pro b/examples/geo_arrows/geo_arrows.pro new file mode 100644 index 0000000000..4ba64d82a0 --- /dev/null +++ b/examples/geo_arrows/geo_arrows.pro @@ -0,0 +1,27 @@ +# source code for this simple demo +SOURCES = geo_arrows.cpp + +# configure Qt +CONFIG += link_prl qt +QT += core gui xml svg +greaterThan(QT_MAJOR_VERSION, 4): QT += widgets printsupport + +# output executable name +TARGET = geo_arrows + +# include JKQTPlotter source code +DEPENDPATH += ../../lib ../../staticlib +INCLUDEPATH += ../../lib +CONFIG (debug, debug|release) { + LIBS += -L../../qmake/staticlib/jkqtplotterlib/debug -ljkqtplotterlib_debug +} else { + LIBS += -L../../qmake/staticlib/jkqtplotterlib/release -ljkqtplotterlib +} +message("LIBS = $$LIBS") + +win32-msvc*: DEFINES += _USE_MATH_DEFINES +win32-msvc*: DEFINES += NOMINMAX + + + + diff --git a/examples/geo_arrows/geo_arrows_and_lib.pro b/examples/geo_arrows/geo_arrows_and_lib.pro new file mode 100644 index 0000000000..cf29385de3 --- /dev/null +++ b/examples/geo_arrows/geo_arrows_and_lib.pro @@ -0,0 +1,8 @@ +TEMPLATE = subdirs + +SUBDIRS += jkqtplotterlib geo_arrows + +jkqtplotterlib.file = ../../qmake/staticlib/jkqtplotterlib/jkqtplotterlib.pro + +geo_arrows.file=$$PWD/geo_arrows.pro +geo_arrows.depends = jkqtplotterlib diff --git a/examples/geometric/geometric.cpp b/examples/geometric/geometric.cpp index 6322875e55..64405a271c 100644 --- a/examples/geometric/geometric.cpp +++ b/examples/geometric/geometric.cpp @@ -59,79 +59,21 @@ int main(int argc, char* argv[]) // 3.3 some arrows plot.addGraph(new JKQTPGeoText(&plot, 0.1,2.95, "\\textbf{Arrows:}", 14, QColor("red"))); - JKQTPGeoArrow* a; - double arr_y=2.9; - double arr_deltay=0.9/static_cast(JKQTPLineDecoratorCount); - plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.6, 2.5, 0.9, arr_y, QColor("red"), JKQTPArrow, JKQTPNoDecorator, 2)); - plot.addGraph(new JKQTPGeoText(&plot, a->getX2()+0.02, a->getY2(), "JKQTPArrow", 6, a->getLineColor())); - arr_y-=arr_deltay; - plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.6, 2.5, 0.9, arr_y, QColor("red"), JKQTPFilledArrow, JKQTPNoDecorator, 1)); - plot.addGraph(new JKQTPGeoText(&plot, a->getX2()+0.02, a->getY2(), "JKQTPFilledArrow", 6, a->getLineColor())); - arr_y-=arr_deltay; - plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.6, 2.5, 0.9, arr_y, QColor("red"), JKQTPTriangleDecorator, JKQTPNoDecorator, 1)); - plot.addGraph(new JKQTPGeoText(&plot, a->getX2()+0.02, a->getY2(), "JKQTPTriangleArrow", 6, a->getLineColor())); - arr_y-=arr_deltay; - plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.6, 2.5, 0.9, arr_y, QColor("red"), JKQTPFilledTriangleDecorator, JKQTPNoDecorator, 1)); - plot.addGraph(new JKQTPGeoText(&plot, a->getX2()+0.02, a->getY2(), "JKQTPTriangleFilledArrow", 6, a->getLineColor())); - arr_y-=arr_deltay; - plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.6, 2.5, 0.9, arr_y, QColor("red"), JKQTPTriangleDecoratorAndStop, JKQTPNoDecorator, 1)); - plot.addGraph(new JKQTPGeoText(&plot, a->getX2()+0.02, a->getY2(), "JKQTPTriangleArrowAndStop", 6, a->getLineColor())); - arr_y-=arr_deltay; - plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.6, 2.5, 0.9, arr_y, QColor("red"), JKQTPFilledTriangleDecoratorAndStop, JKQTPNoDecorator, 1)); - plot.addGraph(new JKQTPGeoText(&plot, a->getX2()+0.02, a->getY2(), "JKQTPTriangleFilledArrowAndStop", 6, a->getLineColor())); - arr_y-=arr_deltay; - plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.6, 2.5, 0.9, arr_y, QColor("red"), JKQTPDoubleArrow, JKQTPNoDecorator, 1)); - plot.addGraph(new JKQTPGeoText(&plot, a->getX2()+0.02, a->getY2(), "JKQTPDoubleArrow", 6, a->getLineColor())); - arr_y-=arr_deltay; - plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.6, 2.5, 0.9, arr_y, QColor("red"), JKQTPFilledDoubleArrow, JKQTPNoDecorator, 1)); - plot.addGraph(new JKQTPGeoText(&plot, a->getX2()+0.02, a->getY2(), "JKQTPFilledDoubleArrow", 6, a->getLineColor())); - arr_y-=arr_deltay; - plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.6, 2.5, 0.9, arr_y, QColor("red"), JKQTPCircleDecorator, JKQTPNoDecorator, 1)); - plot.addGraph(new JKQTPGeoText(&plot, a->getX2()+0.02, a->getY2(), "JKQTPCircleDecorator", 6, a->getLineColor())); - arr_y-=arr_deltay; - plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.6, 2.5, 0.9, arr_y, QColor("red"), JKQTPFilledCircleDecorator, JKQTPNoDecorator, 1)); - plot.addGraph(new JKQTPGeoText(&plot, a->getX2()+0.02, a->getY2(), "JKQTPFilledCircleDecorator", 6, a->getLineColor())); - arr_y-=arr_deltay; - plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.6, 2.5, 0.9, arr_y, QColor("red"), JKQTPRectangleDecorator, JKQTPNoDecorator, 1)); - plot.addGraph(new JKQTPGeoText(&plot, a->getX2()+0.02, a->getY2(), "JKQTPRectangleDecorator", 6, a->getLineColor())); - arr_y-=arr_deltay; - plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.6, 2.5, 0.9, arr_y, QColor("red"), JKQTPFilledRectangleDecorator, JKQTPNoDecorator, 1)); - plot.addGraph(new JKQTPGeoText(&plot, a->getX2()+0.02, a->getY2(), "JKQTPFilledRectangleDecorator", 6, a->getLineColor())); - arr_y-=arr_deltay; - plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.6, 2.5, 0.9, arr_y, QColor("red"), JKQTPArrowAndStop, JKQTPNoDecorator, 1)); - plot.addGraph(new JKQTPGeoText(&plot, a->getX2()+0.02, a->getY2(), "JKQTPArrowAndStop", 6, a->getLineColor())); - arr_y-=arr_deltay; - plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.6, 2.5, 0.9, arr_y, QColor("red"), JKQTPDoubleArrowAndStop, JKQTPNoDecorator, 1)); - plot.addGraph(new JKQTPGeoText(&plot, a->getX2()+0.02, a->getY2(), "JKQTPDoubleArrowAndStop", 6, a->getLineColor())); - arr_y-=arr_deltay; - plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.6, 2.5, 0.9, arr_y, QColor("red"), JKQTPVerticalDecorator, JKQTPNoDecorator, 1)); - plot.addGraph(new JKQTPGeoText(&plot, a->getX2()+0.02, a->getY2(), "JKQTPVerticalDecorator", 6, a->getLineColor())); - arr_y-=arr_deltay; - plot.addGraph(a=new JKQTPGeoArrow(&plot, 0.6, 2.5, 0.9, arr_y, QColor("red"), JKQTPBracketDecorator, JKQTPNoDecorator, 1)); - plot.addGraph(new JKQTPGeoText(&plot, a->getX2()+0.02, a->getY2(), "JKQTPBracketDecorator", 6, a->getLineColor())); - arr_y-=arr_deltay; + plot.addGraph(new JKQTPGeoArrow(&plot, 0.3, 2.1, 0.1, 2.9, QColor("green"), JKQTPTriangleDecoratorAndBar, JKQTPDiamondDecoratorAndBar, 1)); + plot.addGraph(new JKQTPGeoArrow(&plot, 0.2, 2.1, 0.2, 2.9, QColor("blue"), JKQTPNoDecorator, JKQTPFilledTriangleDecoratorAndBar, 2)); + plot.addGraph(new JKQTPGeoArrow(&plot, 0.1, 2.1, 0.3, 2.9, QColor("orange"), JKQTPDoubleArrowAndBar, JKQTPNoDecorator, 3)); - plot.addGraph(new JKQTPGeoArrow(&plot, 0.1, 2.05, 0.9, 2.05, QColor("blue"), JKQTPNoDecorator, JKQTPNoDecorator, 1)); - plot.addGraph(new JKQTPGeoArrow(&plot, 0.1, 2.9, 0.75, 2.9, QColor("blue"), JKQTPNoDecorator, JKQTPNoDecorator, 1)); - plot.addGraph(new JKQTPGeoArrow(&plot, 0.3, 2.1, 0.1, 2.45, QColor("green"), JKQTPTriangleDecoratorAndStop, JKQTPTriangleDecoratorAndStop, 1)); - plot.addGraph(new JKQTPGeoArrow(&plot, 0.2, 2.1, 0.2, 2.45, QColor("blue"), JKQTPNoDecorator, JKQTPFilledTriangleDecoratorAndStop, 3)); - plot.addGraph(new JKQTPGeoArrow(&plot, 0.1, 2.1, 0.3, 2.45, QColor("orange"), JKQTPFilledTriangleDecoratorAndStop, JKQTPNoDecorator, 5)); + plot.addGraph(new JKQTPGeoArrow(&plot, 0.6, 2.1, 0.4, 2.9, QColor("green"), JKQTPTriangleDecorator, JKQTPTriangleDecorator, 0.5)); + plot.addGraph(new JKQTPGeoArrow(&plot, 0.5, 2.1, 0.5, 2.9, QColor("blue"), JKQTPNoDecorator, JKQTPFilledArrow, 2)); + plot.addGraph(new JKQTPGeoArrow(&plot, 0.4, 2.1, 0.6, 2.9, QColor("orange"), JKQTPFilledArrow, JKQTPNoDecorator, 1)); - plot.addGraph(new JKQTPGeoArrow(&plot, 0.6, 2.1, 0.4, 2.45, QColor("green"), JKQTPTriangleDecorator, JKQTPTriangleDecorator, 0.5)); - plot.addGraph(new JKQTPGeoArrow(&plot, 0.5, 2.1, 0.5, 2.45, QColor("blue"), JKQTPNoDecorator, JKQTPArrowAndStop, 2)); - plot.addGraph(new JKQTPGeoArrow(&plot, 0.4, 2.1, 0.6, 2.45, QColor("orange"), JKQTPArrowAndStop, JKQTPNoDecorator, 4)); + plot.addGraph(new JKQTPGeoArrow(&plot, 0.7, 2.1, 0.7, 2.5, QColor("green"), JKQTPArrowAndBar, JKQTPFilledArrow, 0.5)); + plot.addGraph(new JKQTPGeoArrow(&plot, 0.8, 2.1, 0.8, 2.5, QColor("orange"), JKQTPArrowAndBar, JKQTPFilledArrow, 1)); + plot.addGraph(new JKQTPGeoArrow(&plot, 0.9, 2.1, 0.9, 2.5, QColor("orange"), JKQTPArrowAndBar, JKQTPFilledArrow, 2)); - plot.addGraph(new JKQTPGeoArrow(&plot, 0.4, 2.5, 0.4, 2.65, QColor("green"), JKQTPArrowAndStop, JKQTPFilledArrow, 0.5)); - plot.addGraph(new JKQTPGeoArrow(&plot, 0.45, 2.5, 0.45, 2.65, QColor("blue"), JKQTPArrowAndStop, JKQTPFilledArrow, 1)); - plot.addGraph(new JKQTPGeoArrow(&plot, 0.5, 2.5, 0.5, 2.65, QColor("orange"), JKQTPArrowAndStop, JKQTPFilledArrow, 1.5)); - plot.addGraph(new JKQTPGeoArrow(&plot, 0.55, 2.5, 0.55, 2.65, QColor("blue"), JKQTPArrowAndStop, JKQTPFilledArrow, 2)); - plot.addGraph(new JKQTPGeoArrow(&plot, 0.6, 2.5, 0.6, 2.65, QColor("orange"), JKQTPArrowAndStop, JKQTPFilledArrow, 2.5)); - - plot.addGraph(new JKQTPGeoArrow(&plot, 0.4, 2.7, 0.4, 2.9, QColor("green"), JKQTPTriangleDecoratorAndStop, JKQTPFilledCircleDecorator, 0.5)); - plot.addGraph(new JKQTPGeoArrow(&plot, 0.45, 2.7, 0.45, 2.9, QColor("blue"), JKQTPTriangleDecoratorAndStop, JKQTPFilledCircleDecorator, 1)); - plot.addGraph(new JKQTPGeoArrow(&plot, 0.5, 2.7, 0.5, 2.9, QColor("orange"), JKQTPTriangleDecoratorAndStop, JKQTPFilledCircleDecorator, 1.5)); - plot.addGraph(new JKQTPGeoArrow(&plot, 0.55, 2.7, 0.55, 2.9, QColor("blue"), JKQTPTriangleDecoratorAndStop, JKQTPFilledCircleDecorator, 2)); - plot.addGraph(new JKQTPGeoArrow(&plot, 0.6, 2.7, 0.6, 2.9, QColor("orange"), JKQTPTriangleDecoratorAndStop, JKQTPFilledCircleDecorator, 2.5)); + plot.addGraph(new JKQTPGeoArrow(&plot, 0.7, 2.7, 0.7, 2.9, QColor("green"), JKQTPTriangleDecoratorAndBar, JKQTPFilledCircleDecorator, 0.5)); + plot.addGraph(new JKQTPGeoArrow(&plot, 0.8, 2.7, 0.8, 2.9, QColor("orange"), JKQTPTriangleDecoratorAndBar, JKQTPFilledCircleDecorator, 1)); + plot.addGraph(new JKQTPGeoArrow(&plot, 0.9, 2.7, 0.9, 2.9, QColor("orange"), JKQTPTriangleDecoratorAndBar, JKQTPFilledCircleDecorator, 2)); diff --git a/lib/jkqtcommon/jkqtpdrawingtools.cpp b/lib/jkqtcommon/jkqtpdrawingtools.cpp index 422569fc8a..ff16aa4d10 100644 --- a/lib/jkqtcommon/jkqtpdrawingtools.cpp +++ b/lib/jkqtcommon/jkqtpdrawingtools.cpp @@ -413,18 +413,26 @@ QString JKQTPLineDecoratorStyle2String(JKQTPLineDecoratorStyle pos) case JKQTPFilledArrow: return "filled_arrow"; case JKQTPTriangleDecorator: return "triangle"; case JKQTPFilledTriangleDecorator: return "filled_triangle"; - case JKQTPTriangleDecoratorAndStop: return "triangle_stop"; - case JKQTPFilledTriangleDecoratorAndStop: return "filled_triangle_stop"; + case JKQTPTriangleDecoratorAndBar: return "triangle_bar"; + case JKQTPFilledTriangleDecoratorAndBar: return "filled_triangle_bar"; case JKQTPDoubleArrow: return "double_arrow"; case JKQTPFilledDoubleArrow: return "filled_double_arrow"; case JKQTPCircleDecorator: return "circle"; case JKQTPFilledCircleDecorator: return "filled_circle"; case JKQTPRectangleDecorator: return "rectangle"; case JKQTPFilledRectangleDecorator: return "filled_rectangle"; - case JKQTPArrowAndStop: return "arrow_stop"; - case JKQTPDoubleArrowAndStop: return "double_arrow_stop"; - case JKQTPVerticalDecorator: return "vertical_line"; + case JKQTPArrowAndBar: return "arrow_bar"; + case JKQTPDoubleArrowAndBar: return "double_arrow_bar"; + case JKQTPBarDecorator: return "bar"; case JKQTPBracketDecorator: return "bracket"; + case JKQTPHalfBarDecorator: return "half_bar"; + case JKQTPSkewedBarDecorator: return "skewed_bar"; + case JKQTPHarpoonDecorator: return "harpoon"; + case JKQTPHarpoonDecoratorAndBar: return "harpoon_bar"; + case JKQTPDiamondDecorator: return "diamond"; + case JKQTPFilledDiamondDecorator: return "filled_diamond"; + case JKQTPDiamondDecoratorAndBar: return "diamond_bar"; + case JKQTPFilledDiamondDecoratorAndBar: return "filled_diamond_bar"; case JKQTPLineDecoratorCount: JKQTPLineDecoratorStyle2String(JKQTPMaxLineDecoratorID); } return ""; @@ -438,17 +446,25 @@ QString JKQTPLineDecoratorStyle2NameString(JKQTPLineDecoratorStyle pos) case JKQTPFilledArrow: return QObject::tr("filled arrow"); case JKQTPTriangleDecorator: return QObject::tr("triangle"); case JKQTPFilledTriangleDecorator: return QObject::tr("filled triangle"); - case JKQTPTriangleDecoratorAndStop: return QObject::tr("triangle with stop"); - case JKQTPFilledTriangleDecoratorAndStop: return QObject::tr("filled triangle with stop"); + case JKQTPTriangleDecoratorAndBar: return QObject::tr("triangle, with bar"); + case JKQTPFilledTriangleDecoratorAndBar: return QObject::tr("filled triangle, with bar"); case JKQTPDoubleArrow: return QObject::tr("double arrow"); case JKQTPFilledDoubleArrow: return QObject::tr("filled double arrow"); case JKQTPCircleDecorator: return QObject::tr("circle"); case JKQTPFilledCircleDecorator: return QObject::tr("filled circle"); case JKQTPRectangleDecorator: return QObject::tr("rectangle"); case JKQTPFilledRectangleDecorator: return QObject::tr("filled rectangle"); - case JKQTPArrowAndStop: return QObject::tr("arrow with stop"); - case JKQTPDoubleArrowAndStop: return QObject::tr("double arrow with stop"); - case JKQTPVerticalDecorator: return QObject::tr("vertical line"); + case JKQTPArrowAndBar: return QObject::tr("arrow, with bar"); + case JKQTPDoubleArrowAndBar: return QObject::tr("double arrow, with bar"); + case JKQTPBarDecorator: return QObject::tr("full bar"); + case JKQTPHalfBarDecorator: return QObject::tr("half bar"); + case JKQTPSkewedBarDecorator: return QObject::tr("skewed bar"); + case JKQTPHarpoonDecorator: return QObject::tr("harpoon"); + case JKQTPHarpoonDecoratorAndBar: return QObject::tr("harpoon, with bar"); + case JKQTPDiamondDecorator: return QObject::tr("diamond"); + case JKQTPFilledDiamondDecorator: return QObject::tr("filled diamond"); + case JKQTPDiamondDecoratorAndBar: return QObject::tr("diamond, with bar"); + case JKQTPFilledDiamondDecoratorAndBar: return QObject::tr("filled diamond, with bar"); case JKQTPBracketDecorator: return QObject::tr("bracket"); case JKQTPLineDecoratorCount: JKQTPLineDecoratorStyle2NameString(JKQTPMaxLineDecoratorID); } @@ -463,18 +479,32 @@ JKQTPLineDecoratorStyle String2JKQTPLineDecoratorStyle(const QString &pos) if (s=="filled_arrow") return JKQTPFilledArrow; if (s=="triangle") return JKQTPTriangleDecorator; if (s=="filled_triangle") return JKQTPFilledTriangleDecorator; - if (s=="triangle_stop") return JKQTPTriangleDecoratorAndStop; - if (s=="filled_triangle_stop") return JKQTPFilledTriangleDecoratorAndStop; + if (s=="triangle_bar") return JKQTPTriangleDecoratorAndBar; + if (s=="filled_triangle_bar") return JKQTPFilledTriangleDecoratorAndBar; if (s=="double_arrow") return JKQTPDoubleArrow; if (s=="filled_double_arrow") return JKQTPFilledDoubleArrow; if (s=="circle") return JKQTPCircleDecorator; if (s=="filled_circle") return JKQTPFilledCircleDecorator; if (s=="rectangle") return JKQTPRectangleDecorator; if (s=="filled_rectangle") return JKQTPFilledRectangleDecorator; - if (s=="arrow_stop") return JKQTPArrowAndStop; - if (s=="double_arrow_stop") return JKQTPDoubleArrowAndStop; - if (s=="vertical_line") return JKQTPVerticalDecorator; + if (s=="arrow_bar") return JKQTPArrowAndBar; + if (s=="double_arrow_bar") return JKQTPDoubleArrowAndBar; + if (s=="bar" || s=="vertical_line") return JKQTPBarDecorator; + if (s=="half_bar") return JKQTPHalfBarDecorator; + if (s=="skewed_bar") return JKQTPSkewedBarDecorator; + if (s=="harpoon") return JKQTPHarpoonDecorator; + if (s=="harpoon_bar") return JKQTPHarpoonDecoratorAndBar; + if (s=="diamond") return JKQTPDiamondDecorator; + if (s=="filled_diamond") return JKQTPFilledDiamondDecorator; + if (s=="diamond_bar") return JKQTPDiamondDecoratorAndBar; + if (s=="filled_diamond_bar") return JKQTPFilledDiamondDecoratorAndBar; if (s=="bracket") return JKQTPBracketDecorator; - return JKQTPNoDecorator; } + +double JKQTPLineDecoratorStyleCalcDecoratorSize(double line_width, double decoratorSizeFactor) +{ + if (line_width<=0.75) return 3.0+(decoratorSizeFactor*0.75-3.0)/(0.75*0.75)*line_width*line_width; + if (line_width<=1.0) return decoratorSizeFactor*line_width; + return decoratorSizeFactor*pow(line_width, 0.7); +} diff --git a/lib/jkqtcommon/jkqtpdrawingtools.h b/lib/jkqtcommon/jkqtpdrawingtools.h index 5b264b8794..4ca8149b6e 100644 --- a/lib/jkqtcommon/jkqtpdrawingtools.h +++ b/lib/jkqtcommon/jkqtpdrawingtools.h @@ -155,6 +155,14 @@ JKQTCOMMON_LIB_EXPORT JKQTPGraphSymbols String2JKQTPGraphSymbols(const QString& /** \brief symbols that can be used to plot a datapoint for a graph * \ingroup jkqtptools_drawing + * + * \image html geo_arrow_tips.png + * + * Note that all arrows end at the designated line-end (here indicated by dashed grey lines), even circles and rectangle: + * + * \image html geo_arrow_tipsatlineend.png + * + * \see \ref JKQTPlotterGeometricArrows and \ref JKQTPlotterGeometricGraphs */ enum JKQTPLineDecoratorStyle { JKQTPNoDecorator=0, /*!< \brief no decorator, i.e. a simple line-end */ @@ -162,21 +170,29 @@ enum JKQTPLineDecoratorStyle { JKQTPFilledArrow, /*!< \brief a nice filled arrow tip \image html JKQTPFilledArrow.png */ JKQTPTriangleDecorator, /*!< \brief a triangular arrow tip \image html JKQTPTriangleDecorator.png */ JKQTPFilledTriangleDecorator, /*!< \brief a triangular filled arrow tip \image html JKQTPFilledTriangleDecorator.png */ - JKQTPTriangleDecoratorAndStop, /*!< \brief a triangular arrow tip with a stop-line \image html JKQTPTriangleDecoratorAndStop.png */ - JKQTPFilledTriangleDecoratorAndStop, /*!< \brief a triangular filled arrow tip with a stop-line \image html JKQTPFilledTriangleDecoratorAndStop.png */ + JKQTPTriangleDecoratorAndBar, /*!< \brief a triangular arrow tip, with vertical bar \image html JKQTPTriangleDecoratorAndBar.png */ + JKQTPFilledTriangleDecoratorAndBar, /*!< \brief a triangular filled arrow tip, with vertical bar \image html JKQTPFilledTriangleDecoratorAndBar.png */ JKQTPDoubleArrow, /*!< \brief a nice double-arrow tip \image html JKQTPDoubleArrow.png*/ JKQTPFilledDoubleArrow, /*!< \brief a nice filled double-arrow tip \image html JKQTPFilledDoubleArrow.png */ JKQTPCircleDecorator, /*!< \brief an open circle tip \image html JKQTPCircleDecorator.png */ JKQTPFilledCircleDecorator, /*!< \brief a filled circle tip \image html JKQTPFilledCircleDecorator.png */ JKQTPRectangleDecorator, /*!< \brief an open rectangle tip \image html JKQTPRectangleDecorator.png */ JKQTPFilledRectangleDecorator, /*!< \brief a filled rectangle tip \image html JKQTPFilledRectangleDecorator.png */ - JKQTPArrowAndStop, /*!< \brief a simple arrow tip, unfilled with stop-line \image html JKQTPArrowAndStop.png */ - JKQTPDoubleArrowAndStop, /*!< \brief a simple double-arrow tip, unfilled with stop-line \image html JKQTPDoubleArrowAndStop.png */ - JKQTPVerticalDecorator, /*!< \brief a simple vertical stop-line \image html JKQTPVerticalDecorator.png */ + JKQTPArrowAndBar, /*!< \brief a simple arrow tip, unfilled, with vertical bar \image html JKQTPArrowAndBar.png */ + JKQTPDoubleArrowAndBar, /*!< \brief a simple double-arrow tip, unfilled, with vertical bar \image html JKQTPDoubleArrowAndBar.png */ + JKQTPBarDecorator, /*!< \brief a full vertical bar \image html JKQTPBarDecorator.png */ JKQTPBracketDecorator, /*!< \brief a vertical bracket decorator \image html JKQTPBracketDecorator.png */ + JKQTPDiamondDecorator, /*!< \brief an open diamond tip \image html JKQTPDiamondDecorator.png */ + JKQTPDiamondDecoratorAndBar, /*!< \brief an open diamond tip \image html JKQTPDiamondDecoratorAndBar.png */ + JKQTPFilledDiamondDecorator, /*!< \brief a filled diamond tip \image html JKQTPFilledDiamondDecorator.png */ + JKQTPFilledDiamondDecoratorAndBar, /*!< \brief a filled diamond tip \image html JKQTPFilledDiamondDecoratorAndBar.png */ + JKQTPHalfBarDecorator, /*!< \brief a half vertical bar \image html JKQTPHalfBarDecorator.png */ + JKQTPHarpoonDecorator, /*!< \brief an harpoon arrow \image html JKQTPHarpoonDecorator.png */ + JKQTPHarpoonDecoratorAndBar, /*!< \brief an harpoon arrow, with vertical bar \image html JKQTPHarpoonDecoratorAndBar.png */ + JKQTPSkewedBarDecorator, /*!< \brief a skewed vertical bar \image html JKQTPSkewedBarDecorator.png */ - JKQTPLineDecoratorCount, /*!< \brief can be used to iterate over all symbols using: for (int i=0; i(JKQTPSymbolCount); i++) { JKQTPLineDecoratorStyle s=static_cast(i); ... } */ - JKQTPMaxLineDecoratorID=JKQTPLineDecoratorCount-1, /*!< \brief points to the last available symbol, can be used to iterate over all symbols: for (int i=0; i<=static_cast(JKQTPMaxSymbolID); i++) { JKQTPLineDecoratorStyle s=static_cast(i); ... } */ + JKQTPLineDecoratorCount, /*!< \brief can be used to iterate over all symbols using: for (int i=0; i(JKQTPLineDecoratorCount); i++) { JKQTPLineDecoratorStyle s=static_cast(i); ... } */ + JKQTPMaxLineDecoratorID=JKQTPLineDecoratorCount-1, /*!< \brief points to the last available symbol, can be used to iterate over all symbols: for (int i=0; i<=static_cast(JKQTPMaxLineDecoratorID); i++) { JKQTPLineDecoratorStyle s=static_cast(i); ... } */ JKQTPDefaultLineDecorator=JKQTPFilledArrow /*!< \brief a default symbol used for plotting */ }; @@ -209,7 +225,9 @@ JKQTCOMMON_LIB_EXPORT JKQTPLineDecoratorStyle String2JKQTPLineDecoratorStyle(con template inline void JKQTPPlotLineDecorator(TPainter& painter, double x, double y, double angle_rad, JKQTPLineDecoratorStyle style, double size, QPointF* line_start=nullptr); - +/** \brief calculates the tail decorator size from the line width \a line_width, using decoratorSizeFactor and a non-linear scaling function that levels off towards small \a line_width and increases sub-linearly for large ones, so the arrow heads to not grow too much */ +JKQTCOMMON_LIB_EXPORT double JKQTPLineDecoratorStyleCalcDecoratorSize(double line_width, double decoratorSizeFactor) +; /** \brief rotate a rectangle by given angle (rotates all points around the center of the rectangle and returns it as a QPolygonF) * \ingroup jkqtptools_drawing @@ -923,7 +941,9 @@ inline void JKQTPPlotLineDecorator(TPainter& painter, double x, double y, double static double tan__default_theta_open_tip=tan(default_theta_open_tip); static double default_theta_closed_tip=50.0/2.0 /180.0*JKQTPSTATISTICS_PI; static double tan__default_theta_closed_tip=tan(default_theta_closed_tip); - const QPen pinit=painter.pen(); + QPen pinit=painter.pen(); + pinit.setCapStyle(Qt::FlatCap); + pinit.setJoinStyle(Qt::RoundJoin); QPen p0=pinit; p0.setWidthF(0); { @@ -934,25 +954,31 @@ inline void JKQTPPlotLineDecorator(TPainter& painter, double x, double y, double switch(style) { case JKQTPArrow: - case JKQTPArrowAndStop: { + case JKQTPArrowAndBar: { const QPointF poly[3] = { QPointF(size, -tan__default_theta_open_tip*size), QPointF(0,0), QPointF(size, tan__default_theta_open_tip*size) }; painter.setPen(pinit); - if (style==JKQTPArrowAndStop) painter.drawLine(QPointF(0,-tan__default_theta_open_tip*size), QPointF(0,tan__default_theta_open_tip*size)); + if (style==JKQTPArrowAndBar) painter.drawLine(QPointF(0,-tan__default_theta_open_tip*size), QPointF(0,tan__default_theta_open_tip*size)); painter.drawPolyline(poly, 3); } break; + case JKQTPHarpoonDecorator: + case JKQTPHarpoonDecoratorAndBar: { + painter.setPen(pinit); + if (style==JKQTPHarpoonDecoratorAndBar) painter.drawLine(QPointF(0,-tan__default_theta_open_tip*size), QPointF(0,tan__default_theta_open_tip*size)); + painter.drawLine(QPointF(0,0), QPointF(size, tan__default_theta_open_tip*size)); + } break; case JKQTPDoubleArrow: - case JKQTPDoubleArrowAndStop: { + case JKQTPDoubleArrowAndBar: { const QPointF poly[3] = { QPointF(size, -tan__default_theta_open_tip*size), QPointF(0,0), QPointF(size, tan__default_theta_open_tip*size) }; painter.setPen(pinit); - if (style==JKQTPDoubleArrowAndStop) painter.drawLine(QPointF(0,-tan__default_theta_open_tip*size), QPointF(0,tan__default_theta_open_tip*size)); + if (style==JKQTPDoubleArrowAndBar) painter.drawLine(QPointF(0,-tan__default_theta_open_tip*size), QPointF(0,tan__default_theta_open_tip*size)); painter.drawPolyline(poly, 3); painter.translate(4.0*pinit.widthF(),0); painter.drawPolyline(poly, 3); @@ -968,16 +994,16 @@ inline void JKQTPPlotLineDecorator(TPainter& painter, double x, double y, double }; painter.drawPolygon(poly, 4); if (style==JKQTPFilledDoubleArrow) { - painter.translate(0.25*size, 0); + painter.translate(0.5*size, 0); painter.drawPolygon(poly, 4); - if (line_start) *line_start=QPointF(x,y)+QPointF(size*cos(angle_rad),size*sin(angle_rad)); + if (line_start) *line_start=QPointF(x,y)+QPointF(1.25*size*cos(angle_rad),1.25*size*sin(angle_rad)); } else { if (line_start) *line_start=QPointF(x,y)+QPointF(0.75*size*cos(angle_rad),0.75*size*sin(angle_rad)); } } break; case JKQTPTriangleDecorator: - case JKQTPTriangleDecoratorAndStop: { + case JKQTPTriangleDecoratorAndBar: { const QPointF poly[3] = { QPointF(size, -tan__default_theta_closed_tip*size), QPointF(0,0), @@ -986,12 +1012,12 @@ inline void JKQTPPlotLineDecorator(TPainter& painter, double x, double y, double painter.setBrush(Qt::NoBrush); painter.setPen(pinit); painter.drawConvexPolygon(poly, 3); - if (style==JKQTPTriangleDecoratorAndStop) painter.drawLine(QPointF(0,-tan__default_theta_closed_tip*size), QPointF(0,tan__default_theta_closed_tip*size)); + if (style==JKQTPTriangleDecoratorAndBar) painter.drawLine(QPointF(0,-tan__default_theta_closed_tip*size), QPointF(0,tan__default_theta_closed_tip*size)); if (line_start) *line_start=QPointF(x,y)+QPointF(size*cos(angle_rad),size*sin(angle_rad)); } break; case JKQTPFilledTriangleDecorator: - case JKQTPFilledTriangleDecoratorAndStop: { + case JKQTPFilledTriangleDecoratorAndBar: { const QPointF poly[3] = { QPointF(size, -tan__default_theta_closed_tip*size), QPointF(0,0), @@ -999,7 +1025,7 @@ inline void JKQTPPlotLineDecorator(TPainter& painter, double x, double y, double }; painter.setPen(p0); painter.drawConvexPolygon(poly, 3); - if (style==JKQTPFilledTriangleDecoratorAndStop) { + if (style==JKQTPFilledTriangleDecoratorAndBar) { painter.setPen(pinit); painter.drawLine(QPointF(0,-tan__default_theta_closed_tip*size), QPointF(0,tan__default_theta_closed_tip*size)); } @@ -1007,7 +1033,37 @@ inline void JKQTPPlotLineDecorator(TPainter& painter, double x, double y, double } break; + case JKQTPDiamondDecorator: + case JKQTPDiamondDecoratorAndBar: { + const QPointF poly[4] = { + QPointF(0,0), + QPointF(size/2.0, -tan__default_theta_closed_tip*size), + QPointF(size,0), + QPointF(size/2.0, tan__default_theta_closed_tip*size) + }; + painter.setBrush(Qt::NoBrush); + painter.setPen(pinit); + painter.drawConvexPolygon(poly, 4); + if (style==JKQTPDiamondDecoratorAndBar) painter.drawLine(QPointF(0,-tan__default_theta_closed_tip*size), QPointF(0,tan__default_theta_closed_tip*size)); + if (line_start) *line_start=QPointF(x,y)+QPointF(size*cos(angle_rad),size*sin(angle_rad)); + } break; + case JKQTPFilledDiamondDecorator: + case JKQTPFilledDiamondDecoratorAndBar: { + const QPointF poly[4] = { + QPointF(0,0), + QPointF(size/2.0, -tan__default_theta_closed_tip*size), + QPointF(size,0), + QPointF(size/2.0, tan__default_theta_closed_tip*size) + }; + painter.setPen(p0); + painter.drawConvexPolygon(poly, 4); + if (style==JKQTPFilledDiamondDecoratorAndBar) { + painter.setPen(pinit); + painter.drawLine(QPointF(0,-tan__default_theta_closed_tip*size), QPointF(0,tan__default_theta_closed_tip*size)); + } + if (line_start) *line_start=QPointF(x,y)+QPointF(size*cos(angle_rad),size*sin(angle_rad)); + } break; case JKQTPCircleDecorator: case JKQTPFilledCircleDecorator: { @@ -1017,8 +1073,8 @@ inline void JKQTPPlotLineDecorator(TPainter& painter, double x, double y, double } else { painter.setPen(p0); } - painter.drawEllipse(QRectF(-size/2.0,-size/2.0,size,size)); - if (line_start) *line_start=QPointF(x,y)+QPointF(size/2.0*cos(angle_rad),size/2.0*sin(angle_rad)); + painter.drawEllipse(QRectF(0,-size/2.0,size,size)); + if (line_start) *line_start=QPointF(x,y)+QPointF(size*cos(angle_rad),size*sin(angle_rad)); } break; case JKQTPRectangleDecorator: @@ -1029,14 +1085,25 @@ inline void JKQTPPlotLineDecorator(TPainter& painter, double x, double y, double } else { painter.setPen(p0); } - painter.drawRect(QRectF(-size/2.0,-size/2.0,size,size)); - if (line_start) *line_start=QPointF(x,y)+QPointF(size/2.0*cos(angle_rad),size/2.0*sin(angle_rad)); + painter.drawRect(QRectF(0,-size/2.0,size,size)); + if (line_start) *line_start=QPointF(x,y)+QPointF(size*cos(angle_rad),size*sin(angle_rad)); } break; - case JKQTPVerticalDecorator: { + + case JKQTPBarDecorator: { painter.setPen(pinit); painter.drawLine(QPointF(0,-tan__default_theta_open_tip*size), QPointF(0,tan__default_theta_open_tip*size)); } break; + case JKQTPHalfBarDecorator: { + painter.setPen(pinit); + painter.drawLine(QPointF(0,0), QPointF(0,tan__default_theta_open_tip*size)); + } break; + + case JKQTPSkewedBarDecorator: { + painter.setPen(pinit); + painter.drawLine(QPointF(0.25*size,-tan__default_theta_open_tip*size), QPointF(-0.25*size,tan__default_theta_open_tip*size)); + } break; + case JKQTPBracketDecorator: { const QPointF poly[4] = { QPointF(-size*0.2,-tan__default_theta_open_tip*size), diff --git a/lib/jkqtplotter/graphs/jkqtpgeometric.cpp b/lib/jkqtplotter/graphs/jkqtpgeometric.cpp index 81ebc98216..fa1749613c 100644 --- a/lib/jkqtplotter/graphs/jkqtpgeometric.cpp +++ b/lib/jkqtplotter/graphs/jkqtpgeometric.cpp @@ -253,7 +253,7 @@ QColor JKQTPGeoText::getKeyLabelColor() const { JKQTPGeoLine::JKQTPGeoLine(JKQTBasePlotter* parent, double x1, double y1, double x2, double y2, QColor color, double lineWidth, Qt::PenStyle style): - JKQTPGeoBaseLine(color, lineWidth, style, parent) + JKQTPGeoBaseDecoratedLine(color, lineWidth, JKQTPNoDecorator, JKQTPNoDecorator, style, parent) { this->x1=x1; this->y1=y1; @@ -267,12 +267,14 @@ JKQTPGeoLine::JKQTPGeoLine(JKQTPlotter* parent, double x1, double y1, double x2, } JKQTPGeoLine::JKQTPGeoLine(JKQTBasePlotter *parent, double x1, double y1, double x2, double y2): - JKQTPGeoBaseLine(parent) + JKQTPGeoBaseDecoratedLine(parent) { this->x1=x1; this->y1=y1; this->x2=x2; this->y2=y2; + setHeadDecoratorStyle(JKQTPNoDecorator); + setTailDecoratorStyle(JKQTPNoDecorator); } JKQTPGeoLine::JKQTPGeoLine(JKQTPlotter *parent, double x1, double y1, double x2, double y2): @@ -305,13 +307,20 @@ void JKQTPGeoLine::draw(JKQTPEnhancedPainter& painter) { reserveHitTestData(2); painter.save(); auto __finalpaint=JKQTPFinally([&painter]() {painter.restore();}); painter.setPen(getLinePen(painter, parent)); - QLineF l(QPointF(transformX(x1), transformY(y1)), QPointF(transformX(x2), transformY(y2))); - if (l.length()>0) { - painter.drawLine(l); + painter.setBrush(getLineColor()); + QPointF xx1(transformX(x1),transformY(y1)); + QPointF xx2(transformX(x2), transformY(y2)); + const double angle1=atan2(xx2.y()-xx1.y(), xx2.x()-xx1.x()); + const double angle2=atan2(xx1.y()-xx2.y(), xx1.x()-xx2.x()); + if ( QLineF(xx1, xx2).length()>0) { + QPointF lx1=xx1, lx2=xx2; + JKQTPPlotLineDecorator(painter, xx1.x(), xx1.y(), angle1, getTailDecoratorStyle(), calcTailDecoratorSize(getLinePen(painter, getParent()).widthF()), &lx1); + JKQTPPlotLineDecorator(painter, xx2.x(), xx2.y(), angle2, getHeadDecoratorStyle(), calcHeadDecoratorSize(getLinePen(painter, getParent()).widthF()), &lx2); + // draw corrected line + painter.drawLine(QLineF(lx1, lx2)); addHitTestData(x1, y1); addHitTestData(x2, y2); } - } void JKQTPGeoLine::setX1(double __value) @@ -362,12 +371,10 @@ double JKQTPGeoLine::getY2() const JKQTPGeoArrow::JKQTPGeoArrow(JKQTBasePlotter* parent, double x1, double y1, double x2, double y2, QColor color, JKQTPLineDecoratorStyle headStyle, JKQTPLineDecoratorStyle tailStyle, double lineWidth, Qt::PenStyle style): - JKQTPGeoBaseDecoratedLine(color, lineWidth, headStyle, tailStyle, style, parent) + JKQTPGeoLine(parent, x1,y1,x2,y2,color, lineWidth, style) { - this->x1=x1; - this->y1=y1; - this->x2=x2; - this->y2=y2; + setHeadDecoratorStyle(headStyle); + setTailDecoratorStyle(tailStyle); } JKQTPGeoArrow::JKQTPGeoArrow(JKQTPlotter* parent, double x1, double y1, double x2, double y2, QColor color, JKQTPLineDecoratorStyle headStyle, JKQTPLineDecoratorStyle tailStyle, double lineWidth, Qt::PenStyle style): @@ -376,94 +383,10 @@ JKQTPGeoArrow::JKQTPGeoArrow(JKQTPlotter* parent, double x1, double y1, double x } -bool JKQTPGeoArrow::getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) { - minx=qMin(x1, x2); - maxx=qMax(x1, x2); - smallestGreaterZero=0; - double xvsgz; - xvsgz=x1; SmallestGreaterZeroCompare_xvsgz(); - xvsgz=x2; SmallestGreaterZeroCompare_xvsgz(); - return true; -} - -bool JKQTPGeoArrow::getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) { - miny=qMin(y1, y2); - maxy=qMax(y1, y2); - smallestGreaterZero=0; - double xvsgz; - xvsgz=y1; SmallestGreaterZeroCompare_xvsgz(); - xvsgz=y2; SmallestGreaterZeroCompare_xvsgz(); - return true; -} - -void JKQTPGeoArrow::draw(JKQTPEnhancedPainter& painter) { - clearHitTestData(); - reserveHitTestData(2); - painter.save(); auto __finalpaint=JKQTPFinally([&painter]() {painter.restore();}); - painter.setPen(getLinePen(painter, parent)); - painter.setBrush(getLineColor()); - QPointF xx1(transformX(x1),transformY(y1)); - QPointF xx2(transformX(x2), transformY(y2)); - const double angle1=atan2(xx2.y()-xx1.y(), xx2.x()-xx1.x()); - const double angle2=atan2(xx1.y()-xx2.y(), xx1.x()-xx2.x()); - if ( QLineF(xx1, xx2).length()>0) { - QPointF lx1=xx1, lx2=xx2; - JKQTPPlotLineDecorator(painter, xx1.x(), xx1.y(), angle1, getTailDecoratorStyle(), getTailDecoratorSizeFactor()*getLinePen(painter, getParent()).widthF(), &lx1); - JKQTPPlotLineDecorator(painter, xx2.x(), xx2.y(), angle2, getHeadDecoratorStyle(), getHeadDecoratorSizeFactor()*getLinePen(painter, getParent()).widthF(), &lx2); - // draw corrected line - painter.drawLine(QLineF(lx1, lx2)); - addHitTestData(x1, y1); - addHitTestData(x2, y2); - } - -} - -void JKQTPGeoArrow::setX1(double __value) -{ - this->x1 = __value; -} - -double JKQTPGeoArrow::getX1() const -{ - return this->x1; -} - -void JKQTPGeoArrow::setY1(double __value) -{ - this->y1 = __value; -} - -double JKQTPGeoArrow::getY1() const -{ - return this->y1; -} - -void JKQTPGeoArrow::setX2(double __value) -{ - this->x2 = __value; -} - -double JKQTPGeoArrow::getX2() const -{ - return this->x2; -} - -void JKQTPGeoArrow::setY2(double __value) -{ - this->y2 = __value; -} - -double JKQTPGeoArrow::getY2() const -{ - return this->y2; -} - - - JKQTPGeoInfiniteLine::JKQTPGeoInfiniteLine(JKQTBasePlotter* parent, double x, double y, double dx, double dy, QColor color, double lineWidth, Qt::PenStyle style): - JKQTPGeoBaseLine(color, lineWidth, style, parent) + JKQTPGeoBaseDecoratedHeadLine(color, lineWidth, JKQTPNoDecorator, style, parent) { this->x=x; this->y=y; @@ -621,8 +544,16 @@ void JKQTPGeoInfiniteLine::draw(JKQTPEnhancedPainter& painter) { QString(", \\ensuremath{\\mathrm{\\mathbf{d}}y/\\mathrm{\\mathbf{d}}x\\;=\\;%1/%2\\;=\\;%3\\;=\\;%4\\degree}").arg(jkqtp_floattolatexqstr(dy, 3)).arg(jkqtp_floattolatexqstr(dx, 3)).arg(jkqtp_floattolatexqstr(dy/dx, 3)).arg(jkqtp_floattolatexqstr(atan2(dy,dx), 1))); addHitTestData(x1, y1); addHitTestData(x2, y2); - } + if (two_sided==false && x>=xmin && x<=xmax && y>=ymin && y<=ymax) { + painter.save(); auto __finalpaint=JKQTPFinally([&painter]() {painter.restore();}); + painter.setPen(getLinePen(painter, parent)); + painter.setBrush(getLineColor()); + QPointF xx1(transformX(x),transformY(y)); + const double angle1=atan2(l.dy(), l.dx()); + JKQTPPlotLineDecorator(painter, xx1.x(), xx1.y(), angle1, getHeadDecoratorStyle(), calcHeadDecoratorSize(getLinePen(painter, getParent()).widthF())); + } + } } @@ -682,23 +613,24 @@ bool JKQTPGeoInfiniteLine::getTwoSided() const JKQTPGeoPolyLines::JKQTPGeoPolyLines(JKQTBasePlotter* parent, const QVector& points, QColor color, double lineWidth, Qt::PenStyle style): - JKQTPGeoBaseLine(color, lineWidth, style, parent) + JKQTPGeoBaseDecoratedLine(color, lineWidth, JKQTPNoDecorator, JKQTPNoDecorator, style, parent) { this->points=points; } + JKQTPGeoPolyLines::JKQTPGeoPolyLines(JKQTPlotter* parent, const QVector& points, QColor color, double lineWidth, Qt::PenStyle style): - JKQTPGeoBaseLine(color, lineWidth, style, parent) + JKQTPGeoPolyLines(parent->getPlotter(), points, color, lineWidth, style) { - this->points=points; } + JKQTPGeoPolyLines::JKQTPGeoPolyLines(JKQTBasePlotter *parent, QColor color, double lineWidth, Qt::PenStyle style): - JKQTPGeoBaseLine(color, lineWidth, style, parent) + JKQTPGeoBaseDecoratedLine(color, lineWidth, JKQTPNoDecorator, JKQTPNoDecorator, style, parent) { } JKQTPGeoPolyLines::JKQTPGeoPolyLines(JKQTPlotter *parent, QColor color, double lineWidth, Qt::PenStyle style): - JKQTPGeoBaseLine(color, lineWidth, style, parent) + JKQTPGeoPolyLines(parent->getPlotter(), color, lineWidth, style) { } @@ -745,16 +677,31 @@ bool JKQTPGeoPolyLines::getYMinMax(double& miny, double& maxy, double& smallestG void JKQTPGeoPolyLines::draw(JKQTPEnhancedPainter& painter) { clearHitTestData(); - reserveHitTestData(points.size()); + if (points.size()>=2) { + reserveHitTestData(points.size()); + + QVector path=transform(points); + painter.save(); auto __finalpaint=JKQTPFinally([&painter]() {painter.restore();}); + painter.setPen(getLinePen(painter, parent)); + painter.setBrush(getLineColor()); + + // potentially draw line-end decorators/arrows + const double angle1=atan2(path[1].y()-path[0].y(), path[1].x()-path[0].x()); + const double angle2=atan2(path[path.size()-2].y()-path[path.size()-1].y(), path[path.size()-2].x()-path[path.size()-1].x()); + QPointF xx1=path[0], xx2=path[path.size()-1]; + QPointF lx1=xx1, lx2=xx2; + JKQTPPlotLineDecorator(painter, xx1.x(), xx1.y(), angle1, getTailDecoratorStyle(), calcTailDecoratorSize(getLinePen(painter, getParent()).widthF()), &lx1); + JKQTPPlotLineDecorator(painter, xx2.x(), xx2.y(), angle2, getHeadDecoratorStyle(), calcHeadDecoratorSize(getLinePen(painter, getParent()).widthF()), &lx2); + path[0]=lx1; + path[path.size()-1]=lx2; + + // draw corrected line + painter.drawPolyline(path.data(), path.size()); + for (const auto& p:points) { + addHitTestData(p.x(), p.y()); + } - QPainterPath path=transformToLinePath(points); - painter.save(); auto __finalpaint=JKQTPFinally([&painter]() {painter.restore();}); - painter.setPen(getLinePen(painter, parent)); - painter.drawPath(path); - for (const auto& p:points) { - addHitTestData(p.x(), p.y()); } - } void JKQTPGeoPolyLines::setPoints(const QVector &__value) @@ -1478,6 +1425,60 @@ QColor JKQTPGeoSymbol::getKeyLabelColor() const return getSymbolColor(); } +JKQTPGeoBaseDecoratedHeadLine::JKQTPGeoBaseDecoratedHeadLine(QColor color, double lineWidth, JKQTPLineDecoratorStyle headStyle, Qt::PenStyle style, JKQTBasePlotter *parent): + JKQTPPlotObject(parent) +{ + setLineColor(color); + setLineWidth(lineWidth); + setLineStyle(style); + setHeadDecoratorStyle(headStyle); +} + +JKQTPGeoBaseDecoratedHeadLine::JKQTPGeoBaseDecoratedHeadLine(QColor color, double lineWidth, JKQTPLineDecoratorStyle headStyle, Qt::PenStyle style, JKQTPlotter *parent): + JKQTPGeoBaseDecoratedHeadLine(color, lineWidth, headStyle, style, parent->getPlotter()) +{ + +} + +JKQTPGeoBaseDecoratedHeadLine::JKQTPGeoBaseDecoratedHeadLine(JKQTBasePlotter *parent): + JKQTPPlotObject(parent) +{ + +} + +JKQTPGeoBaseDecoratedHeadLine::JKQTPGeoBaseDecoratedHeadLine(JKQTPlotter *parent): + JKQTPPlotObject(parent->getPlotter()) +{ + +} + +void JKQTPGeoBaseDecoratedHeadLine::setAlpha(float alpha) +{ + auto color=getLineColor(); + color.setAlphaF(alpha); + setLineColor(color); +} + +void JKQTPGeoBaseDecoratedHeadLine::setColor(QColor c) +{ + setLineColor(c); +} + +void JKQTPGeoBaseDecoratedHeadLine::drawKeyMarker(JKQTPEnhancedPainter &painter, QRectF &rect) +{ + painter.save(); auto __finalpaint=JKQTPFinally([&painter]() {painter.restore();}); + painter.setPen(getLinePen(painter, parent)); + double y=rect.top()+rect.height()/2.0; + if (rect.width()>0) painter.drawLine(QLineF(rect.left(), y, rect.right(), y)); +} + +QColor JKQTPGeoBaseDecoratedHeadLine::getKeyLabelColor() const +{ + return getLineColor(); +} + + + JKQTPGeoBaseDecoratedLine::JKQTPGeoBaseDecoratedLine(QColor color, double lineWidth, JKQTPLineDecoratorStyle headStyle, JKQTPLineDecoratorStyle tailStyle, Qt::PenStyle style, JKQTBasePlotter *parent): JKQTPPlotObject(parent) { diff --git a/lib/jkqtplotter/graphs/jkqtpgeometric.h b/lib/jkqtplotter/graphs/jkqtpgeometric.h index 9d9bb7ece3..88cd944f46 100644 --- a/lib/jkqtplotter/graphs/jkqtpgeometric.h +++ b/lib/jkqtplotter/graphs/jkqtpgeometric.h @@ -79,6 +79,64 @@ public: protected: }; + + + + +/*! \brief This JKQTPPlotObject is used as base class for geometric drawing + elements that consist of lines with one decorated end (i.e. no filling of any kind is done) + \ingroup jkqtplotter_geoplots + +*/ + class JKQTPLOTTER_LIB_EXPORT JKQTPGeoBaseDecoratedHeadLine: public JKQTPPlotObject, public JKQTPGraphDecoratedHeadLineStyleMixin { + Q_OBJECT +public: + /*! \brief class contructor + + \param color color of drawing + \param lineWidth lineWidth of drawing + \param headStyle style of the head decoration + \param style line style of drawing + \param parent the parent plotter object + */ + explicit JKQTPGeoBaseDecoratedHeadLine(QColor color, double lineWidth, JKQTPLineDecoratorStyle headStyle, Qt::PenStyle style=Qt::SolidLine, JKQTBasePlotter* parent=nullptr); + /*! \brief class contructor + + \param color color of drawing + \param lineWidth lineWidth of drawing + \param headStyle style of the head decoration + \param style line style of drawing + \param parent the parent plotter object + */ + explicit JKQTPGeoBaseDecoratedHeadLine(QColor color, double lineWidth, JKQTPLineDecoratorStyle headStyle, Qt::PenStyle style, JKQTPlotter* parent); + /*! \brief class contructor + + */ + explicit JKQTPGeoBaseDecoratedHeadLine(JKQTBasePlotter* parent); + /*! \brief class contructor + + */ + explicit JKQTPGeoBaseDecoratedHeadLine(JKQTPlotter* parent); + + + + /** \brief sets the alpha-channel of the \a color (i.e. its transparency) */ + virtual void setAlpha(float alpha); + /** \brief set line color */ + virtual void setColor(QColor c); + + /** \brief plots a key marker inside the specified rectangle \a rect */ + virtual void drawKeyMarker(JKQTPEnhancedPainter& painter, QRectF& rect) override; + /** \brief returns the color to be used for the key label */ + virtual QColor getKeyLabelColor() const override; + +protected: + +}; + + + + /*! \brief This JKQTPPlotObject is used as base class for geometric drawing elements that consist of lines with decorated ends (i.e. no filling of any kind is done) \ingroup jkqtplotter_geoplots @@ -95,7 +153,7 @@ public: \param tailStyle style of the tail decoration \param style line style of drawing \param parent the parent plotter object - */ + */ explicit JKQTPGeoBaseDecoratedLine(QColor color, double lineWidth, JKQTPLineDecoratorStyle headStyle, JKQTPLineDecoratorStyle tailStyle, Qt::PenStyle style=Qt::SolidLine, JKQTBasePlotter* parent=nullptr); /*! \brief class contructor @@ -105,15 +163,11 @@ public: \param tailStyle style of the tail decoration \param style line style of drawing \param parent the parent plotter object - */ + */ explicit JKQTPGeoBaseDecoratedLine(QColor color, double lineWidth, JKQTPLineDecoratorStyle headStyle, JKQTPLineDecoratorStyle tailStyle, Qt::PenStyle style, JKQTPlotter* parent); - /*! \brief class contructor - - */ + /*! \brief class contructor */ explicit JKQTPGeoBaseDecoratedLine(JKQTBasePlotter* parent); - /*! \brief class contructor - - */ + /*! \brief class contructor */ explicit JKQTPGeoBaseDecoratedLine(JKQTPlotter* parent); @@ -355,15 +409,30 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoText: public JKQTPPlotObject, public JKQTPG QPen getPen(JKQTPEnhancedPainter& painter); }; -/*! \brief This JKQTPPlotObject is used to draw a line +/*! \brief This JKQTPPlotObject is used to draw a line, optionally line-end decorations (aka arrows) are pssible, but switched off by default. \ingroup jkqtplotter_geoplots + \image html JKQTPGeoLine_HeadTail.png + + \image html plot_geoline.png - \see \ref JKQTPlotterGeometricGraphs + + You can also activate line-end decorators (aka arrows) for this poly-line, by using code like this: + \code + line->setHeadDecoratorStyle(JKQTPFilledDoubleArrow); + line->setTailDecoratorStyle(JKQTPCircleDecorator); + \endcode + + This results in arrows drawn at the start (aka x1/y1, =tail) and end (aka x2/y2, =head) of the line. + + + \note The convenience class JKQTPGeoArrow activates line-end decorations (aka arows) by default and allows to select them in the constructor. + + \see JKQTPGeoArrow, \ref JKQTPlotterGeometricGraphs and \ref JKQTPlotterGeometricArrows */ -class JKQTPLOTTER_LIB_EXPORT JKQTPGeoLine: public JKQTPGeoBaseLine { +class JKQTPLOTTER_LIB_EXPORT JKQTPGeoLine: public JKQTPGeoBaseDecoratedLine { Q_OBJECT public: /*! \brief class constructor @@ -451,15 +520,19 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoLine: public JKQTPGeoBaseLine { }; -/*! \brief This JKQTPPlotObject is used to draw a line with decorations (e.g. arrows) +/*! \brief This convenience specialisation of JKQTPGeoLine is used to draw a line with decorations (e.g. arrows) \ingroup jkqtplotter_geoplots + This class does not add any functionality on top of JKQTPGeoLine, just activates line-end markers by default! + + \image html JKQTPGeoLine_HeadTail.png + \image html plot_geoarrows.png - \see \ref JKQTPlotterGeometricGraphs + \see JKQTPLineDecoratorStyle, JKQTPGeoLine, \ref JKQTPlotterGeometricArrows and \ref JKQTPlotterGeometricGraphs */ -class JKQTPLOTTER_LIB_EXPORT JKQTPGeoArrow: public JKQTPGeoBaseDecoratedLine { +class JKQTPLOTTER_LIB_EXPORT JKQTPGeoArrow: public JKQTPGeoLine { Q_OBJECT public: /*! \brief class constructor @@ -489,43 +562,12 @@ public: */ JKQTPGeoArrow(JKQTPlotter* parent, double x1, double y1, double x2, double y2, QColor color, JKQTPLineDecoratorStyle headStyle=JKQTPDefaultLineDecorator, JKQTPLineDecoratorStyle tailStyle=JKQTPNoDecorator, double lineWidth=1.0, Qt::PenStyle style=Qt::SolidLine); - - /** \copydoc JKQTPPlotObject::getXMinMax() */ - virtual bool getXMinMax(double& minx, double& maxx, double& smallestGreaterZero) override; - /** \copydoc JKQTPPlotObject::getYMinMax() */ - virtual bool getYMinMax(double& miny, double& maxy, double& smallestGreaterZero) override; - - /** \brief plots the graph to the plotter object specified as parent */ - virtual void draw(JKQTPEnhancedPainter& painter) override; - - /*! \copydoc x1 */ - void setX1(double __value); - /*! \copydoc x1 */ - double getX1() const; - /*! \copydoc y1 */ - void setY1(double __value); - /*! \copydoc y1 */ - double getY1() const; - /*! \copydoc x2 */ - void setX2(double __value); - /*! \copydoc x2 */ - double getX2() const; - /*! \copydoc y2 */ - void setY2(double __value); - /*! \copydoc y2 */ - double getY2() const; -protected: - /** \brief x-coordinate of first point of line */ - double x1; - /** \brief y-coordinate of first point of line */ - double y1; - /** \brief x-coordinate of second point of line */ - double x2; - /** \brief y-coordinate of second point of line */ - double y2; - }; + + + + /*! \brief This JKQTPPlotObject is used to draw an infinite line \ingroup jkqtplotter_geoplots @@ -534,10 +576,12 @@ protected: \image html plot_geoinfiniteline.png - \see \ref JKQTPlotterGeometricGraphs + You can add a decorator to the head of the line (i.e. the given start point (x,y) ) iff this line is one-sided, i.e. two_sided \c ==false . + + \see \ref JKQTPlotterGeometricGraphs and \ref JKQTPlotterGeometricArrows */ -class JKQTPLOTTER_LIB_EXPORT JKQTPGeoInfiniteLine: public JKQTPGeoBaseLine { +class JKQTPLOTTER_LIB_EXPORT JKQTPGeoInfiniteLine: public JKQTPGeoBaseDecoratedHeadLine { Q_OBJECT public: /*! \brief class constructor @@ -614,10 +658,19 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGeoInfiniteLine: public JKQTPGeoBaseLine { \image html plot_geolines.png - \see \ref JKQTPlotterGeometricGraphs + You can also activate line-end decorators (aka arrows) for this poly-line, by using code like this: + \code + polyLine->setHeadDecoratorStyle(JKQTPFilledDoubleArrow); + polyLine->setTailDecoratorStyle(JKQTPCircleDecorator); + \endcode + + This results in arrows drawn at the start (=tail) and end (=head) of the poly-line: + \image html geo_arrow_polylines.png + + \see \ref JKQTPlotterGeometricGraphs and \ref JKQTPlotterGeometricArrows */ -class JKQTPLOTTER_LIB_EXPORT JKQTPGeoPolyLines: public JKQTPGeoBaseLine { +class JKQTPLOTTER_LIB_EXPORT JKQTPGeoPolyLines: public JKQTPGeoBaseDecoratedLine { Q_OBJECT public: /*! \brief class constructor diff --git a/lib/jkqtplotter/jkqtpgraphsbasestylingmixins.cpp b/lib/jkqtplotter/jkqtpgraphsbasestylingmixins.cpp index efd944f8dc..dcd010480b 100644 --- a/lib/jkqtplotter/jkqtpgraphsbasestylingmixins.cpp +++ b/lib/jkqtplotter/jkqtpgraphsbasestylingmixins.cpp @@ -456,7 +456,7 @@ JKQTPGraphDecoratedLineStyleMixin::JKQTPGraphDecoratedLineStyleMixin(): { m_headDecoratorStyle=JKQTPLineDecoratorStyle::JKQTPDefaultLineDecorator; m_tailDecoratorStyle=JKQTPLineDecoratorStyle::JKQTPNoDecorator; - m_tailDecoratorSizeFactor=m_headDecoratorSizeFactor=9.0; + m_tailDecoratorSizeFactor=m_headDecoratorSizeFactor=8.0; } void JKQTPGraphDecoratedLineStyleMixin::initDecoratedLineStyle(JKQTBasePlotter *parent, int &parentPlotStyle) @@ -508,3 +508,60 @@ double JKQTPGraphDecoratedLineStyleMixin::getTailDecoratorSizeFactor() const { return m_tailDecoratorSizeFactor; } + +double JKQTPGraphDecoratedLineStyleMixin::calcTailDecoratorSize(double line_width) const +{ + return JKQTPLineDecoratorStyleCalcDecoratorSize(line_width, m_tailDecoratorSizeFactor); +} + +double JKQTPGraphDecoratedLineStyleMixin::calcHeadDecoratorSize(double line_width) const +{ + return JKQTPLineDecoratorStyleCalcDecoratorSize(line_width, m_headDecoratorSizeFactor); +} + + + +JKQTPGraphDecoratedHeadLineStyleMixin::JKQTPGraphDecoratedHeadLineStyleMixin(): + JKQTPGraphLineStyleMixin() +{ + m_headDecoratorStyle=JKQTPLineDecoratorStyle::JKQTPDefaultLineDecorator; + m_headDecoratorSizeFactor=8.0; +} + +void JKQTPGraphDecoratedHeadLineStyleMixin::initDecoratedHeadLineStyle(JKQTBasePlotter *parent, int &parentPlotStyle) +{ + initLineStyle(parent, parentPlotStyle); +} + +JKQTPGraphDecoratedHeadLineStyleMixin::~JKQTPGraphDecoratedHeadLineStyleMixin() +{ + +} + +void JKQTPGraphDecoratedHeadLineStyleMixin::setHeadDecoratorStyle(const JKQTPLineDecoratorStyle &__value) +{ + m_headDecoratorStyle=__value; +} + +JKQTPLineDecoratorStyle JKQTPGraphDecoratedHeadLineStyleMixin::getHeadDecoratorStyle() const +{ + return m_headDecoratorStyle; +} + + +void JKQTPGraphDecoratedHeadLineStyleMixin::setHeadDecoratorSizeFactor(const double &__value) +{ + m_headDecoratorSizeFactor=__value; +} + +double JKQTPGraphDecoratedHeadLineStyleMixin::getHeadDecoratorSizeFactor() const +{ + return m_headDecoratorSizeFactor; +} + +double JKQTPGraphDecoratedHeadLineStyleMixin::calcHeadDecoratorSize(double line_width) const +{ + return JKQTPLineDecoratorStyleCalcDecoratorSize(line_width, m_headDecoratorSizeFactor); +} + + diff --git a/lib/jkqtplotter/jkqtpgraphsbasestylingmixins.h b/lib/jkqtplotter/jkqtpgraphsbasestylingmixins.h index 1057e72e16..ca5a2394e5 100644 --- a/lib/jkqtplotter/jkqtpgraphsbasestylingmixins.h +++ b/lib/jkqtplotter/jkqtpgraphsbasestylingmixins.h @@ -145,6 +145,57 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGraphLineStyleMixin { +/*! \brief This Mix-In class provides setter/getter methods, storage and other facilities for the graph line style of lines + with a decorator (i.e. an arrow) at their head. It extends JKQTPGraphLineStyleMixin + \ingroup jkqtplotter_basegraphs_stylemixins + + supported properties: + - head/ arrow style + . + + \see JKQTPGraphDecoratedLineStyleMixin for a Mix-In for both ends +*/ +class JKQTPLOTTER_LIB_EXPORT JKQTPGraphDecoratedHeadLineStyleMixin: public JKQTPGraphLineStyleMixin { + Q_GADGET +public: + /** \brief class constructor */ + JKQTPGraphDecoratedHeadLineStyleMixin(); + /** \brief initiaize the line style (from the parent plotter) */ + void initDecoratedHeadLineStyle(JKQTBasePlotter *parent, int &parentPlotStyle); + + virtual ~JKQTPGraphDecoratedHeadLineStyleMixin(); + + /** \brief set the head decorator style */ + void setHeadDecoratorStyle(const JKQTPLineDecoratorStyle & __value); + /** \brief get the head decorator style */ + JKQTPLineDecoratorStyle getHeadDecoratorStyle() const; + + /** \copydoc m_headDecoratorSizeFactor */ + void setHeadDecoratorSizeFactor(const double & __value); + /** \copydoc m_headDecoratorSizeFactor */ + double getHeadDecoratorSizeFactor() const; + + /** \brief calculates the tail decorator size from the line width \a line_width, using m_headDecoratorSizeFactor and a non-linear scaling function + * + * \see JKQTPLineDecoratorStyleCalcDecoratorSize() + */ + double calcHeadDecoratorSize(double line_width) const; + + + + Q_PROPERTY(JKQTPLineDecoratorStyle headDecoratorStyle MEMBER m_headDecoratorStyle READ getHeadDecoratorStyle WRITE setHeadDecoratorStyle) + Q_PROPERTY(double headDecoratorSizeFactor MEMBER m_headDecoratorSizeFactor READ getHeadDecoratorSizeFactor WRITE setHeadDecoratorSizeFactor) +private: + /** \brief head decorator style */ + JKQTPLineDecoratorStyle m_headDecoratorStyle; + /** \brief head decorator size-factor, used to calculate the size of the arrow from the line width */ + double m_headDecoratorSizeFactor; +}; + + + + + /*! \brief This Mix-In class provides setter/getter methods, storage and other facilities for the graph line style of lines with decorators (i.e. arrows) at their ends. It extends JKQTPGraphLineStyleMixin \ingroup jkqtplotter_basegraphs_stylemixins @@ -152,6 +203,8 @@ class JKQTPLOTTER_LIB_EXPORT JKQTPGraphLineStyleMixin { supported properties: - head/tail arrow style . + + \see JKQTPGraphDecoratedHeadLineStyleMixin for a Mix-In for one end (head) only */ class JKQTPLOTTER_LIB_EXPORT JKQTPGraphDecoratedLineStyleMixin: public JKQTPGraphLineStyleMixin { Q_GADGET @@ -181,6 +234,17 @@ public: /** \copydoc m_tailDecoratorSizeFactor */ double getTailDecoratorSizeFactor() const; + /** \brief calculates the tail decorator size from the line width \a line_width, using m_tailDecoratorSizeFactor and a non-linear scaling function + * + * \see JKQTPLineDecoratorStyleCalcDecoratorSize() + */ + double calcTailDecoratorSize(double line_width) const; + /** \brief calculates the tail decorator size from the line width \a line_width, using m_headDecoratorSizeFactor and a non-linear scaling function + * + * \see JKQTPLineDecoratorStyleCalcDecoratorSize() + */ + double calcHeadDecoratorSize(double line_width) const; + Q_PROPERTY(JKQTPLineDecoratorStyle headDecoratorStyle MEMBER m_headDecoratorStyle READ getHeadDecoratorStyle WRITE setHeadDecoratorStyle) @@ -202,7 +266,6 @@ private: - /*! \brief This Mix-In class provides setter/getter methods, storage and other facilities for the graph symbols style \ingroup jkqtplotter_basegraphs_stylemixins diff --git a/screenshots/geo_arrows.png b/screenshots/geo_arrows.png new file mode 100644 index 0000000000000000000000000000000000000000..a0af9b5198afe8e6ca318a1823faefce4688ec49 GIT binary patch literal 79826 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

Lbp(eySPfc3^bozcFgaM{g7WKd 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 literal 0 HcmV?d00001 diff --git a/screenshots/geo_arrows_small.png b/screenshots/geo_arrows_small.png new file mode 100644 index 0000000000000000000000000000000000000000..930bfcc731b8c9fab3a4209d0709b0b59b3e21ef GIT binary patch literal 13951 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⁢|%EmL=)YHEY&H>{g9Ks44)_2h8k)n_Q+JX$;W^ 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 Z{QtgMBcLzN9sB?Q002ovPDHLkV1nN?>5BjW literal 0 HcmV?d00001