From 1f91c716577cd9987ca54b4f1ff2d4d432c72b02 Mon Sep 17 00:00:00 2001 From: Is Isilon Date: Sun, 17 Jan 2016 10:15:04 +0800 Subject: [PATCH] Packaged it --- .gitignore | 47 ++++ bower.json | 2 +- convertMe.html | 62 ----- css3_svgCube.html | 114 -------- grass.png | Bin 14970 -> 0 bytes images/gui.png | Bin 0 -> 64044 bytes images/input.png | Bin 0 -> 27755 bytes images/result.png | Bin 0 -> 38344 bytes back.svg => inputs/back.svg | 0 bottom.svg => inputs/bottom.svg | 0 front.svg => inputs/front.svg | 0 left.svg => inputs/left.svg | 0 panels.svg => inputs/panels.svg | 0 right.svg => inputs/right.svg | 0 top.svg => inputs/top.svg | 0 package.json | 21 ++ projectSVG (3rd copy).js | 457 ------------------------------ projectSVG (another copy).js | 477 -------------------------------- projectSVG (copy).js | 458 ------------------------------ projectSVG.js | 3 + readme.md | 40 +++ render.js | 75 +++++ svgCube.html | 52 ++++ svgCube_gui.html | 116 ++++++++ webdriver_rasterize.js | 54 ---- 25 files changed, 355 insertions(+), 1623 deletions(-) create mode 100755 .gitignore mode change 100644 => 100755 bower.json delete mode 100644 convertMe.html delete mode 100644 css3_svgCube.html delete mode 100644 grass.png create mode 100755 images/gui.png create mode 100755 images/input.png create mode 100755 images/result.png rename back.svg => inputs/back.svg (100%) mode change 100644 => 100755 rename bottom.svg => inputs/bottom.svg (100%) mode change 100644 => 100755 rename front.svg => inputs/front.svg (100%) mode change 100644 => 100755 rename left.svg => inputs/left.svg (100%) mode change 100644 => 100755 rename panels.svg => inputs/panels.svg (100%) mode change 100644 => 100755 rename right.svg => inputs/right.svg (100%) mode change 100644 => 100755 rename top.svg => inputs/top.svg (100%) mode change 100644 => 100755 create mode 100755 package.json delete mode 100644 projectSVG (3rd copy).js delete mode 100644 projectSVG (another copy).js delete mode 100644 projectSVG (copy).js mode change 100644 => 100755 projectSVG.js create mode 100755 readme.md create mode 100755 render.js create mode 100755 svgCube.html create mode 100755 svgCube_gui.html delete mode 100644 webdriver_rasterize.js diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..6508b5e --- /dev/null +++ b/.gitignore @@ -0,0 +1,47 @@ +node_modules + + +# Created by https://www.gitignore.io/api/node,bower + +### Node ### +# Logs +logs +*.log +npm-debug.log* + +# Runtime data +pids +*.pid +*.seed + +# Directory for instrumented libs generated by jscoverage/JSCover +lib-cov + +# Coverage directory used by tools like istanbul +coverage + +# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files) +.grunt + +# node-waf configuration +.lock-wscript + +# Compiled binary addons (http://nodejs.org/api/addons.html) +build/Release + +# Dependency directory +# https://docs.npmjs.com/misc/faq#should-i-check-my-node-modules-folder-into-git +node_modules + +# Optional npm cache directory +.npm + +# Optional REPL history +.node_repl_history + + +### Bower ### +bower_components +.bower-cache +.bower-registry +.bower-tmp diff --git a/bower.json b/bower.json old mode 100644 new mode 100755 index 5d62050..69f9df3 --- a/bower.json +++ b/bower.json @@ -3,7 +3,7 @@ "description": "", "main": "", "moduleType": [], - "license": "Unlicences", + "license": "Unlicenced", "homepage": "", "private": true, "ignore": [ diff --git a/convertMe.html b/convertMe.html deleted file mode 100644 index 1a3c94f..0000000 --- a/convertMe.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - Snap.js isometric SVG - - - - - - - - - - - - - diff --git a/css3_svgCube.html b/css3_svgCube.html deleted file mode 100644 index 8df9c44..0000000 --- a/css3_svgCube.html +++ /dev/null @@ -1,114 +0,0 @@ - - - - Snap.js isometric SVG - - - -
-

This uses a css3 to make an SVG cube from a SVG panel. The buttons allow you to try different parameters. The front, left, etc svg's are just linked to panel.svg

- - - - - - - - - - - - - diff --git a/grass.png b/grass.png deleted file mode 100644 index 14c5c7da1990eb83708e06788d37e092ab30bd77..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14970 zcmeIZ`9E9f`#*l#zFM6sI-@NeRJAj7QA?FjOJ?YFQ*;nZ2}(=V5~L9lq@5PkTH4W~ z1l1NL)+#~7QcCS@i6D~LLxPlukVx`5=KcP>Ki}`;@%aNjKgS>c8##OHxeI&5^XHfg{`9jB1)^(=U5#yL`l)GCELqq&WY5#kHI0s-iuC4WCKF zuJ5jqUhMhh;Z4Z4CpPB~s>JVe32ZKDnN6?weV6qa$*&vnz88-5UV5|fRm>o>7SvBC zU3l{{XGtK+mP9>1*?*fs65Q=~Twdh$nQO(_kY|>}GQo?8mA|lz(A%j{@?sD+7%R%L z@%Y|?RyW@qAGgF|dQXYa4FOV3M3XdHYY8V!u<;0?l4XoG2CNkJTCC>0$!cg$_xzsT z6e_^;G|RUEkN@n&f}7Su6)OSvRz4BO$RqKeMV_Opx+5it3g#g#cJHiqW6O#K?lADp zZxj?{3U$_hMB>n6I4eXdG1vH8w(+;1mA`tSuhj8ZFRJ@PBJb-qjq6IQ)J>vSE(us% zEGCr-0G}RZl}A5(PZsn&;2qu$=*c=61HiS$S-e6KM0zd5Z>GMeShHOj*>_?l_^IV1 z-r)lPz(NPVbNybiv(B}sm>oGVZNdsSAK4i&?=k@ZrVkIu(}q?#$iE>E_xS`m74N&L z3p5|KC({%O*C;H{&V4>5qQ+bRcycK}s9#nyvVX(D8oLcR_>4`@sr6rLe~0<6KRTz- z+kmtbaP+y6bihWc4BRvEpEbYtYwGBJjMC=7(c!x6Q2c~hZh29MlxBK~RE6_cz`1}HFMyt=CUCJOlNM@McA zDo8$$faQ-!^-*=%aa0anx+ltb*vhx>D~J+gmWX+P;`Q~ha}eje756dmi(1wVz` zb}zfkBqRXm3n64)gHR$dWo4XwVSPotaMQX&1N$sL_qTbbYhgzASuTuTj=Kr#s83Kj zx7}y8+o_V>fk#4mve$M3;l(dYLq7Lj;eUJ()ql{Z1Y3E>o0PNipGj?qSh(=$Dm++* z{+5Q`?tK7ritk7iCg~fAT>?A-ufohveYf=E7?khVYgC3Xn+~y6vc#B08`6) zai`K~EGduplZY^2!(c5P^cg4@5>WWn#4|wiUs)~gh%yn&jZ#rmUlaxrCL-uiX+szc zhJxOG5WAb{(%}K^lNb|~t#J8wXk&5%+c$SVC7f$N*B-KVj*G81OW243?)hCMW3pub zGdJs<*n7p$T_xyu%QBA866ZvPDUF(xBOm20!E6lr_0QUr6c?+#-7r6&!O8aJ=iTvvJ!=NB$$?BmJS?bkyai#)8{WT|cfx1$_pL>7`e1R#|EydXpW-t-`(`@iAg|Z;$a!)y{D+Zeu&NjD= z7U?WlodS(>a0tl(vsRU`^;|336G|qZ+ye7VZ?Wy)))20 zB5H{3PJ`k*zlUe<0Mh#QvoKoEwT^id!0qUI*{1(}LQD>jt<8cI0Bur{de^9&L&=4a{OW*o>}%q^x^MM4(+OWr z#NH`M>eh_<_}LE{CY+vv*CM@@{sSBw86-ehU*zqpdZ&JW_+K zjfcuwq=AsDbQgzeo{2N4u9ip|ZLMeA$RvK^x-+D5DQHat%?>l2GjbgcsjuI>8%-|~ zHoqDrdMt8_Uz}7RReYPSjyX4Etrd=rN261gY*TC|o(vcNdMnlnlba@{v=*T|8`p>L(^Kx&&BHi^iFFLabnhux?d0dtfTm%O1ElJXdN&=F7~y+G z0bGCc$tf8@KU+5H0=Y+#TsTQ7oH`IRMt34;bST%W+ENxf;q%Ls)wbdEltn#5nkVZi zGFYa&p-%V%= z@s}P@IBSj<%YqKOcZ)JB8X<=*auhz?xaAzP(!EF+YGnk(;eL|Q5@g5Bt+aT$f3?v2 zxM-h6I!WOheFU|r%-RF+(q0D5sRz54g}F(^g-)+P(Bf{-DlRejx;WLEt<_OCdZaw& z#v)1pjqX^krc>3V<2H6o)1uHEXG+^AXv*oC*=Le0g(XRV3>Fb_i))p>h+(rCtg`uN zUj%t1FgQJHivA*{S{GUy!*d8oH#dtAQwpWy%?S#gLO(}U z3^RK5`-6eHvp_|}K>|kIL)_QzzVQI!xsp&$6Pyxdm0w+()EX75LzjnAa@YHu%{Fuq z7$FoK^#d*anffi$>rIogB!=)4#ngi&a`t>LYEf}sQi&|#_)}XsMBLI~fRsI`f-sh- zdtfH1;e}RiIBba}-7%}=exFI9ksV@(DMc1A?RxFVt(;A3YGA9=qvo{`OhIltevIy( zo(aA;OJKeM_v8)R9affnZ7XLoVY;&?+AgxoH&z)To2JK zG-8D$$X=iBP7!-zzoio;3}q`=yo-5ylL-qC2IuO?V#3dky1>G5*+0n&iz38|q+A$x z3L1jq%2w4)buO)>m~YVS)a1%zHnlXdGcV{<*=>3|IXAeuT(JyE&`#44OFh2jPF6+d zT8K~MFbk(iIl}Jpn3Y^Ru1@M}%r>u!FL8Xyh#_?2+o{IQcI(3GX)ncGv*ppG-pvHWx6@xa7O3`?z)?L#L8Nhx~T3{JkBD^H2DI5 zdvo%cezsaWy@~(YQ^eQ-4TEu?MJ7!+61gk|F|S;vw(X1KkUn_9AKSoM=I_&C4h zP8G{xxVm&giO&DRhlamz4BsT29!$H{R4rwa*`p%A+y;$@G2|E)1sX1XLK2lpibj}f zzZB2w${gGzhhj zs_g*+@hnF^YSlr8VbY-w0D+IFW1~=!06j*=?Lv#^p2SQvHA-;Bgz#O0(R!?cWc_r? z=9KlyoO&eHCh(wF6~nV`vQN#w%n^ z+B=?xi|U19d4^KK>t7MOClDUu0o+}Be;;=LlyFXxyD`CO^!pvel_9O{TxRHElX#kf z?#CVhnv;z<37!31@lrZ`dksVG+H7Gv(d~VJmf=l10!Q5-Sr!^7#?-EFEbhWJxqri8yzfxU?az7JG`% zb19&Vj$4pch{27Uc`D9O3+{b<2bCL*lRhRW2!eA3zXA8u?u@a6oQeyaDJY6t5n=YI zu7uDXGfpdaS>?$t)lT{~g?xhZ4u7i2P8LC{xMk%{t2@AHcSiFhSm|UlY1VuX;1&Nf z0YlJqq#&K&Wu1H|yR?CO-?%o%fb^i9@0ZrT-dO2cVoXR>E<|uu70e=TGX*%-3+de$ zK~pX0tC+RibZ8X|%QD{wcxnAyj^VHt?Noe9GG&)sMET}SzD>IHn=vu#CB$9Q_#i!o zwj0soZ$TH`j2>_}RUUO&nu@Fw4Mi_DG9%_z)H4OgfqU7v8`!0N(b$IXCUTx*yrEC- zVM0r)K;7&;C+R^gf`q_R=W7(WLf!Nkt;dK_!INB?cr7yJ=)--<7G`E=Q*Eq)dw=L* z_&I{*YUMspa*Du1Joy4jgQ=-+gd41};p*pVg-Ns+H~GlfnJnbyW|tdy`csFP=(7-R zJ@-_4BZ~26x5h)!Ql!v|YjTeJCjc0nd6V6pyyl6TS@Nl>qn>xK{y<=K@t zL_LHQoL#PTZ+j-;cr=JwT$!l7x{cEYb_ z?M?&+jSOSF0f6wdCu&Ed^iAT!Lzatr>5DDDj~dRBef^(03*s*Ns1|u5FTpKXyHig1 ze;oZ9GO#!J?C-4=oSXGg|Ml>pMfV|9H-qHip?!?*M0)-{%N>RB&df#lYV#xaH6G5(UAhb+R^{u2!JLcUm{cuzX zY2!U(;?P*YQF$V9!NOc>qZQl~z#SjNCqLZ<_y%7}CP5;qMQC8iBDlE|cG(Q{#yEJEe+=WSxXq>F$dv6s#&aab-`>|zn zHN>R%R*Oz!AuCXcq!K4()7A0c_*!!cISssD?W9kBa6cX&{xnl^7x!T}^)THaYJGXa zx@_Tei}#3bNz>9Nt(c&H#Ezep2zuXPoWG^&V%SjV-3>^Sw}5Lme^4`}n+yUH%_XndxVInv<=0l)q>sQsFWj^JeFf#i1rPWy1YXdJL%bv-48U|o*iJzX*5hvmqUf?5*fRwfkZCpK#Clqftz6JAsK9Xx&8u~ z`7t#}A3}EF7w_|d#b*&x@Ye$lyOM%FqF>@upklbQ1)qc^>Gp1g4coJvtqIqbr89~t zIL-iFGQz|ln1A$9Xg*!wz`A%en@EJzCC^k#b~`8w2c#86{eA zx{@j_=4RIv6!K3L8B{HXJp3+vfRi%Kgt|jKw);|yhjitXbgia*^G(6^EXHZg1K^AW zp0Qw_WTRLteA(1?t_Bw*R*xC~Y}(QEsV#c^b4pBir8>KO$Ocibu(l1rQ=_(KRr8e8 z;G{F^&>;^<`8NF5nOUX7Vrb)rHP^+)?yAV6sP{p2a7jF^&z9klNa0C#l_%vkEUj`k zg^JRt+8x>Na-r+}!BC-(IO@#9Yl31-ms{O7py7*|XiBAV6D`fX$lUlY445^J>(~X^ zTz%8DTJ5>X6)oSycS4R8>bct;Ln8(VmWh>nY;@xyav}#*2Dt9H6)J9KSzRUIc`A=9 zFKOeb<5>B0q{40^n}yOgJ+28;p;0tv&NV*E`W*nO&ahmG2ys_7PWYK)ad$O-HcS9D zlMr#D@oYr&LOB<1{?)ArdkTefrn{B0WAJyjvG(r@fYX9WQ3TEQlTLhtMQmO=Jj)_< zpvY5_e++8E(Ces93zsgu;YRmPK^q~_8+d3jyO?O-YaRu%Ek2T5!zOkD?x)5uDcQ4L z#N!bA7YgFzbVVugxaqk(KIE|I>-uI?qW;iUxXy~%d*hC1VfKsMH?L?@w~h8|RDGws zU>ylDJV?0ioV)4FHD9$;S8E6>2~B3V3^0Y=DUG~x^*YYqcO@Hx#gEA^Hl(~AK=`Be zG*T`x{o{Q%5%N&SJo~X7oc|_$$yHR}E#*Iv0h44lQIS9+>y;s zC-TG1V~hGOw|_ZXxdd;JvOP+&*p{*?eF3KzH$HdSH3V|C7!};;siZKKp@FiL!(`s@ z0Lc@#sqVS@DJYASz@4u#RF4vT1=G|5>^(5t=}m$WD?^~1gM24N<&sz8*GetK?cGdV zwA3M$yzcX$ydFffO%dz^M6(Sfq(A|&3@@@?^b+3KZ$&3$&VDpeLE@@MoK|v{uknXO zSf(_sJ7zWw4xaf_x90ms=GV z`Jfw#2@ByD+QtM>XLoc!@6zY}`VJ+-=1K=?KVLRous7{W*L&~MQJjoY%jsk)JB3r- zT>G#!_%P~B)Q~niA!5AcMHA138-QSlm&-@Qc?6L{3UpAnjLg=x6DPG6dWKPopb?+u zJp)&cs~l$G<2fh#!#_H2+ zs@#|bX-^ZDPJGD3U#f56o^v?SGs&WzkuE8eZ|7OVu`6SnHxx43JwA1ea=_TP-ZKx0 zidp14%P%#7zN6u;-qL31mB`wh0>SFIY>@{r{Ab!LOn;iCG29bd-{^aKNqsQAp!O&G zJ{X);?IBpb5)+0#_hIz#osZu?Qa?W-eVl0U9wrmZGBHzBKS%xPeK`R&iygG05Xu`q zRgDlF^Fd&fSB98lQUg}nBQhL5nEhDJj42lh~SVJo&?*K;VkOv%>9Uk~)9 zz8uwm5>bbqqF9QYz55T8gE@PxPgFlR!F8`Ga_K05(n-#!IeVAh4*3rqmh0ztYn0gW zf2>@ih{hScHHEJHH`Z)8wVdjX!3Oo|bja5kMJqAB;&b2ESV2r|c zYdFCk(Y4i&(cI}z;OR;XwFxs?mcL2WaMkp9uDdr`V^Nhh<{ zO1)k1lv4fn`kb$Kb%6@xS#?bR*D74o4)tJK#cyO4%Lw1s5L@hPv{i|>t*qnA0_?VX z30dqt@u~zDnEu13xg%G?Gts9ys}#vquHKcGPGPO|=(51o7RO?U6UdnrpA+ak!Xxh> zseSw(D{oz+^lKY}OwNAA9|^`?F--%Gg5t8ptt97_s$w}~Y?UCpm;}}Y{)@!!5e2_4 zLksP8>c_csjBPk?2d=i?q$bV!&ivJhy^vT*yx#BoiEaNl4^xAgy1IhSGtxDEGrByl z09^g@3$1FN>SiLG7*TS5a>xw{iBDj}Zf4!i^hdz<0t-hJ35?vi(O!yvlU5B+7`Cr+>aBm>;LoH3lx zrtuKp8bS^bQvN_sEXKjLB8k4!T04mtadu|IR=KMo9sqj!9;RQN-5(b~*9?e4_O+rq zNpeMQOPn2m_FtF#_!g(aAB@G;+$pY7Q0+UBf0p0Rk$rBpWM5LqyX4#_D><$L?%}MU zVd~3BQxk`=L$N;WYEX^$-J|w>{O4ubkzkB(DY#~R1T}CyChHt1yM^7w==<&=9HLqF zE_jr3o$b|M4K!;akT zBTmh0Dm)E@w^qXm_ox^L=TCi0D( zVab#~k{e0G@GzQ=owe<0EL8MtKuewbG25Zu45)B%!K)w^!}%uvI#(qrvj)bQ@=UoC6Olz@zfvzg9o zEc0DCRWG6=k@Aa23~9N`i=)B*YeBm;BA&|u8Ti>`^kS|+Iil~N`k8K%y)y6tf_HWG zh!9Vk_-57;9>?AZXnxugA6rG)aUv{G#zaoHaa054Z|u@IE$5cCu?ra9V^?(=|J;&1 zqlAVp*_W|hU=w4JOuR!nNhj8fk)we8o9E=$xDC*`!q>qM&W?45astAUmx63H9u8+m zI`nOf48yyo z1a<#R^1I5uBoExX7RGPCMyV{DimhofXEm`@>valsbU!+|7TM&D2+zcC&)3l%?AHLA z-=C_$5Y7#eU4nQ(m9o`9+m|*xk{TOq-2X;3tbRT8z^#DO2msJ5e#b6l53dsRlTXWn zth~>_!-683QDJznoBD^=!E*H6T?Bh&Z{s47S&a_qiaG-IxF_ zibyx^&`hF68&eCheg>vl$w{qL|aT=iq#y2WCT-3E9U zsDfvEWthm-1tv38a7K+{lyri@8~e3ga)&N&Pwl(g1u6VeT@-v}z4Im~+!r*2fg#lx zFFme);&G=uqJ5B$CvEwx_@rZdbHe4-cA0+P}L+SkCdb%d4ZM8$>d&I|VDe>9g1o3rnO_ZhhV@MU$zeV{KDBrBEK=i-u_`tkxCG9`X9`t4w3 zyj51+iuVc5{N@`K&*7PDZp^h>`BiOe?$d8#CxIox{T=!Z0PwTnRxbcbt)|hE$hh)7 z$h}4>tP5^RA7K_J!wgzc@)~zr9bpd4+=#Te2X#TPaHhGPdQ8YZhIuY&2Vh{7V%OvI zPDJS{tM{KAN+sU0EUD2Sb@^1_$#-HK_g)C}ZJ0h1KY=;vYaKsvq<6({7f7dNExIH2 zqRM|>G!SBBt&j9!JHT8Hv@plnXrH|XIZO22Oh(tY{`D(hO(89lv}CTAWeT$i#LzOv z%-u@7mHi0sm9t`c;K8&`U5y|N<<+8Q)Ysmihlr-p>B^=*(vZRNt}EMts}jw^so?uTrKl0IzUOS2D`rWd}6} zapBVt$GMgNmAXsYn*%lAW`Q0Dg=arIXu=wtE$gni4FCrnkW!HyUM!+9YWzOPemZ$p z+^Ksp1Aes~bUL40_nYdQyfrE`idWXmX)=i~>n?Ij?u3IX6tIM2{!$EyV{~n<#O13Bvl+J`b}s$$xsz^w~DR+ULwERgBpG^x@vnf*UYH z7&VF5j6O8Izy5juYIKQZNsdVLM8ECi>}JEvo)a@k5YS1z`2lohQ*Uc#qw_}moCZ{G zWw&0~uTzA#v_NlKZ_WT<>OWllvlU`bcO>h$)3MShSOSPV1IN5dIrB?T4AWBvIg8x$ z%YW5@Z8!%%M^IF(=vfj?*(#_nBp6$d-j=d`7cib!SxhYR3*G+Fz2HxxDV;RP0oyko zLp=C>Uauh!&!$HXE?yPnRMEFtPdwmSVERqvd$*{ZM394p8N7KDJb<_T?Oj%B406`c z5&&v$C$h6g`s7UdSgw_|l&Pnr;I3oa057v%w4OSDL&iq zc{CQE-2w83bD2AcYZoJE$4y6*HBfnF$c)av9#>IdwR0GH@bO5nr-c59S6$`CsL+TX z>|?#G=~XhB#+xdV!961e+1a33@6NN1)XAE3qWF6HLwam)?EqY&-heXv7#NO-$Wa}Q zEctc#Ee0u1clUj@4Hz!?vlz{r@1O5H(H~cD(=Z z^3oug&d&V+(Ea+*gn6hf5-bouwKBcb+ZBk`e=>ppL@MeYGSViAA&Dy~>VS*=8yL4O zzETcUm_@d4_=Fp5d0~KR-_?5GpOKFSI}83xQ7;rTOmsp)M*QjMzK=UwAss)+geL2E z_!SFArb~$tfi&BLRj7WT`Sopib3J2`;EmdKeXPEE-66_RO5_U2&C?lnIZO zn4KYfqUuIt0M!DljR3&IeU`jDfvP!J<)LH8k8)iyO!@}n@bv}G*}Mq)ElRqi1%=3_ zz8n62>Y{`dsjv+gH=%jFHsw;}`coa0}hz$Fx&C6a^s!y%;CIBup5aq)@kf+Hv}$uKgh$VfSPRG(2O>| zWcy_&2o{F1#`x1gFj#zj0!oo^&iJSTknwyA>uSY(P5K@rguza) zCL$nrchM$4qne62LcDYoRiyG(>F`mI+&bN>#vO$wae^Nr5Vt~G!4(dz=p>GnIKogl zc8A&Zk5A>nl^TI&7tN-R6DB5msrC@}TK*0bR?Bs*NTrJd<^5S;&rb0jA**lO4j{1m zZLTl&es~7yIYwN2q@Rci3Y-0InV|2;|3ebwh)UGg?z|ofc>QRDEEBlabw8*+D=^SD zO7;kl`5Rs7em0WGKLgz3WeVN724S~l>Hqakm2t*Q$y^udv%Bwq?HT zj`sk;cc>Ah?DF2kfjP>DmrmTc!P(zwFcs{3TV%WpnY7J0w(0#+K((_7=-PCcfqr) zc31AHd>lHZq#w7>n?Kg*=VvkBcY>w*t$m{73cBu7xH-k946AFL6*PgYM+$dzLSmE9E;8I zBMsOsH{W>Qa#w9xzpeRzs7{c3)+0U>OgB1}pGAc>f;;OY)?}BPhREglWb79b2<)icvn0&nLnwlZ$LL zF|G$8WPd8i9&dRCy<@2+u%oP}ZUHJTnvf=c>OXmPvcbb`z;Vz24+inD+6LS^;lG5- z1yj9OA^&u8TKperI)I+^xgCEyaP5B&nhtKYndG2V|0(hw`tyHoXq-Kb=7PB-=#J~R z0xKj2HF-%;$25&zZ)u73zzh%;4vN6fFuu z(5fN@QA@|N3DK-3)HJx{i_LNz8_l8Wgx@w1qg1|Fh#L zeU=$l9{`%~zT|)ci2A2>7UV2}uEPIw&%cBJ3gmwj=3iy_R~i0QhJRhwL@Av@W#-&ohi?>zg z%Dg|Zs0*u6Tz?kfoT!YXnZ*_*trTrC9^g=-pHiahq;-)~R1>EGNKwbD-?||Yjz!6D zMU{#A3Iu11R+p^ju_aY0RDXS$t0inZ;HAf+l48kM;}tf`5_)(Mr8#@Q_oyg%^2K47 zcdnUr&bHD~E}VmdBU8}(VSh5exw+X-m;}u=p-?&*b&nmn2gs?Zv0v-(cAZ@>Dk>6s z+IXW^g$wjY6OL@1k7w}2fBRPLurvJhw&{(s*~;ErWOhlhsrZ(2G?K@%hS?>DXGGb985XM+$T zQS=+42>5O2P1F*!?XT%@RkutMF)x_z(EoPQOQ=9vXCe^8|MxJi;agF}jNYBDzr7;k^c5pJ|_Ad2V(Q)gQVyF&!*VP!8ejY|Gt)H(80}T zIa?k}E;R)g`md-a9gnAc1OrP;OR;p7Py_?yvG5mA|NV@J zEEaw^pKHI%M`FIJgBzdU{a`a_qs?1pGms?=v-0tzXFEx6=f-KH6jz+~Z}B^lKV3!R zippj2^B8moo>f6T65ih&Rc)RU6A}uPFS{O)xsuxwQ#D@EHWnkPx9_9n2(W^su)n36 z^jTgL_ww?xusD=vYQO5k)fcNAJ(w!4tEt!bChysm_kD<0Dv1;$!^XxQNoI=i z%0A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 Gfd2zS;@pk^ literal 0 HcmV?d00001 diff --git a/images/input.png b/images/input.png new file mode 100755 index 0000000000000000000000000000000000000000..d6befd0608472b6aadfd54e8197a7f9c9b6e9b7b GIT binary patch literal 27755 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 Gz4#wWUxgC@ literal 0 HcmV?d00001 diff --git a/images/result.png b/images/result.png new file mode 100755 index 0000000000000000000000000000000000000000..08df8c9e2ee42180e44ce7a3425a1352b5420651 GIT binary patch literal 38344 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 literal 0 HcmV?d00001 diff --git a/back.svg b/inputs/back.svg old mode 100644 new mode 100755 similarity index 100% rename from back.svg rename to inputs/back.svg diff --git a/bottom.svg b/inputs/bottom.svg old mode 100644 new mode 100755 similarity index 100% rename from bottom.svg rename to inputs/bottom.svg diff --git a/front.svg b/inputs/front.svg old mode 100644 new mode 100755 similarity index 100% rename from front.svg rename to inputs/front.svg diff --git a/left.svg b/inputs/left.svg old mode 100644 new mode 100755 similarity index 100% rename from left.svg rename to inputs/left.svg diff --git a/panels.svg b/inputs/panels.svg old mode 100644 new mode 100755 similarity index 100% rename from panels.svg rename to inputs/panels.svg diff --git a/right.svg b/inputs/right.svg old mode 100644 new mode 100755 similarity index 100% rename from right.svg rename to inputs/right.svg diff --git a/top.svg b/inputs/top.svg old mode 100644 new mode 100755 similarity index 100% rename from top.svg rename to inputs/top.svg diff --git a/package.json b/package.json new file mode 100755 index 0000000..f654c18 --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "name": "gen-svg-cube", + "version": "0.0.5", + "description": "Render and download svg cubes using webdriver", + "main": "render.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1", + "start": "node render.js" + }, + "repository": "git@gitlab.com:wassname/svg2Cube.git", + "author": "wassname@wassname.org", + "private": true, + "license": "ISC", + "dependencies": { + "fs": "0.0.2", + "globby": "^4.0.0", + "path": "^0.12.7", + "snapsvg": "^0.4.0", + "webdriverio": "^3.4.0" + } +} diff --git a/projectSVG (3rd copy).js b/projectSVG (3rd copy).js deleted file mode 100644 index 33017ed..0000000 --- a/projectSVG (3rd copy).js +++ /dev/null @@ -1,457 +0,0 @@ -'use strict'; - -try{ - var Snap = require('snapsvg'); -} catch(e) {}; -var SvgCube = function (options) { - - // Inputs and options - var defaultOptions = { - angle: 30, - size: 64, - verbose: false, - // outline - drawOutline: true, - drawShading: true, - clipCircle: false, - stroke: { - "arrow-end": 'none', - "stroke": 'black', // stroke color for outline - "stroke-width": Math.sqrt(options.size)/2, // outline width - "stroke-linecap": "round", - "stroke-linejoin": "round", - "fill": "none", - }, - // cube - flatten: 0, // fraction to vertically flatten the cube - topUrl: '', // url for image in top of cuve - topRot: 0, // rotation of top image in degrees - topShad: 0, // shading for top - leftUrl: '', - leftRot: 0, - leftShad: 0.1, - rightUrl: '', - rightRot: 0, - rightShad: 0.3, - svgNS: "http://www.w3.org/2000/svg", - padding: 0, - } - - // add defaults, 2 levels deep - options = options || {}; - for (var opt in defaultOptions){ - if (defaultOptions.hasOwnProperty(opt) && !options.hasOwnProperty(opt)){ - options[opt] = defaultOptions[opt]; - } - for (var opt2 in defaultOptions[opt]){ - if (defaultOptions[opt].hasOwnProperty(opt2) && !options[opt].hasOwnProperty(opt2)){ - options[opt][opt2] = defaultOptions[opt][opt2]; - } - } - } - this.options = options - - this.angle = options.angle - - this.w = options.size; // input image width - this.h = options.size; - this.f = options.flatten - - this.rot = this.angle * Math.PI / 180 - this.padding = options.padding; // pading fraction - - - this.cw = this.w; // we will keep same width but change height - this.ch = (1 + this.padding) * (this.h / 2 + this.h * Math.tan(this.rot)) -this.h/2*(1-this.f); //canvas height full - - // create SVG element - this.paper = Snap(this.cw, this.ch); - this.svg=this.paper.node - var o = this.options; - - var style = document.createElement('style'); - this.paper.defs.appendChild(style) - var styleStr = ` ` - console.log(styleStr); - style.innerHTML= styleStr - -} - -/* drawing measurements as a function of padding */ -SvgCube.prototype.measurements= function(p){ - if (p===undefined){ - p=0; - } - - var f = this.options.flatten - - var tBox = this.imageT.getBBox() - var lBox = this.imageL.getBBox() - var rBox = this.imageR.getBBox() - - return { - // measurements - uf : 1-f, - p : 0, // lw/2, // padding - - tw: this.cw-p/2, // right side. adjust by half line thickness to keep line in canvas - th: tBox.height-p/2, // height of square, and dist to middle - - mw: this.cw/2, // middle x - mh: tBox.height/2, // middle of top square - - bh: 0+p/2, // top of picture, bottom y - bw: 0+p/2, // left of picture, bottom of x - - sw: this.cw-p/2,// bottom of cube - sh: this.ch-p/2, // right of cube - - lq: -tBox.height/2+this.ch-p/2, // lower quarter of height - uq: tBox.height/2+p/2 // upper quarter - } -} - - -/* - * Adds a svg transform to an element, the transform has the origin of - * xi,yi fraction of the element, so 0.5,0.5 is the middle, - * unlike normalsvg it adds transforms in order of application not reverse order - * Usage: svgTransform(elementImage,'rotate',[45],0.5,0.5) - * This would rotate 45 degrees around center of image - */ -SvgCube.prototype.svgTransform = function (element, op, inputs, xi, yi) { - if (isNaN(xi)) { - xi = 0.5; - } - if (isNaN(yi)) { - yi = 0.5; - } - var svgBox = this.svg.getClientRects()[0] - // this.paper.getBBox() - var cbox = element.getBoundingClientRect(); - var x = cbox.left + xi * cbox.width -svgBox.left; - var y = cbox.top + yi * cbox.height -svgBox.top; - // - var matrix = this.svg.createSVGMatrix() - matrix = matrix.translate(x, y) - matrix = matrix[op].apply(matrix, inputs); - matrix = matrix.translate(-x, -y); - - var transform = this.svg.createSVGTransform(); - transform.setMatrix(matrix); - //element.transform.baseVal.appendItem(transform); // for reverse order - element.transform.baseVal.insertItemBefore(transform, 0) // normal order -} - -/* - * transform an element to be the left of an isometric cube - * Inputs: dom element, angle in degrees, and xi,yi which - * are the transform origin as a fraction of element size - */ -SvgCube.prototype.toLeft = function (element, angle, xi, yi) { - // half it's width - xi = 0 - yi = 1 - if (this.f>0){ - this.svgTransform(element, 'scaleNonUniform', [1,this.f],0.5,0.5) - } - this.svgTransform(element, 'translate', [-1, -1]) // pixel adjustment HACK - this.svgTransform(element, 'scaleNonUniform', [1 / 2, 1 / 2], xi, yi) - // skew it, in degrees - this.svgTransform(element, 'skewY', [angle], xi, yi) - -} - -/* - * transform an element to be the right of an isometric cube - * Inputs: dom element, angle in degrees, and xi,yi which - * are the transform origin as a fraction of element size - */ -SvgCube.prototype.toRight = function (element, angle, xi, yi) { - xi = 1 - yi = 1 - if (this.f>0){ - this.svgTransform(element, 'scaleNonUniform', [1,this.f],0.5,0.5) - } - this.svgTransform(element, 'translate', [-1, -2]) // pixel adjustment HACK - // half it's width to fiit in canvas - this.svgTransform(element, 'scaleNonUniform', [1 / 2, 1 / 2], xi, yi) - // skew it - this.svgTransform(element, 'skewY', [-angle], xi, yi) - -} - -/* - * transform an element to be the top of an isometric cube - * Inputs: dom element, angle in degrees, and xi,yi which - * are the transform origin as a fraction of element size - */ -SvgCube.prototype.toTop = function (element, angle, xi, yi) { - var rot = angle * Math.PI / 180; - this.svgTransform(element, 'translate', [-2, -1]) // pixel adjustment HACK - - // rotate so it's a diamond - this.svgTransform(element, 'rotate', [45], xi, yi) - // squish - along x axis to fit in canvas, along y axis for perspective change - this.svgTransform(element, 'scaleNonUniform', [Math.sin(45 * Math.PI / 180), Math.tan(rot) * Math.sin(45 * Math.PI / 180)], xi, yi) -} - -SvgCube.prototype.moveTop = function (element) { - // align top of cube with top of canvas - var cbox = element.getBoundingClientRect(); - this.svgTransform(element, 'translate', [-cbox.left + this.pPx, -cbox.top + this.pPx]) -} - -/* - * align left of cube with top, - * fit upper-left of left panel with middle-left of top panel - */ -SvgCube.prototype.moveLeft = function (elem, elemT) { - var cboxL = elem.getBoundingClientRect(); - var cboxT = elemT.getBoundingClientRect(); - // align left - var x = cboxT.left - cboxL.left - // align top of left with half height of - var y = cboxT.top - cboxL.top + cboxT.height / 2 - this.svgTransform(elem, 'translate', [x, y]) -} - -/* - * align right of cube with top, - * fit upper-right of right panel with middle-right of top panel - */ -SvgCube.prototype.moveRight = function (elem, elemT) { - // line up left with top, move to half tops height, and to align left - var cboxL = elem.getBoundingClientRect(); - var cboxT = elemT.getBoundingClientRect(); - - // align right with right - var x = cboxT.right - cboxL.right - - // align top of left with half height of - var y = cboxT.top - cboxL.top + cboxT.height / 2 - this.svgTransform(elem, 'translate', [x, y]) -} - -/* draw outline get line color from option.strokeColor, and width from options.stroke-width */ -SvgCube.prototype.drawOutline = function(lw){ - lw=lw||this.options.stroke["stroke-width"]; - var ms = this.measurements(lw/2) - - - var tb = this.imageT.getBBox() - var lb = this.imageL.getBBox() - var rb = this.imageR.getBBox() - - // Draw outline of top - var strTop= - 'M'+ms.mw +' '+ms.th +' '+ // Move to bottom - 'L'+ms.bw +' '+ms.mh+' '+ // left - 'L'+ms.mw +' '+ms.bh+ ' '+ // top - 'L'+ms.tw +' '+ms.mh+' '+ // right - 'Z' // close - var pathTop = this.paper.path(strTop); - - // // outline of left - var strLeft= - 'M'+ms.mw +' '+ms.th+' '+ // middle - 'L'+ms.bw +' '+ms.uq+' '+ // left top - 'L'+ms.bw +' '+ms.lq+' '+ // left bottom - 'L'+ms.mw +' '+ms.sh+' '+ // middle bottom - 'Z' - var pathLeft = this.paper.path(strLeft); - // - // right - var strRight= - 'M'+ms.mw +' '+ms.th+' '+ // middle - 'L'+ms.mw +' '+ms.sh +' '+ // middle bottom - 'L'+ms.tw +' '+ms.lq+' '+ // right bottom - 'L'+ms.tw +' '+ms.uq+' '+ // right top - 'Z' // close - var pathRight = this.paper.path(strRight); - - // join into set - var pathGroup = this.paper.group(); - pathGroup.append(pathTop); - pathGroup.append(pathLeft); - pathGroup.append(pathRight); - - // set attrs from options - // ref http://raphaeljs.com/reference.html#Element.attr - var blackList = ['url','target','src','title'] - for (var a in this.options.stroke){ - if (this.options.stroke.hasOwnProperty(a) && blackList.indexOf(a)<0){ - pathGroup.attr(a,this.options.stroke[a]); - } - } - this.outline=pathGroup; -} - - -/* draw outline get line color from option.strokeColor, and width from options.stroke-width */ -SvgCube.prototype.drawShading = function(lw){ - lw=lw||this.options.stroke["stroke-width"]; - var ms = this.measurements(0); - var pathGroup = this.paper.g(); - - var strTop= - 'M'+ms.mw +' '+ms.th +' '+ // Move to bottom - 'L'+ms.bw +' '+ms.mh+' '+ // left - 'L'+ms.mw +' '+ms.bh+ ' '+ // top - 'L'+ms.tw +' '+ms.mh+' '+ // right - 'Z' // close - var pathTop = this.paper.path(strTop); - pathGroup.append(pathTop); - - // outline of left - var strLeft= - 'M'+ms.mw +' '+ms.th+' '+ // middle - 'L'+ms.bw +' '+ms.uq+' '+ // left top - 'L'+ms.bw +' '+ms.lq+' '+ // left bottom - 'L'+ms.mw +' '+ms.sh+' '+ // middle bottom - 'Z' - var pathLeft = this.paper.path(strLeft); - pathGroup.append(pathLeft); - - // last line from middle down - var strRight= - 'M'+ms.mw +' '+ms.th+' '+ // middle - 'L'+ms.mw +' '+ms.sh +' '+ // middle bottom - 'L'+ms.tw +' '+ms.lq+' '+ // right bottom - 'L'+ms.tw +' '+ms.uq+' '+ // right top - 'Z' // close - var pathRight = this.paper.path(strRight); - pathGroup.append(pathRight); - - - // style the set - pathGroup.attr({ - 'stroke': 'none', - 'fill': 'black', - 'stroke-width': 0, - 'stroke-opacity': 0, - 'stroke-linecap': 'round', - 'stroke-linejoin': 'round' - }); - // shade each side, 0 is no shading, 1 is black - pathTop.attr({'fill-opacity': this.options.topShad}); - pathLeft.attr({'fill-opacity': this.options.leftShad}); - pathRight.attr({'fill-opacity': this.options.rightShad}); - this.shading=pathGroup; - -} - -/*clip the cube using an elipse to give rounded corners */ -SvgCube.prototype.clipCircle = function(amount){ - var cp = document.createElementNS("http://www.w3.org/2000/svg","clipPath") - cp.id="cp"; - var rxc=51+4*(1-this.f)*(1-this.f); - var ryc=50-2/Math.sqrt(1-this.f); - cp.innerHTML = '' - this.paper.node.getElementsByTagName("defs")[0].appendChild(cp); - this.paper.node.setAttribute("clip-path","url(#cp)"); -} - - -/* returns svg string */ -SvgCube.prototype.toSVG = function(){ - var svg3 = this.paper.toString(); - //var svg = this.paper.node.outerHTML; - //var svg2 = xmlserializer.serializeToString(this.paper.node); - if (this.paper.node.attributes.getNamedItem("clip-path")){ - // patch svg export to add clip - // HACK I have to add these manually to the export sadly as raphael.export doesn't handle them and also misses some recent change to canvas - svg3=svg3.replace(" - .cube, .cube .face, .cube .face * { - height: ${o.size}px; - width: ${o.size}px; - } - .cube { - position: absolute; - background-color: #f66; - - -webkit-transform: translate(${this.cw/2}px,${0*this.ch/2}px) perspective(${o.perspective}px) rotateX(${o.angle}deg) rotateX(${o.rotateX}deg) rotateY(${o.rotateY}deg) rotateZ(${o.rotateZ}deg); - -webkit-transform-style: preserve-3d; - -webkit-transition: .25s; - } - - - .cube * { - transform-origin: 0% 100%; - } - - .cube2 .top { - position: relative; - -webkit-transform: rotateX(45deg) rotateZ(-45deg) rotateX(0deg); - -webkit-transform-style: preserve-3d; - -webkit-transition: .25s; - - } - .cube2 .left { - -webkit-transform: rotateX(45deg) rotateZ(-45deg) rotateX(90deg); - -webkit-transform-style: preserve-3d; - -webkit-transition: .25s; - position: absolute; - - } - .cube2 .right { - -webkit-transform: rotateX(45deg) rotateZ(-45deg) rotateY(90deg); - -webkit-transform-style: preserve-3d; - -webkit-transition: .25s; - position: absolute; - } - ` - console.log(styleStr); - style.innerHTML= styleStr - -} - -/* drawing measurements as a function of padding */ -SvgCube.prototype.measurements= function(p){ - if (p===undefined){ - p=0; - } - - var f = this.options.flatten - - var tBox = this.imageT.getBBox() - var lBox = this.imageL.getBBox() - var rBox = this.imageR.getBBox() - - return { - // measurements - uf : 1-f, - p : 0, // lw/2, // padding - - tw: this.cw-p/2, // right side. adjust by half line thickness to keep line in canvas - th: tBox.height-p/2, // height of square, and dist to middle - - mw: this.cw/2, // middle x - mh: tBox.height/2, // middle of top square - - bh: 0+p/2, // top of picture, bottom y - bw: 0+p/2, // left of picture, bottom of x - - sw: this.cw-p/2,// bottom of cube - sh: this.ch-p/2, // right of cube - - lq: -tBox.height/2+this.ch-p/2, // lower quarter of height - uq: tBox.height/2+p/2 // upper quarter - } -} - - -/* - * Adds a svg transform to an element, the transform has the origin of - * xi,yi fraction of the element, so 0.5,0.5 is the middle, - * unlike normalsvg it adds transforms in order of application not reverse order - * Usage: svgTransform(elementImage,'rotate',[45],0.5,0.5) - * This would rotate 45 degrees around center of image - */ -SvgCube.prototype.svgTransform = function (element, op, inputs, xi, yi) { - if (isNaN(xi)) { - xi = 0.5; - } - if (isNaN(yi)) { - yi = 0.5; - } - var svgBox = this.svg.getClientRects()[0] - // this.paper.getBBox() - var cbox = element.getBoundingClientRect(); - var x = cbox.left + xi * cbox.width -svgBox.left; - var y = cbox.top + yi * cbox.height -svgBox.top; - // - var matrix = this.svg.createSVGMatrix() - matrix = matrix.translate(x, y) - matrix = matrix[op].apply(matrix, inputs); - matrix = matrix.translate(-x, -y); - - var transform = this.svg.createSVGTransform(); - transform.setMatrix(matrix); - //element.transform.baseVal.appendItem(transform); // for reverse order - element.transform.baseVal.insertItemBefore(transform, 0) // normal order -} - -/* - * transform an element to be the left of an isometric cube - * Inputs: dom element, angle in degrees, and xi,yi which - * are the transform origin as a fraction of element size - */ -SvgCube.prototype.toLeft = function (element, angle, xi, yi) { - // half it's width - xi = 0 - yi = 1 - if (this.f>0){ - this.svgTransform(element, 'scaleNonUniform', [1,this.f],0.5,0.5) - } - this.svgTransform(element, 'translate', [-1, -1]) // pixel adjustment HACK - this.svgTransform(element, 'scaleNonUniform', [1 / 2, 1 / 2], xi, yi) - // skew it, in degrees - this.svgTransform(element, 'skewY', [angle], xi, yi) - -} - -/* - * transform an element to be the right of an isometric cube - * Inputs: dom element, angle in degrees, and xi,yi which - * are the transform origin as a fraction of element size - */ -SvgCube.prototype.toRight = function (element, angle, xi, yi) { - xi = 1 - yi = 1 - if (this.f>0){ - this.svgTransform(element, 'scaleNonUniform', [1,this.f],0.5,0.5) - } - this.svgTransform(element, 'translate', [-1, -2]) // pixel adjustment HACK - // half it's width to fiit in canvas - this.svgTransform(element, 'scaleNonUniform', [1 / 2, 1 / 2], xi, yi) - // skew it - this.svgTransform(element, 'skewY', [-angle], xi, yi) - -} - -/* - * transform an element to be the top of an isometric cube - * Inputs: dom element, angle in degrees, and xi,yi which - * are the transform origin as a fraction of element size - */ -SvgCube.prototype.toTop = function (element, angle, xi, yi) { - var rot = angle * Math.PI / 180; - this.svgTransform(element, 'translate', [-2, -1]) // pixel adjustment HACK - - // rotate so it's a diamond - this.svgTransform(element, 'rotate', [45], xi, yi) - // squish - along x axis to fit in canvas, along y axis for perspective change - this.svgTransform(element, 'scaleNonUniform', [Math.sin(45 * Math.PI / 180), Math.tan(rot) * Math.sin(45 * Math.PI / 180)], xi, yi) -} - -SvgCube.prototype.moveTop = function (element) { - // align top of cube with top of canvas - var cbox = element.getBoundingClientRect(); - this.svgTransform(element, 'translate', [-cbox.left + this.pPx, -cbox.top + this.pPx]) -} - -/* - * align left of cube with top, - * fit upper-left of left panel with middle-left of top panel - */ -SvgCube.prototype.moveLeft = function (elem, elemT) { - var cboxL = elem.getBoundingClientRect(); - var cboxT = elemT.getBoundingClientRect(); - // align left - var x = cboxT.left - cboxL.left - // align top of left with half height of - var y = cboxT.top - cboxL.top + cboxT.height / 2 - this.svgTransform(elem, 'translate', [x, y]) -} - -/* - * align right of cube with top, - * fit upper-right of right panel with middle-right of top panel - */ -SvgCube.prototype.moveRight = function (elem, elemT) { - // line up left with top, move to half tops height, and to align left - var cboxL = elem.getBoundingClientRect(); - var cboxT = elemT.getBoundingClientRect(); - - // align right with right - var x = cboxT.right - cboxL.right - - // align top of left with half height of - var y = cboxT.top - cboxL.top + cboxT.height / 2 - this.svgTransform(elem, 'translate', [x, y]) -} - -/* draw outline get line color from option.strokeColor, and width from options.stroke-width */ -SvgCube.prototype.drawOutline = function(lw){ - lw=lw||this.options.stroke["stroke-width"]; - var ms = this.measurements(lw/2) - - - var tb = this.imageT.getBBox() - var lb = this.imageL.getBBox() - var rb = this.imageR.getBBox() - - // Draw outline of top - var strTop= - 'M'+ms.mw +' '+ms.th +' '+ // Move to bottom - 'L'+ms.bw +' '+ms.mh+' '+ // left - 'L'+ms.mw +' '+ms.bh+ ' '+ // top - 'L'+ms.tw +' '+ms.mh+' '+ // right - 'Z' // close - var pathTop = this.paper.path(strTop); - - // // outline of left - var strLeft= - 'M'+ms.mw +' '+ms.th+' '+ // middle - 'L'+ms.bw +' '+ms.uq+' '+ // left top - 'L'+ms.bw +' '+ms.lq+' '+ // left bottom - 'L'+ms.mw +' '+ms.sh+' '+ // middle bottom - 'Z' - var pathLeft = this.paper.path(strLeft); - // - // right - var strRight= - 'M'+ms.mw +' '+ms.th+' '+ // middle - 'L'+ms.mw +' '+ms.sh +' '+ // middle bottom - 'L'+ms.tw +' '+ms.lq+' '+ // right bottom - 'L'+ms.tw +' '+ms.uq+' '+ // right top - 'Z' // close - var pathRight = this.paper.path(strRight); - - // join into set - var pathGroup = this.paper.group(); - pathGroup.append(pathTop); - pathGroup.append(pathLeft); - pathGroup.append(pathRight); - - // set attrs from options - // ref http://raphaeljs.com/reference.html#Element.attr - var blackList = ['url','target','src','title'] - for (var a in this.options.stroke){ - if (this.options.stroke.hasOwnProperty(a) && blackList.indexOf(a)<0){ - pathGroup.attr(a,this.options.stroke[a]); - } - } - this.outline=pathGroup; -} - - -/* draw outline get line color from option.strokeColor, and width from options.stroke-width */ -SvgCube.prototype.drawShading = function(lw){ - lw=lw||this.options.stroke["stroke-width"]; - var ms = this.measurements(0); - var pathGroup = this.paper.g(); - - var strTop= - 'M'+ms.mw +' '+ms.th +' '+ // Move to bottom - 'L'+ms.bw +' '+ms.mh+' '+ // left - 'L'+ms.mw +' '+ms.bh+ ' '+ // top - 'L'+ms.tw +' '+ms.mh+' '+ // right - 'Z' // close - var pathTop = this.paper.path(strTop); - pathGroup.append(pathTop); - - // outline of left - var strLeft= - 'M'+ms.mw +' '+ms.th+' '+ // middle - 'L'+ms.bw +' '+ms.uq+' '+ // left top - 'L'+ms.bw +' '+ms.lq+' '+ // left bottom - 'L'+ms.mw +' '+ms.sh+' '+ // middle bottom - 'Z' - var pathLeft = this.paper.path(strLeft); - pathGroup.append(pathLeft); - - // last line from middle down - var strRight= - 'M'+ms.mw +' '+ms.th+' '+ // middle - 'L'+ms.mw +' '+ms.sh +' '+ // middle bottom - 'L'+ms.tw +' '+ms.lq+' '+ // right bottom - 'L'+ms.tw +' '+ms.uq+' '+ // right top - 'Z' // close - var pathRight = this.paper.path(strRight); - pathGroup.append(pathRight); - - - // style the set - pathGroup.attr({ - 'stroke': 'none', - 'fill': 'black', - 'stroke-width': 0, - 'stroke-opacity': 0, - 'stroke-linecap': 'round', - 'stroke-linejoin': 'round' - }); - // shade each side, 0 is no shading, 1 is black - pathTop.attr({'fill-opacity': this.options.topShad}); - pathLeft.attr({'fill-opacity': this.options.leftShad}); - pathRight.attr({'fill-opacity': this.options.rightShad}); - this.shading=pathGroup; - -} - -/*clip the cube using an elipse to give rounded corners */ -SvgCube.prototype.clipCircle = function(amount){ - var cp = document.createElementNS("http://www.w3.org/2000/svg","clipPath") - cp.id="cp"; - var rxc=51+4*(1-this.f)*(1-this.f); - var ryc=50-2/Math.sqrt(1-this.f); - cp.innerHTML = '' - this.paper.node.getElementsByTagName("defs")[0].appendChild(cp); - this.paper.node.setAttribute("clip-path","url(#cp)"); -} - - -/* returns svg string */ -SvgCube.prototype.toSVG = function(){ - var svg3 = this.paper.toString(); - //var svg = this.paper.node.outerHTML; - //var svg2 = xmlserializer.serializeToString(this.paper.node); - if (this.paper.node.attributes.getNamedItem("clip-path")){ - // patch svg export to add clip - // HACK I have to add these manually to the export sadly as raphael.export doesn't handle them and also misses some recent change to canvas - svg3=svg3.replace(" - .cube, .cube .face, .cube .face * { - height: ${o.size}px; - width: ${o.size}px; - } - .cube { - position: absolute; - background-color: #f66; - -webkit-transform: translate(${o.size/2}px,${0}px); - -webkit-transform-style: preserve-3d; - -webkit-transition: .25s; - transform: rotateX(${o.angle}deg) scaleY(${o.flatten}); - } - - .cube * { - transform-origin: 0% 100%; - } - - .cube2 .top { - position: relative; - -webkit-transform: rotateX(45deg) rotateZ(-45deg) rotateX(0deg); - -webkit-transform-style: preserve-3d; - -webkit-transition: .25s; - - } - .cube2 .left { - -webkit-transform: rotateX(45deg) rotateZ(-45deg) rotateX(90deg); - -webkit-transform-style: preserve-3d; - -webkit-transition: .25s; - position: absolute; - - } - .cube2 .right { - -webkit-transform: rotateX(45deg) rotateZ(-45deg) rotateY(90deg); - -webkit-transform-style: preserve-3d; - -webkit-transition: .25s; - position: absolute; - } - ` - console.log(styleStr); - style.innerHTML= styleStr - -} - -/* drawing measurements as a function of padding */ -SvgCube.prototype.measurements= function(p){ - if (p===undefined){ - p=0; - } - - var f = this.options.flatten - - var tBox = this.imageT.getBBox() - var lBox = this.imageL.getBBox() - var rBox = this.imageR.getBBox() - - return { - // measurements - uf : 1-f, - p : 0, // lw/2, // padding - - tw: this.cw-p/2, // right side. adjust by half line thickness to keep line in canvas - th: tBox.height-p/2, // height of square, and dist to middle - - mw: this.cw/2, // middle x - mh: tBox.height/2, // middle of top square - - bh: 0+p/2, // top of picture, bottom y - bw: 0+p/2, // left of picture, bottom of x - - sw: this.cw-p/2,// bottom of cube - sh: this.ch-p/2, // right of cube - - lq: -tBox.height/2+this.ch-p/2, // lower quarter of height - uq: tBox.height/2+p/2 // upper quarter - } -} - - -/* - * Adds a svg transform to an element, the transform has the origin of - * xi,yi fraction of the element, so 0.5,0.5 is the middle, - * unlike normalsvg it adds transforms in order of application not reverse order - * Usage: svgTransform(elementImage,'rotate',[45],0.5,0.5) - * This would rotate 45 degrees around center of image - */ -SvgCube.prototype.svgTransform = function (element, op, inputs, xi, yi) { - if (isNaN(xi)) { - xi = 0.5; - } - if (isNaN(yi)) { - yi = 0.5; - } - var svgBox = this.svg.getClientRects()[0] - // this.paper.getBBox() - var cbox = element.getBoundingClientRect(); - var x = cbox.left + xi * cbox.width -svgBox.left; - var y = cbox.top + yi * cbox.height -svgBox.top; - // - var matrix = this.svg.createSVGMatrix() - matrix = matrix.translate(x, y) - matrix = matrix[op].apply(matrix, inputs); - matrix = matrix.translate(-x, -y); - - var transform = this.svg.createSVGTransform(); - transform.setMatrix(matrix); - //element.transform.baseVal.appendItem(transform); // for reverse order - element.transform.baseVal.insertItemBefore(transform, 0) // normal order -} - -/* - * transform an element to be the left of an isometric cube - * Inputs: dom element, angle in degrees, and xi,yi which - * are the transform origin as a fraction of element size - */ -SvgCube.prototype.toLeft = function (element, angle, xi, yi) { - // half it's width - xi = 0 - yi = 1 - if (this.f>0){ - this.svgTransform(element, 'scaleNonUniform', [1,this.f],0.5,0.5) - } - this.svgTransform(element, 'translate', [-1, -1]) // pixel adjustment HACK - this.svgTransform(element, 'scaleNonUniform', [1 / 2, 1 / 2], xi, yi) - // skew it, in degrees - this.svgTransform(element, 'skewY', [angle], xi, yi) - -} - -/* - * transform an element to be the right of an isometric cube - * Inputs: dom element, angle in degrees, and xi,yi which - * are the transform origin as a fraction of element size - */ -SvgCube.prototype.toRight = function (element, angle, xi, yi) { - xi = 1 - yi = 1 - if (this.f>0){ - this.svgTransform(element, 'scaleNonUniform', [1,this.f],0.5,0.5) - } - this.svgTransform(element, 'translate', [-1, -2]) // pixel adjustment HACK - // half it's width to fiit in canvas - this.svgTransform(element, 'scaleNonUniform', [1 / 2, 1 / 2], xi, yi) - // skew it - this.svgTransform(element, 'skewY', [-angle], xi, yi) - -} - -/* - * transform an element to be the top of an isometric cube - * Inputs: dom element, angle in degrees, and xi,yi which - * are the transform origin as a fraction of element size - */ -SvgCube.prototype.toTop = function (element, angle, xi, yi) { - var rot = angle * Math.PI / 180; - this.svgTransform(element, 'translate', [-2, -1]) // pixel adjustment HACK - - // rotate so it's a diamond - this.svgTransform(element, 'rotate', [45], xi, yi) - // squish - along x axis to fit in canvas, along y axis for perspective change - this.svgTransform(element, 'scaleNonUniform', [Math.sin(45 * Math.PI / 180), Math.tan(rot) * Math.sin(45 * Math.PI / 180)], xi, yi) -} - -SvgCube.prototype.moveTop = function (element) { - // align top of cube with top of canvas - var cbox = element.getBoundingClientRect(); - this.svgTransform(element, 'translate', [-cbox.left + this.pPx, -cbox.top + this.pPx]) -} - -/* - * align left of cube with top, - * fit upper-left of left panel with middle-left of top panel - */ -SvgCube.prototype.moveLeft = function (elem, elemT) { - var cboxL = elem.getBoundingClientRect(); - var cboxT = elemT.getBoundingClientRect(); - // align left - var x = cboxT.left - cboxL.left - // align top of left with half height of - var y = cboxT.top - cboxL.top + cboxT.height / 2 - this.svgTransform(elem, 'translate', [x, y]) -} - -/* - * align right of cube with top, - * fit upper-right of right panel with middle-right of top panel - */ -SvgCube.prototype.moveRight = function (elem, elemT) { - // line up left with top, move to half tops height, and to align left - var cboxL = elem.getBoundingClientRect(); - var cboxT = elemT.getBoundingClientRect(); - - // align right with right - var x = cboxT.right - cboxL.right - - // align top of left with half height of - var y = cboxT.top - cboxL.top + cboxT.height / 2 - this.svgTransform(elem, 'translate', [x, y]) -} - -/* draw outline get line color from option.strokeColor, and width from options.stroke-width */ -SvgCube.prototype.drawOutline = function(lw){ - lw=lw||this.options.stroke["stroke-width"]; - var ms = this.measurements(lw/2) - - - var tb = this.imageT.getBBox() - var lb = this.imageL.getBBox() - var rb = this.imageR.getBBox() - - // Draw outline of top - var strTop= - 'M'+ms.mw +' '+ms.th +' '+ // Move to bottom - 'L'+ms.bw +' '+ms.mh+' '+ // left - 'L'+ms.mw +' '+ms.bh+ ' '+ // top - 'L'+ms.tw +' '+ms.mh+' '+ // right - 'Z' // close - var pathTop = this.paper.path(strTop); - - // // outline of left - var strLeft= - 'M'+ms.mw +' '+ms.th+' '+ // middle - 'L'+ms.bw +' '+ms.uq+' '+ // left top - 'L'+ms.bw +' '+ms.lq+' '+ // left bottom - 'L'+ms.mw +' '+ms.sh+' '+ // middle bottom - 'Z' - var pathLeft = this.paper.path(strLeft); - // - // right - var strRight= - 'M'+ms.mw +' '+ms.th+' '+ // middle - 'L'+ms.mw +' '+ms.sh +' '+ // middle bottom - 'L'+ms.tw +' '+ms.lq+' '+ // right bottom - 'L'+ms.tw +' '+ms.uq+' '+ // right top - 'Z' // close - var pathRight = this.paper.path(strRight); - - // join into set - var pathGroup = this.paper.group(); - pathGroup.append(pathTop); - pathGroup.append(pathLeft); - pathGroup.append(pathRight); - - // set attrs from options - // ref http://raphaeljs.com/reference.html#Element.attr - var blackList = ['url','target','src','title'] - for (var a in this.options.stroke){ - if (this.options.stroke.hasOwnProperty(a) && blackList.indexOf(a)<0){ - pathGroup.attr(a,this.options.stroke[a]); - } - } - this.outline=pathGroup; -} - - -/* draw outline get line color from option.strokeColor, and width from options.stroke-width */ -SvgCube.prototype.drawShading = function(lw){ - lw=lw||this.options.stroke["stroke-width"]; - var ms = this.measurements(0); - var pathGroup = this.paper.g(); - - var strTop= - 'M'+ms.mw +' '+ms.th +' '+ // Move to bottom - 'L'+ms.bw +' '+ms.mh+' '+ // left - 'L'+ms.mw +' '+ms.bh+ ' '+ // top - 'L'+ms.tw +' '+ms.mh+' '+ // right - 'Z' // close - var pathTop = this.paper.path(strTop); - pathGroup.append(pathTop); - - // outline of left - var strLeft= - 'M'+ms.mw +' '+ms.th+' '+ // middle - 'L'+ms.bw +' '+ms.uq+' '+ // left top - 'L'+ms.bw +' '+ms.lq+' '+ // left bottom - 'L'+ms.mw +' '+ms.sh+' '+ // middle bottom - 'Z' - var pathLeft = this.paper.path(strLeft); - pathGroup.append(pathLeft); - - // last line from middle down - var strRight= - 'M'+ms.mw +' '+ms.th+' '+ // middle - 'L'+ms.mw +' '+ms.sh +' '+ // middle bottom - 'L'+ms.tw +' '+ms.lq+' '+ // right bottom - 'L'+ms.tw +' '+ms.uq+' '+ // right top - 'Z' // close - var pathRight = this.paper.path(strRight); - pathGroup.append(pathRight); - - - // style the set - pathGroup.attr({ - 'stroke': 'none', - 'fill': 'black', - 'stroke-width': 0, - 'stroke-opacity': 0, - 'stroke-linecap': 'round', - 'stroke-linejoin': 'round' - }); - // shade each side, 0 is no shading, 1 is black - pathTop.attr({'fill-opacity': this.options.topShad}); - pathLeft.attr({'fill-opacity': this.options.leftShad}); - pathRight.attr({'fill-opacity': this.options.rightShad}); - this.shading=pathGroup; - -} - -/*clip the cube using an elipse to give rounded corners */ -SvgCube.prototype.clipCircle = function(amount){ - var cp = document.createElementNS("http://www.w3.org/2000/svg","clipPath") - cp.id="cp"; - var rxc=51+4*(1-this.f)*(1-this.f); - var ryc=50-2/Math.sqrt(1-this.f); - cp.innerHTML = '' - this.paper.node.getElementsByTagName("defs")[0].appendChild(cp); - this.paper.node.setAttribute("clip-path","url(#cp)"); -} - - -/* returns svg string */ -SvgCube.prototype.toSVG = function(){ - var svg3 = this.paper.toString(); - //var svg = this.paper.node.outerHTML; - //var svg2 = xmlserializer.serializeToString(this.paper.node); - if (this.paper.node.attributes.getNamedItem("clip-path")){ - // patch svg export to add clip - // HACK I have to add these manually to the export sadly as raphael.export doesn't handle them and also misses some recent change to canvas - svg3=svg3.replace(" + +## Output: + + + +## GUI + + +# Installation + +`npm i` + +# Usage + +`npm start` + +# TODO + + +# Author + +wassname.org + + +# License + +ISC diff --git a/render.js b/render.js new file mode 100755 index 0000000..32302eb --- /dev/null +++ b/render.js @@ -0,0 +1,75 @@ +'use strict'; +/** + * Node js script to render and download svg cubes using webdriver + */ + +var webdriverio = require('webdriverio'); +var path = require('path'); +var fs = require('fs'); +var system = require('system') +var globby = require('globby'); + +var options = { + desiredCapabilities: { + browserName: 'chrome' + } +}; + + +/** TODO + * Need to look at clien bounding box for all parts of cube, then get minLeft, maxRight etc, then crop the screenshot there + * + **/ + +// get config +var config = { + debug: false +} + +// get inputs +var input = process.argv[2]; +console.log('input:', input); + + +/** + * Screenshot for debug and notification of screenshots + */ +var screenHandler = function (err, screenshot, response) { + if (config.debug) { + console.log({ + err, screenshot, response + }); + } else if (err) { + console.log('saveScreenshot', err); + } +} + +globby(input).then(inputs => { + + console.log('glob(', input, ') ->', inputs); + + for (var i = 0; i < inputs.length; i++) { + + // get input file and components + var file = inputs[i]; + var address = path.join(process.cwd(), file); + var ext = path.extname(file); + var url = 'file://' + path.join(process.cwd(), file); + var outfile = address.replace(ext, '.png'); + + console.log('Converting ', file, url, '->', outfile); + + webdriverio + .remote(options) + .init() + .url(url) + .getTitle().then(title => { + console.log('Title is: ' + title); + }) + .waitForVisible('.front', 1000) //.then(callback); + .saveScreenshot( + outfile, screenHandler + ) + .end(); + } +}, this) diff --git a/svgCube.html b/svgCube.html new file mode 100755 index 0000000..31bf8e4 --- /dev/null +++ b/svgCube.html @@ -0,0 +1,52 @@ + + + + + + Snap.js isometric SVG + + + + + + + + + + diff --git a/svgCube_gui.html b/svgCube_gui.html new file mode 100755 index 0000000..0a2fd74 --- /dev/null +++ b/svgCube_gui.html @@ -0,0 +1,116 @@ + + + + + Snap.js isometric SVG + + + + +
+

This uses a css3 to make an SVG cube from a SVG panel.

+ +

The buttons allow you to try different parameters.

+

The front, left, etc svg's are just linked to panel.svg

+ + + + + + + + + + + + + diff --git a/webdriver_rasterize.js b/webdriver_rasterize.js deleted file mode 100644 index 5683411..0000000 --- a/webdriver_rasterize.js +++ /dev/null @@ -1,54 +0,0 @@ -'use strict'; -var webdriverio = require('webdriverio'); - -var path = require('path'); -var fs = require('fs'); -var system = require('system') -var globby = require('globby'); - -var options = { - desiredCapabilities: { - browserName: 'chrome' - } -}; - -var config = { - debug: true -} - -var input = process.argv[2]; -console.log('input:',input); - -var screenHandler = function(err, screenshot, response) { - if (config.debug){ - console.log({err,screenshot,response}); - } else if (err){ - console.log('saveScreenshot',err); - } -} - -globby(input).then(inputs => { - console.log('glob(',input,') =>', inputs); - for (var i=0; i',outfile); - webdriverio - .remote(options) - .init() - .url(url) - .getTitle().then(function(title) { - console.log('Title is: ' + title); - }) - .saveScreenshot( - [outfile], - screenHandler - ) - .end(); - } -}, this)