mirror of
https://github.com/igorski/bitmappery.git
synced 2026-06-17 03:34:56 +02:00
Implemented keyboard shortcuts for layer positioning
This commit is contained in:
@@ -46,7 +46,7 @@ class LayerSprite extends sprite {
|
||||
layer.source = cvs;
|
||||
}
|
||||
|
||||
// create brush (always as all layers can be maskable)
|
||||
// create brush (used for both drawing on LAYER_GRAPHIC types and to create layer masks)
|
||||
const brushCanvas = createCanvas();
|
||||
this._brushCvs = brushCanvas.cvs;
|
||||
this._brushCtx = brushCanvas.ctx;
|
||||
@@ -214,6 +214,14 @@ class LayerSprite extends sprite {
|
||||
this._dragStartEventCoordinates = { x: this._pointerX, y: this._pointerY };
|
||||
}
|
||||
|
||||
syncedPositioning( x, y ) {
|
||||
this._bounds.left = x;
|
||||
this._bounds.top = y;
|
||||
this.layer.x = x;
|
||||
this.layer.y = y;
|
||||
this.invalidate();
|
||||
}
|
||||
|
||||
/* the following override zCanvas.sprite */
|
||||
|
||||
handleMove( x, y ) {
|
||||
@@ -349,9 +357,9 @@ class LayerSprite extends sprite {
|
||||
documentContext.beginPath();
|
||||
documentContext.lineWidth = 2 / this.canvas.zoomFactor;
|
||||
|
||||
let selection = this.layer.selection;
|
||||
let { selection } = this.layer;
|
||||
const firstPoint = selection[ 0 ];
|
||||
const localPointerX = this._pointerX - vp.left;
|
||||
const localPointerX = this._pointerX - vp.left; // local to viewport
|
||||
const localPointerY = this._pointerY - vp.top;
|
||||
|
||||
// when in rectangular select mode, the outline will draw from the first coordinate
|
||||
|
||||
@@ -165,15 +165,35 @@ function handleKeyDown( event ) {
|
||||
break;
|
||||
|
||||
case 38: // up
|
||||
if ( getters.activeTool === ToolTypes.MOVE ) {
|
||||
const sprite = getSpriteForLayer( getters.activeLayer );
|
||||
const speed = shiftDown ? 10 : 1;
|
||||
sprite?.syncedPositioning( sprite.getX(), sprite.getY() - speed );
|
||||
}
|
||||
break;
|
||||
|
||||
case 40: // down
|
||||
if ( getters.activeTool === ToolTypes.MOVE ) {
|
||||
const sprite = getSpriteForLayer( getters.activeLayer );
|
||||
const speed = shiftDown ? 10 : 1;
|
||||
sprite?.syncedPositioning( sprite.getX(), sprite.getY() + speed );
|
||||
}
|
||||
break;
|
||||
|
||||
case 39: // right
|
||||
if ( getters.activeTool === ToolTypes.MOVE ) {
|
||||
const sprite = getSpriteForLayer( getters.activeLayer );
|
||||
const speed = shiftDown ? 10 : 1;
|
||||
sprite?.syncedPositioning( sprite.getX() + speed, sprite.getY());
|
||||
}
|
||||
break;
|
||||
|
||||
case 37: // left
|
||||
if ( getters.activeTool === ToolTypes.MOVE ) {
|
||||
const sprite = getSpriteForLayer( getters.activeLayer );
|
||||
const speed = shiftDown ? 10 : 1;
|
||||
sprite?.syncedPositioning( sprite.getX() - speed, sprite.getY() );
|
||||
}
|
||||
break;
|
||||
|
||||
case 46: // delete
|
||||
|
||||
Reference in New Issue
Block a user