From feb843d699c78855064244291433973ae32d93c4 Mon Sep 17 00:00:00 2001 From: Simon Fraser Date: Tue, 22 Oct 2024 10:28:43 -0700 Subject: [PATCH 1/4] Add a tentative new canvas subtest, which exercises more of the 2D canvas API, intended to subsume Arcs, Paths and Lines. --- MotionMark/resources/debug-runner/tests.js | 9 + .../tests/dev/radial-chart/Description.md | 37 ++ .../tests/dev/radial-chart/radial-chart.html | 48 ++ .../resources/departements-region.json | 507 ++++++++++++++++ .../resources/department-shields/Ain.png | Bin 0 -> 159732 bytes .../resources/department-shields/Ain.svg | 1 + .../radial-chart/resources/radial-chart.js | 566 ++++++++++++++++++ 7 files changed, 1168 insertions(+) create mode 100644 MotionMark/tests/dev/radial-chart/Description.md create mode 100644 MotionMark/tests/dev/radial-chart/radial-chart.html create mode 100644 MotionMark/tests/dev/radial-chart/resources/departements-region.json create mode 100644 MotionMark/tests/dev/radial-chart/resources/department-shields/Ain.png create mode 100644 MotionMark/tests/dev/radial-chart/resources/department-shields/Ain.svg create mode 100644 MotionMark/tests/dev/radial-chart/resources/radial-chart.js diff --git a/MotionMark/resources/debug-runner/tests.js b/MotionMark/resources/debug-runner/tests.js index f48d0b1..1203d4c 100644 --- a/MotionMark/resources/debug-runner/tests.js +++ b/MotionMark/resources/debug-runner/tests.js @@ -456,3 +456,12 @@ Suites.push(new Suite("Basic canvas path suite", } ] )); + +Suites.push(new Suite("Dev suite", + [ + { + url: "dev/radial-chart/radial-chart.html", + name: "Canvas Radial Chart" + } + ] +)); diff --git a/MotionMark/tests/dev/radial-chart/Description.md b/MotionMark/tests/dev/radial-chart/Description.md new file mode 100644 index 0000000..4c57419 --- /dev/null +++ b/MotionMark/tests/dev/radial-chart/Description.md @@ -0,0 +1,37 @@ +# Canvas Radial Chart + +Goals +----- + +A single canvas test that exercises much of the canvas 2D API, replacing `Paths`, `Arcs` and `Lines`. + + +Design +------ + +A radial chart. Unit of work is a chart "segment". With higher complexities, more rings of segments are created. + + +Features tested +--------------- + +* text drawing +* image drawing +* lines, arcs, curves +* clipping to a path +* gradients + + +Work per measued frame +---------------------- + +Redraw of the entire canvas + + +Remaining work +-------------- + +* Add images for the rest of the deparements +* Address some overlapping text issues + + diff --git a/MotionMark/tests/dev/radial-chart/radial-chart.html b/MotionMark/tests/dev/radial-chart/radial-chart.html new file mode 100644 index 0000000..410b421 --- /dev/null +++ b/MotionMark/tests/dev/radial-chart/radial-chart.html @@ -0,0 +1,48 @@ + + + + + + + + + +
+ +
+ + + + + + + + diff --git a/MotionMark/tests/dev/radial-chart/resources/departements-region.json b/MotionMark/tests/dev/radial-chart/resources/departements-region.json new file mode 100644 index 0000000..64a473f --- /dev/null +++ b/MotionMark/tests/dev/radial-chart/resources/departements-region.json @@ -0,0 +1,507 @@ +[ + { + "num_dep": "01", + "dep_name": "Ain", + "region_name": "Auvergne-Rhône-Alpes" + }, + { + "num_dep": "02", + "dep_name": "Aisne", + "region_name": "Hauts-de-France" + }, + { + "num_dep": "03", + "dep_name": "Allier", + "region_name": "Auvergne-Rhône-Alpes" + }, + { + "num_dep": "04", + "dep_name": "Alpes-de-Haute-Provence", + "region_name": "Provence-Alpes-Côte d'Azur" + }, + { + "num_dep": "05", + "dep_name": "Hautes-Alpes", + "region_name": "Provence-Alpes-Côte d'Azur" + }, + { + "num_dep": "06", + "dep_name": "Alpes-Maritimes", + "region_name": "Provence-Alpes-Côte d'Azur" + }, + { + "num_dep": "07", + "dep_name": "Ardèche", + "region_name": "Auvergne-Rhône-Alpes" + }, + { + "num_dep": "08", + "dep_name": "Ardennes", + "region_name": "Grand Est" + }, + { + "num_dep": "09", + "dep_name": "Ariège", + "region_name": "Occitanie" + }, + { + "num_dep": 10, + "dep_name": "Aube", + "region_name": "Grand Est" + }, + { + "num_dep": 11, + "dep_name": "Aude", + "region_name": "Occitanie" + }, + { + "num_dep": 12, + "dep_name": "Aveyron", + "region_name": "Occitanie" + }, + { + "num_dep": 13, + "dep_name": "Bouches-du-Rhône", + "region_name": "Provence-Alpes-Côte d'Azur" + }, + { + "num_dep": 14, + "dep_name": "Calvados", + "region_name": "Normandie" + }, + { + "num_dep": 15, + "dep_name": "Cantal", + "region_name": "Auvergne-Rhône-Alpes" + }, + { + "num_dep": 16, + "dep_name": "Charente", + "region_name": "Nouvelle-Aquitaine" + }, + { + "num_dep": 17, + "dep_name": "Charente-Maritime", + "region_name": "Nouvelle-Aquitaine" + }, + { + "num_dep": 18, + "dep_name": "Cher", + "region_name": "Centre-Val de Loire" + }, + { + "num_dep": 19, + "dep_name": "Corrèze", + "region_name": "Nouvelle-Aquitaine" + }, + { + "num_dep": 21, + "dep_name": "Côte-d'Or", + "region_name": "Bourgogne-Franche-Comté" + }, + { + "num_dep": 22, + "dep_name": "Côtes-d'Armor", + "region_name": "Bretagne" + }, + { + "num_dep": 23, + "dep_name": "Creuse", + "region_name": "Nouvelle-Aquitaine" + }, + { + "num_dep": 24, + "dep_name": "Dordogne", + "region_name": "Nouvelle-Aquitaine" + }, + { + "num_dep": 25, + "dep_name": "Doubs", + "region_name": "Bourgogne-Franche-Comté" + }, + { + "num_dep": 26, + "dep_name": "Drôme", + "region_name": "Auvergne-Rhône-Alpes" + }, + { + "num_dep": 27, + "dep_name": "Eure", + "region_name": "Normandie" + }, + { + "num_dep": 28, + "dep_name": "Eure-et-Loir", + "region_name": "Centre-Val de Loire" + }, + { + "num_dep": 29, + "dep_name": "Finistère", + "region_name": "Bretagne" + }, + { + "num_dep": "2A", + "dep_name": "Corse-du-Sud", + "region_name": "Corse" + }, + { + "num_dep": "2B", + "dep_name": "Haute-Corse", + "region_name": "Corse" + }, + { + "num_dep": 30, + "dep_name": "Gard", + "region_name": "Occitanie" + }, + { + "num_dep": 31, + "dep_name": "Haute-Garonne", + "region_name": "Occitanie" + }, + { + "num_dep": 32, + "dep_name": "Gers", + "region_name": "Occitanie" + }, + { + "num_dep": 33, + "dep_name": "Gironde", + "region_name": "Nouvelle-Aquitaine" + }, + { + "num_dep": 34, + "dep_name": "Hérault", + "region_name": "Occitanie" + }, + { + "num_dep": 35, + "dep_name": "Ille-et-Vilaine", + "region_name": "Bretagne" + }, + { + "num_dep": 36, + "dep_name": "Indre", + "region_name": "Centre-Val de Loire" + }, + { + "num_dep": 37, + "dep_name": "Indre-et-Loire", + "region_name": "Centre-Val de Loire" + }, + { + "num_dep": 38, + "dep_name": "Isère", + "region_name": "Auvergne-Rhône-Alpes" + }, + { + "num_dep": 39, + "dep_name": "Jura", + "region_name": "Bourgogne-Franche-Comté" + }, + { + "num_dep": 40, + "dep_name": "Landes", + "region_name": "Nouvelle-Aquitaine" + }, + { + "num_dep": 41, + "dep_name": "Loir-et-Cher", + "region_name": "Centre-Val de Loire" + }, + { + "num_dep": 42, + "dep_name": "Loire", + "region_name": "Auvergne-Rhône-Alpes" + }, + { + "num_dep": 43, + "dep_name": "Haute-Loire", + "region_name": "Auvergne-Rhône-Alpes" + }, + { + "num_dep": 44, + "dep_name": "Loire-Atlantique", + "region_name": "Pays de la Loire" + }, + { + "num_dep": 45, + "dep_name": "Loiret", + "region_name": "Centre-Val de Loire" + }, + { + "num_dep": 46, + "dep_name": "Lot", + "region_name": "Occitanie" + }, + { + "num_dep": 47, + "dep_name": "Lot-et-Garonne", + "region_name": "Nouvelle-Aquitaine" + }, + { + "num_dep": 48, + "dep_name": "Lozère", + "region_name": "Occitanie" + }, + { + "num_dep": 49, + "dep_name": "Maine-et-Loire", + "region_name": "Pays de la Loire" + }, + { + "num_dep": 50, + "dep_name": "Manche", + "region_name": "Normandie" + }, + { + "num_dep": 51, + "dep_name": "Marne", + "region_name": "Grand Est" + }, + { + "num_dep": 52, + "dep_name": "Haute-Marne", + "region_name": "Grand Est" + }, + { + "num_dep": 53, + "dep_name": "Mayenne", + "region_name": "Pays de la Loire" + }, + { + "num_dep": 54, + "dep_name": "Meurthe-et-Moselle", + "region_name": "Grand Est" + }, + { + "num_dep": 55, + "dep_name": "Meuse", + "region_name": "Grand Est" + }, + { + "num_dep": 56, + "dep_name": "Morbihan", + "region_name": "Bretagne" + }, + { + "num_dep": 57, + "dep_name": "Moselle", + "region_name": "Grand Est" + }, + { + "num_dep": 58, + "dep_name": "Nièvre", + "region_name": "Bourgogne-Franche-Comté" + }, + { + "num_dep": 59, + "dep_name": "Nord", + "region_name": "Hauts-de-France" + }, + { + "num_dep": 60, + "dep_name": "Oise", + "region_name": "Hauts-de-France" + }, + { + "num_dep": 61, + "dep_name": "Orne", + "region_name": "Normandie" + }, + { + "num_dep": 62, + "dep_name": "Pas-de-Calais", + "region_name": "Hauts-de-France" + }, + { + "num_dep": 63, + "dep_name": "Puy-de-Dôme", + "region_name": "Auvergne-Rhône-Alpes" + }, + { + "num_dep": 64, + "dep_name": "Pyrénées-Atlantiques", + "region_name": "Nouvelle-Aquitaine" + }, + { + "num_dep": 65, + "dep_name": "Hautes-Pyrénées", + "region_name": "Occitanie" + }, + { + "num_dep": 66, + "dep_name": "Pyrénées-Orientales", + "region_name": "Occitanie" + }, + { + "num_dep": 67, + "dep_name": "Bas-Rhin", + "region_name": "Grand Est" + }, + { + "num_dep": 68, + "dep_name": "Haut-Rhin", + "region_name": "Grand Est" + }, + { + "num_dep": 69, + "dep_name": "Rhône", + "region_name": "Auvergne-Rhône-Alpes" + }, + { + "num_dep": 70, + "dep_name": "Haute-Saône", + "region_name": "Bourgogne-Franche-Comté" + }, + { + "num_dep": 71, + "dep_name": "Saône-et-Loire", + "region_name": "Bourgogne-Franche-Comté" + }, + { + "num_dep": 72, + "dep_name": "Sarthe", + "region_name": "Pays de la Loire" + }, + { + "num_dep": 73, + "dep_name": "Savoie", + "region_name": "Auvergne-Rhône-Alpes" + }, + { + "num_dep": 74, + "dep_name": "Haute-Savoie", + "region_name": "Auvergne-Rhône-Alpes" + }, + { + "num_dep": 75, + "dep_name": "Paris", + "region_name": "Île-de-France" + }, + { + "num_dep": 76, + "dep_name": "Seine-Maritime", + "region_name": "Normandie" + }, + { + "num_dep": 77, + "dep_name": "Seine-et-Marne", + "region_name": "Île-de-France" + }, + { + "num_dep": 78, + "dep_name": "Yvelines", + "region_name": "Île-de-France" + }, + { + "num_dep": 79, + "dep_name": "Deux-Sèvres", + "region_name": "Nouvelle-Aquitaine" + }, + { + "num_dep": 80, + "dep_name": "Somme", + "region_name": "Hauts-de-France" + }, + { + "num_dep": 81, + "dep_name": "Tarn", + "region_name": "Occitanie" + }, + { + "num_dep": 82, + "dep_name": "Tarn-et-Garonne", + "region_name": "Occitanie" + }, + { + "num_dep": 83, + "dep_name": "Var", + "region_name": "Provence-Alpes-Côte d'Azur" + }, + { + "num_dep": 84, + "dep_name": "Vaucluse", + "region_name": "Provence-Alpes-Côte d'Azur" + }, + { + "num_dep": 85, + "dep_name": "Vendée", + "region_name": "Pays de la Loire" + }, + { + "num_dep": 86, + "dep_name": "Vienne", + "region_name": "Nouvelle-Aquitaine" + }, + { + "num_dep": 87, + "dep_name": "Haute-Vienne", + "region_name": "Nouvelle-Aquitaine" + }, + { + "num_dep": 88, + "dep_name": "Vosges", + "region_name": "Grand Est" + }, + { + "num_dep": 89, + "dep_name": "Yonne", + "region_name": "Bourgogne-Franche-Comté" + }, + { + "num_dep": 90, + "dep_name": "Territoire de Belfort", + "region_name": "Bourgogne-Franche-Comté" + }, + { + "num_dep": 91, + "dep_name": "Essonne", + "region_name": "Île-de-France" + }, + { + "num_dep": 92, + "dep_name": "Hauts-de-Seine", + "region_name": "Île-de-France" + }, + { + "num_dep": 93, + "dep_name": "Seine-Saint-Denis", + "region_name": "Île-de-France" + }, + { + "num_dep": 94, + "dep_name": "Val-de-Marne", + "region_name": "Île-de-France" + }, + { + "num_dep": 95, + "dep_name": "Val-d'Oise", + "region_name": "Île-de-France" + }, + { + "num_dep": 971, + "dep_name": "Guadeloupe", + "region_name": "Guadeloupe" + }, + { + "num_dep": 972, + "dep_name": "Martinique", + "region_name": "Martinique" + }, + { + "num_dep": 973, + "dep_name": "Guyane", + "region_name": "Guyane" + }, + { + "num_dep": 974, + "dep_name": "La Réunion", + "region_name": "La Réunion" + }, + { + "num_dep": 976, + "dep_name": "Mayotte", + "region_name": "Mayotte" + } +] \ No newline at end of file diff --git a/MotionMark/tests/dev/radial-chart/resources/department-shields/Ain.png b/MotionMark/tests/dev/radial-chart/resources/department-shields/Ain.png new file mode 100644 index 0000000000000000000000000000000000000000..4e8e04a41e90ef1f5d0ae04dd221211d17cb1b07 GIT binary patch literal 159732 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 y)%;UP?Hu*Li!5nT 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 Hcl7@N4n39q literal 0 HcmV?d00001 diff --git a/MotionMark/tests/dev/radial-chart/resources/department-shields/Ain.svg b/MotionMark/tests/dev/radial-chart/resources/department-shields/Ain.svg new file mode 100644 index 0000000..959443b --- /dev/null +++ b/MotionMark/tests/dev/radial-chart/resources/department-shields/Ain.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/MotionMark/tests/dev/radial-chart/resources/radial-chart.js b/MotionMark/tests/dev/radial-chart/resources/radial-chart.js new file mode 100644 index 0000000..ca87f23 --- /dev/null +++ b/MotionMark/tests/dev/radial-chart/resources/radial-chart.js @@ -0,0 +1,566 @@ +/* + * Copyright (C) 2015-2024 Apple Inc. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' + * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, + * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR + * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS + * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN + * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) + * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF + * THE POSSIBILITY OF SUCH DAMAGE. + */ + +// Move to shared code +class Size { + constructor(width, height) + { + this.width = width; + this.height = height; + } +} + + +// To be moved. +class MathHelpers { + static random(min, max) + { + return min + Pseudo.random() * (max - min); + } + + static rotatingColor(hueOffset, cycleLengthMs, saturation, lightness) + { + return "hsl(" + + MathHelpers.dateFractionalValue(cycleLengthMs, hueOffset) * 360 + ", " + + ((saturation || .8) * 100).toFixed(0) + "%, " + + ((lightness || .35) * 100).toFixed(0) + "%)"; + } + + // Returns a fractional value that wraps around within [0,1] + static dateFractionalValue(cycleLengthMs, offset) + { + return (offset + Date.now() / (cycleLengthMs || 2000)) % 1; + } +} + +class ItemData { + constructor(deptNumber, label, imageURL) + { + this.deptNumber = deptNumber; + this.label = label; + this.imageURL = imageURL; + + this.hueOffset = MathHelpers.random(0.1, 0.2); + this.colorLightness = MathHelpers.random(0.5, 0.7); + this.colorSaturation = MathHelpers.random(0.2, 0.5); + } + + loadImage() + { + return new Promise(resolve => { + this.image = new Image(); + this.image.onload = resolve; + this.image.src = this.imageURL; + }); + } +} + +class RandomWalk { + constructor(min, max, stepFraction) + { + this.min = min; + this.max = max; + this.stepFraction = stepFraction; + this.value = MathHelpers.random(this.min, this.max); + } + + nextValue() + { + const scale = (this.max - this.min) * this.stepFraction; + const delta = scale * 2 * (Pseudo.random() - 0.5); + this.value = Math.max(Math.min(this.value + delta, this.max), this.min); + return this.value; + } +} + +class SmoothWalk { + static timeOrigin; + constructor(min, max) + { + this.min = min; + this.max = max; + + const minWaveLength = 200; + const maxWaveLength = 2000; + + const amplitudeMin = 0.2; + const amplitudeMax = 1; + // We superimpose some sin functions to generate the values. + this.wave1Phase = Pseudo.random(); + this.wave1Length = MathHelpers.random(minWaveLength, maxWaveLength); + this.wave1Amplitude = MathHelpers.random(amplitudeMin, amplitudeMax); + + this.wave2Phase = Pseudo.random(); + this.wave2Length = MathHelpers.random(minWaveLength, maxWaveLength); + this.wave2Amplitude = MathHelpers.random(amplitudeMin, amplitudeMax); + + this.wave3Phase = Pseudo.random(); + this.wave3Length = MathHelpers.random(minWaveLength, maxWaveLength); + this.wave3Amplitude = MathHelpers.random(amplitudeMin, amplitudeMax); + + if (!SmoothWalk.timeOrigin) + SmoothWalk.timeOrigin = new Date(); + } + + nextValue() + { + this.value = this.#computeValue(); + return this.value; + } + + #computeValue() + { + const elapsedTime = Date.now() - SmoothWalk.timeOrigin; + const wave1Value = this.wave1Amplitude * (0.5 + Math.sin(this.wave1Amplitude + elapsedTime / this.wave1Length) / 2); + const wave2Value = this.wave2Amplitude * (0.5 + Math.sin(this.wave2Amplitude + elapsedTime / this.wave2Length) / 2); + const wave3Value = this.wave3Amplitude * (0.5 + Math.sin(this.wave3Amplitude + elapsedTime / this.wave3Length) / 2); + + return this.min + (this.max - this.min) * (wave1Value + wave2Value + wave3Value) / (this.wave1Amplitude + this.wave2Amplitude + this.wave3Amplitude); + } +} + +const TwoPI = Math.PI * 2; +const Clockwise = false; +const CounterClockwise = true; + +class RadialChart { + constructor(stage, center, innerRadius, outerRadius) + { + this.stage = stage; + this.center = center; + this.innerRadius = innerRadius; + this.outerRadius = outerRadius; + this._values = []; + this.#computeDimensions(); + + this.complexity = 1; + } + + get complexity() + { + return this._complexity; + } + + set complexity(value) + { + this._complexity = value; + if (this._complexity < this._values.length) { + this._values.length = this._complexity; + return; + } + + const startIndex = this._values.length; + for (let i = startIndex; i < this._complexity; ++i) + this._values.push(new SmoothWalk(this.innerRadius, this.outerRadius, 1 / 100)); + } + + draw(ctx) + { + this.numSpokes = this._complexity - 1; + this.wedgeAngleRadians = TwoPI / this.numSpokes; + this.angleOffsetRadians = Math.PI / 2; // Start at the top, rather than the right. + + for (let i = 0; i < this.numSpokes; ++i) { + const instance = this.stage.instanceForIndex(i); + + this.#drawWedge(ctx, i, instance); + this.#drawBadge(ctx, i, instance); + this.#drawWedgeLabels(ctx, i, instance); + } + + this.#drawGraphAxes(ctx); + } + + #computeDimensions() + { + + } + + #drawGraphAxes(ctx) + { + ctx.strokeStyle = 'black'; + ctx.lineWidth = 0.5; + ctx.beginPath(); + ctx.arc(this.center.x, this.center.y, this.innerRadius, 0, TwoPI, Clockwise); + ctx.stroke(); + + ctx.beginPath(); + ctx.arc(this.center.x, this.center.y, this.outerRadius, 0, TwoPI, Clockwise); + ctx.stroke(); + + for (let i = 0; i < this.numSpokes; ++i) { + const angleRadians = this.#wedgeStartAngle(i); + + const startPoint = this.center.add(GeometryHelpers.createPointOnCircle(angleRadians, this.innerRadius)); + const endPoint = this.center.add(GeometryHelpers.createPointOnCircle(angleRadians, this.outerRadius)); + + ctx.beginPath(); + ctx.moveTo(startPoint.x, startPoint.y); + ctx.lineTo(endPoint.x, endPoint.y); + ctx.stroke(); + } + } + + #wedgeStartAngle(index) + { + return index * this.wedgeAngleRadians - this.angleOffsetRadians; + } + + #pathForWedge(index, outerRadius) + { + const startAngleRadians = this.#wedgeStartAngle(index); + const endAngleRadians = startAngleRadians + this.wedgeAngleRadians; + + const path = new Path2D(); + + const firstStartPoint = this.center.add(GeometryHelpers.createPointOnCircle(startAngleRadians, this.innerRadius)); + const firstEndPoint = this.center.add(GeometryHelpers.createPointOnCircle(startAngleRadians, outerRadius)); + + path.moveTo(firstStartPoint.x, firstStartPoint.y); + path.lineTo(firstEndPoint.x, firstEndPoint.y); + + path.arc(this.center.x, this.center.y, outerRadius, startAngleRadians, endAngleRadians, Clockwise); + + const secondEndPoint = this.center.add(GeometryHelpers.createPointOnCircle(endAngleRadians, this.innerRadius)); + path.lineTo(secondEndPoint.x, secondEndPoint.y); + path.arc(this.center.x, this.center.y, this.innerRadius, endAngleRadians, startAngleRadians, CounterClockwise); + path.closePath(); + + return path; + } + + #drawWedge(ctx, index, instance) + { + const outerRadius = this._values[index].nextValue(); + const wedgePath = this.#pathForWedge(index, outerRadius); + + const gradient = ctx.createRadialGradient(this.center.x, this.center.y, this.innerRadius, this.center.x, this.center.y, outerRadius); + + const colorCycleLengthMS = 1200; + gradient.addColorStop(0, MathHelpers.rotatingColor(instance.hueOffset, colorCycleLengthMS, instance.colorSaturation, instance.colorLightness)); + gradient.addColorStop(0.9, MathHelpers.rotatingColor(instance.hueOffset + 0.4, colorCycleLengthMS, instance.colorSaturation, instance.colorLightness)); + + ctx.fillStyle = gradient; + ctx.fill(wedgePath); + } + + #drawWedgeLabels(ctx, index, instance) + { + const midAngleRadians = this.#wedgeStartAngle(index) + 0.5 * this.wedgeAngleRadians; + + const textInset = 15; + const textCenterPoint = this.center.add(GeometryHelpers.createPointOnCircle(midAngleRadians, this.innerRadius - textInset)); + + const labelAngle = midAngleRadians + Math.PI / 2; + + ctx.save(); + ctx.font = '12px sans-serif'; + ctx.fillStyle = 'black'; + + ctx.translate(textCenterPoint.x, textCenterPoint.y); + ctx.rotate(labelAngle); + + const textSize = ctx.measureText(instance.deptNumber); + ctx.fillText(instance.deptNumber, -textSize.width / 2, 0); + ctx.restore(); + + const textLabelGap = 5; + const outerLabelLocation = this.center.add(GeometryHelpers.createPointOnCircle(midAngleRadians, this.outerRadius + textLabelGap)); + + ctx.save(); + + ctx.translate(outerLabelLocation.x, outerLabelLocation.y); + ctx.rotate(midAngleRadians + Math.PI / 2 - 0.5); + + ctx.font = '12px sans-serif'; + ctx.fillStyle = 'black'; + ctx.fillText(instance.label, 0, 0); + ctx.restore(); + + // const wedgeArrowEnd = this.center.add(GeometryHelpers.createPointOnCircle(midAngleRadians, this.outerRadius)); + // const arrowPath = this.#pathForArrow(outerLabelLocation, wedgeArrowEnd); + // + // ctx.save(); + // ctx.strokeStyle = 'gray'; + // ctx.setLineDash([10, 4]); + // ctx.stroke(arrowPath); + // ctx.restore(); + } + + #drawBadge(ctx, index, instance) + { + const midAngleRadians = this.#wedgeStartAngle(index) + 0.5 * this.wedgeAngleRadians; + const imageAngle = midAngleRadians + Math.PI / 2; + + const imageInset = 30; + const imageCenterPoint = this.center.add(GeometryHelpers.createPointOnCircle(midAngleRadians, this.outerRadius - imageInset)); + + ctx.save(); + + const wedgePath = this.#pathForWedge(index, this.outerRadius); + ctx.clip(wedgePath); + + ctx.translate(imageCenterPoint.x, imageCenterPoint.y); + ctx.rotate(imageAngle); + + // FIXME: This shadow makes Safari very slow. + ctx.shadowColor = "black"; + ctx.shadowBlur = 5; + + const imageSize = new Size(20, 20); + ctx.drawImage(instance.image, -imageSize.width / 2, 0, imageSize.width, imageSize.height); + ctx.restore(); + } + + #locationForOuterLabel(index) + { + const labelsPerSide = this.numSpokes / 2; + + const horizonalEdgeOffset = 100; + const verticalEdgeOffset = 20; + const verticalSpacing = this.outerRadius * 2 / labelsPerSide; + + if (index <= labelsPerSide) { + // Right side, going down. + const labelX = horizonalEdgeOffset + this.center.x + this.outerRadius; + const labelY = verticalEdgeOffset + index * verticalSpacing; + + return new Point(labelX, labelY); + + } else { + // Left side, going up. + const bottomY = this.center.y + this.outerRadius; + + const labelX = this.center.x - (horizonalEdgeOffset + this.outerRadius); + const labelY = bottomY - (index - labelsPerSide) * verticalSpacing; + + return new Point(labelX, labelY); + } + } + + // Unused + #pathForArrow(startPoint, endPoint) + { + const arrowPath = new Path2D(); + arrowPath.moveTo(startPoint.x, startPoint.y); + // Compute a bezier path that keeps the line horizontal at the start and end. + + const controlPointProportion = 0.5; + + const controlPoint1 = startPoint.add({ x: controlPointProportion * (endPoint.x - startPoint.x), y: 0}); + const controlPoint2 = endPoint.subtract({ x: controlPointProportion * (endPoint.x - startPoint.x), y: 0}); + arrowPath.bezierCurveTo(controlPoint1.x, controlPoint1.y, controlPoint2.x, controlPoint2.y, endPoint.x, endPoint.y); + + //arrowPath.lineTo(endPoint.x, endPoint.y); + // Add arrowhead + return arrowPath; + } +} + +class RadialChartStage extends Stage { + constructor(canvasObject) + { + super(); + this._canvasObject = canvasObject; + this.charts = []; + this.instanceData = []; + } + + initialize(benchmark, options) + { + super.initialize(benchmark, options); + + const dpr = window.devicePixelRatio || 1; + this.canvasDPR = Math.min(Math.floor(dpr), 2); // Just use 1 or 2. + + const canvasClientRect = this._canvasObject.getBoundingClientRect(); + + this._canvasObject.width = canvasClientRect.width * dpr; + this._canvasObject.height = canvasClientRect.height * dpr; + + this.canvasSize = new Size(this._canvasObject.width / this.canvasDPR, this._canvasObject.height / this.canvasDPR); + this._complexity = 0; + + this.#startLoadingData(benchmark); + + this.context = this._canvasObject.getContext("2d"); + this.context.scale(this.canvasDPR, this.canvasDPR); + } + + tune(count) + { + if (count == 0) + return; + + this._complexity += count; + // console.log(`tune ${count} - complexity is ${this._complexity}`); + this.#setupCharts(); + } + + #startLoadingData(benchmark) + { + setTimeout(async () => { + await this.#loadDataJSON(); + await this.#loadImages(); + + benchmark.readyPromise.resolve(); + }, 0); + } + + async #loadDataJSON() + { + const url = "resources/departements-region.json"; + const response = await fetch(url); + if (!response.ok) { + const errorString = `Failed to load data source ${url} with error ${response.status}` + console.error(errorString); + throw errorString; + } + + const jsonData = await response.json(); + for (const item of jsonData) { + // this.instanceData.push(new ItemData(item['dep_name'], `resources/department-shields${item['dep_name']}.png`)); + this.instanceData.push(new ItemData(item['num_dep'], item['dep_name'], `resources/department-shields/Ain.png`)); + } + } + + async #loadImages() + { + let promises = []; + for (const instance of this.instanceData) { + promises.push(instance.loadImage()); + } + + await Promise.all(promises); + } + + #setupCharts() + { + const maxSegmentsPerChart = 100; + const numCharts = Math.ceil(this._complexity / maxSegmentsPerChart); + + const perChartComplexity = Math.ceil(this._complexity / numCharts); + let remainingComplexity = this._complexity; + + // FIXME: Outer charts should have more items because there's more space. + if (numCharts === this.charts.length) { + for (let i = this.charts.length; i > 0; --i) { + const chartComplexity = Math.min(perChartComplexity, remainingComplexity); + + this.charts[i - 1].complexity = chartComplexity; + remainingComplexity -= chartComplexity; + } + return; + } + + this.charts = []; + + const centerPoint = new Point(this.canvasSize.width / 2, this.canvasSize.height / 2); + + const outerRadius = this.canvasSize.height * 0.45; + const annulusRadius = outerRadius / numCharts; + + for (let i = numCharts; i > 0; --i) { + const outerRadius = i * annulusRadius; + const innerRadius = outerRadius - (annulusRadius * 0.7) + + const chart = new RadialChart(this, centerPoint, innerRadius, outerRadius); + const chartComplexity = Math.min(perChartComplexity, remainingComplexity); + + chart.complexity = chartComplexity; + this.charts.push(chart); + remainingComplexity -= chartComplexity; + } + } + + instanceForIndex(index) + { + return this.instanceData[index % this.instanceData.length]; + } + + animate() + { + const context = this.context; + context.clearRect(0, 0, this.canvasSize.width, this.canvasSize.height); + + for (const chart of this.charts) { + chart.draw(context); + } + } + + complexity() + { + return this._complexity; + } +} + +class RadialChartBenchmark extends Benchmark { + constructor(options) + { + const canvas = document.getElementById('stage-canvas'); + super(new RadialChartStage(canvas), options); + } + + waitUntilReady() + { + this.readyPromise = new SimplePromise; + return this.readyPromise; + } +} + +window.benchmarkClass = RadialChartBenchmark; + +class FakeController { + constructor() + { + this.initialComplexity = 102; + this.startTime = new Date; + } + + shouldStop() + { + const now = new Date(); + return (now - this.startTime) > 15000; + } + + results() + { + return []; + } +} + +// Testing +window.addEventListener('load', () => { + if (!(window === window.parent)) + return; + + var benchmark = new window.benchmarkClass({ }); + benchmark._controller = new FakeController(); + + benchmark.run().then(function(testData) { + + }); + +}, false); From bfe702d0a73232a54f6589177586c21acac24871 Mon Sep 17 00:00:00 2001 From: Simon Fraser Date: Mon, 10 Feb 2025 21:07:09 -0800 Subject: [PATCH 2/4] Canvas test enhancements. --- MotionMark/resources/extensions.js | 4 +- .../radial-chart/resources/radial-chart.js | 169 +++++++++++++----- 2 files changed, 129 insertions(+), 44 deletions(-) diff --git a/MotionMark/resources/extensions.js b/MotionMark/resources/extensions.js index 2b1ee01..5b052b2 100644 --- a/MotionMark/resources/extensions.js +++ b/MotionMark/resources/extensions.js @@ -298,12 +298,12 @@ class Point { length() { - return Math.sqrt(this.x * this.x + this.y * this.y); + return Math.hypot(this.x, this.y); } normalize() { - var l = Math.sqrt(this.x * this.x + this.y * this.y); + const l = this.length(); this.x /= l; this.y /= l; return this; diff --git a/MotionMark/tests/dev/radial-chart/resources/radial-chart.js b/MotionMark/tests/dev/radial-chart/resources/radial-chart.js index ca87f23..851b4f4 100644 --- a/MotionMark/tests/dev/radial-chart/resources/radial-chart.js +++ b/MotionMark/tests/dev/radial-chart/resources/radial-chart.js @@ -53,6 +53,27 @@ class MathHelpers { { return (offset + Date.now() / (cycleLengthMs || 2000)) % 1; } + + static cheapHash(s) + { + let hash = 0, i = 0, len = s.length; + while ( i < len ) + hash = ((hash << 5) - hash + s.charCodeAt(i++)) << 0; + + return hash + 2147483647 + 1; + } + + // JavaScripts % operator is remainder, not modulo. + static modulo(dividend, divisor) + { + const quotient = Math.floor(dividend / divisor); + return dividend - divisor * quotient; + } + + static normalizeRadians(radians) + { + return MathHelpers.modulo(radians, Math.PI * 2); + } } class ItemData { @@ -61,8 +82,8 @@ class ItemData { this.deptNumber = deptNumber; this.label = label; this.imageURL = imageURL; - - this.hueOffset = MathHelpers.random(0.1, 0.2); + + this.hueOffset = MathHelpers.cheapHash(label) / 0xFFFFFFFF; this.colorLightness = MathHelpers.random(0.5, 0.7); this.colorSaturation = MathHelpers.random(0.2, 0.5); } @@ -178,7 +199,7 @@ class RadialChart { draw(ctx) { - this.numSpokes = this._complexity - 1; + this.numSpokes = this._complexity; this.wedgeAngleRadians = TwoPI / this.numSpokes; this.angleOffsetRadians = Math.PI / 2; // Start at the top, rather than the right. @@ -268,45 +289,94 @@ class RadialChart { #drawWedgeLabels(ctx, index, instance) { - const midAngleRadians = this.#wedgeStartAngle(index) + 0.5 * this.wedgeAngleRadians; + const midAngleRadians = MathHelpers.normalizeRadians(this.#wedgeStartAngle(index) + 0.5 * this.wedgeAngleRadians); - const textInset = 15; + const textInset = -15; const textCenterPoint = this.center.add(GeometryHelpers.createPointOnCircle(midAngleRadians, this.innerRadius - textInset)); const labelAngle = midAngleRadians + Math.PI / 2; - ctx.save(); - ctx.font = '12px sans-serif'; - ctx.fillStyle = 'black'; - - ctx.translate(textCenterPoint.x, textCenterPoint.y); - ctx.rotate(labelAngle); + { + ctx.save(); + ctx.font = '12px "Helvetica Neue", Helvetica, sans-serif'; + + // Numbers on inner ring. + ctx.translate(textCenterPoint.x, textCenterPoint.y); + ctx.rotate(labelAngle); - const textSize = ctx.measureText(instance.deptNumber); - ctx.fillText(instance.deptNumber, -textSize.width / 2, 0); - ctx.restore(); + const textSize = ctx.measureText(instance.deptNumber); + + ctx.strokeStyle = 'black'; + ctx.lineWidth = 1; + ctx.strokeText(instance.deptNumber, -textSize.width / 2, 0); + + { + ctx.save(); + ctx.shadowColor = "rgba(0, 0, 0, 0.5)"; + ctx.shadowBlur = 5; + ctx.fillStyle = 'white'; + ctx.fillText(instance.deptNumber, -textSize.width / 2, 0); + ctx.restore(); + } + + ctx.restore(); + } + + // Labels around outside. + const labelDistance = 20; + const labelHorizontalOffset = 60; + const outsideMidSegmentPoint = this.center.add(GeometryHelpers.createPointOnCircle(midAngleRadians, this.outerRadius + labelDistance)); + let outerLabelLocation = outsideMidSegmentPoint; + const isRightSide = midAngleRadians < Math.PI /2 || midAngleRadians > Math.PI * 1.5; + if (isRightSide) + outerLabelLocation = outsideMidSegmentPoint.add(new Point(labelHorizontalOffset, 0)); + else + outerLabelLocation = outsideMidSegmentPoint.add(new Point(-labelHorizontalOffset, 0)); + + { + ctx.save(); + + ctx.translate(outerLabelLocation.x, outerLabelLocation.y); + + ctx.font = '12px "Helvetica Neue", Helvetica, sans-serif'; + ctx.fillStyle = 'black'; - const textLabelGap = 5; - const outerLabelLocation = this.center.add(GeometryHelpers.createPointOnCircle(midAngleRadians, this.outerRadius + textLabelGap)); + let textOffset = 0; + if (!isRightSide) + textOffset = -ctx.measureText(instance.label).width; + + ctx.fillText(instance.label, textOffset, 0); + ctx.restore(); + } - ctx.save(); + const wedgeArrowEnd = this.center.add(GeometryHelpers.createPointOnCircle(midAngleRadians, this.outerRadius)); + const wedgeArrowEndAngle = MathHelpers.normalizeRadians(midAngleRadians + Math.PI); + const arrowPath = this.#pathForArrow(outerLabelLocation, wedgeArrowEnd, wedgeArrowEndAngle); + + // Arrow. + { + ctx.save(); + ctx.strokeStyle = 'gray'; + ctx.setLineDash([4, 2]); + ctx.stroke(arrowPath); + ctx.restore(); + } - ctx.translate(outerLabelLocation.x, outerLabelLocation.y); - ctx.rotate(midAngleRadians + Math.PI / 2 - 0.5); + // Arrowhead. + { + ctx.save(); + const arrowheadPath = this.#pathForArrowHead(); - ctx.font = '12px sans-serif'; - ctx.fillStyle = 'black'; - ctx.fillText(instance.label, 0, 0); - ctx.restore(); - - // const wedgeArrowEnd = this.center.add(GeometryHelpers.createPointOnCircle(midAngleRadians, this.outerRadius)); - // const arrowPath = this.#pathForArrow(outerLabelLocation, wedgeArrowEnd); - // - // ctx.save(); - // ctx.strokeStyle = 'gray'; - // ctx.setLineDash([10, 4]); - // ctx.stroke(arrowPath); - // ctx.restore(); + ctx.translate(wedgeArrowEnd.x, wedgeArrowEnd.y); + const arrowheadSize = 12; + ctx.scale(arrowheadSize, arrowheadSize); + ctx.rotate(midAngleRadians); + + ctx.fillStyle = 'gray'; + ctx.fill(arrowheadPath); + + ctx.restore(); + } } #drawBadge(ctx, index, instance) @@ -325,7 +395,6 @@ class RadialChart { ctx.translate(imageCenterPoint.x, imageCenterPoint.y); ctx.rotate(imageAngle); - // FIXME: This shadow makes Safari very slow. ctx.shadowColor = "black"; ctx.shadowBlur = 5; @@ -360,23 +429,39 @@ class RadialChart { } } - // Unused - #pathForArrow(startPoint, endPoint) + #pathForArrow(startPoint, endPoint, endAngle) { const arrowPath = new Path2D(); arrowPath.moveTo(startPoint.x, startPoint.y); // Compute a bezier path that keeps the line horizontal at the start and end. + + const distance = startPoint.subtract(endPoint).length(); const controlPointProportion = 0.5; - const controlPoint1 = startPoint.add({ x: controlPointProportion * (endPoint.x - startPoint.x), y: 0}); - const controlPoint2 = endPoint.subtract({ x: controlPointProportion * (endPoint.x - startPoint.x), y: 0}); - arrowPath.bezierCurveTo(controlPoint1.x, controlPoint1.y, controlPoint2.x, controlPoint2.y, endPoint.x, endPoint.y); + + const controlPoint2Offset = new Point(controlPointProportion * distance * Math.cos(endAngle), controlPointProportion * distance * Math.sin(endAngle)); + const controlPoint2 = endPoint.subtract(controlPoint2Offset); - //arrowPath.lineTo(endPoint.x, endPoint.y); - // Add arrowhead + arrowPath.bezierCurveTo(controlPoint1.x, controlPoint1.y, controlPoint2.x, controlPoint2.y, endPoint.x, endPoint.y); return arrowPath; } + + #pathForArrowHead() + { + // Arrowhead points left. + const arrowHeadPath = new Path2D(); + const pointyness = 0.5; + const breadth = 0.4; + + arrowHeadPath.moveTo(0, 0); + arrowHeadPath.quadraticCurveTo(pointyness, 0, 1, breadth); + arrowHeadPath.lineTo(1, -breadth); + arrowHeadPath.quadraticCurveTo(pointyness, 0, 0, 0); + arrowHeadPath.closePath(); + + return arrowHeadPath; + } } class RadialChartStage extends Stage { @@ -535,14 +620,14 @@ window.benchmarkClass = RadialChartBenchmark; class FakeController { constructor() { - this.initialComplexity = 102; + this.initialComplexity = 200; this.startTime = new Date; } shouldStop() { const now = new Date(); - return (now - this.startTime) > 15000; + return (now - this.startTime) > 500; } results() From fe95c034c6c68ab6419a11e1f70eba7df075c60b Mon Sep 17 00:00:00 2001 From: Simon Fraser Date: Wed, 12 Feb 2025 20:26:26 -0800 Subject: [PATCH 3/4] Rebase --- .../tests/dev/radial-chart/radial-chart.html | 4 ++- .../radial-chart/resources/radial-chart.js | 29 +++++-------------- 2 files changed, 10 insertions(+), 23 deletions(-) diff --git a/MotionMark/tests/dev/radial-chart/radial-chart.html b/MotionMark/tests/dev/radial-chart/radial-chart.html index 410b421..8a85e35 100644 --- a/MotionMark/tests/dev/radial-chart/radial-chart.html +++ b/MotionMark/tests/dev/radial-chart/radial-chart.html @@ -42,7 +42,9 @@ - + + + diff --git a/MotionMark/tests/dev/radial-chart/resources/radial-chart.js b/MotionMark/tests/dev/radial-chart/resources/radial-chart.js index 851b4f4..151721c 100644 --- a/MotionMark/tests/dev/radial-chart/resources/radial-chart.js +++ b/MotionMark/tests/dev/radial-chart/resources/radial-chart.js @@ -473,9 +473,9 @@ class RadialChartStage extends Stage { this.instanceData = []; } - initialize(benchmark, options) + async initialize(benchmark, options) { - super.initialize(benchmark, options); + await super.initialize(benchmark, options); const dpr = window.devicePixelRatio || 1; this.canvasDPR = Math.min(Math.floor(dpr), 2); // Just use 1 or 2. @@ -488,7 +488,8 @@ class RadialChartStage extends Stage { this.canvasSize = new Size(this._canvasObject.width / this.canvasDPR, this._canvasObject.height / this.canvasDPR); this._complexity = 0; - this.#startLoadingData(benchmark); + await this.#loadDataJSON(); + await this.#loadImages(); this.context = this._canvasObject.getContext("2d"); this.context.scale(this.canvasDPR, this.canvasDPR); @@ -504,16 +505,6 @@ class RadialChartStage extends Stage { this.#setupCharts(); } - #startLoadingData(benchmark) - { - setTimeout(async () => { - await this.#loadDataJSON(); - await this.#loadImages(); - - benchmark.readyPromise.resolve(); - }, 0); - } - async #loadDataJSON() { const url = "resources/departements-region.json"; @@ -534,9 +525,8 @@ class RadialChartStage extends Stage { async #loadImages() { let promises = []; - for (const instance of this.instanceData) { + for (const instance of this.instanceData) promises.push(instance.loadImage()); - } await Promise.all(promises); } @@ -607,12 +597,6 @@ class RadialChartBenchmark extends Benchmark { const canvas = document.getElementById('stage-canvas'); super(new RadialChartStage(canvas), options); } - - waitUntilReady() - { - this.readyPromise = new SimplePromise; - return this.readyPromise; - } } window.benchmarkClass = RadialChartBenchmark; @@ -637,12 +621,13 @@ class FakeController { } // Testing -window.addEventListener('load', () => { +window.addEventListener('load', async () => { if (!(window === window.parent)) return; var benchmark = new window.benchmarkClass({ }); benchmark._controller = new FakeController(); + await benchmark.initialize({ }); benchmark.run().then(function(testData) { From bc943876a2ad6341f9dd6bce3b8242580d0a51de Mon Sep 17 00:00:00 2001 From: Simon Fraser Date: Mon, 3 Mar 2025 16:20:01 -0800 Subject: [PATCH 4/4] Update the Readme.md --- .../tests/dev/radial-chart/Description.md | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/MotionMark/tests/dev/radial-chart/Description.md b/MotionMark/tests/dev/radial-chart/Description.md index 4c57419..0f25747 100644 --- a/MotionMark/tests/dev/radial-chart/Description.md +++ b/MotionMark/tests/dev/radial-chart/Description.md @@ -18,20 +18,28 @@ Features tested * text drawing * image drawing * lines, arcs, curves +* dashed lines * clipping to a path * gradients +* text with shadowBlur -Work per measued frame +Work per measured frame ---------------------- Redraw of the entire canvas -Remaining work --------------- +Licensing requirements +---------------------- -* Add images for the rest of the deparements -* Address some overlapping text issues +French departements images, e.g. https://commons.wikimedia.org/wiki/File:Blason_département_fr_Ain.svg +Creative Commons, requires attribution. +Remaining work +-------------- + +* Add images for the rest of the departements. Maybe use a sprite image. +* Add some more canvas features? +* Revisit whether the concentric rings are best for high complexity. Perhaps have multiple, smaller non-overlapping rings.