Commit 057ad34c679e4d4e1403d0d9ee13589780d659a3
1 parent
b3800963f7
Exists in
master
and in
1 other branch
fix clear color SVG
Showing 2 changed files with 71 additions and 21 deletions Side-by-side Diff
app/index.html
app/scripts/controllers/tshirtdesign.js
| ... | ... | @@ -6,6 +6,7 @@ |
| 6 | 6 | var diffX = 40, diffY = 40; |
| 7 | 7 | var _coorTrash_x = 567; |
| 8 | 8 | var _coorTrash_y = 545; |
| 9 | + var ObjectOrd=0; | |
| 9 | 10 | //Set width and height canvas |
| 10 | 11 | function setSizeCanvas() { |
| 11 | 12 | if(typeof $rootScope.placeTshirt.place == 'undefined') |
| ... | ... | @@ -169,7 +170,7 @@ |
| 169 | 170 | } |
| 170 | 171 | object.saveState(); |
| 171 | 172 | |
| 172 | - console.log(object.originalState); | |
| 173 | + // console.log(object.originalState); | |
| 173 | 174 | stateObj[indexCurr] = JSON.stringify(object.originalState); |
| 174 | 175 | listObj[indexCurr] = object; |
| 175 | 176 | indexCurr++; |
| 176 | 177 | |
| ... | ... | @@ -188,16 +189,20 @@ |
| 188 | 189 | } |
| 189 | 190 | |
| 190 | 191 | // |
| 191 | - var objOffset = canvas.getActiveObject().getBoundingRect(); | |
| 192 | - var cH = canvas.height, cW = canvas.width, H0 = 20, W0 = 20; | |
| 193 | - //console.log(objOffset,canvas.height,canvas.width); | |
| 194 | - if (objOffset.left<W0-objOffset.width || objOffset.left>cW-W0 || objOffset.top<H0-objOffset.height || objOffset.top>cH-H0){ | |
| 195 | - if (confirm('削除してもよろしいですか')){ | |
| 196 | - canvas.getActiveObject().remove(); | |
| 197 | - }else{ | |
| 198 | - undoCanvas(); | |
| 199 | - return; | |
| 192 | + try{ | |
| 193 | + var objOffset = canvas.getActiveObject().getBoundingRect(); | |
| 194 | + var cH = canvas.height, cW = canvas.width, H0 = 20, W0 = 20; | |
| 195 | + //console.log(objOffset,canvas.height,canvas.width); | |
| 196 | + if (objOffset.left<W0-objOffset.width || objOffset.left>cW-W0 || objOffset.top<H0-objOffset.height || objOffset.top>cH-H0){ | |
| 197 | + if (confirm('削除してもよろしいですか')){ | |
| 198 | + canvas.getActiveObject().remove(); | |
| 199 | + }else{ | |
| 200 | + undoCanvas(); | |
| 201 | + return; | |
| 202 | + } | |
| 200 | 203 | } |
| 204 | + }catch (e){ | |
| 205 | + // | |
| 201 | 206 | } |
| 202 | 207 | |
| 203 | 208 | var object = options.target; |
| 204 | 209 | |
| ... | ... | @@ -300,12 +305,19 @@ |
| 300 | 305 | $scope.canvasClearAll = function(){ |
| 301 | 306 | if (confirm('配置されたすべての文字や画像を消去します')){ |
| 302 | 307 | canvas.clear(); |
| 308 | + ObjectOrd = 0; | |
| 303 | 309 | } |
| 304 | 310 | } |
| 305 | 311 | |
| 306 | 312 | function onObjectSelected(options) { |
| 307 | 313 | var currentObj = options.target; |
| 308 | - | |
| 314 | + if (typeof currentObj.toOrd() != 'number'){ | |
| 315 | + var currentObjOrd = ++ObjectOrd; | |
| 316 | + currentObj.toOrd = function(){ | |
| 317 | + return currentObjOrd; | |
| 318 | + } | |
| 319 | + } | |
| 320 | + console.log(currentObj.toOrd()); | |
| 309 | 321 | $scope.typeObject = currentObj.type; |
| 310 | 322 | switch ($scope.typeObject) { |
| 311 | 323 | case 'i-text' : |
| 312 | 324 | |
| ... | ... | @@ -337,9 +349,15 @@ |
| 337 | 349 | $scope.currentIllustrationCate = $illustration.getList(currentIllustration); |
| 338 | 350 | }; |
| 339 | 351 | |
| 352 | + var arrSvgOriginal = []; | |
| 340 | 353 | $scope.insertSvg = function(item){ |
| 341 | 354 | fabric.loadSVGFromURL(item.path, function(objects, options) { |
| 342 | 355 | var shape = fabric.util.groupSVGElements(objects, options); |
| 356 | + var currentObjOrd = ++ObjectOrd; | |
| 357 | + arrSvgOriginal[currentObjOrd] = item.path; | |
| 358 | + shape.toOrd = function(){ | |
| 359 | + return currentObjOrd; | |
| 360 | + } | |
| 343 | 361 | canvas.add(shape.scale(0.6)); |
| 344 | 362 | shape.set({ left: 150, top: 100 }).setCoords(); |
| 345 | 363 | canvas.renderAll(); |
| 346 | 364 | |
| ... | ... | @@ -359,16 +377,41 @@ |
| 359 | 377 | var obj = canvas.getActiveObject(); |
| 360 | 378 | if (!color){ |
| 361 | 379 | color = 'none'; |
| 380 | + // console.log(obj.toOrd(), arrSvgOriginal[obj.toOrd()]); | |
| 381 | + if (typeof obj.toOrd() == 'number' && typeof arrSvgOriginal[obj.toOrd()] != 'undefined'){ | |
| 382 | + var currentObjOrd = obj.toOrd(); | |
| 383 | + fabric.loadSVGFromURL(arrSvgOriginal[obj.toOrd()], function(objects, options) { | |
| 384 | + var shape = fabric.util.groupSVGElements(objects, options); | |
| 385 | + shape.toOrd = function(){ | |
| 386 | + return currentObjOrd; | |
| 387 | + } | |
| 388 | + obj.setCoords(); | |
| 389 | + shape.setScaleX(obj.getScaleX()); | |
| 390 | + shape.setScaleY(obj.getScaleY()); | |
| 391 | + shape.set('top',obj.getTop()); | |
| 392 | + shape.set('left',obj.getLeft()); | |
| 393 | + shape.set('angle',obj.getAngle()); | |
| 394 | + // shape.set('height',obj.getHeight()); | |
| 395 | + // shape.set('width',obj.getWidth()); | |
| 396 | + canvas.add(shape); | |
| 397 | + shape.setCoords(); | |
| 398 | + // shape.set({ left: 150, top: 100 }).setCoords(); | |
| 399 | + canvas.renderAll(); | |
| 400 | + canvas.setActiveObject(shape); | |
| 401 | + obj.remove(); | |
| 402 | + }); | |
| 403 | + } | |
| 404 | + }else{ | |
| 405 | + if (obj instanceof fabric.PathGroup) { | |
| 406 | + obj.getObjects().forEach(function(o) { | |
| 407 | + o.fill = color; | |
| 408 | + }); | |
| 409 | + } | |
| 410 | + else { | |
| 411 | + obj.fill = color; | |
| 412 | + } | |
| 413 | + canvas.renderAll(); | |
| 362 | 414 | } |
| 363 | - if (obj instanceof fabric.PathGroup) { | |
| 364 | - obj.getObjects().forEach(function(o) { | |
| 365 | - o.fill = color; | |
| 366 | - }); | |
| 367 | - } | |
| 368 | - else { | |
| 369 | - obj.fill = color; | |
| 370 | - } | |
| 371 | - canvas.renderAll(); | |
| 372 | 415 | }; |
| 373 | 416 | |
| 374 | 417 | //Font |
| ... | ... | @@ -685,6 +728,13 @@ |
| 685 | 728 | } |
| 686 | 729 | $('#tshirt-design-saved').modal('hide'); |
| 687 | 730 | canvas.loadFromJSON(item.data,canvas.renderAll.bind(canvas)); |
| 731 | + ObjectOrd = 0; | |
| 732 | + canvas.forEachObject(function(obj){ | |
| 733 | + var currentObjOrd = ++ObjectOrd; | |
| 734 | + obj.toOrd = function(){ | |
| 735 | + return currentObjOrd; | |
| 736 | + } | |
| 737 | + }); | |
| 688 | 738 | } |
| 689 | 739 | |
| 690 | 740 | $scope.deleteFavorite = function(idx){ |