(function ($) { var img = 'plugins/shapes/img/icons-menu-main-shapes.png'; // extend menu $.extend(true, $.fn.wPaint.menus.main.items, { rectangle: { group: 'shapes' }, roundedRect: { icon: 'activate', group: 'shapes', title: 'Rounded Rectangle', img: img, index: 0, callback: function () { this.setMode('roundedRect'); } }, square: { icon: 'activate', group: 'shapes', title: 'Square', img: img, index: 1, callback: function () { this.setMode('square'); } }, roundedSquare: { icon: 'activate', group: 'shapes', title: 'Rounded Square', img: img, index: 2, callback: function () { this.setMode('roundedSquare'); } }, diamond: { icon: 'activate', group: 'shapes', title: 'Diamond', img: img, index: 4, callback: function () { this.setMode('diamond'); } }, ellipse: { group: 'shapes2' }, circle: { icon: 'activate', group: 'shapes2', title: 'Circle', img: img, index: 3, callback: function () { this.setMode('circle'); } }, pentagon: { icon: 'activate', group: 'shapes2', title: 'Pentagon', img: img, index: 5, callback: function () { this.setMode('pentagon'); } }, hexagon: { icon: 'activate', group: 'shapes2', title: 'Hexagon', img: img, index: 6, callback: function () { this.setMode('hexagon'); } } }); // extend functions $.fn.wPaint.extend({ /**************************************** * roundedRect ****************************************/ _drawRoundedRectDown: function (e) { this._drawShapeDown(e); }, _drawRoundedRectMove: function (e) { this._drawShapeMove(e); var radius = e.w > e.h ? e.h / e.w : e.w / e.h; this.ctxTemp.roundedRect(e.x, e.y, e.w, e.h, Math.ceil(radius * (e.w * e.h * 0.001))); this.ctxTemp.stroke(); this.ctxTemp.fill(); }, _drawRoundedRectUp: function (e) { this._drawShapeUp(e); this._addUndo(); }, /**************************************** * square ****************************************/ _drawSquareDown: function (e) { this._drawShapeDown(e); }, _drawSquareMove: function (e) { this._drawShapeMove(e); var l = e.w > e.h ? e.h : e.w; this.ctxTemp.rect(e.x, e.y, l, l); this.ctxTemp.stroke(); this.ctxTemp.fill(); }, _drawSquareUp: function (e) { this._drawShapeUp(e); this._addUndo(); }, /**************************************** * roundedSquare ****************************************/ _drawRoundedSquareDown: function (e) { this._drawShapeDown(e); }, _drawRoundedSquareMove: function (e) { this._drawShapeMove(e); var l = e.w > e.h ? e.h : e.w; this.ctxTemp.roundedRect(e.x, e.y, l, l, Math.ceil(l * l * 0.001)); this.ctxTemp.stroke(); this.ctxTemp.fill(); }, _drawRoundedSquareUp: function (e) { this._drawShapeUp(e); this._addUndo(); }, /**************************************** * diamond ****************************************/ _drawDiamondDown: function (e) { this._drawShapeDown(e); }, _drawDiamondMove: function (e) { this._drawShapeMove(e); this.ctxTemp.diamond(e.x, e.y, e.w, e.h); this.ctxTemp.stroke(); this.ctxTemp.fill(); }, _drawDiamondUp: function (e) { this._drawShapeUp(e); this._addUndo(); }, /**************************************** * circle ****************************************/ _drawCircleDown: function (e) { this._drawShapeDown(e); }, _drawCircleMove: function (e) { this._drawShapeMove(e); var l = e.w > e.h ? e.h : e.w; this.ctxTemp.ellipse(e.x, e.y, l, l); this.ctxTemp.stroke(); this.ctxTemp.fill(); }, _drawCircleUp: function (e) { this._drawShapeUp(e); this._addUndo(); }, /**************************************** * pentagon ****************************************/ _drawPentagonDown: function (e) { this._drawShapeDown(e); }, _drawPentagonMove: function (e) { this._drawShapeMove(e); this.ctxTemp.pentagon(e.x, e.y, e.w, e.h); this.ctxTemp.stroke(); this.ctxTemp.fill(); }, _drawPentagonUp: function (e) { this._drawShapeUp(e); this._addUndo(); }, /**************************************** * hexagon ****************************************/ _drawHexagonDown: function (e) { this._drawShapeDown(e); }, _drawHexagonMove: function (e) { this._drawShapeMove(e); this.ctxTemp.hexagon(e.x, e.y, e.w, e.h); this.ctxTemp.stroke(); this.ctxTemp.fill(); }, _drawHexagonUp: function (e) { this._drawShapeUp(e); this._addUndo(); } }); })(jQuery);