From 05ae7e839729d7615ebf1714d21799a5d9f396eb Mon Sep 17 00:00:00 2001 From: elioat Date: Mon, 17 Feb 2025 15:14:47 -0500 Subject: * --- html/simple-shape/app.js | 464 +++++ html/simple-shape/docs/ContextManager.html | 671 +++++++ html/simple-shape/docs/Layout.html | 423 +++++ html/simple-shape/docs/Patterns.html | 371 ++++ html/simple-shape/docs/Shapes.html | 436 +++++ html/simple-shape/docs/Utils.html | 985 +++++++++++ html/simple-shape/docs/app.js.html | 514 ++++++ .../docs/fonts/OpenSans-Bold-webfont.eot | Bin 0 -> 19544 bytes .../docs/fonts/OpenSans-Bold-webfont.svg | 1830 +++++++++++++++++++ .../docs/fonts/OpenSans-Bold-webfont.woff | Bin 0 -> 22432 bytes .../docs/fonts/OpenSans-BoldItalic-webfont.eot | Bin 0 -> 20133 bytes .../docs/fonts/OpenSans-BoldItalic-webfont.svg | 1830 +++++++++++++++++++ .../docs/fonts/OpenSans-BoldItalic-webfont.woff | Bin 0 -> 23048 bytes .../docs/fonts/OpenSans-Italic-webfont.eot | Bin 0 -> 20265 bytes .../docs/fonts/OpenSans-Italic-webfont.svg | 1830 +++++++++++++++++++ .../docs/fonts/OpenSans-Italic-webfont.woff | Bin 0 -> 23188 bytes .../docs/fonts/OpenSans-Light-webfont.eot | Bin 0 -> 19514 bytes .../docs/fonts/OpenSans-Light-webfont.svg | 1831 +++++++++++++++++++ .../docs/fonts/OpenSans-Light-webfont.woff | Bin 0 -> 22248 bytes .../docs/fonts/OpenSans-LightItalic-webfont.eot | Bin 0 -> 20535 bytes .../docs/fonts/OpenSans-LightItalic-webfont.svg | 1835 ++++++++++++++++++++ .../docs/fonts/OpenSans-LightItalic-webfont.woff | Bin 0 -> 23400 bytes .../docs/fonts/OpenSans-Regular-webfont.eot | Bin 0 -> 19836 bytes .../docs/fonts/OpenSans-Regular-webfont.svg | 1831 +++++++++++++++++++ .../docs/fonts/OpenSans-Regular-webfont.woff | Bin 0 -> 22660 bytes html/simple-shape/docs/global.html | 265 +++ html/simple-shape/docs/index.html | 65 + html/simple-shape/docs/scripts/linenumber.js | 25 + .../docs/scripts/prettify/Apache-License-2.0.txt | 202 +++ .../simple-shape/docs/scripts/prettify/lang-css.js | 2 + .../simple-shape/docs/scripts/prettify/prettify.js | 28 + html/simple-shape/docs/styles/jsdoc-default.css | 358 ++++ html/simple-shape/docs/styles/prettify-jsdoc.css | 111 ++ .../simple-shape/docs/styles/prettify-tomorrow.css | 132 ++ html/simple-shape/index.html | 467 +---- 35 files changed, 16040 insertions(+), 466 deletions(-) create mode 100644 html/simple-shape/app.js create mode 100644 html/simple-shape/docs/ContextManager.html create mode 100644 html/simple-shape/docs/Layout.html create mode 100644 html/simple-shape/docs/Patterns.html create mode 100644 html/simple-shape/docs/Shapes.html create mode 100644 html/simple-shape/docs/Utils.html create mode 100644 html/simple-shape/docs/app.js.html create mode 100644 html/simple-shape/docs/fonts/OpenSans-Bold-webfont.eot create mode 100644 html/simple-shape/docs/fonts/OpenSans-Bold-webfont.svg create mode 100644 html/simple-shape/docs/fonts/OpenSans-Bold-webfont.woff create mode 100644 html/simple-shape/docs/fonts/OpenSans-BoldItalic-webfont.eot create mode 100644 html/simple-shape/docs/fonts/OpenSans-BoldItalic-webfont.svg create mode 100644 html/simple-shape/docs/fonts/OpenSans-BoldItalic-webfont.woff create mode 100644 html/simple-shape/docs/fonts/OpenSans-Italic-webfont.eot create mode 100644 html/simple-shape/docs/fonts/OpenSans-Italic-webfont.svg create mode 100644 html/simple-shape/docs/fonts/OpenSans-Italic-webfont.woff create mode 100644 html/simple-shape/docs/fonts/OpenSans-Light-webfont.eot create mode 100644 html/simple-shape/docs/fonts/OpenSans-Light-webfont.svg create mode 100644 html/simple-shape/docs/fonts/OpenSans-Light-webfont.woff create mode 100644 html/simple-shape/docs/fonts/OpenSans-LightItalic-webfont.eot create mode 100644 html/simple-shape/docs/fonts/OpenSans-LightItalic-webfont.svg create mode 100644 html/simple-shape/docs/fonts/OpenSans-LightItalic-webfont.woff create mode 100644 html/simple-shape/docs/fonts/OpenSans-Regular-webfont.eot create mode 100644 html/simple-shape/docs/fonts/OpenSans-Regular-webfont.svg create mode 100644 html/simple-shape/docs/fonts/OpenSans-Regular-webfont.woff create mode 100644 html/simple-shape/docs/global.html create mode 100644 html/simple-shape/docs/index.html create mode 100644 html/simple-shape/docs/scripts/linenumber.js create mode 100644 html/simple-shape/docs/scripts/prettify/Apache-License-2.0.txt create mode 100644 html/simple-shape/docs/scripts/prettify/lang-css.js create mode 100644 html/simple-shape/docs/scripts/prettify/prettify.js create mode 100644 html/simple-shape/docs/styles/jsdoc-default.css create mode 100644 html/simple-shape/docs/styles/prettify-jsdoc.css create mode 100644 html/simple-shape/docs/styles/prettify-tomorrow.css (limited to 'html') diff --git a/html/simple-shape/app.js b/html/simple-shape/app.js new file mode 100644 index 0000000..b5260aa --- /dev/null +++ b/html/simple-shape/app.js @@ -0,0 +1,464 @@ +/** + * Configuration object for application-wide settings + * Centralizes magic numbers and configuration values + * @constant {Object} + */ +const CONFIG = { + canvas: { + dpi: 300, + width: 8.5 * 300, // 8.5in at 300dpi + height: 11 * 300, // 11in at 300dpi + }, + grid: { + rows: 4, + columns: 5, + topMargin: 100, + bottomMargin: 300, + patternSize: 400, + gutterRatio: 0.1, // 10% of pattern size + patternRatio: 0.8 // 80% of space for pattern + }, + style: { + strokeWidth: 4, + strokeColor: '#000' + } +}; + +/** + * Canvas Setup and Configuration + * This section initializes a high-resolution canvas optimized for both screen display and printing. + */ +const canvas = document.getElementById('canvas'); +const ctx = canvas.getContext('2d'); + +canvas.width = CONFIG.canvas.width; +canvas.height = CONFIG.canvas.height; + +/** + * Utility Functions Module + * Pure functions for common operations + * @namespace Utils + */ +const Utils = { + /** + * Generates a random number within a range + * @param {number} min - Minimum value + * @param {number} max - Maximum value + * @returns {number} + */ + random: (min, max) => Math.random() * (max - min) + min, + + /** + * Generates a random integer within a range + * @param {number} min - Minimum value + * @param {number} max - Maximum value + * @returns {number} + */ + randomInt: (min, max) => Math.floor(Utils.random(min, max)), + + /** + * Randomly selects an item from an array + * @param {Array} arr - Source array + * @returns {*} + */ + randomChoice: arr => arr[Math.floor(Math.random() * arr.length)], + + /** + * Fisher-Yates shuffle implementation + * @param {Array} arr - Array to shuffle + * @returns {Array} New shuffled array + */ + shuffle: arr => [...arr].sort(() => Math.random() - 0.5), + + /** + * Creates a range array of numbers + * @param {number} start - Start value + * @param {number} end - End value + * @returns {Array} + */ + range: (start, end) => Array.from( + { length: end - start }, + (_, i) => start + i + ) +}; + +/** + * Drawing Context Manager + * Handles canvas context state management using functional composition + * @namespace ContextManager + */ +const ContextManager = { + /** + * Executes a drawing operation with saved context state + * @param {Function} drawFn - Drawing function to execute + * @returns {Function} + */ + withContext: drawFn => (...args) => { + ctx.save(); + drawFn(...args); + ctx.restore(); + }, + + /** + * Applies a translation transformation + * @param {number} x - X translation + * @param {number} y - Y translation + * @returns {Function} + */ + withTranslation: (x, y) => drawFn => (...args) => { + ctx.translate(x, y); + drawFn(...args); + }, + + /** + * Applies a rotation transformation around a point + * @param {number} angle - Rotation angle in radians + * @param {number} x - Center X coordinate + * @param {number} y - Center Y coordinate + * @returns {Function} + */ + withRotation: (angle, x, y) => drawFn => (...args) => { + ctx.translate(x, y); + ctx.rotate(angle); + ctx.translate(-x, -y); + drawFn(...args); + } +}; + +/** + * Shape Factory Pattern + * @namespace Shapes + */ +const Shapes = { + /** + * Creates a circle with optional fill + * @param {number} x - Center X coordinate + * @param {number} y - Center Y coordinate + * @param {number} size - Reference size for radius calculation + * @param {Object} params - Optional parameters for customization + * @param {number} [params.radius] - Optional explicit radius + * @param {boolean} [params.fill] - Whether to fill the circle + */ + circle: (x, y, size, params = {}) => { + const radius = params.radius || size/3; + ctx.beginPath(); + ctx.arc(x, y, radius, 0, Math.PI * 2); + params.fill ? ctx.fill() : ctx.stroke(); + }, + + line: (x1, y1, x2, y2) => { + ctx.beginPath(); + ctx.moveTo(x1, y1); + ctx.lineTo(x2, y2); + ctx.stroke(); + }, + + triangle: (x, y, size) => { + ctx.beginPath(); + ctx.moveTo(x, y + size); + ctx.lineTo(x + size/2, y); + ctx.lineTo(x + size, y + size); + ctx.closePath(); + ctx.stroke(); + }, + + square: (x, y, size) => { + ctx.strokeRect(x, y, size, size); + } +}; + +/** + * Pattern Generator System + * @namespace Patterns + */ +const Patterns = { + /** + * Creates a pattern generator with transformation capabilities + * @param {Function} patternFn - Base pattern drawing function + * @returns {Function} Enhanced pattern generator + */ + createGenerator: patternFn => { + return ContextManager.withContext((x, y, size) => { + const rotation = Math.PI/2 * Utils.randomInt(0, 4); + if (rotation > 0) { + ContextManager.withRotation( + rotation, + x + size/2, + y + size/2 + )(patternFn)(x, y, size); + } else { + patternFn(x, y, size); + } + }); + }, + + /** + * Collection of base pattern implementations + * @type {Array} + */ + types: [ + /** + * Grid-based pattern strategy + * Demonstrates use of nested loops for regular grid generation + * @param {number} x - Starting X coordinate + * @param {number} y - Starting Y coordinate + * @param {number} size - Pattern size + */ + (x, y, size) => { + const spacing = size/3; + for(let i = 0; i < 3; i++) { + for(let j = 0; j < 3; j++) { + if((i + j) % 2 === 0) { // Checkerboard pattern + Shapes.circle( + x + spacing/2 + i * spacing, + y + spacing/2 + j * spacing, + spacing/2 + ); + } + } + } + }, + + // Nested squares + (x, y, size) => { + for(let i = 3; i > 0; i--) { + const offset = (3 - i) * size/6; + const squareSize = size - offset * 2; + Shapes.square(x + offset, y + offset, squareSize); + } + }, + + // Simple flower pattern + (x, y, size) => { + const center = size/2; + const radius = size/4; + + // Center circle + Shapes.circle(x + center, y + center, size/6); + + // Petals + for(let i = 0; i < 6; i++) { + const angle = (i / 6) * Math.PI * 2; + const petalX = x + center + Math.cos(angle) * radius; + const petalY = y + center + Math.sin(angle) * radius; + Shapes.circle(petalX, petalY, size/6); + } + }, + + // Triangles in a row + (x, y, size) => { + const triSize = size/3; + for(let i = 0; i < 3; i++) { + Shapes.triangle( + x + i * triSize, + y + (i % 2) * triSize/2, + triSize + ); + } + }, + + // Simple grid of squares + (x, y, size) => { + const gridSize = size/2; + for(let i = 0; i < 2; i++) { + for(let j = 0; j < 2; j++) { + Shapes.square( + x + i * gridSize + size/8, + y + j * gridSize + size/8, + gridSize * 0.75 + ); + } + } + }, + + // Alternating circles and squares + (x, y, size) => { + const spacing = size/2; + for(let i = 0; i < 2; i++) { + for(let j = 0; j < 2; j++) { + if((i + j) % 2 === 0) { + Shapes.circle( + x + spacing/2 + i * spacing, + y + spacing/2 + j * spacing, + spacing/3 + ); + } else { + Shapes.square( + x + i * spacing + spacing/6, + y + j * spacing + spacing/6, + spacing * 2/3 + ); + } + } + } + }, + + // Simple star pattern + (x, y, size) => { + const center = size/2; + // Horizontal and vertical lines + Shapes.line(x, y + center, x + size, y + center); + Shapes.line(x + center, y, x + center, y + size); + // Diagonal lines + Shapes.line(x, y, x + size, y + size); + Shapes.line(x + size, y, x, y + size); + }, + + // Nested arcs + (x, y, size) => { + const center = size/2; + for(let i = 1; i <= 4; i++) { + const radius = (size/2) * (i/4); + ctx.beginPath(); + ctx.arc(x + center, y + center, radius, 0, Math.PI); + ctx.stroke(); + } + }, + + // Quarter circles in corners + (x, y, size) => { + const radius = size/2; + // Top left + ctx.beginPath(); + ctx.arc(x, y, radius, 0, Math.PI/2); + ctx.stroke(); + // Top right + ctx.beginPath(); + ctx.arc(x + size, y, radius, Math.PI/2, Math.PI); + ctx.stroke(); + // Bottom right + ctx.beginPath(); + ctx.arc(x + size, y + size, radius, Math.PI, Math.PI * 3/2); + ctx.stroke(); + // Bottom left + ctx.beginPath(); + ctx.arc(x, y + size, radius, Math.PI * 3/2, Math.PI * 2); + ctx.stroke(); + }, + + // Concentric circles + (x, y, size) => { + const center = size/2; + for(let i = 1; i <= 3; i++) { + Shapes.circle( + x + center, + y + center, + size, + {radius: (size/2) * (i/3)} + ); + } + }, + + // Nested diamonds + (x, y, size) => { + const center = size/2; + for(let i = 1; i <= 3; i++) { + const offset = (size/2) * (i/3); + ctx.beginPath(); + ctx.moveTo(x + center, y + center - offset); + ctx.lineTo(x + center + offset, y + center); + ctx.lineTo(x + center, y + center + offset); + ctx.lineTo(x + center - offset, y + center); + ctx.closePath(); + ctx.stroke(); + } + }, + + // Radiating arcs + (x, y, size) => { + const center = size/2; + const radius = size/3; + for(let i = 0; i < 4; i++) { + const startAngle = (Math.PI/2) * i; + ctx.beginPath(); + ctx.arc(x + center, y + center, radius, startAngle, startAngle + Math.PI/2); + ctx.stroke(); + } + }, + + // Stacked semicircles + (x, y, size) => { + const width = size * 0.8; + for(let i = 0; i < 3; i++) { + ctx.beginPath(); + ctx.arc( + x + size/2, + y + (size/3) * (i + 1), + width/2, + 0, + Math.PI, + i % 2 === 0 + ); + ctx.stroke(); + } + } + ] +}; + +/** + * Layout System + * Handles grid layout and composition + * @namespace Layout + */ +const Layout = { + /** + * Calculates layout metrics for the grid + * @returns {Object} Layout calculations + */ + calculateMetrics: () => { + const availableHeight = CONFIG.canvas.height - + (CONFIG.grid.topMargin + CONFIG.grid.bottomMargin); + + const totalPatternHeight = CONFIG.grid.rows * CONFIG.grid.patternSize; + const totalGapHeight = availableHeight - totalPatternHeight; + const rowGap = totalGapHeight / (CONFIG.grid.rows - 1); + + const totalWidth = CONFIG.grid.patternSize * CONFIG.grid.columns; + const xOffset = (CONFIG.canvas.width - totalWidth) / 2; + + return { rowGap, xOffset }; + }, + + /** + * Draws a row of patterns + */ + drawRow: (xOffset, y, size) => { + const gutter = size * CONFIG.grid.gutterRatio; + const patternSize = size * CONFIG.grid.patternRatio; + + const patterns = Utils.shuffle(patternGenerators); + Utils.range(0, CONFIG.grid.columns).forEach(i => { + const xPos = xOffset + i * size + gutter; + const yPos = y + gutter; + patterns[i](xPos, yPos, patternSize); + }); + }, + + /** + * Draws the complete grid + */ + drawGrid: () => { + ctx.clearRect(0, 0, CONFIG.canvas.width, CONFIG.canvas.height); + + ctx.strokeStyle = CONFIG.style.strokeColor; + ctx.lineWidth = CONFIG.style.strokeWidth; + + const { rowGap, xOffset } = Layout.calculateMetrics(); + + Utils.range(0, CONFIG.grid.rows).forEach(i => { + const y = CONFIG.grid.topMargin + + i * (CONFIG.grid.patternSize + rowGap); + Layout.drawRow(xOffset, y, CONFIG.grid.patternSize); + }); + } +}; + +// Generate pattern instances +const patternGenerators = Utils.range(0, 10) + .map(() => Patterns.createGenerator( + Utils.randomChoice(Patterns.types) + )); + +// Initialize and set up interaction +Layout.drawGrid(); +canvas.addEventListener('click', Layout.drawGrid); \ No newline at end of file diff --git a/html/simple-shape/docs/ContextManager.html b/html/simple-shape/docs/ContextManager.html new file mode 100644 index 0000000..186b90b --- /dev/null +++ b/html/simple-shape/docs/ContextManager.html @@ -0,0 +1,671 @@ + + + + + JSDoc: Namespace: ContextManager + + + + + + + + + + +
+ +

Namespace: ContextManager

+ + + + + + +
+ +
+ +

ContextManager

+ + +
+ +
+
+ + +
Drawing Context Manager +Handles canvas context state management using functional composition
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + +

Methods

+ + + + + + + +

(static) withContext(drawFn) → {function}

+ + + + + + +
+ Executes a drawing operation with saved context state +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
drawFn + + +function + + + + Drawing function to execute
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + + + +
Returns:
+ + + + +
+
+ Type +
+
+ +function + + +
+
+ + + + + + + + + + + + + +

(static) withRotation(angle, x, y) → {function}

+ + + + + + +
+ Applies a rotation transformation around a point +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
angle + + +number + + + + Rotation angle in radians
x + + +number + + + + Center X coordinate
y + + +number + + + + Center Y coordinate
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + + + +
Returns:
+ + + + +
+
+ Type +
+
+ +function + + +
+
+ + + + + + + + + + + + + +

(static) withTranslation(x, y) → {function}

+ + + + + + +
+ Applies a translation transformation +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
x + + +number + + + + X translation
y + + +number + + + + Y translation
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + + + +
Returns:
+ + + + +
+
+ Type +
+
+ +function + + +
+
+ + + + + + + + + + + + + +
+ +
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 4.0.3 on Mon Feb 17 2025 15:13:39 GMT-0500 (Eastern Standard Time) +
+ + + + + \ No newline at end of file diff --git a/html/simple-shape/docs/Layout.html b/html/simple-shape/docs/Layout.html new file mode 100644 index 0000000..344b4df --- /dev/null +++ b/html/simple-shape/docs/Layout.html @@ -0,0 +1,423 @@ + + + + + JSDoc: Namespace: Layout + + + + + + + + + + +
+ +

Namespace: Layout

+ + + + + + +
+ +
+ +

Layout

+ + +
+ +
+
+ + +
Layout System +Handles grid layout and composition
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + +

Methods

+ + + + + + + +

(static) calculateMetrics() → {Object}

+ + + + + + +
+ Calculates layout metrics for the grid +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + + + +
Returns:
+ + +
+ Layout calculations +
+ + + +
+
+ Type +
+
+ +Object + + +
+
+ + + + + + + + + + + + + +

(static) drawGrid()

+ + + + + + +
+ Draws the complete grid +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +

(static) drawRow()

+ + + + + + +
+ Draws a row of patterns +
+ + + + + + + + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 4.0.3 on Mon Feb 17 2025 15:13:39 GMT-0500 (Eastern Standard Time) +
+ + + + + \ No newline at end of file diff --git a/html/simple-shape/docs/Patterns.html b/html/simple-shape/docs/Patterns.html new file mode 100644 index 0000000..829041f --- /dev/null +++ b/html/simple-shape/docs/Patterns.html @@ -0,0 +1,371 @@ + + + + + JSDoc: Namespace: Patterns + + + + + + + + + + +
+ +

Namespace: Patterns

+ + + + + + +
+ +
+ +

Patterns

+ + +
+ +
+
+ + +
Pattern Generator System
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + +

Members

+ + + +

(static) types :Array.<function()>

+ + + + +
+ Collection of base pattern implementations +
+ + + +
Type:
+
    +
  • + +Array.<function()> + + +
  • +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + +

Methods

+ + + + + + + +

(static) createGenerator(patternFn) → {function}

+ + + + + + +
+ Creates a pattern generator with transformation capabilities +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
patternFn + + +function + + + + Base pattern drawing function
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + + + +
Returns:
+ + +
+ Enhanced pattern generator +
+ + + +
+
+ Type +
+
+ +function + + +
+
+ + + + + + + + + + + + + +
+ +
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 4.0.3 on Mon Feb 17 2025 15:13:39 GMT-0500 (Eastern Standard Time) +
+ + + + + \ No newline at end of file diff --git a/html/simple-shape/docs/Shapes.html b/html/simple-shape/docs/Shapes.html new file mode 100644 index 0000000..716e63a --- /dev/null +++ b/html/simple-shape/docs/Shapes.html @@ -0,0 +1,436 @@ + + + + + JSDoc: Namespace: Shapes + + + + + + + + + + +
+ +

Namespace: Shapes

+ + + + + + +
+ +
+ +

Shapes

+ + +
+ +
+
+ + +
Shape Factory Pattern
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + +

Methods

+ + + + + + + +

(static) circle(x, y, size, params)

+ + + + + + +
+ Creates a circle with optional fill +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
x + + +number + + + + Center X coordinate
y + + +number + + + + Center Y coordinate
size + + +number + + + + Reference size for radius calculation
params + + +Object + + + + Optional parameters for customization +
Properties
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeAttributesDescription
radius + + +number + + + + + + <optional>
+ + + + + +
Optional explicit radius
fill + + +boolean + + + + + + <optional>
+ + + + + +
Whether to fill the circle
+ +
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 4.0.3 on Mon Feb 17 2025 15:13:39 GMT-0500 (Eastern Standard Time) +
+ + + + + \ No newline at end of file diff --git a/html/simple-shape/docs/Utils.html b/html/simple-shape/docs/Utils.html new file mode 100644 index 0000000..367387e --- /dev/null +++ b/html/simple-shape/docs/Utils.html @@ -0,0 +1,985 @@ + + + + + JSDoc: Namespace: Utils + + + + + + + + + + +
+ +

Namespace: Utils

+ + + + + + +
+ +
+ +

Utils

+ + +
+ +
+
+ + +
Utility Functions Module +Pure functions for common operations
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + + + +

Methods

+ + + + + + + +

(static) random(min, max) → {number}

+ + + + + + +
+ Generates a random number within a range +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
min + + +number + + + + Minimum value
max + + +number + + + + Maximum value
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + + + +
Returns:
+ + + + +
+
+ Type +
+
+ +number + + +
+
+ + + + + + + + + + + + + +

(static) randomChoice(arr) → {*}

+ + + + + + +
+ Randomly selects an item from an array +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
arr + + +Array + + + + Source array
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + + + +
Returns:
+ + + + +
+
+ Type +
+
+ +* + + +
+
+ + + + + + + + + + + + + +

(static) randomInt(min, max) → {number}

+ + + + + + +
+ Generates a random integer within a range +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
min + + +number + + + + Minimum value
max + + +number + + + + Maximum value
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + + + +
Returns:
+ + + + +
+
+ Type +
+
+ +number + + +
+
+ + + + + + + + + + + + + +

(static) range(start, end) → {Array.<number>}

+ + + + + + +
+ Creates a range array of numbers +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
start + + +number + + + + Start value
end + + +number + + + + End value
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + + + +
Returns:
+ + + + +
+
+ Type +
+
+ +Array.<number> + + +
+
+ + + + + + + + + + + + + +

(static) shuffle(arr) → {Array}

+ + + + + + +
+ Fisher-Yates shuffle implementation +
+ + + + + + + + + +
Parameters:
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
NameTypeDescription
arr + + +Array + + + + Array to shuffle
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + + + +
Returns:
+ + +
+ New shuffled array +
+ + + +
+
+ Type +
+
+ +Array + + +
+
+ + + + + + + + + + + + + +
+ +
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 4.0.3 on Mon Feb 17 2025 15:13:39 GMT-0500 (Eastern Standard Time) +
+ + + + + \ No newline at end of file diff --git a/html/simple-shape/docs/app.js.html b/html/simple-shape/docs/app.js.html new file mode 100644 index 0000000..613c89f --- /dev/null +++ b/html/simple-shape/docs/app.js.html @@ -0,0 +1,514 @@ + + + + + JSDoc: Source: app.js + + + + + + + + + + +
+ +

Source: app.js

+ + + + + + +
+
+
/**
+ * Configuration object for application-wide settings
+ * Centralizes magic numbers and configuration values
+ * @constant {Object}
+ */
+const CONFIG = {
+    canvas: {
+        dpi: 300,
+        width: 8.5 * 300, // 8.5in at 300dpi
+        height: 11 * 300, // 11in at 300dpi
+    },
+    grid: {
+        rows: 4,
+        columns: 5,
+        topMargin: 100,
+        bottomMargin: 300,
+        patternSize: 400,
+        gutterRatio: 0.1, // 10% of pattern size
+        patternRatio: 0.8  // 80% of space for pattern
+    },
+    style: {
+        strokeWidth: 4,
+        strokeColor: '#000'
+    }
+};
+
+/**
+ * Canvas Setup and Configuration
+ * This section initializes a high-resolution canvas optimized for both screen display and printing.
+ */
+const canvas = document.getElementById('canvas');
+const ctx = canvas.getContext('2d');
+
+canvas.width = CONFIG.canvas.width;
+canvas.height = CONFIG.canvas.height;
+
+/**
+ * Utility Functions Module
+ * Pure functions for common operations
+ * @namespace Utils
+ */
+const Utils = {
+    /**
+     * Generates a random number within a range
+     * @param {number} min - Minimum value
+     * @param {number} max - Maximum value
+     * @returns {number}
+     */
+    random: (min, max) => Math.random() * (max - min) + min,
+    
+    /**
+     * Generates a random integer within a range
+     * @param {number} min - Minimum value
+     * @param {number} max - Maximum value
+     * @returns {number}
+     */
+    randomInt: (min, max) => Math.floor(Utils.random(min, max)),
+    
+    /**
+     * Randomly selects an item from an array
+     * @param {Array} arr - Source array
+     * @returns {*}
+     */
+    randomChoice: arr => arr[Math.floor(Math.random() * arr.length)],
+    
+    /**
+     * Fisher-Yates shuffle implementation
+     * @param {Array} arr - Array to shuffle
+     * @returns {Array} New shuffled array
+     */
+    shuffle: arr => [...arr].sort(() => Math.random() - 0.5),
+    
+    /**
+     * Creates a range array of numbers
+     * @param {number} start - Start value
+     * @param {number} end - End value
+     * @returns {Array<number>}
+     */
+    range: (start, end) => Array.from(
+        { length: end - start }, 
+        (_, i) => start + i
+    )
+};
+
+/**
+ * Drawing Context Manager
+ * Handles canvas context state management using functional composition
+ * @namespace ContextManager
+ */
+const ContextManager = {
+    /**
+     * Executes a drawing operation with saved context state
+     * @param {Function} drawFn - Drawing function to execute
+     * @returns {Function}
+     */
+    withContext: drawFn => (...args) => {
+        ctx.save();
+        drawFn(...args);
+        ctx.restore();
+    },
+
+    /**
+     * Applies a translation transformation
+     * @param {number} x - X translation
+     * @param {number} y - Y translation
+     * @returns {Function}
+     */
+    withTranslation: (x, y) => drawFn => (...args) => {
+        ctx.translate(x, y);
+        drawFn(...args);
+    },
+
+    /**
+     * Applies a rotation transformation around a point
+     * @param {number} angle - Rotation angle in radians
+     * @param {number} x - Center X coordinate
+     * @param {number} y - Center Y coordinate
+     * @returns {Function}
+     */
+    withRotation: (angle, x, y) => drawFn => (...args) => {
+        ctx.translate(x, y);
+        ctx.rotate(angle);
+        ctx.translate(-x, -y);
+        drawFn(...args);
+    }
+};
+
+/**
+ * Shape Factory Pattern
+ * @namespace Shapes
+ */
+const Shapes = {
+    /**
+     * Creates a circle with optional fill
+     * @param {number} x - Center X coordinate
+     * @param {number} y - Center Y coordinate
+     * @param {number} size - Reference size for radius calculation
+     * @param {Object} params - Optional parameters for customization
+     * @param {number} [params.radius] - Optional explicit radius
+     * @param {boolean} [params.fill] - Whether to fill the circle
+     */
+    circle: (x, y, size, params = {}) => {
+        const radius = params.radius || size/3;
+        ctx.beginPath();
+        ctx.arc(x, y, radius, 0, Math.PI * 2);
+        params.fill ? ctx.fill() : ctx.stroke();
+    },
+    
+    line: (x1, y1, x2, y2) => {
+        ctx.beginPath();
+        ctx.moveTo(x1, y1);
+        ctx.lineTo(x2, y2);
+        ctx.stroke();
+    },
+    
+    triangle: (x, y, size) => {
+        ctx.beginPath();
+        ctx.moveTo(x, y + size);
+        ctx.lineTo(x + size/2, y);
+        ctx.lineTo(x + size, y + size);
+        ctx.closePath();
+        ctx.stroke();
+    },
+
+    square: (x, y, size) => {
+        ctx.strokeRect(x, y, size, size);
+    }
+};
+
+/**
+ * Pattern Generator System
+ * @namespace Patterns
+ */
+const Patterns = {
+    /**
+     * Creates a pattern generator with transformation capabilities
+     * @param {Function} patternFn - Base pattern drawing function
+     * @returns {Function} Enhanced pattern generator
+     */
+    createGenerator: patternFn => {
+        return ContextManager.withContext((x, y, size) => {
+            const rotation = Math.PI/2 * Utils.randomInt(0, 4);
+            if (rotation > 0) {
+                ContextManager.withRotation(
+                    rotation,
+                    x + size/2,
+                    y + size/2
+                )(patternFn)(x, y, size);
+            } else {
+                patternFn(x, y, size);
+            }
+        });
+    },
+
+    /**
+     * Collection of base pattern implementations
+     * @type {Array<Function>}
+     */
+    types: [
+        /**
+         * Grid-based pattern strategy
+         * Demonstrates use of nested loops for regular grid generation
+         * @param {number} x - Starting X coordinate
+         * @param {number} y - Starting Y coordinate
+         * @param {number} size - Pattern size
+         */
+        (x, y, size) => {
+            const spacing = size/3;
+            for(let i = 0; i < 3; i++) {
+                for(let j = 0; j < 3; j++) {
+                    if((i + j) % 2 === 0) { // Checkerboard pattern
+                        Shapes.circle(
+                            x + spacing/2 + i * spacing,
+                            y + spacing/2 + j * spacing,
+                            spacing/2
+                        );
+                    }
+                }
+            }
+        },
+
+        // Nested squares
+        (x, y, size) => {
+            for(let i = 3; i > 0; i--) {
+                const offset = (3 - i) * size/6;
+                const squareSize = size - offset * 2;
+                Shapes.square(x + offset, y + offset, squareSize);
+            }
+        },
+
+        // Simple flower pattern
+        (x, y, size) => {
+            const center = size/2;
+            const radius = size/4;
+            
+            // Center circle
+            Shapes.circle(x + center, y + center, size/6);
+            
+            // Petals
+            for(let i = 0; i < 6; i++) {
+                const angle = (i / 6) * Math.PI * 2;
+                const petalX = x + center + Math.cos(angle) * radius;
+                const petalY = y + center + Math.sin(angle) * radius;
+                Shapes.circle(petalX, petalY, size/6);
+            }
+        },
+
+        // Triangles in a row
+        (x, y, size) => {
+            const triSize = size/3;
+            for(let i = 0; i < 3; i++) {
+                Shapes.triangle(
+                    x + i * triSize,
+                    y + (i % 2) * triSize/2,
+                    triSize
+                );
+            }
+        },
+
+        // Simple grid of squares
+        (x, y, size) => {
+            const gridSize = size/2;
+            for(let i = 0; i < 2; i++) {
+                for(let j = 0; j < 2; j++) {
+                    Shapes.square(
+                        x + i * gridSize + size/8,
+                        y + j * gridSize + size/8,
+                        gridSize * 0.75
+                    );
+                }
+            }
+        },
+
+        // Alternating circles and squares
+        (x, y, size) => {
+            const spacing = size/2;
+            for(let i = 0; i < 2; i++) {
+                for(let j = 0; j < 2; j++) {
+                    if((i + j) % 2 === 0) {
+                        Shapes.circle(
+                            x + spacing/2 + i * spacing,
+                            y + spacing/2 + j * spacing,
+                            spacing/3
+                        );
+                    } else {
+                        Shapes.square(
+                            x + i * spacing + spacing/6,
+                            y + j * spacing + spacing/6,
+                            spacing * 2/3
+                        );
+                    }
+                }
+            }
+        },
+
+        // Simple star pattern
+        (x, y, size) => {
+            const center = size/2;
+            // Horizontal and vertical lines
+            Shapes.line(x, y + center, x + size, y + center);
+            Shapes.line(x + center, y, x + center, y + size);
+            // Diagonal lines
+            Shapes.line(x, y, x + size, y + size);
+            Shapes.line(x + size, y, x, y + size);
+        },
+
+        // Nested arcs
+        (x, y, size) => {
+            const center = size/2;
+            for(let i = 1; i <= 4; i++) {
+                const radius = (size/2) * (i/4);
+                ctx.beginPath();
+                ctx.arc(x + center, y + center, radius, 0, Math.PI);
+                ctx.stroke();
+            }
+        },
+
+        // Quarter circles in corners
+        (x, y, size) => {
+            const radius = size/2;
+            // Top left
+            ctx.beginPath();
+            ctx.arc(x, y, radius, 0, Math.PI/2);
+            ctx.stroke();
+            // Top right
+            ctx.beginPath();
+            ctx.arc(x + size, y, radius, Math.PI/2, Math.PI);
+            ctx.stroke();
+            // Bottom right
+            ctx.beginPath();
+            ctx.arc(x + size, y + size, radius, Math.PI, Math.PI * 3/2);
+            ctx.stroke();
+            // Bottom left
+            ctx.beginPath();
+            ctx.arc(x, y + size, radius, Math.PI * 3/2, Math.PI * 2);
+            ctx.stroke();
+        },
+
+        // Concentric circles
+        (x, y, size) => {
+            const center = size/2;
+            for(let i = 1; i <= 3; i++) {
+                Shapes.circle(
+                    x + center,
+                    y + center,
+                    size,
+                    {radius: (size/2) * (i/3)}
+                );
+            }
+        },
+
+        // Nested diamonds
+        (x, y, size) => {
+            const center = size/2;
+            for(let i = 1; i <= 3; i++) {
+                const offset = (size/2) * (i/3);
+                ctx.beginPath();
+                ctx.moveTo(x + center, y + center - offset);
+                ctx.lineTo(x + center + offset, y + center);
+                ctx.lineTo(x + center, y + center + offset);
+                ctx.lineTo(x + center - offset, y + center);
+                ctx.closePath();
+                ctx.stroke();
+            }
+        },
+
+        // Radiating arcs
+        (x, y, size) => {
+            const center = size/2;
+            const radius = size/3;
+            for(let i = 0; i < 4; i++) {
+                const startAngle = (Math.PI/2) * i;
+                ctx.beginPath();
+                ctx.arc(x + center, y + center, radius, startAngle, startAngle + Math.PI/2);
+                ctx.stroke();
+            }
+        },
+
+        // Stacked semicircles
+        (x, y, size) => {
+            const width = size * 0.8;
+            for(let i = 0; i < 3; i++) {
+                ctx.beginPath();
+                ctx.arc(
+                    x + size/2,
+                    y + (size/3) * (i + 1),
+                    width/2,
+                    0,
+                    Math.PI,
+                    i % 2 === 0
+                );
+                ctx.stroke();
+            }
+        }
+    ]
+};
+
+/**
+ * Layout System
+ * Handles grid layout and composition
+ * @namespace Layout
+ */
+const Layout = {
+    /**
+     * Calculates layout metrics for the grid
+     * @returns {Object} Layout calculations
+     */
+    calculateMetrics: () => {
+        const availableHeight = CONFIG.canvas.height - 
+            (CONFIG.grid.topMargin + CONFIG.grid.bottomMargin);
+        
+        const totalPatternHeight = CONFIG.grid.rows * CONFIG.grid.patternSize;
+        const totalGapHeight = availableHeight - totalPatternHeight;
+        const rowGap = totalGapHeight / (CONFIG.grid.rows - 1);
+        
+        const totalWidth = CONFIG.grid.patternSize * CONFIG.grid.columns;
+        const xOffset = (CONFIG.canvas.width - totalWidth) / 2;
+        
+        return { rowGap, xOffset };
+    },
+
+    /**
+     * Draws a row of patterns
+     */
+    drawRow: (xOffset, y, size) => {
+        const gutter = size * CONFIG.grid.gutterRatio;
+        const patternSize = size * CONFIG.grid.patternRatio;
+        
+        const patterns = Utils.shuffle(patternGenerators);
+        Utils.range(0, CONFIG.grid.columns).forEach(i => {
+            const xPos = xOffset + i * size + gutter;
+            const yPos = y + gutter;
+            patterns[i](xPos, yPos, patternSize);
+        });
+    },
+
+    /**
+     * Draws the complete grid
+     */
+    drawGrid: () => {
+        ctx.clearRect(0, 0, CONFIG.canvas.width, CONFIG.canvas.height);
+        
+        ctx.strokeStyle = CONFIG.style.strokeColor;
+        ctx.lineWidth = CONFIG.style.strokeWidth;
+        
+        const { rowGap, xOffset } = Layout.calculateMetrics();
+        
+        Utils.range(0, CONFIG.grid.rows).forEach(i => {
+            const y = CONFIG.grid.topMargin + 
+                i * (CONFIG.grid.patternSize + rowGap);
+            Layout.drawRow(xOffset, y, CONFIG.grid.patternSize);
+        });
+    }
+};
+
+// Generate pattern instances
+const patternGenerators = Utils.range(0, 10)
+    .map(() => Patterns.createGenerator(
+        Utils.randomChoice(Patterns.types)
+    ));
+
+// Initialize and set up interaction
+Layout.drawGrid();
+canvas.addEventListener('click', Layout.drawGrid);
+
+
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 4.0.3 on Mon Feb 17 2025 15:13:39 GMT-0500 (Eastern Standard Time) +
+ + + + + diff --git a/html/simple-shape/docs/fonts/OpenSans-Bold-webfont.eot b/html/simple-shape/docs/fonts/OpenSans-Bold-webfont.eot new file mode 100644 index 0000000..5d20d91 Binary files /dev/null and b/html/simple-shape/docs/fonts/OpenSans-Bold-webfont.eot differ diff --git a/html/simple-shape/docs/fonts/OpenSans-Bold-webfont.svg b/html/simple-shape/docs/fonts/OpenSans-Bold-webfont.svg new file mode 100644 index 0000000..3ed7be4 --- /dev/null +++ b/html/simple-shape/docs/fonts/OpenSans-Bold-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/html/simple-shape/docs/fonts/OpenSans-Bold-webfont.woff b/html/simple-shape/docs/fonts/OpenSans-Bold-webfont.woff new file mode 100644 index 0000000..1205787 Binary files /dev/null and b/html/simple-shape/docs/fonts/OpenSans-Bold-webfont.woff differ diff --git a/html/simple-shape/docs/fonts/OpenSans-BoldItalic-webfont.eot b/html/simple-shape/docs/fonts/OpenSans-BoldItalic-webfont.eot new file mode 100644 index 0000000..1f639a1 Binary files /dev/null and b/html/simple-shape/docs/fonts/OpenSans-BoldItalic-webfont.eot differ diff --git a/html/simple-shape/docs/fonts/OpenSans-BoldItalic-webfont.svg b/html/simple-shape/docs/fonts/OpenSans-BoldItalic-webfont.svg new file mode 100644 index 0000000..6a2607b --- /dev/null +++ b/html/simple-shape/docs/fonts/OpenSans-BoldItalic-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/html/simple-shape/docs/fonts/OpenSans-BoldItalic-webfont.woff b/html/simple-shape/docs/fonts/OpenSans-BoldItalic-webfont.woff new file mode 100644 index 0000000..ed760c0 Binary files /dev/null and b/html/simple-shape/docs/fonts/OpenSans-BoldItalic-webfont.woff differ diff --git a/html/simple-shape/docs/fonts/OpenSans-Italic-webfont.eot b/html/simple-shape/docs/fonts/OpenSans-Italic-webfont.eot new file mode 100644 index 0000000..0c8a0ae Binary files /dev/null and b/html/simple-shape/docs/fonts/OpenSans-Italic-webfont.eot differ diff --git a/html/simple-shape/docs/fonts/OpenSans-Italic-webfont.svg b/html/simple-shape/docs/fonts/OpenSans-Italic-webfont.svg new file mode 100644 index 0000000..e1075dc --- /dev/null +++ b/html/simple-shape/docs/fonts/OpenSans-Italic-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/html/simple-shape/docs/fonts/OpenSans-Italic-webfont.woff b/html/simple-shape/docs/fonts/OpenSans-Italic-webfont.woff new file mode 100644 index 0000000..ff652e6 Binary files /dev/null and b/html/simple-shape/docs/fonts/OpenSans-Italic-webfont.woff differ diff --git a/html/simple-shape/docs/fonts/OpenSans-Light-webfont.eot b/html/simple-shape/docs/fonts/OpenSans-Light-webfont.eot new file mode 100644 index 0000000..1486840 Binary files /dev/null and b/html/simple-shape/docs/fonts/OpenSans-Light-webfont.eot differ diff --git a/html/simple-shape/docs/fonts/OpenSans-Light-webfont.svg b/html/simple-shape/docs/fonts/OpenSans-Light-webfont.svg new file mode 100644 index 0000000..11a472c --- /dev/null +++ b/html/simple-shape/docs/fonts/OpenSans-Light-webfont.svg @@ -0,0 +1,1831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/html/simple-shape/docs/fonts/OpenSans-Light-webfont.woff b/html/simple-shape/docs/fonts/OpenSans-Light-webfont.woff new file mode 100644 index 0000000..e786074 Binary files /dev/null and b/html/simple-shape/docs/fonts/OpenSans-Light-webfont.woff differ diff --git a/html/simple-shape/docs/fonts/OpenSans-LightItalic-webfont.eot b/html/simple-shape/docs/fonts/OpenSans-LightItalic-webfont.eot new file mode 100644 index 0000000..8f44592 Binary files /dev/null and b/html/simple-shape/docs/fonts/OpenSans-LightItalic-webfont.eot differ diff --git a/html/simple-shape/docs/fonts/OpenSans-LightItalic-webfont.svg b/html/simple-shape/docs/fonts/OpenSans-LightItalic-webfont.svg new file mode 100644 index 0000000..431d7e3 --- /dev/null +++ b/html/simple-shape/docs/fonts/OpenSans-LightItalic-webfont.svg @@ -0,0 +1,1835 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/html/simple-shape/docs/fonts/OpenSans-LightItalic-webfont.woff b/html/simple-shape/docs/fonts/OpenSans-LightItalic-webfont.woff new file mode 100644 index 0000000..43e8b9e Binary files /dev/null and b/html/simple-shape/docs/fonts/OpenSans-LightItalic-webfont.woff differ diff --git a/html/simple-shape/docs/fonts/OpenSans-Regular-webfont.eot b/html/simple-shape/docs/fonts/OpenSans-Regular-webfont.eot new file mode 100644 index 0000000..6bbc3cf Binary files /dev/null and b/html/simple-shape/docs/fonts/OpenSans-Regular-webfont.eot differ diff --git a/html/simple-shape/docs/fonts/OpenSans-Regular-webfont.svg b/html/simple-shape/docs/fonts/OpenSans-Regular-webfont.svg new file mode 100644 index 0000000..25a3952 --- /dev/null +++ b/html/simple-shape/docs/fonts/OpenSans-Regular-webfont.svg @@ -0,0 +1,1831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/html/simple-shape/docs/fonts/OpenSans-Regular-webfont.woff b/html/simple-shape/docs/fonts/OpenSans-Regular-webfont.woff new file mode 100644 index 0000000..e231183 Binary files /dev/null and b/html/simple-shape/docs/fonts/OpenSans-Regular-webfont.woff differ diff --git a/html/simple-shape/docs/global.html b/html/simple-shape/docs/global.html new file mode 100644 index 0000000..852af9d --- /dev/null +++ b/html/simple-shape/docs/global.html @@ -0,0 +1,265 @@ + + + + + JSDoc: Global + + + + + + + + + + +
+ +

Global

+ + + + + + +
+ +
+ +

+ + +
+ +
+
+ + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + +
+ + + + + + + + + + + + + + +

Members

+ + + +

(constant) CONFIG :Object

+ + + + +
+ Configuration object for application-wide settings +Centralizes magic numbers and configuration values +
+ + + +
Type:
+
    +
  • + +Object + + +
  • +
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + +

(constant) canvas

+ + + + +
+ Canvas Setup and Configuration +This section initializes a high-resolution canvas optimized for both screen display and printing. +
+ + + + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Source:
+
+ + + + + + + +
+ + + + + + + + + + + + + + +
+ +
+ + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 4.0.3 on Mon Feb 17 2025 15:13:39 GMT-0500 (Eastern Standard Time) +
+ + + + + \ No newline at end of file diff --git a/html/simple-shape/docs/index.html b/html/simple-shape/docs/index.html new file mode 100644 index 0000000..c8415cd --- /dev/null +++ b/html/simple-shape/docs/index.html @@ -0,0 +1,65 @@ + + + + + JSDoc: Home + + + + + + + + + + +
+ +

Home

+ + + + + + + + +

+ + + + + + + + + + + + + + + + + + + + +
+ + + +
+ +
+ Documentation generated by JSDoc 4.0.3 on Mon Feb 17 2025 15:13:39 GMT-0500 (Eastern Standard Time) +
+ + + + + \ No newline at end of file diff --git a/html/simple-shape/docs/scripts/linenumber.js b/html/simple-shape/docs/scripts/linenumber.js new file mode 100644 index 0000000..4354785 --- /dev/null +++ b/html/simple-shape/docs/scripts/linenumber.js @@ -0,0 +1,25 @@ +/*global document */ +(() => { + const source = document.getElementsByClassName('prettyprint source linenums'); + let i = 0; + let lineNumber = 0; + let lineId; + let lines; + let totalLines; + let anchorHash; + + if (source && source[0]) { + anchorHash = document.location.hash.substring(1); + lines = source[0].getElementsByTagName('li'); + totalLines = lines.length; + + for (; i < totalLines; i++) { + lineNumber++; + lineId = `line${lineNumber}`; + lines[i].id = lineId; + if (lineId === anchorHash) { + lines[i].className += ' selected'; + } + } + } +})(); diff --git a/html/simple-shape/docs/scripts/prettify/Apache-License-2.0.txt b/html/simple-shape/docs/scripts/prettify/Apache-License-2.0.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/html/simple-shape/docs/scripts/prettify/Apache-License-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/html/simple-shape/docs/scripts/prettify/lang-css.js b/html/simple-shape/docs/scripts/prettify/lang-css.js new file mode 100644 index 0000000..041e1f5 --- /dev/null +++ b/html/simple-shape/docs/scripts/prettify/lang-css.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", +/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); diff --git a/html/simple-shape/docs/scripts/prettify/prettify.js b/html/simple-shape/docs/scripts/prettify/prettify.js new file mode 100644 index 0000000..eef5ad7 --- /dev/null +++ b/html/simple-shape/docs/scripts/prettify/prettify.js @@ -0,0 +1,28 @@ +var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; +(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= +[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), +l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, +q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, +q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, +"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), +a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} +for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], +H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], +J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ +I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), +["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", +/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), +["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", +hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= +!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}p th:last-child { border-right: 1px solid #ddd; } + +.ancestors, .attribs { color: #999; } +.ancestors a, .attribs a +{ + color: #999 !important; + text-decoration: none; +} + +.clear +{ + clear: both; +} + +.important +{ + font-weight: bold; + color: #950B02; +} + +.yes-def { + text-indent: -1000px; +} + +.type-signature { + color: #aaa; +} + +.name, .signature { + font-family: Consolas, Monaco, 'Andale Mono', monospace; +} + +.details { margin-top: 14px; border-left: 2px solid #DDD; } +.details dt { width: 120px; float: left; padding-left: 10px; padding-top: 6px; } +.details dd { margin-left: 70px; } +.details ul { margin: 0; } +.details ul { list-style-type: none; } +.details li { margin-left: 30px; padding-top: 6px; } +.details pre.prettyprint { margin: 0 } +.details .object-value { padding-top: 0; } + +.description { + margin-bottom: 1em; + margin-top: 1em; +} + +.code-caption +{ + font-style: italic; + font-size: 107%; + margin: 0; +} + +.source +{ + border: 1px solid #ddd; + width: 80%; + overflow: auto; +} + +.prettyprint.source { + width: inherit; +} + +.source code +{ + font-size: 100%; + line-height: 18px; + display: block; + padding: 4px 12px; + margin: 0; + background-color: #fff; + color: #4D4E53; +} + +.prettyprint code span.line +{ + display: inline-block; +} + +.prettyprint.linenums +{ + padding-left: 70px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.prettyprint.linenums ol +{ + padding-left: 0; +} + +.prettyprint.linenums li +{ + border-left: 3px #ddd solid; +} + +.prettyprint.linenums li.selected, +.prettyprint.linenums li.selected * +{ + background-color: lightyellow; +} + +.prettyprint.linenums li * +{ + -webkit-user-select: text; + -moz-user-select: text; + -ms-user-select: text; + user-select: text; +} + +.params .name, .props .name, .name code { + color: #4D4E53; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 100%; +} + +.params td.description > p:first-child, +.props td.description > p:first-child +{ + margin-top: 0; + padding-top: 0; +} + +.params td.description > p:last-child, +.props td.description > p:last-child +{ + margin-bottom: 0; + padding-bottom: 0; +} + +.disabled { + color: #454545; +} diff --git a/html/simple-shape/docs/styles/prettify-jsdoc.css b/html/simple-shape/docs/styles/prettify-jsdoc.css new file mode 100644 index 0000000..5a2526e --- /dev/null +++ b/html/simple-shape/docs/styles/prettify-jsdoc.css @@ -0,0 +1,111 @@ +/* JSDoc prettify.js theme */ + +/* plain text */ +.pln { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* string content */ +.str { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a keyword */ +.kwd { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a comment */ +.com { + font-weight: normal; + font-style: italic; +} + +/* a type name */ +.typ { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a literal value */ +.lit { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* punctuation */ +.pun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp open bracket */ +.opn { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp close bracket */ +.clo { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a markup tag name */ +.tag { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute name */ +.atn { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute value */ +.atv { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a declaration */ +.dec { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a variable name */ +.var { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a function name */ +.fun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; +} diff --git a/html/simple-shape/docs/styles/prettify-tomorrow.css b/html/simple-shape/docs/styles/prettify-tomorrow.css new file mode 100644 index 0000000..b6f92a7 --- /dev/null +++ b/html/simple-shape/docs/styles/prettify-tomorrow.css @@ -0,0 +1,132 @@ +/* Tomorrow Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* Pretty printing styles. Used with prettify.js. */ +/* SPAN elements with the classes below are added by prettyprint. */ +/* plain text */ +.pln { + color: #4d4d4c; } + +@media screen { + /* string content */ + .str { + color: #718c00; } + + /* a keyword */ + .kwd { + color: #8959a8; } + + /* a comment */ + .com { + color: #8e908c; } + + /* a type name */ + .typ { + color: #4271ae; } + + /* a literal value */ + .lit { + color: #f5871f; } + + /* punctuation */ + .pun { + color: #4d4d4c; } + + /* lisp open bracket */ + .opn { + color: #4d4d4c; } + + /* lisp close bracket */ + .clo { + color: #4d4d4c; } + + /* a markup tag name */ + .tag { + color: #c82829; } + + /* a markup attribute name */ + .atn { + color: #f5871f; } + + /* a markup attribute value */ + .atv { + color: #3e999f; } + + /* a declaration */ + .dec { + color: #f5871f; } + + /* a variable name */ + .var { + color: #c82829; } + + /* a function name */ + .fun { + color: #4271ae; } } +/* Use higher contrast and text-weight for printable form. */ +@media print, projection { + .str { + color: #060; } + + .kwd { + color: #006; + font-weight: bold; } + + .com { + color: #600; + font-style: italic; } + + .typ { + color: #404; + font-weight: bold; } + + .lit { + color: #044; } + + .pun, .opn, .clo { + color: #440; } + + .tag { + color: #006; + font-weight: bold; } + + .atn { + color: #404; } + + .atv { + color: #060; } } +/* Style */ +/* +pre.prettyprint { + background: white; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 12px; + line-height: 1.5; + border: 1px solid #ccc; + padding: 10px; } +*/ + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; } + +/* IE indents via margin-left */ +li.L0, +li.L1, +li.L2, +li.L3, +li.L4, +li.L5, +li.L6, +li.L7, +li.L8, +li.L9 { + /* */ } + +/* Alternate shading for lines */ +li.L1, +li.L3, +li.L5, +li.L7, +li.L9 { + /* */ } diff --git a/html/simple-shape/index.html b/html/simple-shape/index.html index 4e4fa49..91a68a3 100644 --- a/html/simple-shape/index.html +++ b/html/simple-shape/index.html @@ -53,471 +53,6 @@
- + \ No newline at end of file -- cgit 1.4.1-2-gfad0