resizer rotation snaps

This commit is contained in:
Anton Lavrenov 2018-01-02 14:46:32 +07:00
parent 9f36b08824
commit 2011553d1f
4 changed files with 45 additions and 11 deletions

View File

@ -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

File diff suppressed because one or more lines are too long

View File

@ -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;

View File

@ -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);