| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- /**
- * WHITEBOPHIR
- *********************************************************
- * @licstart The following is the entire license notice for the
- * JavaScript code in this page.
- *
- * Copyright (C) 2020 Ophir LOJKINE
- *
- *
- * The JavaScript code in this page is free software: you can
- * redistribute it and/or modify it under the terms of the GNU
- * General Public License (GNU GPL) as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option)
- * any later version. The code is distributed WITHOUT ANY WARRANTY;
- * without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU GPL for more details.
- *
- * As additional permission under GNU GPL version 3 section 7, you
- * may distribute non-source (e.g., minimized or compacted) forms of
- * that code without the copy of the GNU GPL normally required by
- * section 4, provided you include this license notice and a URL
- * through which recipients can access the Corresponding Source.
- *
- * @licend
- */
-
- (function grid() { //Code isolation
-
- var index = 0; //grid off by default
- var states = ["none", "url(#grid)", "url(#dots)"];
-
- function toggleGrid(evt) {
- index = (index + 1) % states.length;
- gridContainer.setAttributeNS(null, "fill", states[index]);
- }
-
- function createPatterns() {
- // create patterns
- // small (inner) grid
- var smallGrid = Tools.createSVGElement("pattern", {
- id: "smallGrid",
- width: "30",
- height: "30",
- patternUnits: "userSpaceOnUse"
- });
- smallGrid.appendChild(
- Tools.createSVGElement("path", {
- d: "M 30 0 L 0 0 0 30",
- fill: "none",
- stroke: "gray",
- 'stroke-width': "0.5"
- })
- );
- // (outer) grid
- var grid = Tools.createSVGElement("pattern", {
- id: "grid",
- width: "300",
- height: "300",
- patternUnits: "userSpaceOnUse"
- });
- grid.appendChild(Tools.createSVGElement("rect", {
- width: "300",
- height: "300",
- fill: "url(#smallGrid)"
- }));
- grid.appendChild(
- Tools.createSVGElement("path", {
- d: "M 300 0 L 0 0 0 300",
- fill: "none",
- stroke: "gray", 'stroke-width': "1"
- })
- );
- // dots
- var dots = Tools.createSVGElement("pattern", {
- id: "dots",
- width: "30",
- height: "30",
- x: "-10",
- y: "-10",
- patternUnits: "userSpaceOnUse"
- });
- dots.appendChild(Tools.createSVGElement("circle", {
- fill: "gray",
- cx: "10",
- cy: "10",
- r: "2"
- }));
-
- var defs = Tools.svg.getElementById("defs");
- defs.appendChild(smallGrid);
- defs.appendChild(grid);
- defs.appendChild(dots);
- }
-
- var gridContainer = (function init() {
- // initialize patterns
- createPatterns();
- // create grid container
- var gridContainer = Tools.createSVGElement("rect", {
- id: "gridContainer",
- width: "100%", height: "100%",
- fill: states[index]
- });
- Tools.svg.insertBefore(gridContainer, Tools.drawingArea);
- return gridContainer;
- })();
-
- Tools.add({ //The new tool
- "name": "Grid",
- "shortcut": "g",
- "listeners": {},
- "icon": "tools/grid/icon.svg",
- "oneTouch": true,
- "onstart": toggleGrid,
- "mouseCursor": "crosshair",
- });
-
- })(); //End of code isolation
|