From 8f3b9d2977854a6c2f747f4e6a5b0519823d7ab7 Mon Sep 17 00:00:00 2001 From: nathan Date: Mon, 17 Feb 2020 22:19:45 -0800 Subject: [PATCH] geography renders to a seprate texture, only updates when moved Former-commit-id: 8c6ec13e7e07eede486b4d804517de3212532216 Former-commit-id: f24714e0276678698dffbf4270fb73c16c9a872f --- defs.h | 2 ++ draw.c | 71 ++++++++++++++++++++++++++------------ draw.o.REMOVED.git-id | 2 +- font.o | Bin 37744 -> 37800 bytes init.c | 6 ++-- init.o | Bin 48256 -> 48344 bytes input.c | 3 ++ input.o.REMOVED.git-id | 2 +- list.o | Bin 48248 -> 48296 bytes monokai.o | Bin 27744 -> 27792 bytes planeObj.o | Bin 44288 -> 44336 bytes status.o.REMOVED.git-id | 2 +- structs.h | 4 ++- view1090.REMOVED.git-id | 2 +- view1090.c | 2 +- view1090.o.REMOVED.git-id | 2 +- 16 files changed, 66 insertions(+), 32 deletions(-) diff --git a/defs.h b/defs.h index abdf5b9..f1ef68c 100644 --- a/defs.h +++ b/defs.h @@ -15,6 +15,8 @@ #define DISPLAY_ACTIVE 30 #define TRAIL_TTL_STEP 2 +#define MIN_MAP_FEATURE 2 + #define FRAMETIME 33 #define PAD 5 diff --git a/draw.c b/draw.c index 19e78dc..c04bd1d 100644 --- a/draw.c +++ b/draw.c @@ -529,7 +529,7 @@ void drawPolys(QuadTree *tree, double screen_lat_min, double screen_lat_max, dou } - if((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1) < 100){ + if((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1) < MIN_MAP_FEATURE){ currentPoint = currentPoint->next; continue; } @@ -538,7 +538,7 @@ void drawPolys(QuadTree *tree, double screen_lat_min, double screen_lat_max, dou double factor = 1.0 - (d1+d2) / (3* appData.maxDist * appData.maxDist); - SDL_Color lineColor = lerpColor(blue, purple, factor); + SDL_Color lineColor = lerpColor(purple, blue, factor); lineRGBA(appData.renderer, x1, y1, x2, y2, lineColor.r, lineColor.g, lineColor.b, 255); @@ -865,17 +865,10 @@ void resolveLabelConflicts() { } -void drawMap() { +void drawPlanes() { struct planeObj *p = planes; time_t now = time(NULL); SDL_Color planeColor; - drawGeography(); - - drawScaleBars(); - - for(int i = 0; i < 4; i++) { - resolveLabelConflicts(); - } //draw all trails first so they don't cover up planes and text @@ -931,10 +924,14 @@ void drawMap() { } if(p == selectedPlane) { - appData.centerLon += 0.1 * (p->lon - appData.centerLon); - appData.centerLat += 0.1 * (p->lat - appData.centerLat); - + if(fabs(p->lon - appData.centerLon) > 0.0001 || fabs(p->lat - appData.centerLat) > .0001) { + appData.centerLon += 0.1 * (p->lon - appData.centerLon); + appData.centerLat += 0.1 * (p->lat - appData.centerLat); + + appData.mapMoved = 1; + } + thickLineRGBA(appData.renderer, x - 40, y - 40, x - 10, y - 40, 4, pink.r, pink.g, pink.b, 255); thickLineRGBA(appData.renderer, x - 40, y - 40, x - 40, y - 10, 4, pink.r, pink.g, pink.b, 255); @@ -1004,26 +1001,54 @@ void drawMap() { // void draw() { - - if ((mstime() - appData.lastFrameTime) < FRAMETIME) { - return; - } - - appData.lastFrameTime = mstime(); - + uint64_t drawStartTime = mstime(); + updatePlanes(); updateStatus(); - SDL_SetRenderDrawColor( appData.renderer, 0, 15, 30, 0); + if(appData.mapMoved) { + SDL_SetRenderTarget(appData.renderer, appData.mapTexture); + SDL_SetRenderDrawColor(appData.renderer, 0, 0, 0, 0); + SDL_RenderClear(appData.renderer); + + drawGeography(); + drawScaleBars(); + + SDL_SetRenderTarget(appData.renderer, NULL ); + + appData.mapMoved = 0; + } + + for(int i = 0; i < 4; i++) { + resolveLabelConflicts(); + } + + //SDL_SetRenderDrawColor( appData.renderer, 0, 15, 30, 0); + SDL_SetRenderDrawColor(appData.renderer, 0, 0, 0, 0); SDL_RenderClear(appData.renderer); - drawMap(); + SDL_RenderCopy(appData.renderer, appData.mapTexture, NULL, NULL); + + drawPlanes(); drawStatus(); + if(appData.showList) { drawList(0); } - SDL_RenderPresent(appData.renderer); + char fps[10] = " "; + snprintf(fps,10," %ffps", 1000.0 / (mstime() - appData.lastFrameTime)); + drawStringBG(fps, 0,0, appData.mapFont, grey, black); + + + SDL_RenderPresent(appData.renderer); + + + appData.lastFrameTime = mstime(); + + if ((mstime() - drawStartTime) < FRAMETIME) { + usleep(1000 * (FRAMETIME - (mstime() - drawStartTime))); + } } \ No newline at end of file diff --git a/draw.o.REMOVED.git-id b/draw.o.REMOVED.git-id index 127f6f3..38449cd 100644 --- a/draw.o.REMOVED.git-id +++ b/draw.o.REMOVED.git-id @@ -1 +1 @@ -d08aaa37cf2b39ef11671ed4f318ae82fcf0c1dd \ No newline at end of file +e35f478e482bb67eed7951d8c622b7fc5ad06aa7 \ No newline at end of file diff --git a/font.o b/font.o index 3f987831914f6996ea1c148c9ecd75d565df0fa8..85b9bb72588953b123507690b920fa7da94c9384 100644 GIT binary patch delta 5615 zcmaKw4Rln+6@cH}B#;fEYZ8*l3oIleNR+aydLWpR7(|vuP!^IvM6y{S7=H4z1hNSP zmX$vvNU~gQiv=Z$5InUeU5f**(sjhrF#)=I@;6&xAkt-d)0WsRhRnoZdX{@;nx-XNH7X)y4#}4p za_W4NvkiH;lyeRF2U4D3$d^fZvLUC<$J6QmPOBw92Mx{SLkXJJg{L$0pz}4Grsc%P zxVD`7Scw>AqZRHm)&d+A2^y-4WHOJ- zKeySJUjW^*VUlAUL)`56;KoUAluKvN*|gNBDKwd*;RPg6yO;s{Em_5cMO~P4Hy4eaiO-e^of^lEEjvME<++dOar|`^#kc|6>0P{kjo*f{+&f8~aGse^2bM z>ULK%ndQp4L54hoWVy@p(@3@oWJLw`d(fFPVT#EvN||oh zXfP~|++8ANNgoiKj8Es}jFanoA)lX8gCYPYokh}*Wrf^!33ZWkIWOj>)cP7qtDD!Y zUt5g>H;stAQMe3}NjI;)sd{S zf_D8R?O0h}G9FqAJyYqg6T=G~umYnC1r+1E3j^>zdP-eTj{8a-a3l7TydBfZg#K0h zMAEd!z;I!DIE^J`0#0E?nV0&WD0Ao^(S&44w-`^;vLB&bz**GGkHB1vmOJ1R93ahy zXkFxh^Ehph%QAd4-nD2FEX5vDy@Y*>T;Ra`#V)X;f3X9e$4-(DV*g@CPL!wg2l*yb zF^5Ud!D}j>rFjoj1mF=|dD|)d7)P`-@nX~6Sh7Uuuh0uD3o3LH`j-gUi)~9B`V_li zb3(EC7Gq@N!Tu!y7>B;wUHX~$B}EBLGJ2R{9mVMF0k{vREp_O<@$*8{wkkIBFtpS` zHa$yEK^gihy>I|yl@4$rcpY#nI=$_Xg;B52vvLjZb~;dGF-JLr16~0|Xsv38_i$g8 z3;uJ?1Wb-lar$-f=vj{Z;dQq?O zQr%MHwIu2IUQH9sM9)g0m(#l}OOl*16?5V>7$UlXX_`WJV-L{>nc5ZFjeSI)XPU3j zw=iv$fNL;+l>^pe#VW5}$J47&EQ1(Z<R0GFbgmY93LSQ`Y*Of4^buXkv`wLP z7$zEIdcQ(DFuK|S_u{~67d(a2);RQMIAgz2EUPfIMrOEgjSFtT{91>8IbSz0%!o^N zkOxB%`fG)L8`I$mZNko42OP#2**woS;}o0I2z3I!LA~xDa0IROE?PrRy#s!ap?U!u zabJDFk}?9*8!G9X@iz#IB@^#ym;|fwM1#wcJQ6MbS?(`6DgRNN59K#HLB>kO3|nWt zRncFKVZYF)GtE@!tr#VGCGW^Qg`UR&zZWvmv(^g{>{;v5Lww+`R4lVFtx-S}^Bd*i zRnh3sKV-{$70bie*(mgnI8FN$`a_J7hYt|ey#sUb-F2tP+rITKSb}})1t6YVAAnux zZ*tLTdZNhzk77T`Gtn6k^b)%RE~kY(A02-2`sDMW*{$dcF-m=3$9Dq`=tOI?!;&cQ z`sPV63RgBCfksSg5pWacx457R{VnaV6=6dFa~gvJvz z=X;QQ4O8^R{Ou*sd6&?06*|CK8;?Gs(-nG@$8uqqXz3s-uj*a#S!tRNqeNE>qO#ip zrVThibiG1H@&y*eysbjtrqEryXZE0nC@M6QzdH|Li0H!#E#$sE*hBPJgQ$%8m%JLk z#y+BdQs}2lKgP6eBIz4RvFF|l=P*7c%(=raaUIbsLz#hcMXbcI4+WV#wd zJ48}QQkfh2D(@ld9=0|!^cTXi^kUx*;r?8qiJXZ<{-!W{rLumMqPMd?A4_%$eJWEk zH|sbz)6u_EKq>m}7Ep!qoUHD`*v-dXBS1?TU6Q%Dtrk`PyDDbzCoFp%DJkE3+AnF`M z^z|a^qv)sl@pydM`^lzebmw^i9mVv+*iCf> zwsjO+ChW%Fb`;UdSi{BiE8iV1woc~%^z6lOcq;ug?hO}P{yrPS?kvpRJApn8-Fu6n a0o$nV#$Kuqq7{p+ukSX-dmBA_#{3s7|5w@o delta 5663 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 diff --git a/init.c b/init.c index 720cd3a..d740e1d 100644 --- a/init.c +++ b/init.c @@ -37,11 +37,13 @@ void init(char *title) { appData.window = SDL_CreateWindow(title, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, appData.screen_width, appData.screen_height, flags); appData.renderer = SDL_CreateRenderer(appData.window, -1, 0); - appData.texture = SDL_CreateTexture(appData.renderer, + appData.mapTexture = SDL_CreateTexture(appData.renderer, SDL_PIXELFORMAT_ARGB8888, - SDL_TEXTUREACCESS_STREAMING, + SDL_TEXTUREACCESS_TARGET, appData.screen_width, appData.screen_height); + appData.mapMoved = 1; + if(appData.fullscreen) { //\SDL_SetHint(SDL_HINT_RENDER_SCALE_QUALITY, "linear"); // make the scaled rendering look smoother. SDL_RenderSetLogicalSize(appData.renderer, appData.screen_width, appData.screen_height); diff --git a/init.o b/init.o index 82dcfa3a4292a88180bfad97fd13a9c26be7557c..f25681451b739f5af961c6b38463e5a7110db08c 100644 GIT binary patch delta 14873 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 XuW*L03t_#UpKQEl7xicO_qYBJjw~&R delta 14510 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 Di+we< diff --git a/input.c b/input.c index 4fe055d..9480445 100644 --- a/input.c +++ b/input.c @@ -47,10 +47,12 @@ void getInput() case SDL_MOUSEWHEEL: appData.maxDist *= 1.0 + event.wheel.y / 10.0; + appData.mapMoved = 1; break; case SDL_MULTIGESTURE: appData.maxDist /=1.0 + 4.0*event.mgesture.dDist; + appData.mapMoved = 1; break; case SDL_FINGERMOTION:; @@ -74,6 +76,7 @@ void getInput() appData.centerLon += outLon; appData.centerLat += outLat; + appData.mapMoved = 1; break; diff --git a/input.o.REMOVED.git-id b/input.o.REMOVED.git-id index 896993b..82d3329 100644 --- a/input.o.REMOVED.git-id +++ b/input.o.REMOVED.git-id @@ -1 +1 @@ -71b217637379d15bac063de1731f31a46620dce5 \ No newline at end of file +d4947b5d39abcf0073465f4b5683173294132874 \ No newline at end of file diff --git a/list.o b/list.o index bf268321b29b9c8ce9774ac5e7e7b6862397b489..ed2a71d5e6b81655b042285ff3977292f5fe6f57 100644 GIT binary patch delta 13418 zcma)?34Bvk*1+FwYiXfSg6Qo-iVa%|LPMZJk);Gsi~^DmP!Pn1ZCFcFwz7tRvV+8f zQe?4VQDjj<6#=V5P(~CS$smk7#E(%HLE{2AA0u;a-g!10=bNAJ_e*l``JZ!_bI)Dg z%e!_hY1=PJt8&G;P>TmsM67aZN=@CjJ3Dn&15K-`;gy}1Wx*dKovy@bM!KdS({+t> z#v)8-8R^<8onxfysC2H8uB*~*jI>3i3yk!w`B;26BVAvmd%~~Tr+q3_VMyC(shYM; zOHI35YWRI`{CgmNr=X6O?MT%%t$94zZUvT`o~+X9LKRIrl9}CMYD2RJ1wY?{GNas% zAEaR!M*5yBSVw&$-Kn*v`OGeKRt=#pbW!P6hEi9RrtTD~biN_)HVmt$t~phjy4GE# z@6VdxnWAO)zzVc}SraA|Q+kkLd!K4&5q_}#>|QF9lM>Hm->))fY8V;UllWUv%g8)% z8aq^!X=EN$o*F}$-YQcrAJYedz4Ek%7?2o#mESyL=ivo3yh;2s(aMoo9fO`HcqT3-b`QoJIPRO zB<`vVSsM${7d~n{LY#(zCJzqj+eFin0~>vIG}A=$Ve#x9%GwONnXQa@s zHh$32iQ+RT>IMsJdEGB!O3R4g*D$53CSr<_FE;bH7|CQTbPvhs4j?iR7T z(lOjuLkx$|Sg9Yu0aMp)#!q|>XJYyXh>q>0A8urbJ2Tn~oa3Z^BFhl>V{{mJkv>x2 z5D#Ot1q8=QF%I^Rv+IN6Ym27MW;!kq4xn&MsLAQS6x3bxunTsoY9P}RW8gwY5{UMC>pEMcfFlvPuQY*D;HKRIMOQqhSwo&pvM(2YY>1owSypA(E z4E#u2(p3M2(G&=k$_7hl1SO4t+23m!@KtG^SPz!T)k;Huuhe~Vp7=X>Cu0u?zQmON z3PGg%XfysZqi;b3X-8_sNk-3tm?Fg((5Kk-i!={Js?l4srCH#aVi(IHFh%M>-}Mo&Nt>0*l0#~3{e)~Qm@vl+EcWwZ{skv?S3LPpEMkMtlO!qgRF^elvs zK0&kdG^2$OMLL-3twC)!d;JDjrb&Gr&E0H9TY+<$9ZytV)VWO2F^B2+Ac(YP9iwf} zFggb!Si&(7)1|(RBIq#FX$=mff};KlMmK;5>27oFVRSPDkcMwJYOhTmGJE$vgpqD+ zY|v(mZh;umE+jR7P1_z|EtBF3bS$&$b7^gu$V#XO{xYdo(2RVN(M}LTdL2*8>UxdQ zuOM1x7c0RsL%K>c44vyt=l`g;X;i=2wqwl<{rXJ40lYJ$UPb+F#b`|k&ajI+Ac8tC z(1-_^jvK^GyZ8beGo^kX&6Gn-=RWWt{WHhV5lKKPWl!1)?4cxQr;z#hKPD7gL>zGbQ2q8_cWi;Y-M*R>)`WIR% zYmt^&JMQ1JrQVqW&cjCLOVKnY-Myg zh&fV!pQIl$`Y3yo2X(XSwk^fI-uHffo?dl+I!O>eef zbRby$Qnyh1?`5VER}_lynzH_~OaN?d2OEBKLq zN6Y8!b&Xz{y*mLRq!VbSH)eDYM3D-jd5kUq%ac;yPrbf}(VxJHbO_M_j240yX)3MT zMT|ZNL8PZ>tS2x!86rr3RnJ=SDr59#5DTT=m<}&bGdd0&NWY^|*vRPrfCuSevfa)o zjv&&-wEpa6^f-hUsvDfxLfQ5`@^(74(e!p2ZSeJfCx?3$<>`H?$O48R1OFl%B%(bT zodqGJONsVlbS*@YZX-IB(bvJU7&kDYV;DUNPNZjvPGR&%@FGnj={!a)5JZ|o(&db9 zh6vKTNm|ZmPY_FRGLUo&qr<_0)JxLcjLriO(x*sT#pp%|Al*gMBaBu-7-ojp16Ii>YxI^!UMG>^8}L5%hQu^jI< zX(JrTXf8OA7ST3V!sz|rLF%C6*K9_e5J2iCx|mT9gpqoQu4dE^F{A;a6^sVKx&ogy z5Z%dWZEz!PM0f1wy`niHcJL!Dq6POIW;+x@NLNuL9A|V9M3L&W@O{px4wjWtA4})% zbBtaDC(;FUSo?|5tKdZ%CO>O*2WYl=1_Y6gp;l!ungWrP(q*GfG>g$2RAVD1HxE-y znS2U3p2GVTik3Ev+Q5UfBSm9pMjwO#(#MG2&*&rwBlQy zC^(URPV`kqyMq^Lf7(0_GCC51NT(7##^^$bAni;&`k2ueh^M9Am)d-m(M#Y!x|2%& zp3(2YgVfQ~STU|M+6w|m|3q<~MzLUedkKV}mJLd%-ujGcHu&M`JON+@JVBc`p-kxm za3lSYsxM#^&zMMSG&364lhGy+0=wuBQPi14IzySxGO(|M^lfk>-9>S7jnNYD zBRxh3vlO~@P+m|=)>;T5{g9%mE~E7z`m8#7S=LDXD78G7=_~~&(vNBO=QDZ%ylbRu zDM`CAnoeu#eN27_$$K+-YlvW7ztZt_5To@$l;b*0JI_c)H-V$vE@prSb;@bh&SpAY zA%N6EtMXz-dqcQf;vXKLl-u<^w4zrqol{_4EA>k>wRSRU2RG8wWV?^ij^Ianjp#d! zZiW!j$7xy~XY>+8krq;fe9q`$usnw=G{x;XM)8jjq>q}rAEQ?AK4%xn5Ja8URDK5C zPMJ|u7a~YsrYOo{bT5c?QrrsqI=lWFdEUWv@Y(J<92Yu;6*3xz0MZhQ;XaHC2qV>L z?hIiRXBN`!G$Lae{S2(@aY3OQlj)2e1vk=S^4pV)jsri^m#AJ~6qiDz&*k7G!z;)r zKosc_YSk-@wgJlqsb3`Nn~Zh=C(@O419+6tZs0}w0j&m~FzSLJ(&co!{SBiVA+kZ@ zpPJ`4*!54Sdc{U!5PDvUOnC2kyPioSc$w)B2TO(2 zjkjs=wI1?{*^&$3tdOqJWZQ^Q^GR?^CcjFnQ+p==8G;pd^lb!doJzN`rA((4h@jLj z&>UIH=xA^tHS68P=mPK{HB0`1(W?*$+Ql>oqmKCx-<>p{%>H(T7}9d`Q3po1fOQj| zk;xkmG1?2DXGhaZJ0ODe2>I8>=oJuKq&}W(3mMhH zfpj6wnnxI20iG?={WY~_5~HnYTvjsqG@4~=nS224*IOa9MY>*Q^fEnqdV|T$e~I2@ z@;S6podC;L={wD6GiviiCO<|!y~^a~|4hkr0ycfyn!K9H$xlbf??4U-p8>~CT6 zLlm1KCLg0#4t3Ugi-9L8o41-$W~%cs|kj@ z+8@{HEK!zVU{9#P&nl=*rL9QNr`wOX)w4|h82Nisf_`(24t~mF2RL4mKJ%Xu<&WHW zLB`iXR@`99A4@2XZtLO(Cz-yTmL&5{8dZK?LiraA{c3;Ap#GV!&nSb|2?jS<1?_14 zs6}z2^jjt9*C)9-EgZCNa5TYy;y+%+M+tIO!9U3NUna;^gT9SxYuf)N$d!IB1?r^)c`X%-oz$q|^#h2V z(seZfD>HLT5p+CNL#e7+OIE1~a;0x>HFd$WQ~GXW^e!u^;MJ7L&BvDQm^_JA-R?|& z7v1`}nS42UjQ*{Gt2-^OBBs-b4ug}JydDMrTqbW%i``;y?~?ioMr+a>TN9`28SO)L zy$YdS()CsXRX)5-%kJ9=a^=GdG_)Ti$d!IBEmx<&^0L&wOrWaUCHPU-C2%6Wl0cR1 zQnI}PUZg2GN)un6#ZSBu)RLAEMA|V&v1+=H#(DrmkUo|Zhw(FkD)|>Gc{GSu@TQTd zS@J+C8E<2dE@HMlQjD@zfd}bYMu8~)*@5(MLdmIUMq7&Z5rmO`$85hM+iMVeMY_xb zjTyad={S)}@o2VoFSWLHf?U-_!>Dxz_im~8B&teNoR zRD*!mRwnO3`g@rCR$4dqGI@leqRNn0ufC?iQD$&E9VyHwc4mW2`6;GfPDi^>{~vku zCV6jsF_U`skDEZX{97i!LDBU6@8oc(GEW?=j8#6Kgs)4x_r5E{&!F$?kX|v?aNZyo zysv{83xR!wA_x)uz6O^4g`x=D`wOApfix)JUm#XN1Z5RqIe@aNG#GTCAU&&tQNlu4 od!Pfpq#HRt(ZtuG8 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 I^I*#V1I_aeCjbBd diff --git a/monokai.o b/monokai.o index a21da71099a2ea71c1883f3f92cbe694f51039b1..f3c046fa29f82566bcd3bfe93a0d161adac0fe6e 100644 GIT binary patch delta 7510 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 Sx4by>y~TFO9gte``~L$;6;Pi5 diff --git a/planeObj.o b/planeObj.o index 1be9b9e8cbf2bb4497ce4996c2727202e54ede03..22a767499553fc706d26c1f7ade3f7552164b4ec 100644 GIT binary patch delta 14364 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 P-Jv_}jGt5B<+%R?b5Ori delta 14460 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