fix: #661 Rotation snap tolerance

This commit is contained in:
Vojtěch Frič 2020-02-28 22:38:18 +01:00
parent 006d467e65
commit a1fa70b57c
2 changed files with 25 additions and 2 deletions

View File

@ -149,7 +149,7 @@ export const Konva = {
*/ */
dragDistance: 3, dragDistance: 3,
/** /**
* Use degree values for angle properties. You may set this property to false if you want to use radiant values. * Use degree values for angle properties. You may set this property to false if you want to use radian values.
* @property angleDeg * @property angleDeg
* @default true * @default true
* @memberof Konva * @memberof Konva

View File

@ -19,6 +19,7 @@ export interface TransformerConfig extends ContainerConfig {
resizeEnabled?: boolean; resizeEnabled?: boolean;
rotateEnabled?: boolean; rotateEnabled?: boolean;
rotationSnaps?: Array<number>; rotationSnaps?: Array<number>;
rotationSnapTolerance?: number;
rotateAnchorOffset?: number; rotateAnchorOffset?: number;
borderEnabled?: boolean; borderEnabled?: boolean;
borderStroke?: string; borderStroke?: string;
@ -154,6 +155,7 @@ var MAX_SAFE_INTEGER = 100000000;
* @param {Boolean} [config.resizeEnabled] Default is true * @param {Boolean} [config.resizeEnabled] Default is true
* @param {Boolean} [config.rotateEnabled] Default is true * @param {Boolean} [config.rotateEnabled] Default is true
* @param {Array} [config.rotationSnaps] Array of angles for rotation snaps. Default is [] * @param {Array} [config.rotationSnaps] Array of angles for rotation snaps. Default is []
* @param {Number} [config.rotationSnapTolerance] Snapping tolerance. If closer than this it will snap. Default is 5
* @param {Number} [config.rotateAnchorOffset] Default is 50 * @param {Number} [config.rotateAnchorOffset] Default is 50
* @param {Number} [config.padding] Default is 0 * @param {Number} [config.padding] Default is 0
* @param {Boolean} [config.borderEnabled] Should we draw border? Default is true * @param {Boolean} [config.borderEnabled] Should we draw border? Default is true
@ -596,7 +598,7 @@ export class Transformer extends Group {
var newAlpha = Util._degToRad(newRotation); var newAlpha = Util._degToRad(newRotation);
var snaps = this.rotationSnaps(); var snaps = this.rotationSnaps();
var offset = 0.1; var offset = Konva.getAngle(this.rotationSnapTolerance());
for (var i = 0; i < snaps.length; i++) { for (var i = 0; i < snaps.length; i++) {
var angle = Konva.getAngle(snaps[i]); var angle = Konva.getAngle(snaps[i]);
@ -901,6 +903,7 @@ export class Transformer extends Group {
resizeEnabled: GetSet<boolean, this>; resizeEnabled: GetSet<boolean, this>;
rotateEnabled: GetSet<boolean, this>; rotateEnabled: GetSet<boolean, this>;
rotateAnchorOffset: GetSet<number, this>; rotateAnchorOffset: GetSet<number, this>;
rotationSnapTolerance: GetSet<number, this>;
padding: GetSet<number, this>; padding: GetSet<number, this>;
borderEnabled: GetSet<boolean, this>; borderEnabled: GetSet<boolean, this>;
borderStroke: GetSet<string, this>; borderStroke: GetSet<string, this>;
@ -1037,6 +1040,26 @@ Factory.addGetterSetter(
getNumberValidator() getNumberValidator()
); );
/**
* get/set distance for rotation tolerance
* @name Konva.Transformer#rotationSnapTolerance
* @method
* @param {Number} tolerance
* @returns {Number}
* @example
* // get
* var rotationSnapTolerance = transformer.rotationSnapTolerance();
*
* // set
* transformer.rotationSnapTolerance(100);
*/
Factory.addGetterSetter(
Transformer,
'rotationSnapTolerance',
5,
getNumberValidator()
);
/** /**
* get/set visibility of border * get/set visibility of border
* @name Konva.Transformer#borderEnabled * @name Konva.Transformer#borderEnabled