From 4806a3e072eb9c8beb1e4bc7d4d91c1312c59584 Mon Sep 17 00:00:00 2001 From: Rikard Bartholf Date: Mon, 15 May 2017 20:59:29 +0200 Subject: [PATCH] Prepare frame rendering in Viewport --- index.php | 8 +++ src/js/components/ImageEditor/Viewport.js | 74 +++++++++++++++++++++++ src/js/init.js | 7 ++- 3 files changed, 88 insertions(+), 1 deletion(-) diff --git a/index.php b/index.php index bc13307..e8ac05a 100644 --- a/index.php +++ b/index.php @@ -17,6 +17,14 @@ Mirror: No crop: + Canvas Frame: +

diff --git a/src/js/components/ImageEditor/Viewport.js b/src/js/components/ImageEditor/Viewport.js index 2d5500d..c830384 100644 --- a/src/js/components/ImageEditor/Viewport.js +++ b/src/js/components/ImageEditor/Viewport.js @@ -129,6 +129,80 @@ function Viewport(canvas) { canvas.getButtonMenu().bringToFront(); }; + var _frames = []; + + function getFrame(borderType) { + _frames.forEach(function (o) { + canvas.remove(o); + }); + _frames = []; + + var frames = { + top: new fabric.Rect({ + fill: 'transparent', + width: _data.width - (_data.ppmm * 29) * 2, + height: _data.ppmm * 29, + stroke: '#000', + strokeWidth: 1 + }), + right: new fabric.Rect({ + fill: 'transparent', + width: _data.ppmm * 29, + height: _data.height - (_data.ppmm * 29) * 2, + stroke: '#000', + strokeWidth: 1 + }) + }; + + frames.bottom = frames.top.clone(); + frames.left = frames.right.clone(); + } + + /** + * @param {string} frameType white|black|image|none + * @return {Viewport} + */ + this.setFrame = function (frameType) { + /* + _rect = new fabric.Rect({ + evented: false, + fill: 'transparent', + width: _data.width, + height: _data.height, + stroke: '#fff', + strokeWidth: canvas.__type === 'canvas' ? 0 : _borderWidth + }); + */ +console.log(_data.image) + var frames = { + top: new fabric.Rect({ + fill: 'transparent', + width: _data.width - (_data.ppmm * 29) * 2, + height: _data.ppmm * 29, + stroke: '#000', + strokeWidth: 1, + top: _data.image.top - 1 + }), + right: new fabric.Rect({ + fill: 'transparent', + width: _data.ppmm * 29, + height: _data.height - (_data.ppmm * 29) * 2, + stroke: '#000', + strokeWidth: 1 + }) + }; + + frames.bottom = frames.top.clone().set({ + top: (_data.image.top + _data.image.height) - frames.top.height + }); + + frames.left = frames.right.clone(); + + frames.top.addTo(canvas).centerH(); + frames.bottom.addTo(canvas).centerH(); + canvas.renderAll() + } + this.getData = function () { return _data; }; diff --git a/src/js/init.js b/src/js/init.js index a9f11d8..82cb1f8 100644 --- a/src/js/init.js +++ b/src/js/init.js @@ -7,7 +7,8 @@ h: $('#form-control input[name="h"]'), image_id: $('#form-control input[name="image_id"]'), mirror: $('#form-control input[name="mirror"]'), - noCrop: $('#form-control input[name="no-crop"]') + noCrop: $('#form-control input[name="no-crop"]'), + border: $('#form-control select[name="canvas-border"]'), }; var imageUrl = '//images.photowall.com/products/' + $input.image_id.val() + '.jpg?h=450'; @@ -58,10 +59,14 @@ NoCrop: function() { $input.w.trigger('input'); }, + SetBorder: function () { + editor.canvas.getViewport().setFrame($(this).val()); + } }; $input.w.on('input', Event.DimensionChange); $input.h.on('input', Event.DimensionChange); $input.mirror.on('change', Event.Mirror); $input.noCrop.on('change', Event.NoCrop); + $input.border.on('change', Event.SetBorder); }());