From 645ee1ade5fe1ca221ee62f47d81a7a7ebf460d2 Mon Sep 17 00:00:00 2001 From: nathan Date: Sat, 21 Sep 2019 20:46:52 -0500 Subject: [PATCH] misc fixes for label system. rudimentary LOD to speed up wide map drawing Former-commit-id: 4be650caadfc461046d4e80564181ce30c57954d Former-commit-id: fa6e5a793fdaca3a51b19a62822fdeba58539f5c --- defs.h | 9 +- draw.c | 251 +++++++++++++++++++++++++++----------- draw.o.REMOVED.git-id | 2 +- font.o | Bin 36632 -> 36680 bytes init.c | 9 +- init.o | Bin 46200 -> 47128 bytes input.o.REMOVED.git-id | 2 +- list.o | Bin 47136 -> 47176 bytes monokai.o | Bin 26632 -> 26680 bytes planeObj.o | Bin 43176 -> 43224 bytes status.c | 18 ++- status.o.REMOVED.git-id | 2 +- structs.h | 2 +- view1090.REMOVED.git-id | 2 +- view1090.c | 6 +- view1090.o.REMOVED.git-id | 2 +- 16 files changed, 208 insertions(+), 97 deletions(-) diff --git a/defs.h b/defs.h index f89b6f1..abdf5b9 100644 --- a/defs.h +++ b/defs.h @@ -6,11 +6,6 @@ #include "SDL2/SDL_ttf.h" #include "mapdata.h" -#define SCREEN_WIDTH 320 -#define SCREEN_HEIGHT 480 - -#define UISCALE 1 - #define ROUND_RADIUS 3 //radius of text box corners #define CENTEROFFSET .375 //vertical offset for middle of screen @@ -20,4 +15,6 @@ #define DISPLAY_ACTIVE 30 #define TRAIL_TTL_STEP 2 -#define FRAMETIME 33 \ No newline at end of file +#define FRAMETIME 33 + +#define PAD 5 diff --git a/draw.c b/draw.c index f0aaf92..bebe530 100644 --- a/draw.c +++ b/draw.c @@ -48,6 +48,64 @@ SDL_Color signalToColor(int signal) { return planeColor; } +SDL_Color hsv2SDLColor(double h, double s, double v) +{ + double hh, p, q, t, ff; + long i; + SDL_Color out; + + if(s <= 0.0) { // < is bogus, just shuts up warnings + out.r = (uint8_t)v; + out.g = (uint8_t)v; + out.b = (uint8_t)v; + return out; + } + hh = h; + if(hh >= 360.0) hh = 0.0; + hh /= 60.0; + i = (long)hh; + ff = hh - i; + p = v * (1.0 - s); + q = v * (1.0 - (s * ff)); + t = v * (1.0 - (s * (1.0 - ff))); + + switch(i) { + case 0: + out.r = (uint8_t)v; + out.g = (uint8_t)t; + out.b = (uint8_t)p; + break; + case 1: + out.r = (uint8_t)q; + out.g = (uint8_t)v; + out.b = (uint8_t)p; + break; + case 2: + out.r = (uint8_t)p; + out.g = (uint8_t)v; + out.b = (uint8_t)t; + break; + + case 3: + out.r = (uint8_t)p; + out.g = (uint8_t)q; + out.b = (uint8_t)v; + break; + case 4: + out.r = (uint8_t)t; + out.g = (uint8_t)p; + out.b = (uint8_t)v; + break; + case 5: + default: + out.r = (uint8_t)v; + out.g = (uint8_t)p; + out.b = (uint8_t)q; + break; + } + return out; +} + int screenDist(double d) { double scale_factor = (appData.screen_width > appData.screen_height) ? appData.screen_width : appData.screen_height; @@ -276,7 +334,7 @@ void drawTrail(double *oldDx, double *oldDy, double *oldHeading, time_t * oldSee x2 = currentX + round(cross_size*vec[0]); y2 = currentY + round(cross_size*vec[1]); - lineRGBA(appData.renderer,x1,y1,x2,y2,colorVal,colorVal,colorVal,127); + thickLineRGBA(appData.renderer,x1,y1,x2,y2,appData.screen_uiscale,colorVal,colorVal,colorVal,127); //side cross x1 = currentX + round(-cross_size*out[0]); @@ -284,7 +342,7 @@ void drawTrail(double *oldDx, double *oldDy, double *oldHeading, time_t * oldSee x2 = currentX + round(cross_size*out[0]); y2 = currentY + round(cross_size*out[1]); - lineRGBA(appData.renderer,x1,y1,x2,y2,colorVal,colorVal,colorVal,127); + thickLineRGBA(appData.renderer,x1,y1,x2,y2,appData.screen_uiscale,colorVal,colorVal,colorVal,127); } } @@ -306,11 +364,32 @@ void drawGrid() void drawGeography() { int x1, y1, x2, y2; - for(int i=1; imsSeen) / 4.0); - circleRGBA(appData.renderer, x, y - 5, 2 * appData.screen_uiscale, barColor.r, barColor.g, barColor.b, seenFade); + circleRGBA(appData.renderer, x + appData.mapFontWidth, y - 5, 2 * appData.screen_uiscale, barColor.r, barColor.g, barColor.b, seenFade); seenFade = (Uint8) (255.0 - (mstime() - p->msSeenLatLon) / 4.0); - hlineRGBA(appData.renderer, x + 5 * appData.screen_uiscale, x + 9 * appData.screen_uiscale, y - 5, barColor.r, barColor.g, barColor.b, seenFade); - vlineRGBA(appData.renderer, x + 7 * appData.screen_uiscale, y - 2 * appData.screen_uiscale - 5, y + 2 * appData.screen_uiscale - 5, barColor.r, barColor.g, barColor.b, seenFade); + hlineRGBA(appData.renderer, x + appData.mapFontWidth + 5 * appData.screen_uiscale, x + appData.mapFontWidth + 9 * appData.screen_uiscale, y - 5, barColor.r, barColor.g, barColor.b, seenFade); + vlineRGBA(appData.renderer, x + appData.mapFontWidth + 7 * appData.screen_uiscale, y - 2 * appData.screen_uiscale - 5, y + 2 * appData.screen_uiscale - 5, barColor.r, barColor.g, barColor.b, seenFade); } void drawPlaneText(struct planeObj *p) { - - drawSignalMarks(p, p->x, p->y); - - int maxCharCount; + int maxCharCount = 0; int currentCharCount; int currentLine = 0; - char flight[10] = " "; - maxCharCount = snprintf(flight,10,"%s", p->flight); + if(p->pressure * appData.screen_width< 0.4f) { + drawSignalMarks(p, p->x, p->y); + + char flight[10] = " "; + maxCharCount = snprintf(flight,10," %s", p->flight); + + if(maxCharCount > 0) { + drawStringBG(flight, p->x, p->y, appData.mapBoldFont, white, black); + //roundedRectangleRGBA(appData.renderer, p->x, p->y, p->x + maxCharCount * appData.mapFontWidth, p->y + appData.mapFontHeight, ROUND_RADIUS, white.r, white.g, white.b, SDL_ALPHA_OPAQUE); + //drawString(flight, p->x, p->y, appData.mapBoldFont, white); + currentLine++; + } + } + + if(p->pressure * appData.screen_width < 0.2f) { + char alt[10] = " "; + if (Modes.metric) { + currentCharCount = snprintf(alt,10," %dm", (int) (p->altitude / 3.2828)); + } else { + currentCharCount = snprintf(alt,10," %d'", p->altitude); + } + + if(currentCharCount > 0) { + drawStringBG(alt, p->x, p->y + currentLine * appData.mapFontHeight, appData.mapFont, grey, black); + currentLine++; + } + + if(currentCharCount > maxCharCount) { + maxCharCount = currentCharCount; + } + + char speed[10] = " "; + if (Modes.metric) { + currentCharCount = snprintf(speed,10," %dkm/h", (int) (p->speed * 1.852)); + } else { + currentCharCount = snprintf(speed,10," %dmph", p->speed); + } + + if(currentCharCount > 0) { + drawStringBG(speed, p->x, p->y + currentLine * appData.mapFontHeight, appData.mapFont, grey, black); + currentLine++; + } + + if(currentCharCount > maxCharCount) { + maxCharCount = currentCharCount; + } + } if(maxCharCount > 0) { - drawStringBG(flight, p->x, p->y, appData.mapBoldFont, white, black); - currentLine++; + + Sint16 vx[4] = {p->cx, p->cx + (p->x - p->cx) / 2, p->x, p->x}; + Sint16 vy[4] = {p->cy, p->cy + (p->y - p->cy) / 2, p->y - appData.mapFontHeight, p->y}; + + if(p->cy > p->y + currentLine * appData.mapFontHeight) { + vy[2] = p->y + currentLine * appData.mapFontHeight + appData.mapFontHeight; + vy[3] = p->y + currentLine * appData.mapFontHeight; + } + + bezierRGBA(appData.renderer,vx,vy,4,2,200,200,200,SDL_ALPHA_OPAQUE); + + + thickLineRGBA(appData.renderer,p->x,p->y,p->x,p->y+currentLine*appData.mapFontHeight,appData.screen_uiscale,200,200,200,SDL_ALPHA_OPAQUE); } - - char alt[10] = " "; - if (Modes.metric) { - currentCharCount = snprintf(alt,10,"%dm", (int) (p->altitude / 3.2828)); - } else { - currentCharCount = snprintf(alt,10,"%d'", p->altitude); - } - - if(currentCharCount > 0) { - drawStringBG(alt, p->x, p->y + currentLine * appData.mapFontHeight, appData.mapFont, grey, black); - currentLine++; - } - - if(currentCharCount > maxCharCount) { - maxCharCount = currentCharCount; - } - - char speed[10] = " "; - if (Modes.metric) { - currentCharCount = snprintf(speed,10,"%dkm/h", (int) (p->speed * 1.852)); - } else { - currentCharCount = snprintf(speed,10,"%dmph", p->speed); - } - - if(currentCharCount > 0) { - drawStringBG(speed, p->x, p->y + currentLine * appData.mapFontHeight, appData.mapFont, grey, black); - currentLine++; - } - - if(currentCharCount > maxCharCount) { - maxCharCount = currentCharCount; - } - + p->w = maxCharCount * appData.mapFontWidth; p->h = currentLine * appData.mapFontHeight; } @@ -444,12 +544,12 @@ void resolveLabelConflicts() { //apply damping - p->ddox -= 0.7f * p->dox; - p->ddoy -= 0.7f * p->doy; + p->ddox -= 0.07f * p->dox; + p->ddoy -= 0.07f * p->doy; //spring back to origin - p->ddox -= 0.05f * p->ox; - p->ddoy -= 0.05f * p->oy; + p->ddox -= 0.005f * p->ox; + p->ddoy -= 0.005f * p->oy; // // //screen edge @@ -469,9 +569,10 @@ void resolveLabelConflicts() { p->oy -= (float)(p_bottom - (appData.screen_height - 10 * appData.screen_uiscale)); } + p->pressure = 0; + //check against other labels - while(check_p) { if(check_p->addr != p->addr) { @@ -480,6 +581,10 @@ void resolveLabelConflicts() { int check_top = check_p->y - 5 * appData.screen_uiscale; int check_bottom = check_p->y + check_p->h + 5 * appData.screen_uiscale; + + p->pressure += 1.0f / ((check_p->cx - p->cx) * (check_p->cx - p->cx) + (check_p->cy - p->cy) * (check_p->cy - p->cy)); + + //if(check_left > (p_right + 10) || check_right < (p_left - 10)) { if(check_left > p_right || check_right < p_left) { check_p = check_p -> next; @@ -494,23 +599,23 @@ void resolveLabelConflicts() { //left collision if(check_left > p_left && check_left < p_right) { - check_p->ddox -= 0.1f * (float)(check_left - p_right); + check_p->ddox -= 0.01f * (float)(check_left - p_right); } //right collision if(check_right > p_left && check_right < p_right) { - check_p->ddox -= 0.1f * (float)(check_right - p_left); + check_p->ddox -= 0.01f * (float)(check_right - p_left); } //top collision if(check_top > p_top && check_top < p_bottom) { - check_p->ddoy -= 0.1f * (float)(check_top - p_bottom); + check_p->ddoy -= 0.01f * (float)(check_top - p_bottom); } //bottom collision if(check_bottom > p_top && check_bottom < p_bottom) { - check_p->ddoy -= 0.1f * (float)(check_bottom - p_top); - } + check_p->ddoy -= 0.01f * (float)(check_bottom - p_top); + } } check_p = check_p -> next; } @@ -543,22 +648,22 @@ void resolveLabelConflicts() { //left collision if(check_left > p_left && check_left < p_right) { - check_p->ddox -= 0.1f * (float)(check_left - p_right); + check_p->ddox -= 0.04f * (float)(check_left - p_right); } //right collision if(check_right > p_left && check_right < p_right) { - check_p->ddox -= 0.1f * (float)(check_right - p_left); + check_p->ddox -= 0.04f * (float)(check_right - p_left); } //top collision if(check_top > p_top && check_top < p_bottom) { - check_p->ddoy -= 0.1f * (float)(check_top - p_bottom); + check_p->ddoy -= 0.04f * (float)(check_top - p_bottom); } //bottom collision if(check_bottom > p_top && check_bottom < p_bottom) { - check_p->ddoy -= 0.1f * (float)(check_bottom - p_top); + check_p->ddoy -= 0.04f * (float)(check_bottom - p_top); } check_p = check_p -> next; @@ -617,9 +722,9 @@ void drawMap() { drawGrid(); - //for(int i = 0; i < 2; i++) { + for(int i = 0; i < 4; i++) { resolveLabelConflicts(); - //} + } //draw all trails first so they don't cover up planes and text @@ -648,6 +753,10 @@ void drawMap() { planeColor = grey; } else { planeColor = white; + //srand(p->addr); + // planeColor = hsv2SDLColor(255.0 * (double)rand()/(double)RAND_MAX, 255.0, 200.0); + //planeColor = signalToColor((int)(255.0f * (float)rand()/(float)RAND_MAX)); + //fprintf("%d %d %d\n", planeColor.r, planeColor.g, planeColor.b); } if(p->created == 0) { @@ -679,17 +788,17 @@ void drawMap() { if(outOfBounds(x,y)) { drawPlaneOffMap(x, y, &(p->cx), &(p->cy), planeColor); - thickLineRGBA(appData.renderer, p->cx, p->cy, p->x+(p->w>>2), p->y, appData.screen_uiscale, 200,200,200,SDL_ALPHA_OPAQUE); + + //lineRGBA(appData.renderer, p->cx, p->cy, p->x+(p->w/2), p->y, 200,200,200,SDL_ALPHA_OPAQUE); + } else { drawPlaneHeading(usex, usey, p->track, planeColor); p->cx = usex;// + 5; p->cy = usey;// + 10 * appData.screen_uiscale; - - if(p->cx != 0 && p->cy != 0 && p->x != 0 && p->y != 0) { - - thickLineRGBA(appData.renderer, usex, usey, p->x+(p->w>>2), p->y, appData.screen_uiscale, 200,200,200, SDL_ALPHA_OPAQUE); - } + + //lineRGBA(appData.renderer, usex, usey, p->x+(p->w/2), p->y, 200,200,200, SDL_ALPHA_OPAQUE); + } diff --git a/draw.o.REMOVED.git-id b/draw.o.REMOVED.git-id index 8d1d3a5..7c1526e 100644 --- a/draw.o.REMOVED.git-id +++ b/draw.o.REMOVED.git-id @@ -1 +1 @@ -a17d06a73e34e6e65d1ff9ed411da79667154ca6 \ No newline at end of file +5bec8587fd94772a4061e38543ad9846ffb0fc11 \ No newline at end of file diff --git a/font.o b/font.o index 120e521686b8a969be98ed81022bf71dd8a63f41..1b9094e1f1c196d1da92e0fc47a3baa2e7a38cff 100644 GIT binary patch delta 4608 zcmaJ^3s98T75>jEF9mT`xLg#K`aq58pG{MdsSQ$FH%_M`tD=I+vQ<=kAS>d64`3A^ zR1oQBr)r}K9j8iTW425+nrW1@@zL6*w3DJvoQQEIVrr62#2YwhM=Bd&bcVf$_CAD(yIG>oYLsLb7n2$7_R9lg`@>qi=%2O+43) zzYW@&^&x9YhJ`eFR)1vQ@ZdYv;CftmFzp^T5B`BIZV)aF-di5l#M5lt z&E%xX+~IL9|5(PMah#EOf_e8MW1o?j&EvR13ilbY@n0qzMtUfM*_J+m@o*bHP83w4 zbI5dA&H9nX081SkU&(_of8p0KGG#1{f-|LrOon&YvUWhCbQ+c=sh zWH`pfF(1a$GJTAdjz{TV$OFz7ISgZ><;S*kHOoFXI#x;B$oPu2rInRcYfC#;=S)lL zcy;>ic={&x&up>94#9-{>GUzY`A+#zWvxmD(vN==`L7?k@&(;TZ@!OKz~d6Ugc_GA zZw(C-KhpR&(dqJ0J#uC_=`#GYOuCA|ET@di2on!d_&4Ie8ur;jE>qr4YG@AfX1m#2 z+ia6|po^Ki)57*6Y>)f-322U+9PrF>(g$dtW6E8e6|23aG1ntF$K=D4S>U7=logot zKK8TB$3@lzV4v%xKcaB1N%PUj{qgAH{ucZN({ndhU4aLqqMg|HV2nG(7- zhSA(NJZEHe9^^54Qtj>$4IKh+p-Hc!jX6722F_@lTj(nE(H}6Q$VruGEfRd-+lzdZ zfy@Oa&4O!zpm$Kl{S549ISdyUv`{w+7rJRIPAxR)B6?X~hFsJl_lyX~Hz@A$IQO7) zk&sIiI$lFxM{to~&k4moS_pr!Qyx^;?YzcZf}Ua_&+(10+BFS5*I{=b>0^sc!|5Lu z%Pz&b7awLva`rno7CU7c*8r;}hl(nnL+)GWF%zwe1tp_>u}LmmS?r`q9hpnwNM2V4 z8#RL<@=ArxmV%v!&}Hahv__$(hIYfg+@y5mEqBvkv@I7j z8mE>!sTouzYbMjfq zTwzi!Tq^`ufwC2D`UNhoaMD|_uQcf}@>U9YR@H^L{*UMCJ$P4Ib*FKqDaWbWG(zKi z7hUY3M4?Y<=qAvrPv{v0S2^ho|TW0FE_69#cEg$2y$ctfW}oH{oIQFA7c8&>LuF^mBy{)zEfyt`W2iSJt@c zr^u;r(-iEla8f_?R0z3Gt#^%PH4S#JRmJjHmci>4a*8_7(3nfm<`r}trrLu_YyA;ItntZ*3SF(CegtX+?Z?F$H^(-9gULm`a6=1yfnM%^4|1a^`>Ib$!NA8oAAo10 z;7?Y~Mw1?*eWQ~mBgp(1mCyGyz6&{7mFHTgq3O!14xNndQmFMx7#)f{ zEcPPE=z%EI`sPnnkBI;>YlZ!dD9@p)4Nt8=No~A*S4WiHRrqT~-AxUxQfP0K-nw6B zRT=$fl-`=>w&LH9(p&r_wO=-M(yiQE{E_Op5*OANJ*p@v%8^|&n5zs@qx9AUzg1Ua zjHZ8C@lAN^1Rowxy`b4>s}pj*Vp&TGLY`4* zBuyDAeOF=MBINrTI!U2-k;iDPI+qdKli@&&G4L|_Z4LdGLQBxLMcAt~G!Z>p1g>w1 zmj^W@a@Sq~Z51-0qsr?AI2iq_LL(dWnaWK!JdECnLahwVQ?~ce%IE;~_=r@hO{#jN zp_9=J4UIf1vJhl+qK3{=o+lx*LGUvrz_JLg1|i*w8Ohn#6_Y=Z4Z^-%Lle;1AaJ%J zUjAA`tbg3Cb`Cx4_3zsJ7u2Et0QPNyKD4CcV~z7bRpQT{pnm`_+y2{t@DL0`>{nMO?oaSuW2XAvO{T>097Z7aDwGG^fXLmnO SJK^1(OVtRltUz#g)_(wkd)Wj4 delta 4542 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 Yr~)ey{_Wy{@82!?f0>i9Lw*1M0Ww*`e*gdg diff --git a/input.o.REMOVED.git-id b/input.o.REMOVED.git-id index 8dccc44..5a96a3c 100644 --- a/input.o.REMOVED.git-id +++ b/input.o.REMOVED.git-id @@ -1 +1 @@ -2305764a62eb8dd80a5f71e908a04bfaa9bc3cc9 \ No newline at end of file +b7c0644a5ba34c2548772d880bce685146ce9e95 \ No newline at end of file diff --git a/list.o b/list.o index cdfa6838a681ecc277eea074d6ac90be1cb84a0f..a8039d47d9792f31741445617028f0442f1361e6 100644 GIT binary patch delta 6099 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 diff --git a/planeObj.o b/planeObj.o index 46f23801888532f97066ddc9d65d3370f7bb62e1..e2a0fd7166bbd23b72d0a2773463afecbf570439 100644 GIT binary patch delta 8104 zcmb7J3v`s#wf^@INTQd7fxyX0fn4(buPs6=NFORKO85Ey{gbe}?(Mo~t(-aM z`}W@F?7h!xCcBz_Cz^dVec?oHzhXFC|L802U`RtK;nmc>hf~voi~N>#jYTDWU{VMA zaN9Q-IKgcXs>aN;m3=l6Qq% z!bYT1_Z|f}HhtKbVnQ6<5mr(GwL2NMM^7-g+s<^_K7;q{Sw%4UZ&}?&QH*%6YX=<$THEk65PQ@=s(=q)zdm{nrz{7(@t`&or&QXZ4Vts z$PHx87;$n{LVz>jj#gmat)nb`&QPsc$hO++3)$G92XxG)kQKSszRtsQIzMF~Azy;C zBJ_6y@#c(-+%(co@?AG=s-*!I8mD}{%v`k({*$D$xYrH_Vm#wE_z}LH(J%FGV#YGl z363{>n^Eh77_RPd8{FA&tVacmHY1roXR4{>z_;zm0W+AfdIdH4PfS{7oI6H?PW8CU zR&Qq#^I;Kg$;^q5>|t4biY*voR)i^i=2(zt)}JYTO$GD4ZohjR4-M!RC`_h&<(kg* z(}-(VyC;6b92V-&Le@2zmNfvz`C?Sx4L1_pFUT_Yc`^_hOqT2rFl^O%z+cS&=Q6vxGuXlyo7IL2jLSumz~qgTRKL_i#KdCYwY`G^}x96?`Rm> z>(gFIbLN(mmCc`9(vTir-l<{T_~9MkHEh0L!FW7#e++(z#goF|$K6!t;)O{ze1URehKcUC)tSgB}y04nPJLk!De6!v3cEGc8Xx%LjN?S8)*xfvP7_j7@8J_ z@33lG3}!UI1DOD`F)%$0=Wqtqg;-DZ*LZQdt>54b+-j~nD&FMgV`#=fcmQE$47OnT z%!B$Y5B8Oi{00kVDg9#(hcEGJI~%cLmV!RGVU`^%<5cw(GVKDc&H#bGh!pmU%XfvhF>*=<|cxkta;YXjocc!GAu4r@DP@lMI$HKXrYj4$B~#I@Z}uE zNdiyCz`Q7AVg=Pj*fKAsYk1kbEF`yL>3pU4GJ8OfA-A7^%mU^in0u|H#W zq+kzWeM~_!HpOiCEnbY7wH#V#LpLm4sOZG0S{Q{t;+chE$irZ{P3KW@xzg`B?*e)a z3Tx-Fwp_urxVzleH(%$@@~Ds*j~B>78MCJZyBY(F&eL}DFAn=UWZ}Jw2k1)Y{>PJCBRaaD-mH#b!OC!?KX0x31nc9iI7Q%TjL#H! z9k#5rAszh>*|dy8RL8LNp`CgbA66d=d5yt`!%&Ci58HI!?56q$c=F*W)ZnmHQN4jj zsY$td&XridO6fbCD=5c zrH{T$nc|JLjkj8gz3yh4zHqTg~Djg`U?UNv7y%l9^?uALf}uc+wWe5 z(~(if#D^GsT*XgcMO)T>Huo2S-_GavWr05fuHV;khP+G;=Q~9Sd_U`RMsu&kJ{N5|Bwr~c1FBCldg221*k@Bs;*YMiyilNo?c&2Zzrg$0X%?qYK zmabOuVS@F>x=rAJ=lnk)@MRp7GJzlE^uz@oqB!>jPhZn&Sf&Zg}yI4LDcn+uk zw7_fG)4#fSYdVo%V!#7=p*+c(D+NPOs>t^QyN4gb=ce4 zawiD9wczms2Zx%A=IcqN>tW%NK1$!@BJ}mGt zS+3>x1wNId@fjAAwLc5CgtaX8!;9@=##02|l{45K8`mkFE7&+c(ev;Ev7-drnRmq9 z7y>G_eh{HMSbA;CGd_OD`_&(QN>oI|M`$QC1mz-Y>x{3 z9mYQq_(zPNL;rdexg^->-ciR75YN+jjHe6yCmiz}EM2ekAi?hB%#Fl4V#f;hEsowK zY+kS8vjuB@?lWbP!1Eb@MBsNbzE0pX7=KRS{j(hN*2^y5dWaw6WE>I--8lrm!P*Tf z{*hq4$NO1RSZ9RA z!q7LIlZrO-K9c+rYd0#a*_aghX&Vi5Tn%yTSk}vJaI`oi_Y_XFOSj#1J9_)V8Q-{b#GzZTReL?Bi@bRSsUTR!m?&##WPBmx6v|@470Tr zSWj$q8`jwM$_8v9c555f=x$@(7tp_1=~tNb#;s!I|HcrpzZSY@S@#&05_?LpgZS3@ z9P5bvvJGoyRl}AqV>7Wy{2cVwMh)xw5uR0AG3(9hF4i50L1IU?(KV~ud#;YhVq%vH z_D_7TKaRD;t{3dZY}fQQY$VqE8O+O0dwymfbadYlx|jHMa?I#Pe$T8oXP&ZkEuUtd z&A)RDQ~wvd8&+&lkm1zXSWoR7r@kIrwkT~2t%<$Wh9)1n z-<`vHta@%J{mRn#Tt5B$1>5ss0*0u55i7RmCIg6e(PNOc~c>JJ*?W6`A=jU`2PR^ delta 7975 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 C%KNqe diff --git a/status.c b/status.c index f9e09bb..852c8f0 100644 --- a/status.c +++ b/status.c @@ -4,8 +4,6 @@ #include "monokai.h" #include "SDL2/SDL2_gfxPrimitives.h" -#define PAD 5 - void updateStatus() { // struct aircraft *a = Modes.aircrafts; @@ -102,12 +100,12 @@ void drawStatusBox(int *left, int *top, char *label, char *message, SDL_Color co int messageWidth = (strlen(message) + ((strlen(message) > 0 ) ? 1 : 0)) * appData.messageFontWidth; //newline if no message or label - if(strlen(label) == 0 && strlen(message) == 0 ) { - boxRGBA(appData.renderer, *left, *top, appData.screen_width - PAD, *top + appData.messageFontHeight,0, 0, 0, 0); - *left = PAD; - *top = *top - appData.messageFontHeight - PAD; - return; - } + // if(strlen(label) == 0 && strlen(message) == 0 ) { + // boxRGBA(appData.renderer, *left, *top, appData.screen_width - PAD, *top + appData.messageFontHeight,0, 0, 0, 0); + // *left = PAD; + // *top = *top - appData.messageFontHeight - PAD; + // return; + // } if(*left + labelWidth + messageWidth + PAD > appData.screen_width) { // if(*left + PAD < appData.screen_width) { @@ -200,8 +198,8 @@ void drawBattery(int *left, int *top, double level) { void drawStatus() { - int left = PAD + 2 * appData.messageFontHeight ; - int top = appData.screen_height - 2 * appData.messageFontHeight - PAD; + int left = PAD; + int top = appData.screen_height - appData.messageFontHeight - PAD; char strLoc[20] = " "; snprintf(strLoc, 20, "%3.3fN %3.3f%c", appData.centerLat, fabs(appData.centerLon),(appData.centerLon > 0) ? 'E' : 'W'); diff --git a/status.o.REMOVED.git-id b/status.o.REMOVED.git-id index 8c415a8..e8a5452 100644 --- a/status.o.REMOVED.git-id +++ b/status.o.REMOVED.git-id @@ -1 +1 @@ -30a2da16b88ee34ce3413fff471b01c956184f32 \ No newline at end of file +90ec17d3fd60fd6950fbb50080a31747734eec21 \ No newline at end of file diff --git a/structs.h b/structs.h index a1fe80b..5e64226 100644 --- a/structs.h +++ b/structs.h @@ -77,7 +77,7 @@ struct planeObj { int x, y, cx, cy, w, h; float ox, oy, dox, doy, ddox, ddoy; - + float pressure; }; struct planeObj *planes; diff --git a/view1090.REMOVED.git-id b/view1090.REMOVED.git-id index 5c9e4c9..fbe62e2 100644 --- a/view1090.REMOVED.git-id +++ b/view1090.REMOVED.git-id @@ -1 +1 @@ -8994067f92a4d800070c11716a732a5636bb6e5b \ No newline at end of file +2e266c7f3d943cd7251613fc0eddc9208d5bb05a \ No newline at end of file diff --git a/view1090.c b/view1090.c index 4acc9d1..b5453ec 100644 --- a/view1090.c +++ b/view1090.c @@ -71,9 +71,9 @@ void view1090InitConfig(void) { appData.centerLat = Modes.fUserLat; // Display options - appData.screen_uiscale = UISCALE; - appData.screen_width = SCREEN_WIDTH; - appData.screen_height = SCREEN_HEIGHT; + appData.screen_uiscale = 1; + appData.screen_width = 0; + appData.screen_height = 0; appData.screen_depth = 32; appData.fullscreen = 0; diff --git a/view1090.o.REMOVED.git-id b/view1090.o.REMOVED.git-id index 05895e4..8adde1b 100644 --- a/view1090.o.REMOVED.git-id +++ b/view1090.o.REMOVED.git-id @@ -1 +1 @@ -a549061b45cd62ae3ca46ebf3b8e29c4956b9641 \ No newline at end of file +547bceb30b8891c365837c7f01eac3b9c227fa8e \ No newline at end of file