PW-1468 - Fix cropping for canvas with image on edge
This commit is contained in:
Vendored
+32
-9
@@ -703,7 +703,8 @@ var DragHandle = function (handler) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
this.init = function () {
|
this.init = function () {
|
||||||
var viewport = this.getCanvas().getViewport();
|
var canvas = this.getCanvas();
|
||||||
|
var viewport = canvas.getViewport();
|
||||||
var viewportData = viewport.getData();
|
var viewportData = viewport.getData();
|
||||||
var frameHandler = viewport.getFrameHandler();
|
var frameHandler = viewport.getFrameHandler();
|
||||||
var tracks = handler.getTracks();
|
var tracks = handler.getTracks();
|
||||||
@@ -713,15 +714,27 @@ var DragHandle = function (handler) {
|
|||||||
this.getCanvas().remove(this.__handles.y);
|
this.getCanvas().remove(this.__handles.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
var frameWidth = frameHandler.getFrameSize();
|
var frameWidth = frameHandler.getFrameSize(); // Rendered frameWidth, in pixels.
|
||||||
|
var realFrameWidth = canvas.__canvasFrameSize; // Real frame size, in cm.
|
||||||
var frameType = frameHandler.getFrameType();
|
var frameType = frameHandler.getFrameType();
|
||||||
|
|
||||||
var handleWidth = frameType == 'image' ? viewportData.width - frameWidth * 2 : viewportData.width;
|
var handleWidth = viewportData.width;
|
||||||
var handleHeight = frameType == 'image' ? viewportData.height - frameWidth * 2 : viewportData.height;
|
var handleHeight = viewportData.height;
|
||||||
|
var widthToDisplay = viewportData.dim.width;
|
||||||
|
var heightToDisplay = viewportData.dim.height;
|
||||||
|
var unit = viewportData.dim.units;
|
||||||
|
|
||||||
|
if (frameType == 'image') {
|
||||||
|
var doubleRealFrameWidth = realFrameWidth * 2;
|
||||||
|
handleWidth -= frameWidth * 2;
|
||||||
|
handleHeight -= frameWidth * 2;
|
||||||
|
widthToDisplay -= unit == 'inch' ? doubleRealFrameWidth / 2.54 : doubleRealFrameWidth;
|
||||||
|
heightToDisplay -= unit == 'inch' ? doubleRealFrameWidth / 2.54 : doubleRealFrameWidth;
|
||||||
|
}
|
||||||
|
|
||||||
this.__handles = {
|
this.__handles = {
|
||||||
x: getRect(viewportData.dim.width + ' ' + viewportData.dim.units, handleWidth),
|
x: getRect(widthToDisplay + ' ' + unit, handleWidth),
|
||||||
y: getRect(viewportData.dim.height + ' ' + viewportData.dim.units, handleHeight)
|
y: getRect(heightToDisplay + ' ' + unit, handleHeight)
|
||||||
};
|
};
|
||||||
|
|
||||||
this.__handles.x.addTo(this.getCanvas()).centerH().set({ top: tracks.x.top }).setCoords();
|
this.__handles.x.addTo(this.getCanvas()).centerH().set({ top: tracks.x.top }).setCoords();
|
||||||
@@ -1272,6 +1285,7 @@ function ImageEditor(canvasId, args) {
|
|||||||
type: 'wallpaper',
|
type: 'wallpaper',
|
||||||
// canvasFrameType defaults to image on frame
|
// canvasFrameType defaults to image on frame
|
||||||
canvasFrameType: 'image',
|
canvasFrameType: 'image',
|
||||||
|
canvasFrameSize: 2.9,
|
||||||
// Default texts on the buttons
|
// Default texts on the buttons
|
||||||
texts: {
|
texts: {
|
||||||
showThreeD: '3d',
|
showThreeD: '3d',
|
||||||
@@ -1315,7 +1329,8 @@ function ImageEditor(canvasId, args) {
|
|||||||
_canvas.toggle3D(this.isActive());
|
_canvas.toggle3D(this.isActive());
|
||||||
});
|
});
|
||||||
_canvas.set({
|
_canvas.set({
|
||||||
__canvasFrameType: _settings.canvasFrameType
|
__canvasFrameType: _settings.canvasFrameType,
|
||||||
|
__canvasFrameSize: _settings.canvasFrameSize,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
_canvas.getButtonMenu()
|
_canvas.getButtonMenu()
|
||||||
@@ -1367,7 +1382,15 @@ function ImageEditor(canvasId, args) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
unit = typeof unit !== 'undefined' ? unit : _settings.unit;
|
unit = typeof unit !== 'undefined' ? unit : _settings.unit;
|
||||||
_canvas.getViewport().set(width, height, unit);
|
var viewport = _canvas.getViewport();
|
||||||
|
var frameType = _canvas.__canvasFrameType;
|
||||||
|
|
||||||
|
if (frameType === 'image') {
|
||||||
|
var canvasFrameSize = unit === 'inch' ? _canvas.__canvasFrameSize / 2.54 : _canvas.__canvasFrameSize;
|
||||||
|
width += 2 * canvasFrameSize;
|
||||||
|
height += 2 * canvasFrameSize;
|
||||||
|
}
|
||||||
|
viewport.set(width, height, unit);
|
||||||
|
|
||||||
var shouldBeCropped = util.isAspectChanged(_canvas.getImage().width, _canvas.getImage().height, width, height);
|
var shouldBeCropped = util.isAspectChanged(_canvas.getImage().width, _canvas.getImage().height, width, height);
|
||||||
if (shouldBeCropped) {
|
if (shouldBeCropped) {
|
||||||
@@ -1853,7 +1876,7 @@ function Viewport(canvas) {
|
|||||||
if (canvas.__type !== 'canvas') {
|
if (canvas.__type !== 'canvas') {
|
||||||
drawBeams();
|
drawBeams();
|
||||||
} else {
|
} else {
|
||||||
self.setFrame(self.getFrameHandler().getFrameType());
|
self.setFrame(canvas.__canvasFrameType);
|
||||||
}
|
}
|
||||||
|
|
||||||
canvas.getDragbars().apply();
|
canvas.getDragbars().apply();
|
||||||
|
|||||||
+19
-6
@@ -97,7 +97,8 @@ var DragHandle = function (handler) {
|
|||||||
};
|
};
|
||||||
|
|
||||||
this.init = function () {
|
this.init = function () {
|
||||||
var viewport = this.getCanvas().getViewport();
|
var canvas = this.getCanvas();
|
||||||
|
var viewport = canvas.getViewport();
|
||||||
var viewportData = viewport.getData();
|
var viewportData = viewport.getData();
|
||||||
var frameHandler = viewport.getFrameHandler();
|
var frameHandler = viewport.getFrameHandler();
|
||||||
var tracks = handler.getTracks();
|
var tracks = handler.getTracks();
|
||||||
@@ -107,15 +108,27 @@ var DragHandle = function (handler) {
|
|||||||
this.getCanvas().remove(this.__handles.y);
|
this.getCanvas().remove(this.__handles.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
var frameWidth = frameHandler.getFrameSize();
|
var frameWidth = frameHandler.getFrameSize(); // Rendered frameWidth, in pixels.
|
||||||
|
var realFrameWidth = canvas.__canvasFrameSize; // Real frame size, in cm.
|
||||||
var frameType = frameHandler.getFrameType();
|
var frameType = frameHandler.getFrameType();
|
||||||
|
|
||||||
var handleWidth = frameType == 'image' ? viewportData.width - frameWidth * 2 : viewportData.width;
|
var handleWidth = viewportData.width;
|
||||||
var handleHeight = frameType == 'image' ? viewportData.height - frameWidth * 2 : viewportData.height;
|
var handleHeight = viewportData.height;
|
||||||
|
var widthToDisplay = viewportData.dim.width;
|
||||||
|
var heightToDisplay = viewportData.dim.height;
|
||||||
|
var unit = viewportData.dim.units;
|
||||||
|
|
||||||
|
if (frameType == 'image') {
|
||||||
|
var doubleRealFrameWidth = realFrameWidth * 2;
|
||||||
|
handleWidth -= frameWidth * 2;
|
||||||
|
handleHeight -= frameWidth * 2;
|
||||||
|
widthToDisplay -= unit == 'inch' ? doubleRealFrameWidth / 2.54 : doubleRealFrameWidth;
|
||||||
|
heightToDisplay -= unit == 'inch' ? doubleRealFrameWidth / 2.54 : doubleRealFrameWidth;
|
||||||
|
}
|
||||||
|
|
||||||
this.__handles = {
|
this.__handles = {
|
||||||
x: getRect(viewportData.dim.width + ' ' + viewportData.dim.units, handleWidth),
|
x: getRect(widthToDisplay + ' ' + unit, handleWidth),
|
||||||
y: getRect(viewportData.dim.height + ' ' + viewportData.dim.units, handleHeight)
|
y: getRect(heightToDisplay + ' ' + unit, handleHeight)
|
||||||
};
|
};
|
||||||
|
|
||||||
this.__handles.x.addTo(this.getCanvas()).centerH().set({ top: tracks.x.top }).setCoords();
|
this.__handles.x.addTo(this.getCanvas()).centerH().set({ top: tracks.x.top }).setCoords();
|
||||||
|
|||||||
+12
-2
@@ -12,6 +12,7 @@ function ImageEditor(canvasId, args) {
|
|||||||
type: 'wallpaper',
|
type: 'wallpaper',
|
||||||
// canvasFrameType defaults to image on frame
|
// canvasFrameType defaults to image on frame
|
||||||
canvasFrameType: 'image',
|
canvasFrameType: 'image',
|
||||||
|
canvasFrameSize: 2.9,
|
||||||
// Default texts on the buttons
|
// Default texts on the buttons
|
||||||
texts: {
|
texts: {
|
||||||
showThreeD: '3d',
|
showThreeD: '3d',
|
||||||
@@ -55,7 +56,8 @@ function ImageEditor(canvasId, args) {
|
|||||||
_canvas.toggle3D(this.isActive());
|
_canvas.toggle3D(this.isActive());
|
||||||
});
|
});
|
||||||
_canvas.set({
|
_canvas.set({
|
||||||
__canvasFrameType: _settings.canvasFrameType
|
__canvasFrameType: _settings.canvasFrameType,
|
||||||
|
__canvasFrameSize: _settings.canvasFrameSize,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
_canvas.getButtonMenu()
|
_canvas.getButtonMenu()
|
||||||
@@ -107,7 +109,15 @@ function ImageEditor(canvasId, args) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
unit = typeof unit !== 'undefined' ? unit : _settings.unit;
|
unit = typeof unit !== 'undefined' ? unit : _settings.unit;
|
||||||
_canvas.getViewport().set(width, height, unit);
|
var viewport = _canvas.getViewport();
|
||||||
|
var frameType = _canvas.__canvasFrameType;
|
||||||
|
|
||||||
|
if (frameType === 'image') {
|
||||||
|
var canvasFrameSize = unit === 'inch' ? _canvas.__canvasFrameSize / 2.54 : _canvas.__canvasFrameSize;
|
||||||
|
width += 2 * canvasFrameSize;
|
||||||
|
height += 2 * canvasFrameSize;
|
||||||
|
}
|
||||||
|
viewport.set(width, height, unit);
|
||||||
|
|
||||||
var shouldBeCropped = util.isAspectChanged(_canvas.getImage().width, _canvas.getImage().height, width, height);
|
var shouldBeCropped = util.isAspectChanged(_canvas.getImage().width, _canvas.getImage().height, width, height);
|
||||||
if (shouldBeCropped) {
|
if (shouldBeCropped) {
|
||||||
|
|||||||
+1
-1
@@ -107,7 +107,7 @@ function Viewport(canvas) {
|
|||||||
if (canvas.__type !== 'canvas') {
|
if (canvas.__type !== 'canvas') {
|
||||||
drawBeams();
|
drawBeams();
|
||||||
} else {
|
} else {
|
||||||
self.setFrame(self.getFrameHandler().getFrameType());
|
self.setFrame(canvas.__canvasFrameType);
|
||||||
}
|
}
|
||||||
|
|
||||||
canvas.getDragbars().apply();
|
canvas.getDragbars().apply();
|
||||||
|
|||||||
Reference in New Issue
Block a user