move the source files to ./src
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
'use strict';
|
||||
|
||||
var config = require('./config');
|
||||
|
||||
function FrameHandler(viewport) {
|
||||
var _frames;
|
||||
var _frameType = 'image';
|
||||
|
||||
function init() {
|
||||
initFrames();
|
||||
}
|
||||
|
||||
function getFramesAsArray() {
|
||||
return [
|
||||
_frames.top, _frames.right, _frames.bottom, _frames.left
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the 4 rectangles which are used when current canvas should be framed
|
||||
*/
|
||||
function initFrames() {
|
||||
var frame = new fabric.Rect(config.frames.default);
|
||||
|
||||
_frames = {
|
||||
top: frame.clone(),
|
||||
right: frame.clone(),
|
||||
bottom: frame.clone(),
|
||||
left: frame.clone()
|
||||
};
|
||||
|
||||
getFramesAsArray().forEach(function (o) {
|
||||
viewport.canvas.add(o);
|
||||
});
|
||||
}
|
||||
|
||||
init();
|
||||
|
||||
/**
|
||||
* @return {String}
|
||||
*/
|
||||
this.getFrameType = function () {
|
||||
return _frameType;
|
||||
};
|
||||
|
||||
this.setVisible = function (isVisible) {
|
||||
isVisible = typeof isVisible === 'undefined' ? true : !!isVisible;
|
||||
|
||||
getFramesAsArray().forEach(function (frame) {
|
||||
frame.set({ visible: isVisible });
|
||||
});
|
||||
|
||||
viewport.canvas.renderAll();
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets passed frametype to passed viewwport
|
||||
* @param {string} frameType none|image|black|white
|
||||
* @return {FrameHandler}
|
||||
*/
|
||||
this.setFrames = function (frameType) {
|
||||
var bounds = viewport.getBounds();
|
||||
|
||||
frameType = frameType || _frameType || 'image';
|
||||
_frameType = frameType;
|
||||
|
||||
if (!frameType) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (frameType === 'none') {
|
||||
return this.setVisible(false);
|
||||
}
|
||||
|
||||
this.setVisible(true);
|
||||
|
||||
getFramesAsArray().forEach(function (o) {
|
||||
o.set(config.frames[frameType]);
|
||||
});
|
||||
|
||||
var vpData = viewport.getData();
|
||||
var frameSize = 29;
|
||||
if (vpData.dim.units === 'inch') {
|
||||
frameSize /= 2.54;
|
||||
}
|
||||
|
||||
_frames.top.height =
|
||||
_frames.bottom.height =
|
||||
_frames.right.width =
|
||||
_frames.left.width = vpData.ppmm * frameSize * viewport.canvas.getImage().scaleX;
|
||||
|
||||
_frames.top.width = _frames.bottom.width = vpData.width;
|
||||
_frames.right.height = _frames.left.height = vpData.height;
|
||||
|
||||
if (frameType === 'image') {
|
||||
_frames.top.width -= (vpData.ppmm * frameSize * viewport.canvas.getImage().scaleX) * 2;
|
||||
_frames.bottom.width = _frames.top.width;
|
||||
_frames.right.height -= (vpData.ppmm * frameSize * viewport.canvas.getImage().scaleX) * 2;
|
||||
_frames.left.height = _frames.right.height;
|
||||
|
||||
_frames.top.set({
|
||||
top: bounds.top,
|
||||
}).centerH().setCoords();
|
||||
|
||||
_frames.bottom.set({
|
||||
top: (bounds.top + bounds.height - _frames.bottom.height) - 1
|
||||
}).centerH().setCoords();
|
||||
|
||||
_frames.right.set({
|
||||
left: (bounds.left + bounds.width - _frames.right.width) - 1
|
||||
}).centerV().setCoords();
|
||||
|
||||
_frames.left.set({
|
||||
left: bounds.left
|
||||
}).centerV().setCoords();
|
||||
} else {
|
||||
_frames.top.set({
|
||||
top: (bounds.top - _frames.top.height) + 1,
|
||||
}).centerH().setCoords();
|
||||
|
||||
_frames.bottom.set({
|
||||
top: (bounds.top + bounds.height) - 1,
|
||||
}).centerH().setCoords();
|
||||
|
||||
_frames.right.set({
|
||||
left: (bounds.left + bounds.width) - 1
|
||||
}).centerV().setCoords();
|
||||
|
||||
_frames.left.set({
|
||||
left: (bounds.left - _frames.left.width) + 1
|
||||
}).centerV().setCoords();
|
||||
}
|
||||
|
||||
viewport.canvas.renderAll();
|
||||
|
||||
return this;
|
||||
};
|
||||
}
|
||||
|
||||
module.exports = FrameHandler;
|
||||
Reference in New Issue
Block a user