tshirtdesign.js 2.93 KB
define(['app'], function (app) {
	//'use strict';

	app.controller('TshirtdesignCtrl', function ($scope, $rootScope, $illustration) {
		var canvas = new fabric.Canvas('main-design-container');
		fabric.Object.prototype.transparentCorners = false;

		canvas.on('after:render', function() {
		});
		canvas.on({
			'object:moving': onIllustrationChange,
			'object:scaling': onIllustrationChange,
			'object:rotating': onIllustrationChange,
			'object:selected': onIllustrationSelected,
			'selected:deselected' : onIllustrationOut,
			//'selected:out'     : onIllustrationOut,
			//'mouse:up' : onIllustrationOut,
		});
		function onIllustrationChange(options) {
			// options.target.setCoords();
			// canvas.forEachObject(function(obj) {
			// if (obj === options.target) return;
			// 	obj.setOpacity(options.target.intersectsWithObject(obj) ? 0.5 : 1);
			// });

		}

		function onIllustrationOut() {
			console.log('out object');
		}

		$scope.currentObject = null;
		function onIllustrationSelected(options) {
			var object = options.target;
			$scope.typeObject = object.type;
			switch ($scope.typeObject) {
				case 'i-text' :
					$('#input-design-text').focus();
					$rootScope.isShowLeftPanel = 'text';
					break;

				case 'path-group' :
					$rootScope.isShowLeftPanel = 'illustration';
					break;

				default :
					$rootScope.isShowLeftPanel = 'default';
					break;
			}
			$rootScope.safeApply();

		}

		// Illustration process
		$scope.changeIllustrationCategory = function(currentIllustration){
			$scope.currentIllustrationCate = $illustration.getList(currentIllustration);
			//console.log($scope.currentIllustrationCate);
		};

		$scope.insertSvg = function(item){
			fabric.loadSVGFromURL(item.path, function(objects, options) {
				var shape = fabric.util.groupSVGElements(objects, options);
				// shape.setFill('green');
				canvas.add(shape.scale(0.6));
				shape.set({ left: 150, top: 200 }).setCoords();
				canvas.renderAll();
				canvas.setActiveObject(shape);
			});
		};

		// color pattern
		$scope.changeColorPattern = function(color){
			canvas.getActiveObject().set("fill", color);
            canvas.renderAll();
		};
		$scope.listColorPatterns = [
			'#000000',
			'#ffff00',
			'#ff6600',
			'#ff0000',
			'#ff6262',
			'#ffa19c',
			'#ff9933',
			'#c45d01',
			'#5d2b03',
			'#ffffcc',
			'#000000',
			'#ffff00',
			'#ff6600',
			'#ff0000',
			'#ff6262',
			'#ffa19c',
			'#ff9933',
			'#c45d01',
			'#5d2b03',
			'#ffffcc',
			'#000000',
			'#ffff00',
			'#ff6600',
			'#ff0000',
			'#ff6262',
			'#ffa19c',
			'#ff9933',
			'#c45d01',
			'#5d2b03',
			'#ffffcc',
			'#ffffcc'
		];

		$scope.focusInputText = function() {
			if($scope.typeObject != 'i-text')
				$scope.iText = new fabric.IText('');
		};

		//Design text
		$scope.inputText = function(e) {
			var iText = $scope.iText;
			iText.text = e;
			canvas.add(iText);
			canvas.renderAll();
			canvas.setActiveObject(iText);
		};

		//init
		//$scope.showIllustration('default');
	});
});