1
0
Fork 0

Navdisplay: bug fixed and new features

- Correct z-index
- Add MAP CTR compass
- Fix active WPT color
- Hide wind data at low speeds
- Move code outside main update loop
- Correct ranges
This commit is contained in:
Gijs de Rooy 2014-07-06 23:17:47 +02:00
parent 394ad348c0
commit 573de77cb8
14 changed files with 1945 additions and 1464 deletions

View file

@ -118,7 +118,8 @@ var init = func {
.horiz(-14.5)
.vert(-14.5)
.close()
.setStrokeLineWidth( me.layer.style.line_width );
.setStrokeLineWidth( me.layer.style.line_width )
.set("z-index",-2);
# finally scale the symbol as requested, this is done last so that people can override this when creating the layer
me.apply_scale();

View file

@ -28,7 +28,8 @@ var drawFIX = func(group) {
.lineTo(15,15)
.close()
.setStrokeLineWidth(line_width)
.setColor(color);
.setColor(color)
.set("z-index",-3);
}
var cache = StyleableCacheable.new(
@ -44,6 +45,6 @@ var init = func {
# non-cached stuff:
if (me.style.show_labels)
me.text_fix = me.newText(me.model.id).setScale(me.style.scale_factor);
me.text_fix = me.newText(me.model.id).setScale(me.style.scale_factor).setTranslation(17,35).set("z-index",-3);
}
var draw = func;

View file

@ -24,17 +24,17 @@
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1360"
inkscape:window-height="711"
inkscape:window-width="1366"
inkscape:window-height="716"
id="namedview102"
showgrid="false"
inkscape:zoom="4"
inkscape:cx="935.56631"
inkscape:cy="485.54807"
inkscape:window-x="0"
inkscape:window-y="33"
inkscape:zoom="0.5"
inkscape:cx="-212.63"
inkscape:cy="501.603"
inkscape:window-x="-8"
inkscape:window-y="-8"
inkscape:window-maximized="1"
inkscape:current-layer="layer1"
inkscape:current-layer="layer4"
inkscape:object-nodes="true"
inkscape:snap-smooth-nodes="true"
inkscape:snap-object-midpoints="true"
@ -42,10 +42,7 @@
inkscape:snap-to-guides="false"><sodipodi:guide
id="guide3155"
orientation="0,1"
position="512,200" /><sodipodi:guide
id="guide3167"
orientation="1,0"
position="512,811.5" /><sodipodi:guide
position="479.418,200" /><sodipodi:guide
id="guide3169"
orientation="-0.866025,0.5"
position="512,200" /><sodipodi:guide
@ -63,7 +60,7 @@
id="guide4003" /></sodipodi:namedview><metadata
id="metadata5186"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /><dc:creator><cc:Agent><dc:title>Gijs de Rooy</dc:title></cc:Agent></dc:creator><cc:license
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title><dc:creator><cc:Agent><dc:title>Gijs de Rooy</dc:title></cc:Agent></dc:creator><cc:license
rdf:resource="" /></cc:Work></rdf:RDF></metadata><defs
id="defs5184"><marker
style="overflow:visible"
@ -117,8 +114,7 @@
style="display:inline"
inkscape:label="base"
id="layer3"
inkscape:groupmode="layer"
sodipodi:insensitive="true"><g
inkscape:groupmode="layer"><g
id="vorCrsPtr"
inkscape:label="#g3282"
inkscape:transform-center-y="-7.3565"
@ -194,7 +190,8 @@
inkscape:connector-curvature="0"
id="selHdgLine"
d="m 512,824.75 0,-682.634"
style="fill:none;stroke:#ff00ff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:32, 16;stroke-dashoffset:0" /><path
style="fill:none;stroke:#ff00ff;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:32, 16;stroke-dashoffset:0"
inkscape:transform-center-x="2" /><path
inkscape:transform-center-y="-715.775"
inkscape:label="#path3882"
sodipodi:nodetypes="cccc"
@ -213,6 +210,7 @@
x="844.04407"
id="tspan7245"
sodipodi:role="line">ABCD</tspan></text>
<text
xml:space="preserve"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ededed;fill-opacity:1;stroke:none;display:inline;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
@ -225,6 +223,7 @@
id="tspan7251"
x="844.04407"
y="126.12489">999.9</tspan></text>
<path
sodipodi:nodetypes="cccc"
inkscape:connector-curvature="0"
@ -249,6 +248,7 @@
id="tspan3801"
x="36.862175"
y="92.904839">999°/ 99</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -261,6 +261,7 @@
x="77.874374"
id="tspan3809"
sodipodi:role="line">999</tspan></text>
<text
xml:space="preserve"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ededed;fill-opacity:1;stroke:none;display:inline;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
@ -273,6 +274,7 @@
id="tspan3813"
x="210.49673"
y="53.306854">999</tspan></text>
<text
xml:space="preserve"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ededed;fill-opacity:1;stroke:none;display:inline;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
@ -286,6 +288,7 @@
id="tspan3817"
x="38.276394"
y="53.306854">GS</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -299,6 +302,7 @@
id="tspan3821"
sodipodi:role="line"
style="font-size:24px">TAS</tspan></text>
<g
id="hdgGroup"
inkscape:label="#g3141"><path
@ -319,6 +323,7 @@
x="476.28857"
y="65.781754"
style="font-size:48px">999</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -332,6 +337,7 @@
id="tspan3849"
sodipodi:role="line"
style="font-size:32px;fill:#32f519">HDG</tspan></text>
<text
xml:space="preserve"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#32f519;fill-opacity:1;stroke:none;display:inline;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
@ -345,6 +351,7 @@
id="tspan3853"
x="578.66278"
y="67.549522">MAG</tspan></text>
</g><text
xml:space="preserve"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#32f519;fill-opacity:1;stroke:none;display:inline;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
@ -358,6 +365,7 @@
id="tspan3056"
x="41.732624"
y="913.5495">VOR L</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -371,6 +379,7 @@
id="tspan3060"
sodipodi:role="line"
style="font-size:24px;fill:#32f519">DME</tspan></text>
<text
xml:space="preserve"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#32f519;fill-opacity:1;stroke:none;display:inline;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
@ -384,6 +393,7 @@
id="tspan3068"
x="101.1296"
y="993.85461">99.9</tspan></text>
<text
xml:space="preserve"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#32f519;fill-opacity:1;stroke:none;display:inline;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
@ -397,6 +407,7 @@
id="tspan3072"
x="41.732624"
y="954.56171">ABC</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -410,6 +421,7 @@
id="tspan3076"
sodipodi:role="line"
style="font-size:32px;fill:#32f519">VOR R</tspan></text>
<text
xml:space="preserve"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#32f519;fill-opacity:1;stroke:none;display:inline;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
@ -423,6 +435,7 @@
id="tspan3080"
x="889.7326"
y="993.85461">DME</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -436,6 +449,7 @@
id="tspan3084"
sodipodi:role="line"
style="font-size:32px;fill:#32f519">99.9</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -449,6 +463,7 @@
id="tspan3088"
sodipodi:role="line"
style="font-size:32px;fill:#32f519">ABC</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -462,6 +477,7 @@
x="844.04407"
id="tspan3092"
sodipodi:role="line">08 34.4z</tspan></text>
<g
inkscape:label="#g3124"
id="compass"><path
@ -486,6 +502,7 @@
x="500.44846"
y="195.26741"
style="font-size:40px">0</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -500,6 +517,7 @@
x="9.1033907"
id="tspan3082"
sodipodi:role="line">33</tspan></text>
<text
transform="matrix(0.5,-0.866026,0.866026,0.5,0,0)"
xml:space="preserve"
@ -514,6 +532,7 @@
x="-478.97894"
y="231.34868"
style="font-size:39.999996px">30</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -528,6 +547,7 @@
x="-845.96948"
id="tspan3090"
sodipodi:role="line">27</tspan></text>
<text
transform="matrix(-0.5,-0.866025,0.866025,-0.5,0,0)"
xml:space="preserve"
@ -542,6 +562,7 @@
x="-992.34058"
y="-584.99097"
style="font-size:39.99995px">24</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -556,6 +577,7 @@
x="-879.19897"
id="tspan3098"
sodipodi:role="line">21</tspan></text>
<text
transform="scale(-1,-1)"
xml:space="preserve"
@ -570,6 +592,7 @@
x="-533.67151"
y="-1436.3594"
style="font-size:40.000004px">18</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -584,6 +607,7 @@
x="-51.792171"
id="tspan3106"
sodipodi:role="line">15</tspan></text>
<text
transform="matrix(-0.5,0.866026,-0.866026,-0.5,0,0)"
xml:space="preserve"
@ -598,6 +622,7 @@
x="435.97983"
y="-1462.8785"
style="font-size:40.000011px">12</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -612,6 +637,7 @@
x="812.80585"
id="tspan3114"
sodipodi:role="line">9</tspan></text>
<text
transform="matrix(0.5,0.866025,-0.866025,0.5,0,0)"
xml:space="preserve"
@ -626,6 +652,7 @@
x="958.43561"
y="-645.76654"
style="font-size:39.999981px">6</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -640,6 +667,7 @@
x="844.79596"
id="tspan3122"
sodipodi:role="line">3</tspan></text>
<path
sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccscccscccscccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccscccccc"
id="path3181"
@ -672,8 +700,7 @@
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" /><g
id="trkInd"
inkscape:label="#g3107"
inkscape:transform-center-y="-318.607"
inkscape:transform-center-x="-0.165"><path
inkscape:transform-center-y="-331.085"><path
inkscape:label="#path6714"
inkscape:transform-center-y="-415.888"
style="fill:none;stroke:#ededed;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
@ -705,13 +732,15 @@
id="tspan5002"
x="500.86594"
y="464.10147">99</tspan></text>
<path
sodipodi:nodetypes="cscc"
inkscape:connector-curvature="0"
id="altArc"
d="m 351.124,888.591 c 0,0 72.1,-39.455 161.041,-39.455 88.941,0 161.041,39.455 161.041,39.455 l 0,0"
style="fill:none;stroke:#00ff00;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
inkscape:label="#path3888-1" /></g><text
d="m 350.959,863.607 c 0,0 72.1,-39.455 161.041,-39.455 88.941,0 161.041,39.455 161.041,39.455 l 0,0"
style="fill:none;stroke:#00ff00;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
inkscape:label="#path3888-1"
inkscape:transform-center-y="19.8725" /></g><text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
id="taOnly"
@ -724,6 +753,7 @@
id="tspan3093"
sodipodi:role="line"
style="font-size:32px;fill:#0099d9;fill-opacity:1">TA ONLY</tspan></text>
<g
id="staArrowL"
inkscape:label="#g4072"
@ -790,6 +820,7 @@
id="tspan3097"
x="41.732624"
y="769.12952">WXR</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -803,6 +834,7 @@
id="tspan3101"
sodipodi:role="line"
style="font-size:32px;fill:#0099d9;fill-opacity:1">ARPT</tspan></text>
<text
xml:space="preserve"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#0099d9;fill-opacity:1;stroke:none;display:inline;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
@ -816,6 +848,7 @@
id="tspan3105"
x="41.732624"
y="697.12939">WPT</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -829,6 +862,7 @@
id="tspan3109"
sodipodi:role="line"
style="font-size:32px;fill:#0099d9;fill-opacity:1">STA</tspan></text>
<path
inkscape:label="#path7253"
style="fill:none;stroke:#ededed;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
@ -872,6 +906,7 @@
id="tspan3179"
x="937.04547"
y="125.43141">NM</tspan></text>
<text
xml:space="preserve"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#32f519;fill-opacity:1;stroke:none;display:inline;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
@ -885,6 +920,7 @@
id="tspan4172"
x="803.289"
y="53.929054">ILS L</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -898,17 +934,12 @@
id="tspan4176"
sodipodi:role="line"
style="font-size:32px;fill:#ededed;fill-opacity:1">999.99</tspan></text>
</g><g
inkscape:groupmode="layer"
id="layer1"
inkscape:label="CTR"
style="display:inline"><path
id="trkInd2"
style="fill:#ff0000;fill-opacity:1;stroke:#ededed;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
d="m 484.069,824.388 55.862,0 m -27.755,84.942 -0.353,-144.493 m -27.754,-469.644 55.862,0 m -27.755,-84.942 -0.353,144.493"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc"
inkscape:label="#path3998" /><path
id="aplSymVor"
style="fill:none;stroke:#ededed;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
d="m 523.994,501.789 0,58 51.042,0 m -51.042,0 0,57 18.782,0 m -43.653,-115 0,58 -50.158,0 m 50.158,0 0,57 -19.136,0"
@ -983,6 +1014,7 @@
x="488.38348"
id="tspan3922"
sodipodi:role="line">0</tspan></text>
<text
transform="matrix(0.866025,-0.5,0.5,0.866025,0,0)"
xml:space="preserve"
@ -997,6 +1029,7 @@
x="-13.265571"
y="377.83694"
style="font-size:80.433212px">33</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -1011,6 +1044,7 @@
x="-503.69513"
id="tspan3930"
sodipodi:role="line">30</tspan></text>
<text
transform="matrix(0,-1,1,0,0,0)"
xml:space="preserve"
@ -1025,6 +1059,7 @@
x="-868.71942"
y="-71.969933"
style="font-size:80.433212px">27</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -1039,6 +1074,7 @@
x="-1019.1653"
id="tspan3938"
sodipodi:role="line">24</tspan></text>
<text
transform="matrix(-0.866026,-0.5,0.5,-0.866026,0,0)"
xml:space="preserve"
@ -1053,6 +1089,7 @@
x="-904.95624"
y="-1033.6982"
style="font-size:80.433212px">21</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -1067,6 +1104,7 @@
x="-557.84332"
id="tspan3946"
sodipodi:role="line">18</tspan></text>
<text
transform="matrix(-0.866025,0.5,-0.5,-0.866025,0,0)"
xml:space="preserve"
@ -1081,6 +1119,7 @@
x="-71.888855"
y="-1543.4183"
style="font-size:80.433212px">15</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -1095,6 +1134,7 @@
x="409.84222"
id="tspan3954"
sodipodi:role="line">12</tspan></text>
<text
transform="matrix(0,1,-1,0,0,0)"
xml:space="preserve"
@ -1109,6 +1149,7 @@
x="801.43085"
y="-1088.3844"
style="font-size:80.433212px">9</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -1123,6 +1164,7 @@
x="941.70276"
id="tspan3962"
sodipodi:role="line">6</tspan></text>
<text
transform="matrix(0.866026,0.5,-0.5,0.866026,0,0)"
xml:space="preserve"
@ -1137,6 +1179,7 @@
x="831.16284"
y="-130.83325"
style="font-size:80.433212px">3</tspan></text>
<path
inkscape:connector-curvature="0"
style="fill:#ededed;fill-opacity:1;fill-rule:nonzero;stroke:#ededed;stroke-width:10.054152;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
@ -1206,6 +1249,7 @@
id="tspan4007"
sodipodi:role="line"
style="font-size:24px">CRS</tspan></text>
<text
xml:space="preserve"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ededed;fill-opacity:1;stroke:none;display:inline;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
@ -1219,6 +1263,7 @@
id="tspan4011"
x="854.72168"
y="124.87983">DME</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -1231,6 +1276,7 @@
x="913.95801"
id="tspan4046"
sodipodi:role="line">999</tspan></text>
<text
xml:space="preserve"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ededed;fill-opacity:1;stroke:none;display:inline;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
@ -1243,6 +1289,7 @@
id="tspan4071"
x="913.95801"
y="126.12444">99.9</tspan></text>
<g
id="gsGroup"
transform="matrix(0,-1,1,0,746.592,1646.26)"
@ -1254,10 +1301,10 @@
sodipodi:cy="643.93"
sodipodi:rx="6.71751"
sodipodi:ry="6.71751"
d="m 386.788,643.93 c 0,3.71 -3.008,6.718 -6.718,6.718 -3.71,0 -6.718,-3.008 -6.718,-6.718 0,-3.71 3.008,-6.718 6.718,-6.718 3.71,0 6.718,3.008 6.718,6.718 z"
d="m 386.788,643.93 a 6.71751,6.71751 0 1 1 -13.436,0 6.71751,6.71751 0 1 1 13.436,0 z"
transform="matrix(0.968853,0.690717,-0.690717,0.968853,1048.27,-640.211)" /><path
transform="matrix(0.968853,0.690717,-0.690717,0.968853,1123.83,-640.211)"
d="m 386.788,643.93 c 0,3.71 -3.008,6.718 -6.718,6.718 -3.71,0 -6.718,-3.008 -6.718,-6.718 0,-3.71 3.008,-6.718 6.718,-6.718 3.71,0 6.718,3.008 6.718,6.718 z"
d="m 386.788,643.93 a 6.71751,6.71751 0 1 1 -13.436,0 6.71751,6.71751 0 1 1 13.436,0 z"
sodipodi:ry="6.71751"
sodipodi:rx="6.71751"
sodipodi:cy="643.93"
@ -1272,10 +1319,10 @@
sodipodi:cy="643.93"
sodipodi:rx="6.71751"
sodipodi:ry="6.71751"
d="m 386.788,643.93 c 0,3.71 -3.008,6.718 -6.718,6.718 -3.71,0 -6.718,-3.008 -6.718,-6.718 0,-3.71 3.008,-6.718 6.718,-6.718 3.71,0 6.718,3.008 6.718,6.718 z"
d="m 386.788,643.93 a 6.71751,6.71751 0 1 1 -13.436,0 6.71751,6.71751 0 1 1 13.436,0 z"
transform="matrix(0.968853,0.690717,-0.690717,0.968853,1274.73,-640.211)" /><path
transform="matrix(0.968853,0.690717,-0.690717,0.968853,1350.58,-640.21)"
d="m 386.788,643.93 c 0,3.71 -3.008,6.718 -6.718,6.718 -3.71,0 -6.718,-3.008 -6.718,-6.718 0,-3.71 3.008,-6.718 6.718,-6.718 3.71,0 6.718,3.008 6.718,6.718 z"
d="m 386.788,643.93 a 6.71751,6.71751 0 1 1 -13.436,0 6.71751,6.71751 0 1 1 13.436,0 z"
sodipodi:ry="6.71751"
sodipodi:rx="6.71751"
sodipodi:cy="643.93"
@ -1288,7 +1335,7 @@
id="path4166"
inkscape:connector-curvature="0"
transform="matrix(0,1,-1,0,1646.26,-746.592)" /><path
style="fill:#ff00ff;stroke:#ff00ff;display:inline;stroke-opacity:1;stroke-width:2;stroke-miterlimit:4;stroke-dasharray:none"
style="fill:#ff00ff;stroke:#ff00ff;stroke-width:2;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
d="m 1125.26,226.404 10,20 -10,20.007 -10,-20.007 z"
id="gsDiamond"
inkscape:connector-curvature="0"
@ -1334,7 +1381,260 @@
inkscape:connector-curvature="0"
id="staToL2"
d="m 512.25,316.675 -0.5,70.364 m 20.25,-7.217 -20.25,-0.283 -19.75,0 m 32.774,-51.106 -12.524,-11.758 -12.524,11.323"
style="fill:none;stroke:#00ff00;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /></g></g><g
style="fill:none;stroke:#00ff00;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" /></g><g
id="trkInd2"
inkscape:label="#g3331"
inkscape:transform-center-y="0.6935"><path
inkscape:label="#path3998"
sodipodi:nodetypes="cccccccc"
inkscape:connector-curvature="0"
d="m 497,824.388 30,0 M 512.176,909.33 511.823,764.837 M 497,295.193 l 30,0 m -14.824,-84.942 -0.353,144.493"
style="fill:#ff0000;fill-opacity:1;stroke:#ededed;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
id="path3998" /><path
inkscape:transform-center-y="19.8725"
inkscape:label="#path3888-1"
style="fill:none;stroke:#00ff00;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
d="m 350.959,598.552 c 0,0 72.1,-39.455 161.041,-39.455 88.942,0 161.041,39.455 161.041,39.455 l 0,0"
id="altArcCtr"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cscc" /></g></g><g
inkscape:groupmode="layer"
id="layer4"
inkscape:label="MAP_CTR"
style="display:inline"><g
transform="matrix(0.497307,0,0,0.497307,257.283,150.704)"
inkscape:transform-center-y="1.48975"
inkscape:transform-center-x="0.028335"
inkscape:label="#g3124"
id="compassMapCtr"
style="display:inline"><text
xml:space="preserve"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ededed;fill-opacity:1;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
x="488.38348"
y="227.44069"
id="text3342"
sodipodi:linespacing="125%"
inkscape:label="#text7243"><tspan
sodipodi:role="line"
id="tspan3344"
x="488.38348"
y="227.44069"
style="font-size:80.433212px">0</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
id="text3346"
y="377.83694"
x="-13.265571"
style="font-size:35.999931px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ededed;fill-opacity:1;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
xml:space="preserve"
transform="matrix(0.866025,-0.5,0.5,0.866025,0,0)"><tspan
style="font-size:80.433212px"
y="377.83694"
x="-13.265571"
id="tspan3348"
sodipodi:role="line">33</tspan></text>
<text
transform="matrix(0.5,-0.866026,0.866026,0.5,0,0)"
xml:space="preserve"
style="font-size:36.000031px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ededed;fill-opacity:1;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
x="-503.69513"
y="265.32059"
id="text3350"
sodipodi:linespacing="125%"
inkscape:label="#text7243"><tspan
sodipodi:role="line"
id="tspan3352"
x="-503.69513"
y="265.32059"
style="font-size:80.433212px">30</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
id="text3354"
y="-71.969933"
x="-868.71942"
style="font-size:36.000011px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ededed;fill-opacity:1;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
xml:space="preserve"
transform="matrix(0,-1,1,0,0,0)"><tspan
style="font-size:80.433212px"
y="-71.969933"
x="-868.71942"
id="tspan3356"
sodipodi:role="line">27</tspan></text>
<text
transform="matrix(-0.5,-0.866025,0.866025,-0.5,0,0)"
xml:space="preserve"
style="font-size:35.999966px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ededed;fill-opacity:1;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
x="-1019.1653"
y="-541.37213"
id="text3358"
sodipodi:linespacing="125%"
inkscape:label="#text7243"><tspan
sodipodi:role="line"
id="tspan3360"
x="-1019.1653"
y="-541.37213"
style="font-size:80.433212px">24</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
id="text3362"
y="-1033.6982"
x="-904.95624"
style="font-size:36.000065px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ededed;fill-opacity:1;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
xml:space="preserve"
transform="matrix(-0.866026,-0.5,0.5,-0.866026,0,0)"><tspan
style="font-size:80.433212px"
y="-1033.6982"
x="-904.95624"
id="tspan3364"
sodipodi:role="line">21</tspan></text>
<text
transform="scale(-1,-1)"
xml:space="preserve"
style="font-size:36.000027px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ededed;fill-opacity:1;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
x="-557.84332"
y="-1392.2814"
id="text3366"
sodipodi:linespacing="125%"
inkscape:label="#text7243"><tspan
sodipodi:role="line"
id="tspan3368"
x="-557.84332"
y="-1392.2814"
style="font-size:80.433212px">18</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
id="text3370"
y="-1543.4183"
x="-71.888855"
style="font-size:35.999992px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ededed;fill-opacity:1;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
xml:space="preserve"
transform="matrix(-0.866025,0.5,-0.5,-0.866025,0,0)"><tspan
style="font-size:80.433212px"
y="-1543.4183"
x="-71.888855"
id="tspan3372"
sodipodi:role="line">15</tspan></text>
<text
transform="matrix(-0.5,0.866026,-0.866026,-0.5,0,0)"
xml:space="preserve"
style="font-size:36.000061px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ededed;fill-opacity:1;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
x="409.84222"
y="-1431.3702"
id="text3374"
sodipodi:linespacing="125%"
inkscape:label="#text7243"><tspan
sodipodi:role="line"
id="tspan3376"
x="409.84222"
y="-1431.3702"
style="font-size:80.433212px">12</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
id="text3378"
y="-1088.3844"
x="801.43085"
style="font-size:36.000042px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ededed;fill-opacity:1;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
xml:space="preserve"
transform="matrix(0,1,-1,0,0,0)"><tspan
style="font-size:80.433212px"
y="-1088.3844"
x="801.43085"
id="tspan3380"
sodipodi:role="line">9</tspan></text>
<text
transform="matrix(0.5,0.866025,-0.866025,0.5,0,0)"
xml:space="preserve"
style="font-size:36.000008px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ededed;fill-opacity:1;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
x="941.70276"
y="-611.09729"
id="text3382"
sodipodi:linespacing="125%"
inkscape:label="#text7243"><tspan
sodipodi:role="line"
id="tspan3384"
x="941.70276"
y="-611.09729"
style="font-size:80.433212px">6</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
id="text3386"
y="-130.83325"
x="831.16284"
style="font-size:36.000114px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ededed;fill-opacity:1;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
xml:space="preserve"
transform="matrix(0.866026,0.5,-0.5,0.866026,0,0)"><tspan
style="font-size:80.433212px"
y="-130.83325"
x="831.16284"
id="tspan3388"
sodipodi:role="line">3</tspan></text>
<path
sodipodi:nodetypes="cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccscccscccscccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccscccccc"
id="path3390"
d="m 512.162,122.464 -0.03,43.913 c 0.02,0 0.04,0 0.06,0 z m -121.834,10.683 7.445,42.355 c 0.02,0 0.04,-0.03 0.06,-0.03 l -7.506,-42.324 z m 243.668,0 -7.817,44.037 c 0.03,0 0.06,0 0.09,0 l 7.724,-44.037 z m -361.763,31.641 14.42,39.771 c 0.03,-0.01 0.06,-0.02 0.09,-0.03 z m 479.859,0 -15.666,42.948 c 0.02,0 0.04,0.02 0.06,0.03 l 15.603,-42.978 z m -590.7,51.668 20.93,36.345 c 0.02,-0.01 0.04,-0.02 0.06,-0.03 l -20.993,-36.313 z m 701.536,0 -23.41,40.703 m -778.2827,29.434 26.846,32.078 c 0.02,-0.02 0.04,-0.04 0.06,-0.06 l -26.908,-32.015 z m 901.8497,0 -31.044,36.935 m -957.2909,49.55 32.01553,26.908 c 0.0199,-0.02 0.0398,-0.04 0.0598,-0.06 L -25.2519,373.078 z m 1036.9299,31.77 c 0,0.02 0,0.05 0,0.06 l 37.87,-31.83 c -12.51,10.544 -25.26,21.2 -37.87,31.77 z m -1107.065,68.391 36.3128,20.992 c 0.01,-0.02 0.02,-0.04 0.03,-0.06 l -36.3447,-20.929 z m 1215.085,0 -43.8,25.258 c 0,0.02 0,0.04 0,0.06 l 43.77,-25.321 z m -1266.752,110.841 39.739,14.512 c 0.01,-0.03 0.02,-0.06 0.03,-0.09 l -39.771,-14.42 z m 1318.422,0 -48.55,17.628 c 0,0.03 0,0.06 0,0.09 l 48.52,-17.72 z m -1350.064,118.096 42.325,7.506 c 0,-0.02 0.03,-0.04 0.03,-0.06 l -42.356,-7.444 z m 1381.704,0 -51.94,9.125 c 0,0.03 0,0.06 0,0.09 l 51.94,-9.219 z m -43.15,121.773 c 0,0.04 0,0.08 0,0.123 l 53.84,-0.06 -53.84,-0.06 z m -1305.324,0.03 -43.912,0.03 43.912,0.03 c 0,-0.02 0,-0.04 0,-0.06 z M 1149.36,936.341 c 0,0.03 0,0.06 0,0.09 l 53.65,9.407 -53.65,-9.5 z m -1284.017,1.683 -44.037,7.817 44.037,-7.723 c 0,-0.03 0,-0.06 0,-0.09 z m 1254.357,107.046 0,0.1 51.7,18.77 -51.67,-18.87 z m -1223.804,3.21 -42.948,15.66 42.978,-15.6 c 0,0 -0.02,0 -0.03,-0.1 z m 1175.754,98.68 -0.1,0.1 48.12,27.72 -48.05,-27.82 z m -1126.393,4.3 -40.642,23.52 40.6729,-23.46 c -0.01,0 -0.02,0 -0.03,-0.1 z m 1061.593,87.76 c 0,0 0,0 -0.1,0.1 l 42.79,35.85 -42.73,-35.91 z m -995.1642,4.86 -36.9357,31.05 36.9984,-30.98 c -0.02,0 -0.04,-0.1 -0.06,-0.1 z m 915.5522,74.74 c 0,0 0,0 -0.1,0.1 l 35.917,42.72 -35.847,-42.79 z m -834.2365,4.89 -31.7662,37.9 31.829,-37.87 c -0.02,0 -0.05,0 -0.06,0 z m 742.2105,59.92 -0.1,0.1 27.816,48.04 -27.726,-48.11 z m -648.561,4.31 -25.259,43.8 25.322,-43.77 c -0.02,0 -0.04,0 -0.06,0 z m 546.661,43.77 c -0.03,0 -0.06,0 -0.09,0 l 18.874,51.68 -18.78,-51.71 z m -443.452,3.15 -17.627,48.56 17.721,-48.53 c -0.03,0 -0.06,0 -0.09,0 z m 334.729,26.54 c -0.03,0 -0.06,0 -0.09,0 l 9.499,53.63 -9.407,-53.66 z m -225.135,1.71 -9.126,51.95 9.22,-51.95 c -0.03,0 -0.06,0 -0.09,0 z m 112.646,8.78 0.06,53.85 0.06,-53.85 c -0.04,0 -0.08,0 -0.124,0 z"
style="fill:#ededed;fill-opacity:1;fill-rule:nonzero;stroke:#ededed;stroke-width:10.054152;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
inkscape:connector-curvature="0" /></g><g
style="display:inline"
inkscape:transform-center-y="0.6935"
inkscape:label="#g3331"
id="trkIndMapCtr"><path
id="path3432"
style="fill:#ff0000;fill-opacity:1;stroke:#ededed;stroke-width:5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;display:inline"
d="m 497,733.525 30,0 M 512.176,909.33 511.823,704.026 M 497,386.056 l 30,0 m -14.824,-175.805 -0.353,205.304"
inkscape:connector-curvature="0"
sodipodi:nodetypes="cccccccc"
inkscape:label="#path3998" /><text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
id="rangeCtr2"
y="395.90225"
x="492.84521"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ededed;fill-opacity:1;stroke:none;display:inline;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
xml:space="preserve"><tspan
y="395.90225"
x="492.84521"
id="tspan3436"
sodipodi:role="line"
style="text-align:end;text-anchor:end">99</tspan></text>
<text
xml:space="preserve"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ededed;fill-opacity:1;stroke:none;display:inline;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
x="492.84521"
y="743.96869"
id="rangeCtr1"
sodipodi:linespacing="125%"
inkscape:label="#text7243"><tspan
style="text-align:end;text-anchor:end"
sodipodi:role="line"
id="tspan3440"
x="492.84521"
y="743.96869">99</tspan></text>
<path
sodipodi:nodetypes="cscc"
inkscape:connector-curvature="0"
id="path3442"
d="m 350.959,598.552 c 0,0 72.1,-39.455 161.041,-39.455 88.942,0 161.041,39.455 161.041,39.455 l 0,0"
style="fill:none;stroke:#00ff00;stroke-width:3;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;display:inline"
inkscape:label="#path3888-1"
inkscape:transform-center-y="19.8725" /></g></g><g
inkscape:groupmode="layer"
id="layer2"
inkscape:label="PLAN"
@ -1363,6 +1663,7 @@
x="489.24902"
id="tspan3178"
sodipodi:role="line">N</tspan></text>
<path
inkscape:label="#path3017"
sodipodi:nodetypes="cccccc"
@ -1381,6 +1682,7 @@
x="33.519165"
y="530.25165"
style="font-size:32px">W</tspan></text>
<text
sodipodi:linespacing="125%"
id="text3209"
@ -1393,6 +1695,7 @@
x="962.65656"
id="tspan3211"
sodipodi:role="line">E</tspan></text>
<text
xml:space="preserve"
style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:start;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;fill-opacity:1;stroke:none;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
@ -1405,6 +1708,7 @@
x="503.03763"
y="1008.2553"
style="font-size:32px">S</tspan></text>
</g><text
xml:space="preserve"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ededed;fill-opacity:1;stroke:none;display:inline;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
@ -1418,6 +1722,7 @@
id="tspan5002-7"
x="511.74799"
y="320.56113">99</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -1431,6 +1736,7 @@
id="tspan3201"
sodipodi:role="line"
style="text-align:center;text-anchor:middle">99</tspan></text>
<text
xml:space="preserve"
style="font-size:36px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:middle;fill:#ededed;fill-opacity:1;stroke:none;display:inline;font-family:Liberation Sans;-inkscape-font-specification:Liberation Sans"
@ -1444,6 +1750,7 @@
id="tspan3205"
x="512.21063"
y="752.73596">99</tspan></text>
<text
inkscape:label="#text7243"
sodipodi:linespacing="125%"
@ -1457,4 +1764,5 @@
id="tspan3209"
sodipodi:role="line"
style="text-align:center;text-anchor:middle">99</tspan></text>
</g></svg>

Before

Width:  |  Height:  |  Size: 103 KiB

After

Width:  |  Height:  |  Size: 110 KiB

View file

@ -38,7 +38,8 @@ var drawVOR = func(group) {
.lineTo(-7.5,-12.5)
.close()
.setStrokeLineWidth(line_width)
.setColor(color);
.setColor(color)
.set("z-index",-2);
};
var cache = StyleableCacheable.new(
@ -87,7 +88,8 @@ var draw = func {
.arcSmallCW(radius,radius,0,-2*radius,0)
.setStrokeLineWidth(me.style.range_line_width)
.setStrokeDashArray(me.style.range_dash_array)
.setColor(me.style.active_color);
.setColor(me.style.active_color)
.set("z-index",-2);
var course = me.map.controller.get_tuned_course(me.model.frequency/100);
me.radial_vor = me.element.createChild("path")
@ -96,7 +98,8 @@ var draw = func {
.setStrokeLineWidth(me.style.radial_line_width)
.setStrokeDashArray(me.style.radial_dash_array)
.setColor(me.style.active_color)
.setRotation(course*D2R);
.setRotation(course*D2R)
.set("z-index",-2);
}
me.range_vor.show();
me.radial_vor.show();

View file

@ -31,10 +31,13 @@ var init = func {
.lineTo(5,-5)
.setColor(1,1,1)
.close()
.setScale(me.style.scale_factor);
.setScale(me.style.scale_factor)
.set("z-index",2);
me.newText(me.model.name, me.style.font_color).setTranslation(25,35)
.setScale(me.style.scale_factor);
me.text = me.newText(me.model.name, me.style.font_color)
.setTranslation(25,35)
.setScale(me.style.scale_factor)
.set("z-index",2);
me.draw();
};
@ -46,6 +49,11 @@ var draw = func {
me.style.active_color :
me.style.inactive_color
);
me.text.setColor(
active ?
me.style.active_color :
me.style.inactive_color
);
me.active = active;
}
};

View file

@ -15,7 +15,8 @@ var draw = func {
.setFile("Nasal/canvas/map/Images/storm.png")
.setSize(128*me.model.radiusNm,128*me.model.radiusNm)
.setTranslation(-64*me.model.radiusNm,-64*me.model.radiusNm)
.setCenter(0,0);
.setCenter(0,0)
.set("z-index",-4);
# .setScale(0.3);
# TODO: overlapping storms should probably set their z-index according to altitudes

View file

@ -27,7 +27,7 @@ var draw_apt = func (group, apt, controller=nil, lod=0) {
.setColor(0,0.6,0.85)
.setFontSize(28);
apt_grp.setGeoPosition(lat, lon)
.set("z-index",1); # FIXME: this needs to be configurable!!
.set("z-index",-1); # FIXME: this needs to be configurable!!
#}
# draw routines should always return their canvas group to the caller for further processing

View file

@ -26,7 +26,7 @@ var drawprofile = func (group, property, disptext)
.setTranslation(25,35)
.setColor(0.195,0.96,0.097);
sym_group.setGeoPosition(lat, lon)
.set("z-index",4);
.set("z-index",3);
}
}

View file

@ -29,6 +29,6 @@ var draw_fix = func (group, fix, controller=nil, lod=0) {
# the fix position
fix_grp.setGeoPosition(lat, lon)
.set("z-index",3);
.set("z-index",-3);
}

View file

@ -31,24 +31,16 @@ NDSourceDriver.new = func {
m.get_trk_mag= func
{
if(getprop("/velocities/groundspeed-kt") > 80)
{
getprop("/orientation/track-magnetic-deg");
}
else
{
getprop("/orientation/heading-magnetic-deg");
}
};
m.get_trk_tru = func
{
if(getprop("/velocities/groundspeed-kt") > 80)
{
getprop("/orientation/track-deg");
}
else
{
getprop("/orientation/heading-deg");
}
};
m.get_lat= func getprop("/position/latitude-deg");
m.get_lon= func getprop("/position/longitude-deg");
@ -242,16 +234,14 @@ var NavDisplay = {
# because things are much better configurable that way
# now look up all required SVG elements and initialize member fields using the same name to have a convenient handle
foreach(var element; ["dmeLDist","dmeRDist","dmeL","dmeR","vorL","vorR","vorLId","vorRId",
"range","status.wxr","status.wpt","status.sta","status.arpt"])
"status.wxr","status.wpt","status.sta","status.arpt"])
me.symbols[element] = me.nd.getElementById(element);
# load elements from vector image, and create instance variables using identical names, and call updateCenter() on each
# anything that needs updatecenter called, should be added to the vector here
#
foreach(var element; ["compassApp","northUp","aplSymMap","aplSymMapCtr","aplSymVor",
"staArrowL2","staArrowR2","staFromL2","staToL2","staFromR2","staToR2",
"hdgTrk","truMag","altArc","planArcs",
"trkInd","compass","hdgBug","HdgBugCRT","TrkBugLCD","HdgBugLCD","curHdgPtr",
foreach(var element; ["staArrowL2","staArrowR2","staFromL2","staToL2","staFromR2","staToR2",
"hdgTrk","trkInd","hdgBug","HdgBugCRT","TrkBugLCD","HdgBugLCD","curHdgPtr",
"HdgBugCRT2","TrkBugLCD2","HdgBugLCD2","hdgBug2","selHdgLine","selHdgLine2","curHdgPtr2",
"staArrowL","staArrowR","staToL","staFromL","staToR","staFromR"] )
me.symbols[element] = me.nd.getElementById(element).updateCenter();
@ -417,13 +407,15 @@ var NavDisplay = {
var userTrkTru = me.aircraft_source.get_trk_tru();
if(me.get_switch('toggle_true_north')) {
me.symbols.truMag.setText("TRU");
var userHdg=userHdgTru;
me.userHdg=userHdgTru;
var userTrk=userTrkTru;
me.userTrk=userTrkTru;
} else {
me.symbols.truMag.setText("MAG");
var userHdg=userHdgMag;
me.userHdg=userHdgMag;
var userTrk=userTrkMag;
me.userTrk=userTrkMag;
}
# this should only ever happen when testing the experimental AI/MP ND driver hash (not critical)
# or when an error occurs (critical)
@ -431,17 +423,21 @@ var NavDisplay = {
print("aircraft source invalid, returning !");
return;
}
if (me.aircraft_source.get_gnd_spd() < 80)
if (me.aircraft_source.get_gnd_spd() < 80) {
userTrk = userHdg;
me.userTrk=userHdg;
}
if((me.in_mode('toggle_display_mode', ['MAP']) and me.get_switch('toggle_display_type') == "CRT")
or (me.get_switch('toggle_track_heading') and me.get_switch('toggle_display_type') == "LCD"))
{
userHdgTrk = userTrk;
me.userHdgTrk = userTrk;
userHdgTrkTru = userTrkTru;
me.symbols.hdgTrk.setText("TRK");
} else {
userHdgTrk = userHdg;
me.userHdgTrk = userHdg;
userHdgTrkTru = userHdgTru;
me.symbols.hdgTrk.setText("HDG");
}
@ -562,8 +558,6 @@ var NavDisplay = {
me.symbols.dmeRDist.setText("");
}
me.symbols.range.setText(sprintf("%3.0f",me.rangeNm()/2));
# Hide heading bug 10 secs after change
var vhdg_bug = getprop("autopilot/settings/heading-bug-deg") or 0;
var hdg_bug_active = getprop("autopilot/settings/heading-bug-active");
@ -574,14 +568,12 @@ var NavDisplay = {
or (me.get_switch('toggle_track_heading') and me.get_switch('toggle_display_type') == "LCD"))
{
me.symbols.trkInd.setRotation(0);
me.symbols.trkInd2.setRotation(0);
me.symbols.curHdgPtr.setRotation((userHdg-userTrk)*D2R);
me.symbols.curHdgPtr2.setRotation((userHdg-userTrk)*D2R);
}
else
{
me.symbols.trkInd.setRotation((userTrk-userHdg)*D2R);
me.symbols.trkInd2.setRotation((userTrk-userHdg)*D2R);
me.symbols.curHdgPtr.setRotation(0);
me.symbols.curHdgPtr2.setRotation(0);
}
@ -592,22 +584,6 @@ var NavDisplay = {
me.symbols.hdgBug.setRotation(hdgBugRot);
me.symbols.hdgBug2.setRotation(hdgBugRot);
me.symbols.selHdgLine2.setRotation(hdgBugRot);
me.symbols.compass.setRotation(-userHdgTrk*D2R);
me.symbols.compassApp.setRotation(-userHdgTrk*D2R);
}
if(me.get_switch('toggle_centered')) {
if (me.in_mode('toggle_display_mode', ['APP','VOR']))
me.symbols.compassApp.show();
else
me.symbols.compassApp.setVisible(me.in_mode('toggle_display_mode', ['MAP']));
} else {
me.symbols.compassApp.hide();
}
if ((me.get_switch('toggle_centered') and !me.in_mode('toggle_display_mode', ['PLAN'])) or me.in_mode('toggle_display_mode', ['PLAN'])) {
me.symbols.compass.hide();
} else {
me.symbols.compass.show();
}
var staPtrVis = !me.in_mode('toggle_display_mode', ['PLAN']);
@ -622,14 +598,12 @@ var NavDisplay = {
var vorheading = userHdgTru;
var adfheading = userHdgMag;
}
if(me.in_mode('toggle_display_mode', ['APP','MAP','VOR','PLAN']))
{
if(getprop("instrumentation/nav/heading-deg") != nil)
var nav0hdg=getprop("instrumentation/nav/heading-deg") - vorheading;
if(getprop("instrumentation/nav[1]/heading-deg") != nil)
var nav1hdg=getprop("instrumentation/nav[1]/heading-deg") - vorheading;
var adf0hdg=getprop("instrumentation/adf/indicated-bearing-deg") - adfheading;
var adf1hdg=getprop("instrumentation/adf[1]/indicated-bearing-deg") - adfheading;
var adf0hdg=getprop("instrumentation/adf/indicated-bearing-deg");
var adf1hdg=getprop("instrumentation/adf[1]/indicated-bearing-deg");
if(!me.get_switch('toggle_centered'))
{
if(me.in_mode('toggle_display_mode', ['PLAN']))
@ -732,30 +706,6 @@ var NavDisplay = {
}
me.symbols.selHdgLine2.setVisible(staPtrVis and hdg_bug_active);
}
}
me.symbols.northUp.setVisible(me.in_mode('toggle_display_mode', ['PLAN']));
me.symbols.aplSymMap.setVisible(me.in_mode('toggle_display_mode', ['APP','MAP','VOR']) and !me.get_switch('toggle_centered'));
me.symbols.aplSymMapCtr.setVisible(me.in_mode('toggle_display_mode', ['MAP']) and me.get_switch('toggle_centered'));
me.symbols.aplSymVor.setVisible(me.in_mode('toggle_display_mode', ['APP','VOR']) and me.get_switch('toggle_centered'));
me.symbols.planArcs.setVisible(me.in_mode('toggle_display_mode', ['PLAN']));
if (abs(userVSpd) > 5) {
var altDiff = (getprop("autopilot/settings/target-altitude-ft") or 0)-(getprop("instrumentation/altimeter/indicated-altitude-ft") or 0);
if (abs(altDiff) > 50 and altDiff/userVSpd > 0) {
var altRangeNm = altDiff/userVSpd*userGndSpd*KT2MPS*M2NM;
if(altRangeNm > 1) {
var altRangePx = (350/me.rangeNm())*altRangeNm;
if (altRangePx > 700)
altRangePx = 700;
me.symbols.altArc.setTranslation(0,-altRangePx);
}
me.symbols.altArc.setVisible(me.in_mode('toggle_display_mode', ['MAP']) and !me.get_switch('toggle_centered'));
} else
me.symbols.altArc.hide();
} else {
me.symbols.altArc.hide();
}
## run all predicates in the NDStyle hash and evaluate their true/false behavior callbacks
## this is in line with the original design, but normally we don't need to getprop/poll here,

View file

@ -319,6 +319,38 @@ var NDStyles = {
is_false: func(nd) nd.symbols.gsGroup.hide(),
},
},
{
id: 'compassApp',
impl: {
init: func(nd,symbol),
predicate: func(nd) (nd.get_switch('toggle_centered') and nd.in_mode('toggle_display_mode', ['APP','VOR'])),
is_true: func(nd) {
if(nd.get_switch('toggle_true_north'))
var hdg = nd.aircraft_source.get_trk_tru();
else
var hdg = nd.aircraft_source.get_trk_mag();
nd.symbols.compassApp.setRotation(-hdg*D2R);
nd.symbols.compassApp.show();
},
is_false: func(nd) nd.symbols.compassApp.hide(),
},
},
{
id: 'compassMapCtr',
impl: {
init: func(nd,symbol),
predicate: func(nd) (nd.get_switch('toggle_centered') and nd.in_mode('toggle_display_mode', ['MAP'])),
is_true: func(nd) {
if(nd.get_switch('toggle_true_north'))
var hdg = nd.aircraft_source.get_trk_tru();
else
var hdg = nd.aircraft_source.get_trk_mag();
nd.symbols.compassMapCtr.setRotation(-hdg*D2R);
nd.symbols.compassMapCtr.show();
},
is_false: func(nd) nd.symbols.compassMapCtr.hide(),
},
},
{
id:'hdg',
impl: {
@ -373,6 +405,72 @@ var NDStyles = {
is_false: func(nd) nd.symbols.gs.setFontSize(52),
},
},
{
id:'compass',
impl: {
init: func(nd,symbol),
predicate: func(nd) ((nd.get_switch('toggle_centered') and !nd.in_mode('toggle_display_mode', ['PLAN'])) or nd.in_mode('toggle_display_mode', ['PLAN'])),
is_true: func(nd) nd.symbols.compass.hide(),
is_false: func(nd) {
nd.symbols.compass.show();
nd.symbols.compass.setRotation(-nd.userHdgTrk*D2R);
},
},
},
{
id:'truMag',
impl: {
init: func(nd,symbol),
predicate: func(nd) nd.get_switch('toggle_true_north'),
is_true: func(nd) nd.symbols.truMag.setText("TRU"),
is_false: func(nd) nd.symbols.truMag.setText("MAG"),
},
},
{
id:'northUp',
impl: {
init: func(nd,symbol),
predicate: func(nd) nd.in_mode('toggle_display_mode', ['PLAN']),
is_true: func(nd) nd.symbols.northUp.show(),
is_false: func(nd) nd.symbols.northUp.hide(),
},
},
{
id:'planArcs',
impl: {
init: func(nd,symbol),
predicate: func(nd) nd.in_mode('toggle_display_mode', ['PLAN']),
is_true: func(nd) nd.symbols.planArcs.show(),
is_false: func(nd) nd.symbols.planArcs.hide(),
},
},
{
id:'aplSymMap',
impl: {
init: func(nd,symbol),
predicate: func(nd) (nd.in_mode('toggle_display_mode', ['APP','MAP','VOR']) and !nd.get_switch('toggle_centered')),
is_true: func(nd) nd.symbols.aplSymMap.show(),
is_false: func(nd) nd.symbols.aplSymMap.hide(),
},
},
{
id:'aplSymMapCtr',
impl: {
init: func(nd,symbol),
predicate: func(nd) (nd.in_mode('toggle_display_mode', ['MAP']) and nd.get_switch('toggle_centered')),
is_true: func(nd) nd.symbols.aplSymMapCtr.show(),
is_false: func(nd) nd.symbols.aplSymMapCtr.hide(),
},
},
{
id:'aplSymVor',
impl: {
init: func(nd,symbol),
predicate: func(nd) (nd.in_mode('toggle_display_mode', ['APP','VOR']) and nd.get_switch('toggle_centered')),
is_true: func(nd) nd.symbols.aplSymVor.show(),
is_false: func(nd) nd.symbols.aplSymVor.hide(),
},
},
{
id:'rangeArcs',
impl: {
@ -380,8 +478,8 @@ var NDStyles = {
predicate: func(nd) !nd.get_switch('toggle_centered') and nd.get_switch('toggle_rangearc'),
is_true: func(nd) nd.symbols.rangeArcs.show(),
is_false: func(nd) nd.symbols.rangeArcs.hide(),
}, # of rangeArcs.impl
}, # of rangeArcs
},
},
{
id:'rangePln1',
impl: {
@ -430,6 +528,85 @@ var NDStyles = {
is_false: func(nd) nd.symbols.rangePln4.hide(),
},
},
{
id:'range',
impl: {
init: func(nd,symbol),
predicate: func(nd) !nd.get_switch('toggle_centered'),
is_true: func(nd) {
nd.symbols.range.setText(sprintf("%3.0f",nd.rangeNm()/2));
},
is_false: func(nd) nd.symbols.rangePln4.hide(),
},
},
{
id:'rangeCtr1',
impl: {
init: func(nd,symbol),
predicate: func(nd) (nd.get_switch('toggle_centered') and nd.in_mode('toggle_display_mode', ['APP','MAP','VOR'])),
is_true: func(nd) {
nd.symbols.rangeCtr1.show();
nd.symbols.rangeCtr1.setText(sprintf("%3.1f",nd.rangeNm()/4));
},
is_false: func(nd) nd.symbols.rangeCtr1.hide(),
},
},
{
id:'rangeCtr2',
impl: {
init: func(nd,symbol),
predicate: func(nd) (nd.get_switch('toggle_centered') and nd.in_mode('toggle_display_mode', ['APP','MAP','VOR'])),
is_true: func(nd) {
nd.symbols.rangeCtr2.show();
nd.symbols.rangeCtr2.setText(sprintf("%3.1f",nd.rangeNm()/4));
},
is_false: func(nd) nd.symbols.rangeCtr2.hide(),
},
},
{
id:'altArc',
impl: {
init: func(nd,symbol),
predicate: func(nd) (!nd.get_switch('toggle_centered') and nd.in_mode('toggle_display_mode', ['MAP'])),
is_true: func(nd) {
var altDiff = (getprop("autopilot/settings/target-altitude-ft") or 0)-(getprop("instrumentation/altimeter/indicated-altitude-ft") or 0);
if (abs(altDiff) > 50 and altDiff/nd.aircraft_source.get_vspd() > 0) {
var altRangeNm = altDiff/nd.aircraft_source.get_vspd()*nd.aircraft_source.get_gnd_spd()*KT2MPS*M2NM;
if(altRangeNm > 1) {
var altRangePx = (350/nd.rangeNm())*altRangeNm;
if (altRangePx > 700)
altRangePx = 700;
nd.symbols.altArc.setTranslation(0,-altRangePx);
}
nd.symbols.altArc.show();
} else
nd.symbols.altArc.hide();
},
is_false: func(nd) nd.symbols.altArc.hide(),
},
},
{
id:'altArcCtr',
impl: {
init: func(nd,symbol),
predicate: func(nd) (nd.get_switch('toggle_centered') and nd.in_mode('toggle_display_mode', ['MAP'])),
is_true: func(nd) {
var altDiff = (getprop("autopilot/settings/target-altitude-ft") or 0)-(getprop("instrumentation/altimeter/indicated-altitude-ft") or 0);
if (abs(altDiff) > 50 and altDiff/nd.aircraft_source.get_vspd() > 0) {
var altRangeNm = altDiff/nd.aircraft_source.get_vspd()*nd.aircraft_source.get_gnd_spd()*KT2MPS*M2NM;
if(altRangeNm > 1) {
var altRangePx = (175/nd.rangeNm())*altRangeNm;
if (altRangePx > 350)
altRangePx = 350;
nd.symbols.altArcCtr.setTranslation(0,-altRangePx);
}
nd.symbols.altArcCtr.show();
} else
nd.symbols.altArcCtr.hide();
},
is_false: func(nd) nd.symbols.altArcCtr.hide(),
},
},
{
id:'crsLbl',
impl: {
@ -478,13 +655,32 @@ var NDStyles = {
id:'trkInd2',
impl: {
init: func(nd,symbol),
predicate: func(nd) (nd.in_mode('toggle_display_mode', ['MAP','APP','VOR']) and nd.get_switch('toggle_centered')),
predicate: func(nd) (nd.in_mode('toggle_display_mode', ['APP','VOR']) and nd.get_switch('toggle_centered')),
is_true: func(nd) {
if (nd.get_switch('toggle_track_heading') and nd.get_switch('toggle_display_type') == "LCD")
nd.symbols.trkInd2.setRotation(0);
else
nd.symbols.trkInd2.setRotation((nd.userTrk-nd.userHdg)*D2R);
nd.symbols.trkInd2.show();
},
is_false: func(nd) nd.symbols.trkInd2.hide(),
},
},
{
id:'trkIndMapCtr',
impl: {
init: func(nd,symbol),
predicate: func(nd) (nd.in_mode('toggle_display_mode', ['MAP']) and nd.get_switch('toggle_centered')),
is_true: func(nd) {
if (nd.get_switch('toggle_display_type') == "CRT" or (nd.get_switch('toggle_track_heading') and nd.get_switch('toggle_display_type') == "LCD"))
nd.symbols.trkIndMapCtr.setRotation(0);
else
nd.symbols.trkIndMapCtr.setRotation((nd.userTrk-nd.userHdg)*D2R);
nd.symbols.trkIndMapCtr.show();
},
is_false: func(nd) nd.symbols.trkIndMapCtr.hide(),
},
},
{
id:'vorCrsPtr',
impl: {
@ -572,7 +768,7 @@ var NDStyles = {
id:'wind',
impl: {
init: func(nd,symbol),
predicate: ALWAYS,
predicate: func(nd) (nd.aircraft_source.get_spd() > 100 and getprop("environment/wind-speed-kt") > 6),
is_true: func(nd) {
var windDir = getprop("environment/wind-from-heading-deg");
if(!nd.get_switch('toggle_true_north'))
@ -580,15 +776,16 @@ var NDStyles = {
if(windDir < 0.5) windDir = 360 + windDir;
elsif(windDir >= 360.5) windDir = windDir - 360;
nd.symbols.wind.setText(sprintf("%03.0f / %02.0f",windDir,getprop("environment/wind-speed-kt")));
nd.symbols.wind.show();
},
is_false: NOTHING,
is_false: func(nd) nd.symbols.wind.hide(),
},
},
{
id:'windArrow',
impl: {
init: func(nd,symbol),
predicate: func(nd) (!(nd.in_mode('toggle_display_mode', ['PLAN']) and (nd.get_switch('toggle_display_type') == "LCD")) and nd.aircraft_source.get_spd() > 100),
predicate: func(nd) (!(nd.in_mode('toggle_display_mode', ['PLAN']) and (nd.get_switch('toggle_display_type') == "LCD")) and nd.aircraft_source.get_spd() > 100 and getprop("environment/wind-speed-kt") > 6),
is_true: func(nd) {
nd.symbols.windArrow.show();
var windArrowRot = getprop("environment/wind-from-heading-deg");

View file

@ -0,0 +1,11 @@
From top to bottom:
4 TCAS
3 Altitude profile (T/C, T/D etc.)
2 Waypoint
1 Route
0 Map overlay (range, track)
-1 Airports
-2 Stations
-3 Fixes
-4 Weather radar

View file

@ -28,7 +28,8 @@ var draw_route = func (group, theroute, controller=nil, lod=0)
var route = route_group.createChild("path","route")
.setStrokeLineWidth(5)
.setColor(1,0,1);
.setColor(1,0,1)
.set("z-index",1);
var cmds = [];
var coords = [];

View file

@ -77,7 +77,7 @@ var draw_traffic = func(group, traffic, lod=0)
}
tcas_grp.setGeoPosition(lat, lon)
.set("z-index",1);
.set("z-index",4);
#settimer(func drawtraffic(group), 2); # updates are handled by the model, not by the view!