diff --git a/Aircraft/Instruments-3d/FG1000/MFDPages/NearestFrequencies.svg b/Aircraft/Instruments-3d/FG1000/MFDPages/NearestFrequencies.svg new file mode 100644 index 000000000..94e5fe412 --- /dev/null +++ b/Aircraft/Instruments-3d/FG1000/MFDPages/NearestFrequencies.svg @@ -0,0 +1,730 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="1024px" + height="768px" + viewBox="0 0 1024 768" + version="1.1" + id="SVGRoot" + inkscape:version="0.91 r13725" + sodipodi:docname="NearestFrequencies.svg"> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#ffffff" + borderopacity="0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.8191103" + inkscape:cx="750.12697" + inkscape:cy="356.88191" + inkscape:document-units="px" + inkscape:current-layer="NearestFrequenciesGroup" + showgrid="true" + inkscape:window-width="2495" + inkscape:window-height="1416" + inkscape:window-x="65" + inkscape:window-y="24" + inkscape:window-maximized="1" + inkscape:snap-global="true" + inkscape:snap-grids="true" + inkscape:snap-bbox="true" + inkscape:snap-others="true" + inkscape:snap-to-guides="true" + inkscape:bbox-paths="false" + inkscape:snap-nodes="true" + inkscape:snap-page="true" + inkscape:bbox-nodes="true" + showguides="false"> + <inkscape:grid + type="xygrid" + id="grid4269" /> + </sodipodi:namedview> + <defs + id="defs7962" /> + <metadata + id="metadata7965"> + <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 /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:groupmode="layer" + id="layer3" + inkscape:label="NearestFrequenciesLayer"> + <g + inkscape:label="#g4237" + id="NearestFrequenciesGroup"> + <rect + inkscape:label="#rect8921" + y="53.505371" + x="724.50537" + height="688.98926" + width="309.98926" + id="Background" + style="opacity:1;fill:#1a3030;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.01074231;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="446.43808" + x="730.68347" + height="195.30661" + width="288.63293" + id="rect9743" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1.39907384;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="436.15332" + x="745.3988" + height="20.202429" + width="84.190727" + id="rect9753" + style="opacity:1;fill:#1a3030;fill-opacity:1;fill-rule:nonzero;stroke:#fffcfa;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text9749" + y="437.1423" + x="774.57446" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:14.51583004px;line-height:125%;font-family:'Liberation Sans';-inkscape-font-specification:'Liberation Sans';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#fffcfa;stroke-width:0.967722px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + transform="scale(0.96767669,1.033403)"><tspan + y="437.1423" + x="774.57446" + sodipodi:role="line" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';stroke-width:0.967722px" + id="tspan4958">NEAREST WX</tspan><tspan + y="455.28708" + x="774.57446" + sodipodi:role="line" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';stroke-width:0.967722px" + id="tspan4878" /></text> + <text + sodipodi:linespacing="125%" + id="NearestFrequenciesWXID0" + y="460.33344" + x="763.41437" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="#text4232" + transform="scale(0.96767632,1.0334034)"><tspan + y="460.33344" + x="763.41437" + id="tspan4242" + sodipodi:role="line">KSFO</tspan></text> + <text + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="857.7981" + y="460.33344" + id="NearestFrequenciesWXType0" + sodipodi:linespacing="125%" + transform="scale(0.96767632,1.0334034)"><tspan + sodipodi:role="line" + id="tspan4253" + x="857.7981" + y="460.33344">359</tspan></text> + <text + sodipodi:linespacing="125%" + id="NearestFrequenciesWXFreq0" + y="461.13727" + x="1000.7977" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:20.26409912px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="#text4232" + transform="scale(0.96767632,1.0334034)"><tspan + y="461.13727" + x="1000.7977" + id="tspan4257" + sodipodi:role="line">200nm</tspan></text> + <rect + y="85.447723" + x="730.41907" + height="153.58096" + width="289.10455" + id="rect4331" + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <rect + y="73.5" + x="745.47131" + height="20.52869" + width="104.52869" + id="rect4333" + style="opacity:1;fill:#1a3030;fill-opacity:1;fill-rule:nonzero;stroke:#fffcfa;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <text + sodipodi:linespacing="125%" + id="text4335" + y="86.46434" + x="775.02869" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:14.51583004px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#fffcfa;stroke-width:0.967722px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + transform="scale(0.96767669,1.033403)"><tspan + y="86.46434" + x="775.02869" + id="tspan4337" + sodipodi:role="line" + style="stroke-width:0.967722px">NEAREST ARTCC</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:19.35444069px;line-height:125%;font-family:Sans;-inkscape-font-specification:Sans;text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="753.573" + y="249.65851" + id="text4355" + sodipodi:linespacing="125%" + transform="scale(0.96767669,1.033403)"><tspan + sodipodi:role="line" + id="tspan4357" + x="753.573" + y="249.65851" /></text> + <text + transform="scale(0.96767669,1.033403)" + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="778.9151" + y="172.24083" + id="NearestFrequenciesARTCCFreq0" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4948" + x="778.9151" + y="172.24083">N 56 45.29</tspan></text> + <rect + style="opacity:1;fill:#c0c0c0;fill-opacity:1;fill-rule:nonzero;stroke:#c0c0c0;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="NearestFrequenciesScrollTrough" + width="5" + height="180" + x="1010" + y="451.74469" + inkscape:label="#rect4231" /> + <rect + inkscape:label="#rect4231" + y="451.74469" + x="1010" + height="115" + width="5" + id="NearestFrequenciesScrollThumb" + style="opacity:1;fill:#808080;fill-opacity:1;fill-rule:nonzero;stroke:#808080;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" /> + <flowRoot + xml:space="preserve" + id="flowRoot5077" + style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:20px;line-height:125%;letter-spacing:0px;word-spacing:0px;-inkscape-font-specification:Sans;font-stretch:normal;font-variant:normal;text-anchor:start;text-align:start;writing-mode:lr"><flowRegion + id="flowRegion5079"><rect + id="rect5081" + width="365" + height="275" + x="695" + y="93" /></flowRegion><flowPara + id="flowPara5083" /></flowRoot> <text + transform="scale(0.96767632,1.0334034)" + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="763.41437" + y="481.70447" + id="NearestFrequenciesWXID1" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5087" + x="763.41437" + y="481.70447">KSFO</tspan></text> + <text + transform="scale(0.96767632,1.0334034)" + sodipodi:linespacing="125%" + id="NearestFrequenciesWXType1" + y="481.70447" + x="857.7981" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="#text4232"><tspan + y="481.70447" + x="857.7981" + id="tspan5091" + sodipodi:role="line">359</tspan></text> + <text + transform="scale(0.96767632,1.0334034)" + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:20.26409912px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="1000.7977" + y="482.50833" + id="NearestFrequenciesWXFreq1" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5095" + x="1000.7977" + y="482.50833">200nm</tspan></text> + <text + sodipodi:linespacing="125%" + id="NearestFrequenciesWXID2" + y="503.07553" + x="763.41437" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="#text4232" + transform="scale(0.96767632,1.0334034)"><tspan + y="503.07553" + x="763.41437" + id="tspan5101" + sodipodi:role="line">KSFO</tspan></text> + <text + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="857.7981" + y="503.07553" + id="NearestFrequenciesWXType2" + sodipodi:linespacing="125%" + transform="scale(0.96767632,1.0334034)"><tspan + sodipodi:role="line" + id="tspan5105" + x="857.7981" + y="503.07553">359</tspan></text> + <text + sodipodi:linespacing="125%" + id="NearestFrequenciesWXFreq2" + y="503.8793" + x="1000.7977" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:20.26409912px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="#text4232" + transform="scale(0.96767632,1.0334034)"><tspan + y="503.8793" + x="1000.7977" + id="tspan5109" + sodipodi:role="line">200nm</tspan></text> + <text + transform="scale(0.96767632,1.0334034)" + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="763.41437" + y="524.44653" + id="NearestFrequenciesWXID3" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5115" + x="763.41437" + y="524.44653">KSFO</tspan></text> + <text + transform="scale(0.96767632,1.0334034)" + sodipodi:linespacing="125%" + id="NearestFrequenciesWXType3" + y="524.44653" + x="857.7981" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="#text4232"><tspan + y="524.44653" + x="857.7981" + id="tspan5119" + sodipodi:role="line">359</tspan></text> + <text + transform="scale(0.96767632,1.0334034)" + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:20.26409912px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="1000.7977" + y="525.25037" + id="NearestFrequenciesWXFreq3" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5123" + x="1000.7977" + y="525.25037">200nm</tspan></text> + <text + sodipodi:linespacing="125%" + id="NearestFrequenciesWXID4" + y="545.81763" + x="764.09247" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="#text4232" + transform="scale(0.96767632,1.0334034)"><tspan + y="545.81763" + x="764.09247" + id="tspan5129" + sodipodi:role="line">KSFO</tspan></text> + <text + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="858.4762" + y="545.81763" + id="NearestFrequenciesWXType4" + sodipodi:linespacing="125%" + transform="scale(0.96767632,1.0334034)"><tspan + sodipodi:role="line" + id="tspan5133" + x="858.4762" + y="545.81763">359</tspan></text> + <text + sodipodi:linespacing="125%" + id="NearestFrequenciesWXFreq4" + y="546.62146" + x="1001.4758" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:20.26409912px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="#text4232" + transform="scale(0.96767632,1.0334034)"><tspan + y="546.62146" + x="1001.4758" + id="tspan5137" + sodipodi:role="line">200nm</tspan></text> + <text + transform="scale(0.96767632,1.0334034)" + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="764.09247" + y="567.18866" + id="NearestFrequenciesWXID5" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5143" + x="764.09247" + y="567.18866">KSFO</tspan></text> + <text + transform="scale(0.96767632,1.0334034)" + sodipodi:linespacing="125%" + id="NearestFrequenciesWXType5" + y="567.18866" + x="858.4762" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="#text4232"><tspan + y="567.18866" + x="858.4762" + id="tspan5147" + sodipodi:role="line">359</tspan></text> + <text + transform="scale(0.96767632,1.0334034)" + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:20.26409912px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="1001.4758" + y="567.99249" + id="NearestFrequenciesWXFreq5" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5151" + x="1001.4758" + y="567.99249">200nm</tspan></text> + <text + sodipodi:linespacing="125%" + id="NearestFrequenciesWXID6" + y="588.55969" + x="764.09247" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="#text4232" + transform="scale(0.96767632,1.0334034)"><tspan + y="588.55969" + x="764.09247" + id="tspan5157" + sodipodi:role="line">KSFO</tspan></text> + <text + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="858.4762" + y="588.55969" + id="NearestFrequenciesWXType6" + sodipodi:linespacing="125%" + transform="scale(0.96767632,1.0334034)"><tspan + sodipodi:role="line" + id="tspan5161" + x="858.4762" + y="588.55969">359</tspan></text> + <text + sodipodi:linespacing="125%" + id="NearestFrequenciesWXFreq6" + y="589.36346" + x="1001.4758" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:20.26409912px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="#text4232" + transform="scale(0.96767632,1.0334034)"><tspan + y="589.36346" + x="1001.4758" + id="tspan5165" + sodipodi:role="line">200nm</tspan></text> + <text + transform="scale(0.96767632,1.0334034)" + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="764.09247" + y="609.93073" + id="NearestFrequenciesWXID7" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5171" + x="764.09247" + y="609.93073">KSFO</tspan></text> + <text + transform="scale(0.96767632,1.0334034)" + sodipodi:linespacing="125%" + id="NearestFrequenciesWXType7" + y="609.93073" + x="858.4762" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="#text4232"><tspan + y="609.93073" + x="858.4762" + id="tspan5175" + sodipodi:role="line">359</tspan></text> + <text + transform="scale(0.96767632,1.0334034)" + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:20.26409912px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:end;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:end;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="1001.4758" + y="610.7345" + id="NearestFrequenciesWXFreq7" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5179" + x="1001.4758" + y="610.7345">200nm</tspan></text> + <text + transform="scale(0.96767669,1.033403)" + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="760.83887" + y="110.1539" + id="NearestFrequenciesARTCCName" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan5285" + x="760.83887" + y="110.1539">ARTCC NAME</tspan></text> + <text + transform="scale(0.96767669,1.033403)" + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="778.9151" + y="143.21053" + id="text4882" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4884" + x="778.9151" + y="143.21053" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:15px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:start;writing-mode:lr-tb;text-anchor:start">BRG</tspan></text> + <text + sodipodi:linespacing="125%" + id="NearestFrequenciesARTCCBRG" + y="143.21053" + x="820.95056" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="#text4232" + transform="scale(0.96767669,1.033403)"><tspan + y="143.21053" + x="820.95056" + id="tspan4888" + sodipodi:role="line">356</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4890" + y="143.21053" + x="919.0459" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="#text4232" + transform="scale(0.96767669,1.033403)"><tspan + y="143.21053" + x="919.0459" + id="tspan4892" + sodipodi:role="line" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:15px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:start;writing-mode:lr-tb;text-anchor:start">DIS</tspan></text> + <text + transform="scale(0.96767669,1.033403)" + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="961.08136" + y="143.21053" + id="NearestFrequenciesARTCCDIS" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4896" + x="961.08136" + y="143.21053">356</tspan></text> + <rect + style="opacity:1;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4898" + width="289.10455" + height="153.58096" + x="730.41907" + y="266.28693" /> + <rect + style="opacity:1;fill:#1a3030;fill-opacity:1;fill-rule:nonzero;stroke:#fffcfa;stroke-width:1;stroke-linecap:butt;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" + id="rect4900" + width="89.528687" + height="20.528702" + x="745.47131" + y="254.33919" /> + <text + transform="scale(0.96767669,1.033403)" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:14.51583004px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#fffcfa;stroke-width:0.967722px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="775.02869" + y="261.45819" + id="text4902" + sodipodi:linespacing="125%"><tspan + style="stroke-width:0.967722px" + sodipodi:role="line" + id="tspan4904" + x="775.02869" + y="261.45819">NEAREST FSS</tspan></text> + <text + transform="scale(0.96767669,1.033403)" + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="778.9151" + y="347.23468" + id="NearestFrequenciesFSSFreq0" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4908" + x="778.9151" + y="347.23468">N 56 45.29</tspan></text> + <text + sodipodi:linespacing="125%" + id="NearestFrequenciesFSSName" + y="285.14777" + x="760.83887" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="#text4232" + transform="scale(0.96767669,1.033403)"><tspan + y="285.14777" + x="760.83887" + id="tspan4912" + sodipodi:role="line">FSS NAME</tspan></text> + <text + sodipodi:linespacing="125%" + id="text4914" + y="318.20438" + x="778.9151" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="#text4232" + transform="scale(0.96767669,1.033403)"><tspan + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:15px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:start;writing-mode:lr-tb;text-anchor:start" + y="318.20438" + x="778.9151" + id="tspan4916" + sodipodi:role="line">BRG</tspan></text> + <text + transform="scale(0.96767669,1.033403)" + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="820.95056" + y="318.20438" + id="NearestFrequenciesFSSBRG" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4920" + x="820.95056" + y="318.20438">356</tspan></text> + <text + transform="scale(0.96767669,1.033403)" + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="919.0459" + y="318.20438" + id="text4922" + sodipodi:linespacing="125%"><tspan + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:15px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow, Condensed';text-align:start;writing-mode:lr-tb;text-anchor:start" + sodipodi:role="line" + id="tspan4924" + x="919.0459" + y="318.20438">DIS</tspan></text> + <text + sodipodi:linespacing="125%" + id="NearestFrequenciesFSSDIS" + y="318.20438" + x="961.08136" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="#text4232" + transform="scale(0.96767669,1.033403)"><tspan + y="318.20438" + x="961.08136" + id="tspan4928" + sodipodi:role="line">356</tspan></text> + <text + transform="scale(0.96767669,1.033403)" + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="778.9151" + y="191.59436" + id="NearestFrequenciesARTCCFreq1" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4932" + x="778.9151" + y="191.59436">N 56 45.29</tspan></text> + <text + sodipodi:linespacing="125%" + id="NearestFrequenciesARTCCFreq2" + y="211.75995" + x="778.9151" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="#text4232" + transform="scale(0.96767669,1.033403)"><tspan + y="211.75995" + x="778.9151" + id="tspan4936" + sodipodi:role="line">N 56 45.29</tspan></text> + <text + sodipodi:linespacing="125%" + id="NearestFrequenciesFSSFreq1" + y="366.58823" + x="778.9151" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve" + inkscape:label="#text4232" + transform="scale(0.96767669,1.033403)"><tspan + y="366.58823" + x="778.9151" + id="tspan4940" + sodipodi:role="line">N 56 45.29</tspan></text> + <text + transform="scale(0.96767669,1.033403)" + inkscape:label="#text4232" + xml:space="preserve" + style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:condensed;font-size:19.35444069px;line-height:125%;font-family:'Liberation Sans Narrow';-inkscape-font-specification:'Liberation Sans Narrow Condensed';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#80ffff;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="778.9151" + y="385.94177" + id="NearestFrequenciesFSSFreq2" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan4944" + x="778.9151" + y="385.94177">N 56 45.29</tspan></text> + </g> + </g> +</svg> diff --git a/Aircraft/Instruments-3d/FG1000/Nasal/Interfaces/NavDataInterface.nas b/Aircraft/Instruments-3d/FG1000/Nasal/Interfaces/NavDataInterface.nas index 8b4721e7c..7502f84ac 100644 --- a/Aircraft/Instruments-3d/FG1000/Nasal/Interfaces/NavDataInterface.nas +++ b/Aircraft/Instruments-3d/FG1000/Nasal/Interfaces/NavDataInterface.nas @@ -366,6 +366,72 @@ setDefaultDTO : func(id) me._defaultDTO = id; }, + +# Find the nearest Air Route Traffic Control Center or equivalent. +# As we don't have that data right now, we simply return some placeholder +getNearestATRCC : func() +{ + var atrcc = {}; + atrcc.name = "NONE AVAILABLE"; + atrcc.lat = 0; + atrcc.lon = 0; + atrcc.brg = nil; + atrcc.dis = nil; + atrcc.freqs = []; # an array of frequencies for the ATRCC + return atrcc; +}, + +# Find the nearest Flight Service Station +# As we don't have that data right now, we simply return some placeholder +getNearestFSS : func() +{ + var fss = {}; + fss.name = "NONE AVAILABLE"; + fss.lat = nil; + fss.lon = nil; + fss.brg = nil; + fss.dis = nil; + fss.freqs = []; # an array of frequencies for the ATRCC + return fss; +}, + +# Find the nearest weather information. We do this simply by picking up +# appropriate frequencies from the airports frequencies within 200nm. +getNearestWX : func() +{ + # To make this more efficient for areas with a high density of airports, we'll try + # a small radius first and expand until we have reached 200nm or have 25 frequencies. + var radius = 0; + var freqs = []; + + while ((radius <= 200) and (size(freqs) < 25)) { + freqs = []; + radius = radius + 50; + apts = findAirportsWithinRange(radius); + foreach (var apt; apts) { + var apt_comms = apt.comms(); + if (size(apt_comms) > 0) { + # Airport has one or more frequencies assigned to it. + foreach (var c; apt_comms) { + if ((c.ident == "ATIS") or (c.ident == "ASOS")) { + var freq = { + id: apt.id, + type : c.ident, + freq: c.frequency, + lat : apt.lat, + lon : apt.lon, + }; + + append(freqs, freq); + } + } + } + } + } + + return freqs; +}, + RegisterWithEmesary : func() { if (me._recipient == nil){ @@ -447,6 +513,18 @@ RegisterWithEmesary : func() notification.EventParameter.Value = controller.getChecklists(); return emesary.Transmitter.ReceiptStatus_Finished; } + if (id == "GetNearestATRCC") { + notification.EventParameter.Value = controller.getNearestATRCC(); + return emesary.Transmitter.ReceiptStatus_Finished; + } + if (id == "GetNearestFSS") { + notification.EventParameter.Value = controller.getNearestFSS(); + return emesary.Transmitter.ReceiptStatus_Finished; + } + if (id == "GetNearestWX") { + notification.EventParameter.Value = controller.getNearestWX(); + return emesary.Transmitter.ReceiptStatus_Finished; + } } return emesary.Transmitter.ReceiptStatus_NotProcessed; }; @@ -471,6 +549,4 @@ stop : func() { me.DeRegisterWithEmesary(); }, - - }; diff --git a/Aircraft/Instruments-3d/FG1000/Nasal/MFDPage.nas b/Aircraft/Instruments-3d/FG1000/Nasal/MFDPage.nas index a0f044623..d885673cd 100644 --- a/Aircraft/Instruments-3d/FG1000/Nasal/MFDPage.nas +++ b/Aircraft/Instruments-3d/FG1000/Nasal/MFDPage.nas @@ -190,7 +190,7 @@ setTextElementNavFreq : func(symbolName, freq) { if ((freq == nil) or (freq == "")) { me.setTextElement(symbolName, "___.__"); } else { - me.setTextElement(symbolName, sprintf("%.2f", freq)); + me.setTextElement(symbolName, sprintf("%0.02f", freq)); } }, @@ -199,7 +199,7 @@ setTextElementComFreq : func(symbolName, freq) { me.setTextElement(symbolName, "___.___"); } else { # 8.33Hz spacing - me.setTextElement(symbolName, sprintf("%.3f", freq)); + me.setTextElement(symbolName, sprintf("%0.03f", freq)); } }, diff --git a/Aircraft/Instruments-3d/FG1000/Nasal/MFDPageController.nas b/Aircraft/Instruments-3d/FG1000/Nasal/MFDPageController.nas index 4d9497f2c..6eafb9e4c 100644 --- a/Aircraft/Instruments-3d/FG1000/Nasal/MFDPageController.nas +++ b/Aircraft/Instruments-3d/FG1000/Nasal/MFDPageController.nas @@ -1,4 +1,4 @@ -# Copyright 2018 Stuart Buchanan +## Copyright 2018 Stuart Buchanan # This file is part of FlightGear. # # Foobar is free software: you can redistribute it and/or modify @@ -212,5 +212,22 @@ getDeviceID : func() { return me._page.mfd.getDeviceID(); }, +# Simply query of the NavDataInterface +getNavData : func(queryID, value=nil) { + # Use Emesary to get the requested data + var notification = notifications.PFDEventNotification.new( + "MFD", + me.getDeviceID(), + notifications.PFDEventNotification.NavData, + {Id: queryID, Value: value}); + + var response = me._transmitter.NotifyAll(notification); + + if (! me._transmitter.IsFailed(response)) { + return notification.EventParameter.Value; + } else { + return nil; + } +}, }; diff --git a/Aircraft/Instruments-3d/FG1000/Nasal/MFDPages/NearestFrequencies/NearestFrequencies.nas b/Aircraft/Instruments-3d/FG1000/Nasal/MFDPages/NearestFrequencies/NearestFrequencies.nas index c1d8e9876..0638a4452 100644 --- a/Aircraft/Instruments-3d/FG1000/Nasal/MFDPages/NearestFrequencies/NearestFrequencies.nas +++ b/Aircraft/Instruments-3d/FG1000/Nasal/MFDPages/NearestFrequencies/NearestFrequencies.nas @@ -26,32 +26,167 @@ var NearestFrequencies = ], }; + var textElements = ["ARTCCName", "ARTCCBRG", "ARTCCDIS", "FSSName", "FSSBRG", "FSSDIS"]; + + obj.addTextElements(textElements); + + obj.artccSelect = PFD.GroupElement.new( + obj.pageName, + svg, + ["ARTCCFreq"], + 3, + "ARTCCFreq", + 0, + ); + + obj.fssSelect = PFD.GroupElement.new( + obj.pageName, + svg, + ["FSSFreq"], + 3, + "FSSFreq", + 0, + ); + + obj.wxSelect = PFD.GroupElement.new( + obj.pageName, + svg, + ["WXID", "WXType", "WXFreq"], + 8, + "WXFreq", + 0, + "ScrollTrough", + "ScrollThumb", + (181 - 116) + ); + obj.topMenu(device, obj, nil); obj.setController(fg1000.NearestFrequenciesController.new(obj, svg)); return obj; }, + + # Clear any cursor, highlights. Used when exiting from CRSR mode + resetCRSR : func() { + me.artccSelect.hideCRSR(); + me.fssSelect.hideCRSR(); + me.wxSelect.hideCRSR(); + me.resetMenuColors(); + }, + + + updateARTCC : func(artcc) { + if (artcc != nil) { + me.setTextElement("ARTCCName", artcc.name); + me.setTextElementBearing("ARTCCBRG", artcc.brg); + me.setTextElementDistance("ARTCCDIS", artcc.dis); + me.artccSelect.setValues(artcc.freqs); + } else { + me.setTextElement("ARTCCName", ""); + me.setTextElementBearing("ARTCCBRG", nil); + me.setTextElementDistance("ARTCCDIS", nil); + me.artccSelect.setValues([]); + } + + }, + + updateFSS : func(fss) { + if (fss != nil) { + me.setTextElement("FSSName", fss.name); + me.setTextElementBearing("FSSBRG", fss.brg); + me.setTextElementDistance("FSSDIS", fss.dis); + me.fssSelect.setValues(fss.freqs); + } else { + me.setTextElement("FSSName", ""); + me.setTextElementBearing("FSSBRG", nil); + me.setTextElementDistance("FSSDIS", nil); + me.fssSelect.setValues([]); + } + }, + + updateWX : func(freqs) { + var values = []; + + if (freqs != nil) { + foreach (var f; freqs) { + append(values, { WXID: f.id, WXType: f.type, WXFreq: sprintf("%0.03f", f.freq) } ); + } + } + + me.wxSelect.setValues(values); + }, + + getSelectedARTCC : func() { + return me.artccSelect.getValue(); + }, + getSelectedFSS : func() { + return me.fssSelect.getValue(); + }, + getSelectedWX : func() { + return me.wxSelect.getValue(); + }, + + # Function to highlight the ARTCC softkey - used when CRSR is pressed to indicate + # that we're editing the ARTCC selection. + selectARTCC : func() { + me.resetMenuColors(); + var bg_name = sprintf("SoftKey%d-bg",5); + var tname = sprintf("SoftKey%d",5); + me.device.svg.getElementById(bg_name).setColorFill(0.5,0.5,0.5); + me.device.svg.getElementById(tname).setColor(0.0,0.0,0.0); + }, + offdisplay : func() { me._group.setVisible(0); - - # Reset the menu colours. Shouldn't have to do this here, but - # there's not currently an obvious other location to do so. - for(var i = 0; i < 12; i +=1) { - var name = sprintf("SoftKey%d",i); - me.device.svg.getElementById(name ~ "-bg").setColorFill(0.0,0.0,0.0); - me.device.svg.getElementById(name).setColor(1.0,1.0,1.0); - } + # The Nearest... pages use the underlying navigation map. + me.mfd.NavigationMap.offdisplayPartial(); + me.resetMenuColors(); me.getController().offdisplay(); }, ondisplay : func() { me._group.setVisible(1); me.mfd.setPageTitle(me.title); + + # The Nearest... pages use the underlying navigation map. + me.mfd.NavigationMap.ondisplayPartial(); + me.getController().ondisplay(); }, + + # Indicate which group is selected by colour of the softkeys + display_toggle : func(device, svg, mi, group) { + var bg_name = sprintf("SoftKey%d-bg",mi.menu_id); + if (me.getController().getSelectedGroup() == group) { + device.svg.getElementById(bg_name).setColorFill(0.5,0.5,0.5); + svg.setColor(0.0,0.0,0.0); + } else { + device.svg.getElementById(bg_name).setColorFill(0.0,0.0,0.0); + svg.setColor(1.0,1.0,1.0); + } + svg.setText(mi.title); + svg.setVisible(1); # display function + }, + topMenu : func(device, pg, menuitem) { pg.clearMenu(); pg.resetMenuColors(); + + pg.addMenuItem(0, "ENGINE", pg, pg.mfd.EIS.engineMenu); + pg.addMenuItem(2, "MAP", pg, pg.mfd.NavigationMap.mapMenu); + pg.addMenuItem(5, "ARTCC", pg, + func(dev, pg, mi) { pg.getController().selectARTCC(); device.updateMenus(); }, # callback + func(svg, mi) { pg.display_toggle(device, svg, mi, NearestFrequenciesController.UIGROUP.ARTCC); } + ); + pg.addMenuItem(6, "FSS", pg, + func(dev, pg, mi) { pg.getController().selectFSS(); device.updateMenus(); }, # callback + func(svg, mi) { pg.display_toggle(device, svg, mi, NearestFrequenciesController.UIGROUP.FSS); } + ); + pg.addMenuItem(7, "WX", pg, + func(dev, pg, mi) { pg.getController().selectWX(); device.updateMenus(); }, # callback + func(svg, mi) { pg.display_toggle(device, svg, mi, NearestFrequenciesController.UIGROUP.WX); } + ); + device.updateMenus(); }, diff --git a/Aircraft/Instruments-3d/FG1000/Nasal/MFDPages/NearestFrequencies/NearestFrequenciesController.nas b/Aircraft/Instruments-3d/FG1000/Nasal/MFDPages/NearestFrequencies/NearestFrequenciesController.nas index 01b07297d..27c4fe7a9 100644 --- a/Aircraft/Instruments-3d/FG1000/Nasal/MFDPages/NearestFrequencies/NearestFrequenciesController.nas +++ b/Aircraft/Instruments-3d/FG1000/Nasal/MFDPages/NearestFrequencies/NearestFrequenciesController.nas @@ -17,6 +17,13 @@ # NearestFrequencies Controller var NearestFrequenciesController = { + UIGROUP : { + NONE : 0, # No group currently selected, + ARTCC : 1, + FSS : 2, + WX : 3, + }, + new : func (page, svg) { var obj = { @@ -24,51 +31,140 @@ var NearestFrequenciesController = _crsrToggle : 0, _recipient : nil, _page : page, + _atrcc_data: nil, + _fss_data : nil, + _wx_data : nil, }; + obj._currentGroup = NearestFrequenciesController.UIGROUP.NONE; + + obj._page.updateARTCC(nil,[]); + obj._page.updateFSS(nil,[]); + obj._page.updateWX([]); + return obj; }, + selectARTCC : func() { + me.selectGroup(NearestFrequenciesController.UIGROUP.ARTCC) + }, + selectFSS : func() { + me.selectGroup(NearestFrequenciesController.UIGROUP.FSS); + }, + selectWX : func() { + me.selectGroup(NearestFrequenciesController.UIGROUP.WX); + }, + getSelectedGroup : func() { + return me._currentGroup; + }, + selectGroup : func(grp) { + me._currentGroup = grp; + if (grp == NearestFrequenciesController.UIGROUP.ARTCC) me._page.artccSelect.showCRSR() else me._page.artccSelect.hideCRSR(); + if (grp == NearestFrequenciesController.UIGROUP.FSS) me._page.fssSelect.showCRSR() else me._page.fssSelect.hideCRSR(); + if (grp == NearestFrequenciesController.UIGROUP.WX) me._page.wxSelect.showCRSR() else me._page.wxSelect.hideCRSR(); + me._crsrToggle = 1; + }, + + updateFrequencies : func() { + me._atrcc_data = me.getNavData("GetNearestATRCC"); + me._fss_data = me.getNavData("GetNearestFSS"); + me._wx_data = me.getNavData("GetNearestWX"); + me._page.updateARTCC(me._atrcc_data); + me._page.updateFSS(me._fss_data); + me._page.updateWX(me._wx_data); + + # Display the DTO line to the airport + var apt_idx = me._page.wxSelect.getCRSR(); + var freq_data= me._wx_data[apt_idx]; + if (freq_data != nil) { + me._page.mfd.NavigationMap.getController().setDTOLineTarget(freq_data.lat, freq_data.lon); + } + }, + # Input Handling handleCRSR : func() { me._crsrToggle = (! me._crsrToggle); if (me._crsrToggle) { + me._page.selectARTCC(); + me._page.topMenu(me._page.device, me._page, nil); + #me.selectAirports(); } else { - me._page.hideCRSR(); + # Hide the cursor and reset any highlighting + me._page.resetCRSR(); } return emesary.Transmitter.ReceiptStatus_Finished; }, + handleFMSInner : func(value) { if (me._crsrToggle == 1) { - # Scroll through whatever is the current list + # Scroll through whatever is in the current list + if (me._currentGroup == NearestFrequenciesController.UIGROUP.ARTCC) me._page.artccSelect.incrSmall(value); + if (me._currentGroup == NearestFrequenciesController.UIGROUP.FSS) me._page.fssSelect.incrSmall(value); + if (me._currentGroup == NearestFrequenciesController.UIGROUP.WX) { + me._page.wxSelect.incrSmall(value); + + # Display the DTO line to the airport + var apt_idx = me._page.wxSelect.getCRSR(); + var freq_data= me._wx_data[apt_idx]; + if (freq_data != nil) { + me._page.mfd.NavigationMap.getController().setDTOLineTarget(freq_data.lat, freq_data.lon); + } + } + return emesary.Transmitter.ReceiptStatus_Finished; } else { - # Pass to the page group controller to display and scroll through the page group menu return me._page.mfd.SurroundController.handleFMSInner(value); } }, + handleFMSOuter : func(value) { if (me._crsrToggle == 1) { + # Scroll through whatever is in the current list. Unclear if this should + # scroll between windows instead? + if (me._currentGroup == NearestFrequenciesController.UIGROUP.ARTCC) me._page.artccSelect.incrSmall(value); + if (me._currentGroup == NearestFrequenciesController.UIGROUP.FSS) me._page.fssSelect.incrSmall(value); + if (me._currentGroup == NearestFrequenciesController.UIGROUP.WX) me._page.wxSelect.incrSmall(value); + return emesary.Transmitter.ReceiptStatus_Finished; } else { - # Pass to the page group controller to display and scroll through the page group menu return me._page.mfd.SurroundController.handleFMSOuter(value); } }, + handleEnter : func(value) { if (me._crsrToggle == 1) { + var select = nil; + if (me._currentGroup == NearestFrequenciesController.UIGROUP.ARTCC) select = me._page.artccSelect; + if (me._currentGroup == NearestFrequenciesController.UIGROUP.FSS) select = me._page.fssSelect; + if (me._currentGroup == NearestFrequenciesController.UIGROUP.WX) select = me._page.wxSelect; + + assert(select != nil, "Failed to determine currently selected group."); + + var freq = select.getValue(); + if (freq != nil) { + me._page.mfd.SurroundController.setStandbyNavComFreq(freq); + } return emesary.Transmitter.ReceiptStatus_Finished; } else { return emesary.Transmitter.ReceiptStatus_NotProcessed; } }, + handleRange : func(val) + { + # Pass any range entries to the NavMapController + me._page.mfd.NavigationMap.getController().handleRange(val); + }, + # Reset controller if required when the page is displayed or hidden ondisplay : func() { me.RegisterWithEmesary(); + me.updateFrequencies(); + me._page.mfd.NavigationMap.getController().enableDTO(1); }, offdisplay : func() { + me._page.mfd.NavigationMap.getController().enableDTO(0); me.DeRegisterWithEmesary(); },