Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- double newX = window.x, newY = window.y, newW = window.width, newH = window.height;
- dragX = snapFunc.apply(dragX);
- dragY = snapFunc.apply(dragY);
- double centreX = oppositeX()*window.width;
- double centreY = oppositeY()*window.height;
- double draggedX = xPos*window.width + dragX;
- double draggedY = yPos*window.height + dragY;
- if(isShifting && xPos != 0.5 && yPos != 0.5){ //uniform rescaling, only used on corners
- double widthMultiplier = (draggedX - centreX) / window.width;
- double heightMultiplier = (draggedY - centreY) / window.height;
- double multiplier = Math.abs(widthMultiplier) < Math.abs(heightMultiplier) ? widthMultiplier : heightMultiplier;
- double multiplierAbs = Math.abs(multiplier);
- if(xPos == 1.0F && yPos == 1.0F) {
- draggedX = draggedX > centreX ? window.width * multiplierAbs : window.width * -multiplierAbs;
- draggedY = draggedY > centreY ? window.height * multiplierAbs : window.height * -multiplierAbs;
- }
- if(xPos == 1.0F && yPos == 0.0F){
- draggedX = draggedX > centreX ? window.width * multiplierAbs : window.width * -multiplierAbs;
- draggedY = draggedY > centreY ? window.height * multiplier : window.height * -multiplier;
- }
- }
- if(xPos != 0.5) { //middle rescale boxes only change one axis
- newX += centreX;
- newW = draggedX - centreX;
- }
- if(yPos != 0.5) { //middle rescale boxes only change one axis
- newY += centreY;
- newH = draggedY - centreY;
- }
- if(newW < 0){ // flip negative width
- newX += newW;
- newW = -newW;
- }
- if(newH < 0){ // flip negative height
- newY += newH;
- newH = -newH;
- }
Add Comment
Please, Sign In to add comment