diff --git a/Aircraft/ufo/cam.nas b/Aircraft/ufo/Nasal/cam.nas similarity index 100% rename from Aircraft/ufo/cam.nas rename to Aircraft/ufo/Nasal/cam.nas diff --git a/Aircraft/ufo/Nasal/canvas_test_pattern.nas b/Aircraft/ufo/Nasal/canvas_test_pattern.nas new file mode 100644 index 000000000..58055b2c5 --- /dev/null +++ b/Aircraft/ufo/Nasal/canvas_test_pattern.nas @@ -0,0 +1,188 @@ +var testDialog = { + + shape : func(cDefaultGroup) { + cDefaultGroup.createChild("path") + .setColorFill(0,0,0) + .setColor(0,0,0); + }, + create_tbl : func(needle_tbl) { + # hash table for needle positions + for (var i=1; i<21; i = i+1) { + var r0 = 150; var r1 = 350; + var a0 = (i*4.5 - 1.5) * 0.0174533; + var a1 = (i*4.5 + 1.5) * 0.0174533; + + var r3 = r1+8; + var a3 = (a0 + a1)/2; + + var x1 = -r0 * math.cos(a0); + var y1 = r0 * math.sin(a0); + + var x2 = -r1 * math.cos(a0); + var y2 = r1 * math.sin(a0); + + var x3 = -r3 * math.cos(a3); + var y3 = r3 * math.sin(a3); + + var x4 = -r1 * math.cos(a1); + var y4 = r1 * math.sin(a1); + + var x5 = -r0 * math.cos(a1); + var y5 = r0 * math.sin(a1); + + append(needle_tbl, [x1, y1, x2, y2, x3, y3, x4, y4, x5, y5]); + } + }, + + draw_vario: func(needles,needle_tbl,cx,cy) { + var min = 0; + var max = 20; + + needles.reset(); + for (var i=min; i<max; i = i+1) { + var x = cx - needle_tbl[i][0]; + var y = cy + needle_tbl[i][1]; + needles.moveTo(x, y); + + var x = cx - needle_tbl[i][2]; + var y = cy + needle_tbl[i][3]; + needles.lineTo(x, y); + + var x = cx - needle_tbl[i][4]; + var y = cy + needle_tbl[i][5]; + needles.lineTo(x, y); + + var x = cx - needle_tbl[i][6]; + var y = cy + needle_tbl[i][7]; + needles.lineTo(x, y); + + var x = cx - needle_tbl[i][8]; + var y = cy + needle_tbl[i][9]; + needles.lineTo(x, y); + needles.close(); + } + + for (var i=min; i<max; i = i+1) { + var x = cx + needle_tbl[i][0]; + var y = cy + needle_tbl[i][1]; + needles.moveTo(x, y); + + var x = cx + needle_tbl[i][2]; + var y = cy + needle_tbl[i][3]; + needles.lineTo(x, y); + + var x = cx + needle_tbl[i][4]; + var y = cy + needle_tbl[i][5]; + needles.lineTo(x, y); + + var x = cx + needle_tbl[i][6]; + var y = cy + needle_tbl[i][7]; + needles.lineTo(x, y); + + var x = cx + needle_tbl[i][8]; + var y = cy + needle_tbl[i][9]; + needles.lineTo(x, y); + needles.close(); + } + + for (var i=min; i<max; i = i+1) { + var x = cx - needle_tbl[i][0]; + var y = cy - needle_tbl[i][1]; + needles.moveTo(x, y); + + var x = cx - needle_tbl[i][2]; + var y = cy - needle_tbl[i][3]; + needles.lineTo(x, y); + + var x = cx - needle_tbl[i][4]; + var y = cy - needle_tbl[i][5]; + needles.lineTo(x, y); + + var x = cx - needle_tbl[i][6]; + var y = cy - needle_tbl[i][7]; + needles.lineTo(x, y); + + var x = cx - needle_tbl[i][8]; + var y = cy - needle_tbl[i][9]; + needles.lineTo(x, y); + needles.close(); + } + + max = 4; + for (var i=min; i<max; i = i+1) { + var x = cx + needle_tbl[i][0]; + var y = cy - needle_tbl[i][1]; + needles.moveTo(x, y); + + var x = cx + needle_tbl[i][2]; + var y = cy - needle_tbl[i][3]; + needles.lineTo(x, y); + + var x = cx + needle_tbl[i][4]; + var y = cy - needle_tbl[i][5]; + needles.lineTo(x, y); + + var x = cx + needle_tbl[i][6]; + var y = cy - needle_tbl[i][7]; + needles.lineTo(x, y); + + var x = cx + needle_tbl[i][8]; + var y = cy - needle_tbl[i][9]; + needles.lineTo(x, y); + needles.close(); + } + }, + new: func(width=400,height=500) + { + var m = { + parents: [testDialog], + _dlg: canvas.Window.new([width, height], "dialog") + .set("title", "test-pattern"), + }; + + var cDisplay = canvas.new({ + "name": "test-pattern", + "size": [1024, 1024], + "view": [800, 1000], + "mipmapping": 1 + }); + cDisplay.addPlacement({"node": "iq_display"}); + cDisplay.set("background", canvas.style.getColor("bg_color")); + + m._dlg.setCanvas(cDisplay); + + var cDefaultGroup = cDisplay.createGroup(); + + var arrow = testDialog.shape(cDefaultGroup); + arrow.moveTo(0,0); + arrow.lineTo(400,550); + arrow.lineTo(400,500); + arrow.lineTo(450,500); + arrow.close(); + + var sqbl = testDialog.shape(cDefaultGroup); + sqbl.moveTo(0,1000); + sqbl.lineTo(20,900); + sqbl.lineTo(100,980); + sqbl.close(); + + var sqbr = testDialog.shape(cDefaultGroup); + sqbr.moveTo(800,1000); + sqbr.lineTo(780,900); + sqbr.lineTo(700,980); + sqbr.close(); + + var sqtr = testDialog.shape(cDefaultGroup); + sqtr.moveTo(800,0); + sqtr.lineTo(780,100); + sqtr.lineTo(700,20); + sqtr.close(); + + var needle_tbl = [[0,0,0,0,0,0,0,0,0,0]]; + testDialog.create_tbl(needle_tbl); + var needles = testDialog.shape(cDefaultGroup); + testDialog.draw_vario(needles,needle_tbl,400,500); + + return m; + }, +}; diff --git a/Aircraft/ufo/ufo.nas b/Aircraft/ufo/Nasal/ufo.nas similarity index 100% rename from Aircraft/ufo/ufo.nas rename to Aircraft/ufo/Nasal/ufo.nas diff --git a/Aircraft/ufo/mibs-set.xml b/Aircraft/ufo/mibs-set.xml index cfd16baeb..64abe1953 100644 --- a/Aircraft/ufo/mibs-set.xml +++ b/Aircraft/ufo/mibs-set.xml @@ -82,7 +82,7 @@ <nasal> <cam> - <file>Aircraft/ufo/cam.nas</file> + <file>Aircraft/ufo/Nasal/cam.nas</file> </cam> </nasal> diff --git a/Aircraft/ufo/ufo-set.xml b/Aircraft/ufo/ufo-set.xml index ee38c86ba..129a8da66 100644 --- a/Aircraft/ufo/ufo-set.xml +++ b/Aircraft/ufo/ufo-set.xml @@ -127,6 +127,23 @@ </config> </view> + <menubar> + <default> + <menu n="100"> + <label>UFO</label> + <item> + <label>Show Test Pattern</label> + <binding> + <command>nasal</command> + <script> + canvas_test_pattern.testDialog.new(); + </script> + </binding> + </item> + </menu> + </default> + </menubar> + <help> <title>UFO</title> <key> @@ -627,12 +644,15 @@ <nasal> <ufo> - <file>Aircraft/ufo/ufo.nas</file> + <file>Aircraft/ufo/Nasal/ufo.nas</file> </ufo> <aar> <file>Aircraft/Generic/aar.nas</file> </aar> + <canvas_test_pattern> + <file>Aircraft/ufo/Nasal/canvas_test_pattern.nas</file> + </canvas_test_pattern> </nasal> <systems>