vitykv — МАПО — Фабрика blockly

6
Лабораторная работа №1 по дисциплине «Моделирование и анализ ПО» Тема: «Фабрика Blockly» Преподаватель Гудаев О.А. Студент Витюк В.К.

Upload: vyacheslav-vityk

Post on 15-Jun-2015

68 views

Category:

Technology


12 download

TRANSCRIPT

Page 1: VitykV — МАПО — Фабрика Blockly

Лабораторная работа №1по дисциплине «Моделирование и анализ ПО»

Тема: «Фабрика Blockly»

Преподаватель Гудаев О.А.Студент Витюк В.К.

Page 2: VitykV — МАПО — Фабрика Blockly

Исходный текст SVG-файла<svg width="100" height="100" xmlns="http://www.w3.org/2000/svg"> <g> <title> MySVG</title> <text font-style="italic" font-weight="bold" transform="matrix(3.5, 0, 0, 3.5, 0, 0)" xml:space="preserve" text-anchor="middle" font-family="Monospace" font-size="5" id="svg_5" y="12" x="13" opacity="0.75" stroke-width="0" stroke="#000000" fill="#000000">(X,Y)</text> <text font-style="italic" font-weight="bold" transform="matrix(3.5, 0, 0, 3.5, 0, 0)" xml:space="preserve" text-anchor="middle" font-family="Monospace" font-size="5" id="svg_5" y="20" x="13" opacity="0.75" stroke-width="0" stroke="#000000" fill="#000000">(Len)</text> <line id="svg_7" y2="50" x2="15" y1="50" x1="25" opacity="0.75" stroke-width="2" stroke="#000000" fill="none"/> <line id="svg_8" y2="50" x2="75" y1="50" x1="85" opacity="0.75" stroke-width="2" stroke="#000000" fill="none"/> <line id="svg_10" y2="85" x2="50" y1="75" x1="50" opacity="0.75" stroke-width="2" stroke="#000000" fill="none"/> <line id="svg_11" y2="25" x2="50" y1="15" x1="50" opacity="0.75" stroke-width="2" stroke="#000000" fill="none"/> <rect id="svg_1" height="60" width="60" y="20" x="20" opacity="0.75" stroke-width="4" stroke="#000000" fill="none"/> </g></svg>

Page 3: VitykV — МАПО — Фабрика Blockly

Изображение SVG-файла

Page 4: VitykV — МАПО — Фабрика Blockly

Изображение блока в масштабах 100% ,120% ,160%

Page 5: VitykV — МАПО — Фабрика Blockly

Исходный текст JavaScript’a создания блокаBlockly.Language.webgl_a04_drawsqr = { category: 'WebGL', helpUrl: 'http://www.example.com/', init: function() { this.setColour(220); this.appendDummyInput() .appendTitle("DrawSquare"); this.appendDummyInput() .appendTitle(new Blockly.FieldImage("..\\..\\media\\sq.svg", 100, 100)); this.appendValueInput("sp") .setCheck(Array) .appendTitle("point"); this.appendValueInput("length") .setCheck(Number) .appendTitle("length"); this.setPreviousStatement(true); this.setNextStatement(true); this.setTooltip(''); }};

Blockly.JavaScript.webgl_a04_drawsqr = function() { var value_sp = Blockly.JavaScript.valueToCode(this, 'sp', Blockly.JavaScript.ORDER_ATOMIC); var value_length = Blockly.JavaScript.valueToCode(this, 'length', Blockly.JavaScript.ORDER_ATOMIC);var code = "\n if (window.WebGLRenderingContext){\n var sp = "+value_sp+";\n var len = "+value_length+"; \n var c = document.getElementById('canv'); \n var gl = c.getContext('2d'); \n gl.beginPath(); \n gl.rect( sp[0],sp[1],len,len); \n gl.lineWidth = 1; \n gl.strokeStyle = '#000000'; \n gl.stroke(); \n}"; return code;};

Page 6: VitykV — МАПО — Фабрика Blockly

Результат генерации блоком кода на JavaScript.<html><head><title> WebGL page</title></head><body> <canvas id='canv' width="800" height="600" > </canvas> <script> { if (window.WebGLRenderingContext){ var sp = ([20, 40]); var l = (50); var c = document.getElementById('canv'); var gl = c.getContext('2d'); gl.beginPath(); gl.rect( sp[0],sp[1],l,l); gl.lineWidth = 1; gl.strokeStyle = '#000000'; gl.stroke(); } }</script></body>