Add a Canvas test pattern dialog
This commit is contained in:
parent
71bdd9e99b
commit
a18808fae6
5 changed files with 210 additions and 2 deletions
Aircraft/ufo
188
Aircraft/ufo/Nasal/canvas_test_pattern.nas
Normal file
188
Aircraft/ufo/Nasal/canvas_test_pattern.nas
Normal file
|
@ -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;
|
||||||
|
},
|
||||||
|
};
|
|
@ -82,7 +82,7 @@
|
||||||
|
|
||||||
<nasal>
|
<nasal>
|
||||||
<cam>
|
<cam>
|
||||||
<file>Aircraft/ufo/cam.nas</file>
|
<file>Aircraft/ufo/Nasal/cam.nas</file>
|
||||||
</cam>
|
</cam>
|
||||||
</nasal>
|
</nasal>
|
||||||
|
|
||||||
|
|
|
@ -127,6 +127,23 @@
|
||||||
</config>
|
</config>
|
||||||
</view>
|
</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>
|
<help>
|
||||||
<title>UFO</title>
|
<title>UFO</title>
|
||||||
<key>
|
<key>
|
||||||
|
@ -627,12 +644,15 @@
|
||||||
|
|
||||||
<nasal>
|
<nasal>
|
||||||
<ufo>
|
<ufo>
|
||||||
<file>Aircraft/ufo/ufo.nas</file>
|
<file>Aircraft/ufo/Nasal/ufo.nas</file>
|
||||||
</ufo>
|
</ufo>
|
||||||
|
|
||||||
<aar>
|
<aar>
|
||||||
<file>Aircraft/Generic/aar.nas</file>
|
<file>Aircraft/Generic/aar.nas</file>
|
||||||
</aar>
|
</aar>
|
||||||
|
<canvas_test_pattern>
|
||||||
|
<file>Aircraft/ufo/Nasal/canvas_test_pattern.nas</file>
|
||||||
|
</canvas_test_pattern>
|
||||||
</nasal>
|
</nasal>
|
||||||
|
|
||||||
<systems>
|
<systems>
|
||||||
|
|
Loading…
Add table
Reference in a new issue