mirror of
https://github.com/konvajs/konva.git
synced 2025-08-20 04:51:04 +08:00
Fixed negative polygon radius corner radius bug
This commit is contained in:
parent
1adf506a93
commit
18956ae62b
@ -1049,6 +1049,7 @@ export const Util = {
|
||||
radius: number,
|
||||
cornerRadius: number | number[]
|
||||
) {
|
||||
radius = Math.abs(radius);
|
||||
for (let i = 0; i < sides; i++) {
|
||||
const prev = points[(i - 1 + sides) % sides];
|
||||
const curr = points[i];
|
||||
|
@ -147,14 +147,13 @@ Factory.addGetterSetter(RegularPolygon, 'sides', 0, getNumberValidator());
|
||||
* @returns {Number}
|
||||
* @example
|
||||
* // get corner radius
|
||||
* var cornerRadius = rect.cornerRadius();
|
||||
* var cornerRadius = poly.cornerRadius();
|
||||
*
|
||||
* // set corner radius
|
||||
* rect.cornerRadius(10);
|
||||
* poly.cornerRadius(10);
|
||||
*
|
||||
* // set different corner radius values
|
||||
* // top-left, top-right, bottom-right, bottom-left
|
||||
* rect.cornerRadius([0, 10, 20, 30]);
|
||||
* // set different corner radius values (pentagon)
|
||||
* poly.cornerRadius([0, 10, 20, 30, 40]);
|
||||
*/
|
||||
Factory.addGetterSetter(
|
||||
RegularPolygon,
|
||||
|
@ -238,4 +238,29 @@ describe('RegularPolygon', function () {
|
||||
context.fill();
|
||||
compareLayerAndCanvas(layer, canvas, 200);
|
||||
});
|
||||
|
||||
// ======================================================
|
||||
it('negative polygon radius with cornerRadius', function () {
|
||||
var stage = addStage();
|
||||
var layer = new Konva.Layer();
|
||||
|
||||
var poly = new Konva.RegularPolygon({
|
||||
x: 100,
|
||||
y: 100,
|
||||
sides: 5,
|
||||
radius: -100,
|
||||
fill: 'black',
|
||||
cornerRadius: 20,
|
||||
});
|
||||
|
||||
layer.add(poly);
|
||||
stage.add(layer);
|
||||
layer.draw();
|
||||
|
||||
var trace = layer.getContext().getTrace();
|
||||
assert.equal(
|
||||
trace,
|
||||
'clearRect(0,0,578,200);save();transform(1,0,0,1,100,100);beginPath();moveTo(26.18,80.979);arcTo(0,100,-26.18,80.979,32.361);lineTo(-68.925,49.923);arcTo(-95.106,30.902,-85.106,0.125,32.361);lineTo(-68.779,-50.125);arcTo(-58.779,-80.902,-26.418,-80.902,32.361);lineTo(26.418,-80.902);arcTo(58.779,-80.902,68.779,-50.125,32.361);lineTo(85.106,0.125);arcTo(95.106,30.902,68.925,49.923,32.361);closePath();fillStyle=black;fill();restore();clearRect(0,0,578,200);save();transform(1,0,0,1,100,100);beginPath();moveTo(26.18,80.979);arcTo(0,100,-26.18,80.979,32.361);lineTo(-68.925,49.923);arcTo(-95.106,30.902,-85.106,0.125,32.361);lineTo(-68.779,-50.125);arcTo(-58.779,-80.902,-26.418,-80.902,32.361);lineTo(26.418,-80.902);arcTo(58.779,-80.902,68.779,-50.125,32.361);lineTo(85.106,0.125);arcTo(95.106,30.902,68.925,49.923,32.361);closePath();fillStyle=black;fill();restore();'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
Loading…
Reference in New Issue
Block a user