From 85b8440eef0593ccf4bb34db6ce96adbf4cfda47 Mon Sep 17 00:00:00 2001 From: Akihiko Kusanagi Date: Fri, 23 Nov 2018 17:11:52 +0800 Subject: [PATCH] Adjust the size of rectRounded/rectRot point to fit pointRadius - Calculate the vertices of the shapes so that they are inscribed in the circle that has the radius of `pointRadius` - Remove `translate()` and `rotate()` to fix the regression introduced by #5319 - Refactor `rectRounded` for better performance --- src/helpers/helpers.canvas.js | 166 ++++++++++-------- .../controller.bubble/point-style.png | Bin 6566 -> 11225 bytes test/fixtures/controller.line/point-style.png | Bin 6273 -> 6440 bytes .../fixtures/controller.radar/point-style.png | Bin 6986 -> 7070 bytes .../element.point/point-style-rect-rot.png | Bin 6520 -> 3174 bytes .../point-style-rect-rounded.png | Bin 8262 -> 4469 bytes test/fixtures/element.point/rotation.js | 56 ++++++ test/fixtures/element.point/rotation.png | Bin 0 -> 52523 bytes test/fixtures/helpers.canvas/rounded-rect.js | 39 ++++ test/fixtures/helpers.canvas/rounded-rect.png | Bin 0 -> 13050 bytes test/specs/element.point.tests.js | 14 +- test/specs/helpers.canvas.tests.js | 55 +++++- 12 files changed, 237 insertions(+), 93 deletions(-) create mode 100644 test/fixtures/element.point/rotation.js create mode 100644 test/fixtures/element.point/rotation.png create mode 100644 test/fixtures/helpers.canvas/rounded-rect.js create mode 100644 test/fixtures/helpers.canvas/rounded-rect.png diff --git a/src/helpers/helpers.canvas.js b/src/helpers/helpers.canvas.js index 60fb6e1a299..ea0c6f1cefe 100644 --- a/src/helpers/helpers.canvas.js +++ b/src/helpers/helpers.canvas.js @@ -2,6 +2,13 @@ var helpers = require('./helpers.core'); +var PI = Math.PI; +var RAD_PER_DEG = PI / 180; +var DOUBLE_PI = PI * 2; +var HALF_PI = PI / 2; +var QUARTER_PI = PI / 4; +var TWO_THIRDS_PI = PI * 2 / 3; + /** * @namespace Chart.helpers.canvas */ @@ -27,20 +34,28 @@ var exports = module.exports = { */ roundedRect: function(ctx, x, y, width, height, radius) { if (radius) { - // NOTE(SB) `epsilon` helps to prevent minor artifacts appearing - // on Chrome when `r` is exactly half the height or the width. - var epsilon = 0.0000001; - var r = Math.min(radius, (height / 2) - epsilon, (width / 2) - epsilon); - - ctx.moveTo(x + r, y); - ctx.lineTo(x + width - r, y); - ctx.arcTo(x + width, y, x + width, y + r, r); - ctx.lineTo(x + width, y + height - r); - ctx.arcTo(x + width, y + height, x + width - r, y + height, r); - ctx.lineTo(x + r, y + height); - ctx.arcTo(x, y + height, x, y + height - r, r); - ctx.lineTo(x, y + r); - ctx.arcTo(x, y, x + r, y, r); + var r = Math.min(radius, height / 2, width / 2); + var left = x + r; + var top = y + r; + var right = x + width - r; + var bottom = y + height - r; + + ctx.moveTo(x, top); + if (left < right && top < bottom) { + ctx.arc(left, top, r, -PI, -HALF_PI); + ctx.arc(right, top, r, -HALF_PI, 0); + ctx.arc(right, bottom, r, 0, HALF_PI); + ctx.arc(left, bottom, r, HALF_PI, PI); + } else if (left < right) { + ctx.moveTo(left, y); + ctx.arc(right, top, r, -HALF_PI, HALF_PI); + ctx.arc(left, top, r, HALF_PI, PI + HALF_PI); + } else if (top < bottom) { + ctx.arc(left, top, r, -PI, 0); + ctx.arc(left, bottom, r, 0, PI); + } else { + ctx.arc(left, top, r, -PI, PI); + } ctx.closePath(); ctx.moveTo(x, y); } else { @@ -49,8 +64,8 @@ var exports = module.exports = { }, drawPoint: function(ctx, style, radius, x, y, rotation) { - var type, edgeLength, xOffset, yOffset, height, size; - rotation = rotation || 0; + var type, xOffset, yOffset, size, cornerRadius; + var rad = (rotation || 0) * RAD_PER_DEG; if (style && typeof style === 'object') { type = style.toString(); @@ -64,88 +79,97 @@ var exports = module.exports = { return; } - ctx.save(); - ctx.translate(x, y); - ctx.rotate(rotation * Math.PI / 180); ctx.beginPath(); switch (style) { // Default includes circle default: - ctx.arc(0, 0, radius, 0, Math.PI * 2); + ctx.arc(x, y, radius, 0, DOUBLE_PI); ctx.closePath(); break; case 'triangle': - edgeLength = 3 * radius / Math.sqrt(3); - height = edgeLength * Math.sqrt(3) / 2; - ctx.moveTo(-edgeLength / 2, height / 3); - ctx.lineTo(edgeLength / 2, height / 3); - ctx.lineTo(0, -2 * height / 3); + ctx.moveTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); + rad += TWO_THIRDS_PI; + ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); + rad += TWO_THIRDS_PI; + ctx.lineTo(x + Math.sin(rad) * radius, y - Math.cos(rad) * radius); ctx.closePath(); break; - case 'rect': - size = 1 / Math.SQRT2 * radius; - ctx.rect(-size, -size, 2 * size, 2 * size); - break; case 'rectRounded': - var offset = radius / Math.SQRT2; - var leftX = -offset; - var topY = -offset; - var sideSize = Math.SQRT2 * radius; - - // NOTE(SB) the rounded rect implementation changed to use `arcTo` - // instead of `quadraticCurveTo` since it generates better results - // when rect is almost a circle. 0.425 (instead of 0.5) produces - // results visually closer to the previous impl. - this.roundedRect(ctx, leftX, topY, sideSize, sideSize, radius * 0.425); + // NOTE: the rounded rect implementation changed to use `arc` instead of + // `quadraticCurveTo` since it generates better results when rect is + // almost a circle. 0.516 (instead of 0.5) produces results with visually + // closer proportion to the previous impl and it is inscribed in the + // circle with `radius`. For more details, see the following PRs: + // https://github.com/chartjs/Chart.js/issues/5597 + // https://github.com/chartjs/Chart.js/issues/5858 + cornerRadius = radius * 0.516; + size = radius - cornerRadius; + xOffset = Math.cos(rad + QUARTER_PI) * size; + yOffset = Math.sin(rad + QUARTER_PI) * size; + ctx.arc(x - xOffset, y - yOffset, cornerRadius, rad - PI, rad - HALF_PI); + ctx.arc(x + yOffset, y - xOffset, cornerRadius, rad - HALF_PI, rad); + ctx.arc(x + xOffset, y + yOffset, cornerRadius, rad, rad + HALF_PI); + ctx.arc(x - yOffset, y + xOffset, cornerRadius, rad + HALF_PI, rad + PI); + ctx.closePath(); break; + case 'rect': + if (!rotation) { + size = Math.SQRT1_2 * radius; + ctx.rect(x - size, y - size, 2 * size, 2 * size); + break; + } + rad += QUARTER_PI; + /* falls through */ case 'rectRot': - size = 1 / Math.SQRT2 * radius; - ctx.moveTo(-size, 0); - ctx.lineTo(0, size); - ctx.lineTo(size, 0); - ctx.lineTo(0, -size); + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + yOffset, y - xOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.lineTo(x - yOffset, y + xOffset); ctx.closePath(); break; - case 'cross': - ctx.moveTo(0, radius); - ctx.lineTo(0, -radius); - ctx.moveTo(-radius, 0); - ctx.lineTo(radius, 0); - break; case 'crossRot': - xOffset = Math.cos(Math.PI / 4) * radius; - yOffset = Math.sin(Math.PI / 4) * radius; - ctx.moveTo(-xOffset, -yOffset); - ctx.lineTo(xOffset, yOffset); - ctx.moveTo(-xOffset, yOffset); - ctx.lineTo(xOffset, -yOffset); + rad += QUARTER_PI; + /* falls through */ + case 'cross': + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.moveTo(x + yOffset, y - xOffset); + ctx.lineTo(x - yOffset, y + xOffset); break; case 'star': - ctx.moveTo(0, radius); - ctx.lineTo(0, -radius); - ctx.moveTo(-radius, 0); - ctx.lineTo(radius, 0); - xOffset = Math.cos(Math.PI / 4) * radius; - yOffset = Math.sin(Math.PI / 4) * radius; - ctx.moveTo(-xOffset, -yOffset); - ctx.lineTo(xOffset, yOffset); - ctx.moveTo(-xOffset, yOffset); - ctx.lineTo(xOffset, -yOffset); + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.moveTo(x + yOffset, y - xOffset); + ctx.lineTo(x - yOffset, y + xOffset); + rad += QUARTER_PI; + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); + ctx.moveTo(x + yOffset, y - xOffset); + ctx.lineTo(x - yOffset, y + xOffset); break; case 'line': - ctx.moveTo(-radius, 0); - ctx.lineTo(radius, 0); + xOffset = Math.cos(rad) * radius; + yOffset = Math.sin(rad) * radius; + ctx.moveTo(x - xOffset, y - yOffset); + ctx.lineTo(x + xOffset, y + yOffset); break; case 'dash': - ctx.moveTo(0, 0); - ctx.lineTo(radius, 0); + ctx.moveTo(x, y); + ctx.lineTo(x + Math.cos(rad) * radius, y + Math.sin(rad) * radius); break; } ctx.fill(); ctx.stroke(); - ctx.restore(); }, clipArea: function(ctx, area) { diff --git a/test/fixtures/controller.bubble/point-style.png b/test/fixtures/controller.bubble/point-style.png index f1d3b8168c07d1e70eda4c04dc50325d25c0b39c..d949141d81d4f46dbb844b9a33e63d0b2f81a3fa 100644 GIT binary patch literal 11225 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 literal 6273 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 diff --git a/test/fixtures/controller.radar/point-style.png b/test/fixtures/controller.radar/point-style.png index 562cb620b054de95898cba7bbc3908b479bfe2da..3f73ff96f91a02142de3504a59531b8f954d59d2 100644 GIT binary patch literal 7070 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 P!tmG;N89qlzSsT(xdDrf diff --git a/test/fixtures/element.point/point-style-rect-rot.png b/test/fixtures/element.point/point-style-rect-rot.png index 09c0adac3d3e32580845000e7188e63fb60b7c95..a7c128855892682594576c778eeafaf043fd7f36 100644 GIT binary patch literal 3174 zcma)8X;f3!7Ctuw2?&}XXd*<#6m6|cB7>k3zy_g@!2zu}5TP1W1VluXNN$xP2niIZ zRZ&4-pHM}nDh32eYr-Ic@qvQMWTFD1kW>m$Lhd^!Z>_G?f6ZEV?S1zC_HfQU`+ms? z3Gy>DnQsCBF!Nu(ZX*CBsA7OJ0}5GAI}ZR;JO6dwo0BfS?+q4NKf#*RM^90|jj%Do zd`g`wr5-&XMza0~cRwb}eCDJX_YtYt+%|sh1|7FWWS&vFcxr}2=BV3f^^F%#o`g>8 zPOJ?+TUv1})Lo}jW$}Dqk-z`&Ei%VcdRk8x0A+iuhyfd;^nZA%blbL2CP6$V1;j_940Pld=Ss|iAp zpEn*+qL9R6$XQWE@0;bsw~9zQH?>UGVg)PVKT1`t)cb`;uY3$oe|e{-d~?5yXJMrg5 zBz-vbn+>@m3sA)S!56ewQQY7@+f;xbA%@XS{Vzmf}XBrmmLiGI|@+VFzoD6cam#O`6jb| z(;;y+N0KvjgjCA&M79mg{#hEaE3&zeLaw)R*ahm~w+k@%E{xd2Z-jWYvaoX%DXpj6 z3=g~LhK_EdzAJmM-}xYU+>-cNgbD|O&bQ-~A!nWcGgR|9DCyNuhCFrt=k+asDA`L2 zl{m3Sh}%q#fFc*CI%b5%RjP8F3_Y`{5p8n@7z*w~srX=M>t&=wgMnHUEe7oPOUUpq zFc3N-f*F(;XexDvU1b{rcvTR{9Y{8}W0QRyi>x`UW;pcU<~vKFxRDW_Mio$ObT*TL4>tMWUyBWZFeCh)DWQAx z#g}!qy@vP$pP7f`()RmI?DL1Kc8?t- zcUnBXFlxfyd-!BuE2YG##HEjce|h(_S2wfq3%+3=da)&$*}mxnthi({@NLyP$#y1Y zN51tv54bN|o5Ijd7ao3|`!ePr`Ibfd*~^9l?cb<`xZ8GC_suMP?x|-AXN>7-d7L#M zcJbXgMTuIKZ|7xY;jq@!MrW6*DeiImr9WR{g_Yms6dhndBhe|E8hi{_xPamX@=$`F0k*;8eHL+1XqB zc8_LK(7w9ZCzgD1FgIs%H7Pz#JWi7zrX;5%iX6e&Jz#kgIM)Q+%LXYE+IJTRd_n6U zHu!4|Rk9ilXSU5d^?4hsLbBMpknElvOj=!5yl7&)G{jV37Pm?_e_%Cy4y{S8Jk29} z49vvZlru4ASNx*wDXvAn_bgPa;d96?txCotsoLWQ$DrNd=!A*76w;sglEO4ext>TK$mHi#sFS3+FocR-DE^Taq=c@KNKd*8PQOj zSx$>VtDWX?Xw_z10|N}&jccLsy_UKYX7Mg2Iq2Y}uaswcfdsCXMll;OGd5_ke=t6O zK}tA$!IS|QTF0mQ@T;fPizW{O{E2Kb@n!big^#KUDy$h$BRFCuMx@5tW^509R1m*+x;S7p?KP59ivbVQMMt5}FXZ*e(@ zy-J=L>N%D(Q%Yzk;=-w6fOjpY6Ka}D3S+L8QV}l)R7dD(^|2))$s9lJ%1N^a2{J^$ zJGR#K%HC`kEy%a^MVK13Ld1qa2~Kbcj1 zHU}lD7(|J#)8yU=nDpzZMtoQj4LM;0u56F z6P5Xq*{?6cQ@IBNqpA#V%kYO z8H!ShktaaN2}AezZx=c$7g^;AXPGCy2n zFs=S*`QafQ3vBYrn7m;Hagt;0bZn>8>z639bt93XF>rjGN|T3b^GrCB5p_f1)J-hp z$2qK`R?SkwY*>oRV6lou;6j8JXwNFoQ!(-V%gax~tr}E_>S>E~$tI`;N$n^{0+$xZS~)kHth>sK}0+j^zS5+!1r&9#O(fXg;6YV16; zSlZLE@+QK2v={?R3Y<`)u((DFRRE$|QcKyonu%bQaMPWroYPjzPpL8d_CSfYl ziYR^|m;qKUOQHH`C+)Q`_jLN$X)2-2p2mti)xN~**?)bU09dXh_C8s^f%l2`9kTj= L6|}C*hkNpWYD$7~ literal 6520 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 diff --git a/test/fixtures/element.point/point-style-rect-rounded.png b/test/fixtures/element.point/point-style-rect-rounded.png index a58e9e62361a96fb187cc342c58d89c954faaaa4..8b58b44303ac578744a267231301427f461475b8 100644 GIT binary patch literal 4469 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 diff --git a/test/fixtures/element.point/rotation.js b/test/fixtures/element.point/rotation.js new file mode 100644 index 00000000000..b713f5d6bf4 --- /dev/null +++ b/test/fixtures/element.point/rotation.js @@ -0,0 +1,56 @@ +var gradient; + +var datasets = ['circle', 'cross', 'crossRot', 'dash', 'line', 'rect', 'rectRounded', 'rectRot', 'star', 'triangle'].map(function(style, y) { + return { + pointStyle: style, + data: Array.apply(null, Array(17)).map(function(v, x) { + return {x: x, y: 10 - y}; + }) + }; +}); + +var angles = Array.apply(null, Array(17)).map(function(v, i) { + return -180 + i * 22.5; +}); + +module.exports = { + config: { + type: 'bubble', + data: { + datasets: datasets + }, + options: { + responsive: false, + legend: false, + title: false, + elements: { + point: { + rotation: angles, + radius: 10, + backgroundColor: function(context) { + if (!gradient) { + gradient = context.chart.ctx.createLinearGradient(0, 0, 512, 256); + gradient.addColorStop(0, '#ff0000'); + gradient.addColorStop(1, '#0000ff'); + } + return gradient; + }, + borderColor: '#cccccc' + } + }, + layout: { + padding: 20 + }, + scales: { + xAxes: [{display: false}], + yAxes: [{display: false}] + } + } + }, + options: { + canvas: { + height: 256, + width: 512 + } + } +}; diff --git a/test/fixtures/element.point/rotation.png b/test/fixtures/element.point/rotation.png new file mode 100644 index 0000000000000000000000000000000000000000..579c712ecf621a087cf574b48e2c14be27a28aa7 GIT binary patch literal 52523 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�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 I-TKM@0=vZ0?*IS* literal 0 HcmV?d00001 diff --git a/test/specs/element.point.tests.js b/test/specs/element.point.tests.js index 0f3a03e319d..887250acd8d 100644 --- a/test/specs/element.point.tests.js +++ b/test/specs/element.point.tests.js @@ -124,21 +124,12 @@ describe('Chart.elements.Point', function() { }, { name: 'setFillStyle', args: ['rgba(0,0,0,0.1)'] - }, { - name: 'save', - args: [] - }, { - name: 'translate', - args: [10, 15] - }, { - name: 'rotate', - args: [0] }, { name: 'beginPath', args: [] }, { name: 'arc', - args: [0, 0, 2, 0, 2 * Math.PI] + args: [10, 15, 2, 0, 2 * Math.PI] }, { name: 'closePath', args: [], @@ -148,9 +139,6 @@ describe('Chart.elements.Point', function() { }, { name: 'stroke', args: [] - }, { - name: 'restore', - args: [] }]); }); diff --git a/test/specs/helpers.canvas.tests.js b/test/specs/helpers.canvas.tests.js index 1a342c1cb3b..ee42a414e6f 100644 --- a/test/specs/helpers.canvas.tests.js +++ b/test/specs/helpers.canvas.tests.js @@ -1,6 +1,8 @@ 'use strict'; describe('Chart.helpers.canvas', function() { + describe('auto', jasmine.fixture.specs('helpers.canvas')); + var helpers = Chart.helpers; describe('clear', function() { @@ -28,15 +30,50 @@ describe('Chart.helpers.canvas', function() { helpers.canvas.roundedRect(context, 10, 20, 30, 40, 5); expect(context.getCalls()).toEqual([ - {name: 'moveTo', args: [15, 20]}, - {name: 'lineTo', args: [35, 20]}, - {name: 'arcTo', args: [40, 20, 40, 25, 5]}, - {name: 'lineTo', args: [40, 55]}, - {name: 'arcTo', args: [40, 60, 35, 60, 5]}, - {name: 'lineTo', args: [15, 60]}, - {name: 'arcTo', args: [10, 60, 10, 55, 5]}, - {name: 'lineTo', args: [10, 25]}, - {name: 'arcTo', args: [10, 20, 15, 20, 5]}, + {name: 'moveTo', args: [10, 25]}, + {name: 'arc', args: [15, 25, 5, -Math.PI, -Math.PI / 2]}, + {name: 'arc', args: [35, 25, 5, -Math.PI / 2, 0]}, + {name: 'arc', args: [35, 55, 5, 0, Math.PI / 2]}, + {name: 'arc', args: [15, 55, 5, Math.PI / 2, Math.PI]}, + {name: 'closePath', args: []}, + {name: 'moveTo', args: [10, 20]} + ]); + }); + it('should optimize path if radius is exactly half of height', function() { + var context = window.createMockContext(); + + helpers.canvas.roundedRect(context, 10, 20, 40, 30, 15); + + expect(context.getCalls()).toEqual([ + {name: 'moveTo', args: [10, 35]}, + {name: 'moveTo', args: [25, 20]}, + {name: 'arc', args: [35, 35, 15, -Math.PI / 2, Math.PI / 2]}, + {name: 'arc', args: [25, 35, 15, Math.PI / 2, Math.PI * 3 / 2]}, + {name: 'closePath', args: []}, + {name: 'moveTo', args: [10, 20]} + ]); + }); + it('should optimize path if radius is exactly half of width', function() { + var context = window.createMockContext(); + + helpers.canvas.roundedRect(context, 10, 20, 30, 40, 15); + + expect(context.getCalls()).toEqual([ + {name: 'moveTo', args: [10, 35]}, + {name: 'arc', args: [25, 35, 15, -Math.PI, 0]}, + {name: 'arc', args: [25, 45, 15, 0, Math.PI]}, + {name: 'closePath', args: []}, + {name: 'moveTo', args: [10, 20]} + ]); + }); + it('should optimize path if radius is exactly half of width and height', function() { + var context = window.createMockContext(); + + helpers.canvas.roundedRect(context, 10, 20, 30, 30, 15); + + expect(context.getCalls()).toEqual([ + {name: 'moveTo', args: [10, 35]}, + {name: 'arc', args: [25, 35, 15, -Math.PI, Math.PI]}, {name: 'closePath', args: []}, {name: 'moveTo', args: [10, 20]} ]);