g&ddlmcmZddlZddlZddlZddlmZddl m Z ddl m Z e ddZ e ddZdZiZd ZGd d Zd ZGd deZGddeZGddeZGddeZdZdZdZdZdZy)N)Image)Draw)truetypez#/usr/share/fonts/TTF/DejaVuSans.ttf( c|\}}tjtj|tj|t\}}||z |dzz||z |dzzfSN) coord_to_xydegree_to_real_coordmathradianszoom) lat_point long_pointx_cameray_camera screenDimwhx_pointy_points '/home/thomas/Documents/TrainMap/item.py degree_to_pixrsb EQq"77 Y8OPTP\P\]gPhimnWW 8 AqD !1!Q$!6 77ceZdZdZdZy)itemc||_yNdate)selfr"s r__init__z item.__init__s  rcyr r&rr make_frameszitem.make_framess rN)__name__ __module__ __qualname__r$r'r&rrrrs  rrc(|dd|dd|dS)Nr r r&r!s r dateToStringr.s%1gYaQy$q' +,rceZdZdZdZy) RemoveStationc ||_||_yr namer"r#r3r"s rr$zRemoveStation.__init__  rcLd|jdt|jS)NzRS  r3r.r"r#s rtoStringzRemoveStation.toString!#TYYKr,tyy"9!:;s#$rc d|jd|jd|jdt|jS)NzS r,r7)rErFr3r.r"r9s rr:zStation.toString@s7DHH:QtyykDII;bdii9P8QRSrN)r(r)r*r$r\r_rbr:r&rrrCrC+s+ @ I%TrrCc0eZdZdZdZdZdZdZdZy)Linec||_||_||_||_||_t j |}|jdd}g|_d}|D]t} | jdd} | jdd} | | f|k(rn?|xs| | f|k(}|sF|jjt| t| fvt|jdz dz|_ y)Nr-FrrN)r3colorr"startendETparsegetrootpointsitemsappendfloatrGrH) r#r3rgr"rhritreetrksegstartedtrkptr lon_points rr$z Line.__init__Fs    xx~"1% E a(+I a(+I)$c)=)I!6!=G ""E)$4U95E#FG!$DKK 0 2R7rc.|j|dddy)Nr red)r$)r#lines rrkz Line.parseZs d12h&rcd}d\}}|jD]:\}} t|| |||\} } |s|j| | f||ffdddd}| | }}<y)NTrrrKrLrRwidthjointF)rmrrx) r#rWrXrYrfirstprev_xprev_yrrurZr[s rr\z Line.draw\sk%)[[ !Yy!)IfVINEQq1vfo.WATREqFV &1rcd}d\}}td|dzD]I} |j| \} } t| | |||\} } |s|j| | f||ffdddd}| | }}Ky) NTrzr-rNrKrLr{F)rangermrrx)r#rWrXrYrr^r~rrjrrurZr[s rr_z Line.animatees~q2A$(KKN !Yy!)IfVINEQq1vfo.WATREqFV rc,|j|dzdzS)NrNr-)rmras rrbzLine.cameraPosos{{1R46"#rc d|jdt|jd|jdd|jdd|jdd|jd S)NzL r7rr,r-)r3r.r"rhrir9s rr:z Line.toStringqsjDII;bdii!8 9DJJqM?!DJJWXM?Z[\`\d\def\g[hhijnjrjrstjuivwxrN) r(r)r*r$rkr\r_rbr:r&rrrereEs!8('" "$yrrec t|d5}g}|j}d}|r|ddk(r|j}|j}|dz }|j}|dz }|jt |ddt |dt |d|ddjn\|ddk(r|j}|dz }|j}|dz }|j\}} } } |jt |ddd|ddjt|t| ft| t| fn|d|dfd k(rG|}|j}|dz }|jt|d d|ddjnf|d|dfd k(rG|}|j}|dz }|jt|d d|ddjntd |dd |j}|dz }|r|cdddS#1swYnxYwtd|gS)Nrr-rSr Lrw)Rr)rrz The symbol z does not mean anythingzCould not open ) openreadlinesplitrorCrpreintr0r?print) ffprnrx lineNumberlinespline1line2startxstartyendxendys r parseItemFilervs@ a{{} Aw| A  A  WU3BZfQi0@vayAQRWX[Y[R\RbRbRdefa# A  A ,1KKM)tD T$q*eE#2J4D4D4FF TWX^T_G`befjbkloptluavwxq'$q'"i/{{}A  ]52;tCRy7HIJq'$q'"i/{{}A  Za D"IOO4EFG DG9,CDE;;=D MJ=>I$$J OA3  IsHH2'H22H;ctjtj|tj|t\}}tj tj|tj|t\}}|dz|dz} }|\} } tj | dz } tj | dz } td| D]}td| D]}||z| dzz }||z| dzz }||ftvr:tj||tdtjdt||f<t|dz|z dz }t|dz| z dz}|jt||f||fy)Nrr zhey.png@)box)r degree_to_coordrrrr ceilrplaatjescoord_to_downloadrrrpaste)rErFrImgx_tiley_tilerXrY x_tile_offset y_tile_offsetrr tiles_width tiles_heightrZr[tile_xtile_yupper_xupper_ys rdrawMaprsc!11$,,s2CDLLQUDVW[\OVF 55dll36G UYHZ[_`OVF&,SjM] EQq))AcE"K99QsU#L 1[ !q&AvXk1n,FvXlAo-FFOx/--fVDK*/**Y*?&)!C% -b01G!C% -b01G IIhv/WW4EI F'"rctjtj|tj|t\}}t j d|} t| } |jD]} | j| ||||dk7r|dk7r|j| |||||jD]} | j| ||||dk7r,| jdt|jtd| S)NRGBA)modesizerzrOrP)r r rrrrnewrvaluesr\r_rUr.r"rV) rErFstationslines animationItemanimationIndexrrXrYrr\rxstations r createFramers 55dll36G UYHZ[_`OVF ))i 0C 9D  $vfY/d~t3d6&>J??$ T& 2%d %m&8&89' R Krc^|\}}|\}}tj||z dz||z dzzSr )rsqrt)p1p2lat1long1lat2long2s r coordDistrs9LT%LT% 99d4i!^U5[1$44 56rc i}i}d}d}d}d}tjjdtjj|D]}|dz }tjjt |dzt t |ztjjd} t |tur/|j||j_||j}d} t |tur/|j||j_||j}d} |dk7r|r|jd\} } n!|j|jdz \} } | r"|j|jdz \} } n|jd\} } t| | f| | f}|dk7rld}| | z |z |z }| | z |z |z }tt||zD]:}t!| ||zz| ||zz||dd|}|j#d|d d |dz }<| r,t |t$ur|j'|j| r,t |t(ur|j'|j|j}t|D]}| rH|j|dz |z \}}t!||||||dz |z |}|j#d|d d n;|j|\}}t!|||||||}|j#d|d d |dz }t |t$ur| s2|||j<n"t |t(ur| s|||j<|}| }tjjt t |dzt t t |zd ztjjy) NrFz Drawing item r-/T z out/frame-z0>8z.pngz )sysstdoutwriteflushstrrGtyper0r"r3r?rbrHrrrrsaverCpopre)rnrrrframeprevItem prevReversecountrreverserrrrdistSLOWNESSvec1vec2r^rnrErFs rr_r_sH E EHK EJJ}&JJ q UCCJ78  : &'+yyHTYY  $DII&DG : #$(IIE$))  !#DG T>'11!4 e'11(2J2J12LM e#~~h.F.Fq.HI e#~~a0 ed5\4,7DQwT 4'0e T)(2s4=12A%d46k%Q,xdSWXabCHHz%D9:1HE3 tDzW, LL # tDzT) IIdii  qA!^^AaCE2 T!#d8E$qs1uYO:eC[56!^^A. T!#d8E$qK:eC[56 1HE : &*# $Z4 #'dii   #c%j/!+CCJ,@@/QR ur)xml.etree.ElementTreeetree ElementTreerjr rrPILr PIL.ImageDrawr PIL.ImageFontrrVdateFntrrrrr.r0r?rCrerrrrr_r&rrrs"" "4b9 8" =  8   -=D===TdT4-y4-yb'RG0  7 Dr