Skip to content

Commit f0d2c08

Browse files
committed
フリーハンド吹き出しにテキストを追加
1 parent bbdddf2 commit f0d2c08

File tree

5 files changed

+418
-7
lines changed

5 files changed

+418
-7
lines changed

index.html

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1111,6 +1111,20 @@ <h5 data-i18n="comfyUI">ComfyUI</h5>
11111111
<button id="sbMoveButton" data-i18n="sbMoveMode">Move Point</button>
11121112
<button id="sbDeleteButton" data-i18n="sbDeleteMode">Delete Point</button>
11131113
</div>
1114+
<div class="input-group-multi" data-group="sbFreehandTextGroup">
1115+
<button id="sbFreehandNothingText" onclick="sbFreehandTextChange('Nothing', this)" data-value="Nothing">
1116+
<i class="material-icons">do_not_disturb</i>
1117+
<i class="material-icons">text_fields</i>
1118+
</button>
1119+
<button id="sbFreehandHorizontalText" onclick="sbFreehandTextChange('Horizontal', this)" class="selected" data-value="Horizontal">
1120+
<i class="material-icons">east</i>
1121+
<i class="material-icons">text_fields</i>
1122+
</button>
1123+
<button id="sbFreehandVerticalText" onclick="sbFreehandTextChange('Vertical', this)" data-value="Vertical">
1124+
<i class="material-icons">south</i>
1125+
<i class="material-icons">text_fields</i>
1126+
</button>
1127+
</div>
11141128
<hr>
11151129
<div class="input-group">
11161130
<label for="sbStrokeColor" data-i18n="line">Line</label>
@@ -1140,7 +1154,7 @@ <h5 data-i18n="comfyUI">ComfyUI</h5>
11401154

11411155

11421156
<div class="input-container-leftSpace" data-i18n-label="cornerRadius">
1143-
<input type="range" id="sbSornerRadius" min="0" max="15" value="0">
1157+
<input type="range" id="sbSornerRadius" min="0" max="15" value="2">
11441158
</div>
11451159
<div class="input-container-leftSpace" data-i18n-label="panelOpacity">
11461160
<input type="range" id="sbFillOpacity" min="0" max="100" value="100">

js/fabric/fabric-management.js

Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -405,6 +405,7 @@ if (geometry&&geometry.isValid()) {
405405
createSpeechBubble(mergeOverlappingShapes(geometry));
406406
} else {
407407
canvasLogger.warn("jsts up error");
408+
sbClear();
408409
}
409410

410411
points=[];
@@ -424,6 +425,7 @@ createSpeechBubble(mergeOverlappingShapes(geometry));
424425
points=[];
425426
} else {
426427
canvasLogger.warn("jsts up error");
428+
sbClear();
427429
}
428430
updateObjectSelectability();
429431
requestAnimationFrame(()=>canvas.renderAll());
@@ -493,9 +495,53 @@ canvas.remove(rect);
493495
event.target.targetObject.customType="";
494496
canvas.requestRenderAll();
495497
}
498+
if (isFreehandBubblePath(event.target)) {
499+
const rect=getFreehandBubbleRectByPath(event.target);
500+
const textbox=getFreehandBubbleTextByPath(event.target);
501+
canvas.remove(rect);
502+
canvas.remove(textbox);
503+
canvas.requestRenderAll();
504+
}
505+
if (isFreehandBubbleText(event.target)) {
506+
const rect=getFreehandBubbleRectByPath(event.target.targetObject);
507+
canvas.remove(rect);
508+
event.target.targetObject.customType="";
509+
canvas.requestRenderAll();
510+
}
496511
});
497512

513+
canvas.on("object:moving",function (event) {
514+
if (isFreehandBubblePath(event.target)) {
515+
eventLogger.trace('object:moving freehandBubble');
516+
updateFreehandBubblePositions(event.target);
517+
canvas.requestRenderAll();
518+
}
519+
});
498520

521+
canvas.on("mouse:up",function (event) {
522+
if (isFreehandBubblePath(event.target)) {
523+
eventLogger.trace('mouse:up freehandBubble');
524+
updateFreehandBubblePositions(event.target);
525+
}
526+
});
527+
528+
canvas.on("text:changed",function (event) {
529+
if (isFreehandBubbleText(event.target)) {
530+
eventLogger.trace('text:changed freehandBubble');
531+
requestAnimationFrame(()=>{
532+
freehandBubbleTextChanged(event.target);
533+
});
534+
}
535+
});
536+
537+
canvas.on("object:scaling",function (event) {
538+
if (isFreehandBubblePath(event.target)) {
539+
eventLogger.trace('object:scaling freehandBubble');
540+
event.target.baseScaleX=event.target.scaleX;
541+
event.target.baseScaleY=event.target.scaleY;
542+
updateFreehandBubbleMetrics(event.target);
543+
}
544+
});
499545

500546

501547

js/layer/layer-management.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ const topLevelLayers=layers.filter(layer=>{
7575
const isChildOfAnotherLayer=layers.some(parentLayer=>
7676
parentLayer.guids&&parentLayer.guids.includes(layer.guid)
7777
);
78-
return (layer.isPanel||isSpeechBubbleSVG(layer))&&!isChildOfAnotherLayer;
78+
return (layer.isPanel||isSpeechBubbleSVG(layer)||isFreehandBubblePath(layer))&&!isChildOfAnotherLayer;
7979
});
8080

8181
topLevelLayers.forEach(layer=>{

0 commit comments

Comments
 (0)