mirror of
https://github.com/konvajs/konva.git
synced 2025-06-28 09:17:25 +08:00
resizer rotation snaps
This commit is contained in:
parent
9f36b08824
commit
2011553d1f
27
konva.js
27
konva.js
@ -2185,7 +2185,8 @@
|
||||
(function() {
|
||||
'use strict';
|
||||
// CONSTANTS
|
||||
var GET = 'get', SET = 'set';
|
||||
var GET = 'get',
|
||||
SET = 'set';
|
||||
|
||||
Konva.Factory = {
|
||||
addGetterSetter: function(constructor, attr, def, validator, after) {
|
||||
@ -2246,7 +2247,8 @@
|
||||
|
||||
// setter
|
||||
constructor.prototype[setter] = function(val) {
|
||||
var oldVal = this.attrs[attr], key;
|
||||
var oldVal = this.attrs[attr],
|
||||
key;
|
||||
|
||||
if (validator) {
|
||||
val = validator.call(this, val);
|
||||
@ -2321,8 +2323,8 @@
|
||||
|
||||
Konva.Validators = {
|
||||
/**
|
||||
* @return {number}
|
||||
*/
|
||||
* @return {number}
|
||||
*/
|
||||
RGBComponent: function(val) {
|
||||
if (val > 255) {
|
||||
return 255;
|
||||
@ -18428,6 +18430,20 @@
|
||||
var alpha = Konva.getAngle(this._el.rotation());
|
||||
var newAlpha = Konva.Util._degToRad(newRotation);
|
||||
|
||||
var snaps = this.rotationSnaps();
|
||||
var offset = 0.1;
|
||||
for (var i = 0; i < snaps.length; i++) {
|
||||
var angle = Konva.getAngle(snaps[i]);
|
||||
|
||||
var dif =
|
||||
Math.abs(angle - Konva.Util._degToRad(newRotation)) % (Math.PI * 2);
|
||||
|
||||
if (dif < offset) {
|
||||
newRotation = Konva.Util._radToDeg(angle);
|
||||
newAlpha = Konva.Util._degToRad(newRotation);
|
||||
}
|
||||
}
|
||||
|
||||
this._setElementAttrs(
|
||||
Object.assign(attrs, {
|
||||
rotation: Konva.angleDeg
|
||||
@ -18502,7 +18518,7 @@
|
||||
},
|
||||
|
||||
_setElementAttrs: function(attrs) {
|
||||
if (attrs.rotation) {
|
||||
if (attrs.rotation !== undefined) {
|
||||
this._el.setAttrs({
|
||||
rotation: attrs.rotation,
|
||||
x: attrs.x,
|
||||
@ -18608,6 +18624,7 @@
|
||||
|
||||
Konva.Factory.addGetterSetter(Konva.Resizer, 'keepRatio', false);
|
||||
Konva.Factory.addGetterSetter(Konva.Resizer, 'resizeEnabled', true);
|
||||
Konva.Factory.addGetterSetter(Konva.Resizer, 'rotationSnaps', []);
|
||||
|
||||
Konva.Collection.mapMethods(Konva.Resizer);
|
||||
})(Konva);
|
||||
|
2
konva.min.js
vendored
2
konva.min.js
vendored
File diff suppressed because one or more lines are too long
@ -1,7 +1,8 @@
|
||||
(function() {
|
||||
'use strict';
|
||||
// CONSTANTS
|
||||
var GET = 'get', SET = 'set';
|
||||
var GET = 'get',
|
||||
SET = 'set';
|
||||
|
||||
Konva.Factory = {
|
||||
addGetterSetter: function(constructor, attr, def, validator, after) {
|
||||
@ -62,7 +63,8 @@
|
||||
|
||||
// setter
|
||||
constructor.prototype[setter] = function(val) {
|
||||
var oldVal = this.attrs[attr], key;
|
||||
var oldVal = this.attrs[attr],
|
||||
key;
|
||||
|
||||
if (validator) {
|
||||
val = validator.call(this, val);
|
||||
@ -137,8 +139,8 @@
|
||||
|
||||
Konva.Validators = {
|
||||
/**
|
||||
* @return {number}
|
||||
*/
|
||||
* @return {number}
|
||||
*/
|
||||
RGBComponent: function(val) {
|
||||
if (val > 255) {
|
||||
return 255;
|
||||
|
@ -207,6 +207,20 @@
|
||||
var alpha = Konva.getAngle(this._el.rotation());
|
||||
var newAlpha = Konva.Util._degToRad(newRotation);
|
||||
|
||||
var snaps = this.rotationSnaps();
|
||||
var offset = 0.1;
|
||||
for (var i = 0; i < snaps.length; i++) {
|
||||
var angle = Konva.getAngle(snaps[i]);
|
||||
|
||||
var dif =
|
||||
Math.abs(angle - Konva.Util._degToRad(newRotation)) % (Math.PI * 2);
|
||||
|
||||
if (dif < offset) {
|
||||
newRotation = Konva.Util._radToDeg(angle);
|
||||
newAlpha = Konva.Util._degToRad(newRotation);
|
||||
}
|
||||
}
|
||||
|
||||
this._setElementAttrs(
|
||||
Object.assign(attrs, {
|
||||
rotation: Konva.angleDeg
|
||||
@ -281,7 +295,7 @@
|
||||
},
|
||||
|
||||
_setElementAttrs: function(attrs) {
|
||||
if (attrs.rotation) {
|
||||
if (attrs.rotation !== undefined) {
|
||||
this._el.setAttrs({
|
||||
rotation: attrs.rotation,
|
||||
x: attrs.x,
|
||||
@ -387,6 +401,7 @@
|
||||
|
||||
Konva.Factory.addGetterSetter(Konva.Resizer, 'keepRatio', false);
|
||||
Konva.Factory.addGetterSetter(Konva.Resizer, 'resizeEnabled', true);
|
||||
Konva.Factory.addGetterSetter(Konva.Resizer, 'rotationSnaps', []);
|
||||
|
||||
Konva.Collection.mapMethods(Konva.Resizer);
|
||||
})(Konva);
|
||||
|
Loading…
Reference in New Issue
Block a user