var testDialog = { shape: func(cDefaultGroup) { cDefaultGroup.createChild("path") .setColorFill(0,0,0) .setColor(0,0,0); }, label: func(cDefaultGroup,desc,posx,posy,rot=0) { cDefaultGroup.createChild("text", desc) .setRotation(rot*0.0174532925) .setTranslation(posx,posy) .setAlignment("center-top") .setFont("typewriter.txf") .setFontSize(40,1.5) .setColor(0,0,0) .setText(desc); }, 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); testDialog.label(cDefaultGroup,"TOP",400,5,0.0); testDialog.label(cDefaultGroup,"LEFT",5,500,-90.0); testDialog.label(cDefaultGroup,"RIGHT",795,500,90.0); testDialog.label(cDefaultGroup,"BOTTOM",400,995,180.0); return m; }, };