@next2d/text 1.18.12 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +14 -18
- package/src/TextArea/service/TextAreaMovePositionService.d.ts +11 -0
- package/src/TextArea/service/TextAreaMovePositionService.js +42 -0
- package/src/TextArea/usecase/TextAreaCompositionEndUseCase.d.ts +9 -0
- package/src/TextArea/usecase/TextAreaCompositionEndUseCase.js +17 -0
- package/src/TextArea/usecase/TextAreaCompositionStartUseCase.d.ts +9 -0
- package/src/TextArea/usecase/TextAreaCompositionStartUseCase.js +17 -0
- package/src/TextArea/usecase/TextAreaCompositionUpdateUseCase.d.ts +10 -0
- package/src/TextArea/usecase/TextAreaCompositionUpdateUseCase.js +18 -0
- package/src/TextArea/usecase/TextAreaInputUseCase.d.ts +10 -0
- package/src/TextArea/usecase/TextAreaInputUseCase.js +25 -0
- package/src/TextArea/usecase/TextAreaRegisterEventUseCase.d.ts +10 -0
- package/src/TextArea/usecase/TextAreaRegisterEventUseCase.js +21 -0
- package/src/TextData.d.ts +103 -0
- package/src/TextData.js +183 -0
- package/src/TextField/service/TextFieldApplyChangesService.d.ts +11 -0
- package/src/TextField/service/TextFieldApplyChangesService.js +16 -0
- package/src/TextField/service/TextFieldBlinkingClearTimeoutService.d.ts +9 -0
- package/src/TextField/service/TextFieldBlinkingClearTimeoutService.js +16 -0
- package/src/TextField/service/TextFieldCompositionStartService.d.ts +11 -0
- package/src/TextField/service/TextFieldCompositionStartService.js +12 -0
- package/src/TextField/service/TextFieldPasteService.d.ts +11 -0
- package/src/TextField/service/TextFieldPasteService.js +16 -0
- package/src/TextField/usecase/TextFieldArrowDownUseCase.d.ts +12 -0
- package/src/TextField/usecase/TextFieldArrowDownUseCase.js +191 -0
- package/src/TextField/usecase/TextFieldArrowLeftUseCase.d.ts +12 -0
- package/src/TextField/usecase/TextFieldArrowLeftUseCase.js +98 -0
- package/src/TextField/usecase/TextFieldArrowRightUseCase.d.ts +12 -0
- package/src/TextField/usecase/TextFieldArrowRightUseCase.js +92 -0
- package/src/TextField/usecase/TextFieldArrowUpUseCase.d.ts +12 -0
- package/src/TextField/usecase/TextFieldArrowUpUseCase.js +156 -0
- package/src/TextField/usecase/TextFieldBlinkingUseCase.d.ts +11 -0
- package/src/TextField/usecase/TextFieldBlinkingUseCase.js +21 -0
- package/src/TextField/usecase/TextFieldBuildFromCharacterUseCase.d.ts +13 -0
- package/src/TextField/usecase/TextFieldBuildFromCharacterUseCase.js +58 -0
- package/src/TextField/usecase/TextFieldCompositionEndUseCase.d.ts +11 -0
- package/src/TextField/usecase/TextFieldCompositionEndUseCase.js +32 -0
- package/src/TextField/usecase/TextFieldCompositionUpdateUseCase.d.ts +12 -0
- package/src/TextField/usecase/TextFieldCompositionUpdateUseCase.js +109 -0
- package/src/TextField/usecase/TextFieldCopyUseCase.d.ts +11 -0
- package/src/TextField/usecase/TextFieldCopyUseCase.js +38 -0
- package/src/TextField/usecase/TextFieldDeleteTextUseCase.d.ts +11 -0
- package/src/TextField/usecase/TextFieldDeleteTextUseCase.js +108 -0
- package/src/TextField/usecase/TextFieldGetLineTextUseCase.d.ts +12 -0
- package/src/TextField/usecase/TextFieldGetLineTextUseCase.js +32 -0
- package/src/TextField/usecase/TextFieldGetTextDataUseCase.d.ts +15 -0
- package/src/TextField/usecase/TextFieldGetTextDataUseCase.js +26 -0
- package/src/TextField/usecase/TextFieldHtmlTextToRawTextUseCase.d.ts +11 -0
- package/src/TextField/usecase/TextFieldHtmlTextToRawTextUseCase.js +31 -0
- package/src/TextField/usecase/TextFieldInsertTextUseCase.d.ts +12 -0
- package/src/TextField/usecase/TextFieldInsertTextUseCase.js +79 -0
- package/src/TextField/usecase/TextFieldKeyDownEventUseCase.d.ts +12 -0
- package/src/TextField/usecase/TextFieldKeyDownEventUseCase.js +60 -0
- package/src/TextField/usecase/TextFieldReloadUseCase.d.ts +11 -0
- package/src/TextField/usecase/TextFieldReloadUseCase.js +25 -0
- package/src/TextField/usecase/TextFieldReplaceTextUseCase.d.ts +14 -0
- package/src/TextField/usecase/TextFieldReplaceTextUseCase.js +24 -0
- package/src/TextField/usecase/TextFieldResetUseCase.d.ts +11 -0
- package/src/TextField/usecase/TextFieldResetUseCase.js +20 -0
- package/src/TextField/usecase/TextFieldResizeAutoFontSizeUseCase.d.ts +11 -0
- package/src/TextField/usecase/TextFieldResizeAutoFontSizeUseCase.js +37 -0
- package/src/TextField/usecase/TextFieldResizeUseCase.d.ts +11 -0
- package/src/TextField/usecase/TextFieldResizeUseCase.js +49 -0
- package/src/TextField/usecase/TextFieldSelectAllUseCase.d.ts +11 -0
- package/src/TextField/usecase/TextFieldSelectAllUseCase.js +20 -0
- package/src/TextField/usecase/TextFieldSelectedFocusMoveUseCase.d.ts +11 -0
- package/src/TextField/usecase/TextFieldSelectedFocusMoveUseCase.js +90 -0
- package/src/TextField/usecase/TextFieldSetFocusIndexUseCase.d.ts +14 -0
- package/src/TextField/usecase/TextFieldSetFocusIndexUseCase.js +197 -0
- package/src/TextField/usecase/TextFieldSetFocusUseCase.d.ts +11 -0
- package/src/TextField/usecase/TextFieldSetFocusUseCase.js +43 -0
- package/src/TextField/usecase/TextFieldSetScrollXUseCase.d.ts +12 -0
- package/src/TextField/usecase/TextFieldSetScrollXUseCase.js +66 -0
- package/src/TextField/usecase/TextFieldSetScrollYUseCase.d.ts +12 -0
- package/src/TextField/usecase/TextFieldSetScrollYUseCase.js +66 -0
- package/src/TextField/usecase/TextFieldUpdateStopIndexUseCase.d.ts +12 -0
- package/src/TextField/usecase/TextFieldUpdateStopIndexUseCase.js +82 -0
- package/src/TextField.d.ts +602 -0
- package/src/TextField.js +1292 -0
- package/src/TextFormat/service/TextFormatGenerateFontStyleService.d.ts +11 -0
- package/src/TextFormat/service/TextFormatGenerateFontStyleService.js +19 -0
- package/src/TextFormat/service/TextFormatGetWidthMarginService.d.ts +11 -0
- package/src/TextFormat/service/TextFormatGetWidthMarginService.js +19 -0
- package/src/TextFormat/service/TextFormatHtmlTextGenerateStyleService.d.ts +11 -0
- package/src/TextFormat/service/TextFormatHtmlTextGenerateStyleService.js +51 -0
- package/src/TextFormat/service/TextFormatIsSameService.d.ts +12 -0
- package/src/TextFormat/service/TextFormatIsSameService.js +28 -0
- package/src/TextFormat/service/TextFormatSetDefaultService.d.ts +11 -0
- package/src/TextFormat/service/TextFormatSetDefaultService.js +22 -0
- package/{dist → src}/TextFormat.d.ts +42 -128
- package/src/TextFormat.js +233 -0
- package/src/TextParser/service/TextParserAdjustmentHeightService.d.ts +11 -0
- package/src/TextParser/service/TextParserAdjustmentHeightService.js +24 -0
- package/src/TextParser/service/TextParserParseStyleService.d.ts +11 -0
- package/src/TextParser/service/TextParserParseStyleService.js +80 -0
- package/src/TextParser/usecase/TextParserCreateNewLineUseCase.d.ts +13 -0
- package/src/TextParser/usecase/TextParserCreateNewLineUseCase.js +35 -0
- package/src/TextParser/usecase/TextParserParseHtmlTextUseCase.d.ts +15 -0
- package/src/TextParser/usecase/TextParserParseHtmlTextUseCase.js +37 -0
- package/src/TextParser/usecase/TextParserParseTagUseCase.d.ts +17 -0
- package/src/TextParser/usecase/TextParserParseTagUseCase.js +57 -0
- package/src/TextParser/usecase/TextParserParseTextUseCase.d.ts +16 -0
- package/src/TextParser/usecase/TextParserParseTextUseCase.js +140 -0
- package/src/TextParser/usecase/TextParserSetAttributesUseCase.d.ts +14 -0
- package/src/TextParser/usecase/TextParserSetAttributesUseCase.js +63 -0
- package/src/TextUtil.d.ts +114 -0
- package/src/TextUtil.js +186 -0
- package/src/index.d.ts +3 -0
- package/src/index.js +3 -0
- package/src/interface/IAttributeObject.d.ts +4 -0
- package/src/interface/IBlendMode.d.ts +1 -0
- package/src/interface/IBounds.d.ts +6 -0
- package/src/interface/ICharacter.d.ts +5 -0
- package/src/interface/ICharacter.js +1 -0
- package/src/interface/IDictionaryTag.d.ts +8 -0
- package/src/interface/IDictionaryTag.js +1 -0
- package/src/interface/IElementPosition.d.ts +4 -0
- package/src/interface/IElementPosition.js +1 -0
- package/src/interface/IFilterArray.d.ts +2 -0
- package/src/interface/IFilterArray.js +1 -0
- package/src/interface/IGrid.d.ts +6 -0
- package/src/interface/IGrid.js +1 -0
- package/src/interface/ILoopConfig.d.ts +8 -0
- package/src/interface/ILoopConfig.js +1 -0
- package/src/interface/ILoopType.d.ts +1 -0
- package/src/interface/ILoopType.js +1 -0
- package/src/interface/IMovieClipActionObject.d.ts +5 -0
- package/src/interface/IMovieClipActionObject.js +1 -0
- package/src/interface/IMovieClipCharacter.d.ts +17 -0
- package/src/interface/IMovieClipCharacter.js +1 -0
- package/src/interface/IMovieClipLabelObject.d.ts +4 -0
- package/src/interface/IMovieClipLabelObject.js +1 -0
- package/src/interface/IMovieClipSoundObject.d.ts +5 -0
- package/src/interface/IMovieClipSoundObject.js +1 -0
- package/src/interface/IOptions.d.ts +8 -0
- package/src/interface/IOptions.js +1 -0
- package/src/interface/IPlaceObject.d.ts +14 -0
- package/src/interface/IPlaceObject.js +1 -0
- package/src/interface/IRGBA.d.ts +6 -0
- package/src/interface/IRGBA.js +1 -0
- package/src/interface/IShapeCharacter.d.ts +14 -0
- package/src/interface/IShapeCharacter.js +1 -0
- package/src/interface/ISoundTag.d.ts +6 -0
- package/src/interface/ISoundTag.js +1 -0
- package/src/interface/ISurfaceFilter.d.ts +6 -0
- package/src/interface/ISurfaceFilter.js +1 -0
- package/src/interface/ITextFieldAutoSize.d.ts +1 -0
- package/src/interface/ITextFieldAutoSize.js +1 -0
- package/src/interface/ITextFieldCharacter copy.d.ts +26 -0
- package/src/interface/ITextFieldCharacter copy.js +1 -0
- package/src/interface/ITextFieldCharacter.d.ts +26 -0
- package/src/interface/ITextFieldCharacter.js +1 -0
- package/src/interface/ITextFieldType copy.d.ts +1 -0
- package/src/interface/ITextFieldType copy.js +1 -0
- package/src/interface/ITextFieldType.d.ts +1 -0
- package/src/interface/ITextFieldType.js +1 -0
- package/src/interface/ITextFormatAlign copy.d.ts +1 -0
- package/src/interface/ITextFormatAlign copy.js +1 -0
- package/src/interface/ITextFormatAlign.d.ts +1 -0
- package/src/interface/ITextFormatAlign.js +1 -0
- package/src/interface/ITextFormatObject.d.ts +14 -0
- package/src/interface/ITextFormatObject.js +1 -0
- package/src/interface/ITextObject.d.ts +12 -0
- package/src/interface/ITextObject.js +1 -0
- package/src/interface/ITextObjectMode.d.ts +1 -0
- package/src/interface/ITextObjectMode.js +1 -0
- package/src/interface/IVideoCharacter.d.ts +11 -0
- package/src/interface/IVideoCharacter.js +1 -0
- package/dist/TextData.d.ts +0 -74
- package/dist/TextData.js +0 -132
- package/dist/TextFormat.js +0 -493
- package/dist/TextParser.d.ts +0 -23
- package/dist/TextParser.js +0 -459
- package/dist/index.d.ts +0 -3
- package/dist/index.js +0 -3
- package/dist/interface/OptionsImpl.d.ts +0 -8
- package/dist/interface/TextObjectImpl.d.ts +0 -12
- package/dist/interface/TextObjectModeImpl.d.ts +0 -1
- /package/{dist/interface/OptionsImpl.js → src/interface/IAttributeObject.js} +0 -0
- /package/{dist/interface/TextObjectImpl.js → src/interface/IBlendMode.js} +0 -0
- /package/{dist/interface/TextObjectModeImpl.js → src/interface/IBounds.js} +0 -0
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import { execute as textFormatGetWidthMarginService } from "../../TextFormat/service/TextFormatGetWidthMarginService";
|
|
2
|
+
import { execute as textFormatGenerateFontStyleService } from "../../TextFormat/service/TextFormatGenerateFontStyleService";
|
|
3
|
+
import { $context, $setCurrentWidth, $getCurrentWidth } from "../../TextUtil";
|
|
4
|
+
/**
|
|
5
|
+
* @description テキストを解析
|
|
6
|
+
* Analyze text
|
|
7
|
+
*
|
|
8
|
+
* @param {string} texts
|
|
9
|
+
* @param {TextFormat} text_format
|
|
10
|
+
* @param {TextData} text_data
|
|
11
|
+
* @param {IOptions} options
|
|
12
|
+
* @return {void}
|
|
13
|
+
* @method
|
|
14
|
+
* @protected
|
|
15
|
+
*/
|
|
16
|
+
export const execute = (texts, text_format, text_data, options) => {
|
|
17
|
+
let line = text_data.lineTable.length - 1;
|
|
18
|
+
const maxWidth = options.width - textFormatGetWidthMarginService(text_format) - 4;
|
|
19
|
+
for (let idx = 0; idx < texts.length; ++idx) {
|
|
20
|
+
const textFormat = options.textFormats
|
|
21
|
+
? options.textFormats.shift()
|
|
22
|
+
: text_format;
|
|
23
|
+
const text = texts[idx];
|
|
24
|
+
const object = {
|
|
25
|
+
"mode": "text",
|
|
26
|
+
"text": text,
|
|
27
|
+
"x": 0,
|
|
28
|
+
"y": 0,
|
|
29
|
+
"w": 0,
|
|
30
|
+
"h": 0,
|
|
31
|
+
"line": line,
|
|
32
|
+
"textFormat": textFormat.toObject()
|
|
33
|
+
};
|
|
34
|
+
$context.font = textFormatGenerateFontStyleService(textFormat);
|
|
35
|
+
const mesure = $context.measureText(text || "");
|
|
36
|
+
const width = textFormat.letterSpacing
|
|
37
|
+
? mesure.width + textFormat.letterSpacing
|
|
38
|
+
: mesure.width;
|
|
39
|
+
const height = textFormat.leading
|
|
40
|
+
? mesure.fontBoundingBoxAscent + mesure.fontBoundingBoxDescent + textFormat.leading
|
|
41
|
+
: mesure.fontBoundingBoxAscent + mesure.fontBoundingBoxDescent;
|
|
42
|
+
// setup
|
|
43
|
+
object.x = 0;
|
|
44
|
+
object.y = mesure.fontBoundingBoxAscent;
|
|
45
|
+
object.w = width;
|
|
46
|
+
object.h = height;
|
|
47
|
+
$setCurrentWidth($getCurrentWidth() + width);
|
|
48
|
+
if (options.wordWrap && $getCurrentWidth() > maxWidth) {
|
|
49
|
+
$setCurrentWidth(width);
|
|
50
|
+
// update
|
|
51
|
+
line++;
|
|
52
|
+
object.line = line;
|
|
53
|
+
// break object
|
|
54
|
+
const wrapObject = {
|
|
55
|
+
"mode": "wrap",
|
|
56
|
+
"text": "",
|
|
57
|
+
"x": 0,
|
|
58
|
+
"y": 0,
|
|
59
|
+
"w": 0,
|
|
60
|
+
"h": 0,
|
|
61
|
+
"line": line,
|
|
62
|
+
"textFormat": textFormat.toObject()
|
|
63
|
+
};
|
|
64
|
+
let chunkLength = 1;
|
|
65
|
+
let isSeparated = true;
|
|
66
|
+
const pattern = /[0-9a-zA-Z?!;:.,?!。、;:〜]/g;
|
|
67
|
+
for (;;) {
|
|
68
|
+
const index = text_data.textTable.length - chunkLength;
|
|
69
|
+
if (0 >= index) {
|
|
70
|
+
isSeparated = false;
|
|
71
|
+
chunkLength = 0;
|
|
72
|
+
break;
|
|
73
|
+
}
|
|
74
|
+
const prevObj = text_data.textTable[index];
|
|
75
|
+
if (!prevObj) {
|
|
76
|
+
isSeparated = false;
|
|
77
|
+
chunkLength = 0;
|
|
78
|
+
break;
|
|
79
|
+
}
|
|
80
|
+
if (prevObj.mode !== "text") {
|
|
81
|
+
isSeparated = false;
|
|
82
|
+
break;
|
|
83
|
+
}
|
|
84
|
+
if (prevObj.text === " ") {
|
|
85
|
+
chunkLength--;
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
if (!prevObj.text.match(pattern)) {
|
|
89
|
+
chunkLength--;
|
|
90
|
+
break;
|
|
91
|
+
}
|
|
92
|
+
chunkLength++;
|
|
93
|
+
}
|
|
94
|
+
// new line
|
|
95
|
+
text_data.widthTable[line] = 0;
|
|
96
|
+
text_data.heightTable[line] = 0;
|
|
97
|
+
text_data.ascentTable[line] = 0;
|
|
98
|
+
if (chunkLength > 0 && isSeparated) {
|
|
99
|
+
const insertIdx = text_data.textTable.length - chunkLength;
|
|
100
|
+
text_data.textTable.splice(insertIdx, 0, wrapObject);
|
|
101
|
+
text_data.lineTable.push(wrapObject);
|
|
102
|
+
const prevLine = line - 1;
|
|
103
|
+
// reset
|
|
104
|
+
text_data.widthTable[prevLine] = 0;
|
|
105
|
+
text_data.heightTable[prevLine] = 0;
|
|
106
|
+
text_data.ascentTable[prevLine] = 0;
|
|
107
|
+
for (let idx = 0; idx < insertIdx; ++idx) {
|
|
108
|
+
const textObject = text_data.textTable[idx];
|
|
109
|
+
if (!textObject) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
if (textObject.line !== prevLine) {
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
if (textObject.mode !== "text") {
|
|
116
|
+
continue;
|
|
117
|
+
}
|
|
118
|
+
text_data.widthTable[prevLine] += textObject.w;
|
|
119
|
+
text_data.heightTable[prevLine] = Math.max(text_data.heightTable[prevLine], textObject.h);
|
|
120
|
+
text_data.ascentTable[prevLine] = Math.max(text_data.ascentTable[prevLine], textObject.y);
|
|
121
|
+
}
|
|
122
|
+
// reset
|
|
123
|
+
$setCurrentWidth(0);
|
|
124
|
+
for (let idx = insertIdx + 1; idx < text_data.textTable.length; ++idx) {
|
|
125
|
+
const textObject = text_data.textTable[idx];
|
|
126
|
+
textObject.line = line;
|
|
127
|
+
$setCurrentWidth($getCurrentWidth() + textObject.w);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else {
|
|
131
|
+
text_data.textTable.push(wrapObject);
|
|
132
|
+
text_data.lineTable.push(wrapObject);
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
text_data.widthTable[line] = $getCurrentWidth();
|
|
136
|
+
text_data.heightTable[line] = Math.max(text_data.heightTable[line], height);
|
|
137
|
+
text_data.ascentTable[line] = Math.max(text_data.ascentTable[line], object.y);
|
|
138
|
+
text_data.textTable.push(object);
|
|
139
|
+
}
|
|
140
|
+
};
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { TextFormat } from "../../TextFormat";
|
|
2
|
+
import type { IOptions } from "../../interface/IOptions";
|
|
3
|
+
import type { IAttributeObject } from "../../interface/IAttributeObject";
|
|
4
|
+
/**
|
|
5
|
+
* @description 属性を TextFormat に設定
|
|
6
|
+
* Set attributes to TextFormat
|
|
7
|
+
*
|
|
8
|
+
* @param {IAttributeObject[]} attributes
|
|
9
|
+
* @param {TextFormat} text_format
|
|
10
|
+
* @param {IOptions} options
|
|
11
|
+
* @method
|
|
12
|
+
* @protected
|
|
13
|
+
*/
|
|
14
|
+
export declare const execute: (attributes: IAttributeObject[], text_format: TextFormat, options: IOptions) => void;
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import { $toColorInt } from "../../TextUtil";
|
|
2
|
+
import { execute as textParserParseStyleService } from "../service/TextParserParseStyleService";
|
|
3
|
+
/**
|
|
4
|
+
* @description 属性を TextFormat に設定
|
|
5
|
+
* Set attributes to TextFormat
|
|
6
|
+
*
|
|
7
|
+
* @param {IAttributeObject[]} attributes
|
|
8
|
+
* @param {TextFormat} text_format
|
|
9
|
+
* @param {IOptions} options
|
|
10
|
+
* @method
|
|
11
|
+
* @protected
|
|
12
|
+
*/
|
|
13
|
+
export const execute = (attributes, text_format, options) => {
|
|
14
|
+
for (let idx = 0; idx < attributes.length; ++idx) {
|
|
15
|
+
const object = attributes[idx];
|
|
16
|
+
switch (object.name) {
|
|
17
|
+
case "style":
|
|
18
|
+
execute(textParserParseStyleService(object.value), text_format, options);
|
|
19
|
+
break;
|
|
20
|
+
case "align":
|
|
21
|
+
text_format.align = object.value;
|
|
22
|
+
break;
|
|
23
|
+
case "face":
|
|
24
|
+
text_format.font = object.value;
|
|
25
|
+
break;
|
|
26
|
+
case "size":
|
|
27
|
+
text_format.size = +object.value;
|
|
28
|
+
if (options.subFontSize) {
|
|
29
|
+
text_format.size -= options.subFontSize;
|
|
30
|
+
if (1 > text_format.size) {
|
|
31
|
+
text_format.size = 1;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
break;
|
|
35
|
+
case "color":
|
|
36
|
+
text_format.color = $toColorInt(object.value);
|
|
37
|
+
break;
|
|
38
|
+
case "letterSpacing":
|
|
39
|
+
text_format.letterSpacing = parseInt(object.value);
|
|
40
|
+
break;
|
|
41
|
+
case "leading":
|
|
42
|
+
text_format.leading = parseInt(object.value);
|
|
43
|
+
break;
|
|
44
|
+
case "leftMargin":
|
|
45
|
+
text_format.leftMargin = parseInt(object.value);
|
|
46
|
+
break;
|
|
47
|
+
case "rightMargin":
|
|
48
|
+
text_format.rightMargin = parseInt(object.value);
|
|
49
|
+
break;
|
|
50
|
+
case "underline":
|
|
51
|
+
text_format.underline = true;
|
|
52
|
+
break;
|
|
53
|
+
case "bold":
|
|
54
|
+
text_format.bold = true;
|
|
55
|
+
break;
|
|
56
|
+
case "italic":
|
|
57
|
+
text_format.italic = true;
|
|
58
|
+
break;
|
|
59
|
+
default:
|
|
60
|
+
break;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
};
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
import type { IRGBA } from "./interface/IRGBA";
|
|
2
|
+
import type { IElementPosition } from "./interface/IElementPosition";
|
|
3
|
+
import type { TextField } from "./TextField";
|
|
4
|
+
/**
|
|
5
|
+
* @description 選択したテキストフィールドをセット
|
|
6
|
+
* Set the selected text field
|
|
7
|
+
*
|
|
8
|
+
* @param {TextField | null} text_field
|
|
9
|
+
* @method
|
|
10
|
+
* @public
|
|
11
|
+
*/
|
|
12
|
+
export declare const $setSelectedTextField: (text_field: TextField | null) => void;
|
|
13
|
+
/**
|
|
14
|
+
* @description 選択中のテキストフィールドを返却
|
|
15
|
+
* Returns the selected text field
|
|
16
|
+
*
|
|
17
|
+
* @return {TextField | null}
|
|
18
|
+
* @method
|
|
19
|
+
* @public
|
|
20
|
+
*/
|
|
21
|
+
export declare const $getSelectedTextField: () => TextField | null;
|
|
22
|
+
/**
|
|
23
|
+
* @description テキスト変更用の TextArea Element(hidden)
|
|
24
|
+
* TextArea Element(hidden) for changing text
|
|
25
|
+
*
|
|
26
|
+
* @type {HTMLTextAreaElement}
|
|
27
|
+
* @protected
|
|
28
|
+
*/
|
|
29
|
+
export declare const $textArea: HTMLTextAreaElement;
|
|
30
|
+
export declare const $context: CanvasRenderingContext2D;
|
|
31
|
+
/**
|
|
32
|
+
* @description 分解中のテキストの現在の幅を取得
|
|
33
|
+
* Get the current width of the text being decomposed
|
|
34
|
+
*
|
|
35
|
+
* @return {number}
|
|
36
|
+
* @method
|
|
37
|
+
* @protected
|
|
38
|
+
*/
|
|
39
|
+
export declare const $getCurrentWidth: () => number;
|
|
40
|
+
/**
|
|
41
|
+
* @description 分解中のテキストの現在の幅をセット
|
|
42
|
+
* Set the current width of the text being decomposed
|
|
43
|
+
*
|
|
44
|
+
* @return {void}
|
|
45
|
+
* @method
|
|
46
|
+
* @protected
|
|
47
|
+
*/
|
|
48
|
+
export declare const $setCurrentWidth: (width: number) => void;
|
|
49
|
+
/**
|
|
50
|
+
* @description カラー文字列を数値に変換
|
|
51
|
+
* Convert color string to number
|
|
52
|
+
*
|
|
53
|
+
* @param {string} value
|
|
54
|
+
* @return {number}
|
|
55
|
+
* @method
|
|
56
|
+
* @protected
|
|
57
|
+
*/
|
|
58
|
+
export declare const $convertColorStringToNumber: (value: string) => number;
|
|
59
|
+
/**
|
|
60
|
+
* @description カラー文字列を数値に変換
|
|
61
|
+
* Convert color string to number
|
|
62
|
+
*
|
|
63
|
+
* @param {*} value
|
|
64
|
+
* @return {number}
|
|
65
|
+
* @method
|
|
66
|
+
* @static
|
|
67
|
+
*/
|
|
68
|
+
export declare const $toColorInt: (value: any) => number;
|
|
69
|
+
/**
|
|
70
|
+
* @param {number} color
|
|
71
|
+
* @param {number} [alpha=1]
|
|
72
|
+
* @returns {IRGBA}
|
|
73
|
+
* @method
|
|
74
|
+
* @static
|
|
75
|
+
*/
|
|
76
|
+
export declare const $intToRGBA: (color: number, alpha?: number) => IRGBA;
|
|
77
|
+
/**
|
|
78
|
+
* @description 値が最小値と最大値の間に収まるように調整します。
|
|
79
|
+
* Adjust the value so that it falls between the minimum and maximum values.
|
|
80
|
+
*
|
|
81
|
+
* @param {number} value
|
|
82
|
+
* @param {number} min
|
|
83
|
+
* @param {number} max
|
|
84
|
+
* @param {number} [default_value=null]
|
|
85
|
+
* @return {number}
|
|
86
|
+
* @method
|
|
87
|
+
* @protected
|
|
88
|
+
*/
|
|
89
|
+
export declare const $clamp: (value: number, min: number, max: number, default_value?: number | null) => number;
|
|
90
|
+
/**
|
|
91
|
+
* @description テキスト点滅のタイマーIDを返却
|
|
92
|
+
* Returns the timer ID for text blinking
|
|
93
|
+
*
|
|
94
|
+
* @return {NodeJS.Timeout}
|
|
95
|
+
* @protected
|
|
96
|
+
*/
|
|
97
|
+
export declare const $getBlinkingTimerId: () => NodeJS.Timeout | void;
|
|
98
|
+
/**
|
|
99
|
+
* @description テキスト点滅のタイマーIDをセット
|
|
100
|
+
* Set the timer ID for text blinking
|
|
101
|
+
*
|
|
102
|
+
* @param {NodeJS.Timeout} timer_id
|
|
103
|
+
* @return {void}
|
|
104
|
+
* @protected
|
|
105
|
+
*/
|
|
106
|
+
export declare const $setBlinkingTimerId: (timer_id: NodeJS.Timeout | void) => void;
|
|
107
|
+
/**
|
|
108
|
+
* @description canvasの位置をセット
|
|
109
|
+
* Set the position of the canvas
|
|
110
|
+
*
|
|
111
|
+
* @type {IElementPosition}
|
|
112
|
+
* @public
|
|
113
|
+
*/
|
|
114
|
+
export declare const $mainCanvasPosition: IElementPosition;
|
package/src/TextUtil.js
ADDED
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { execute as textAreaRegisterEventUseCase } from "./TextArea/usecase/TextAreaRegisterEventUseCase";
|
|
2
|
+
/**
|
|
3
|
+
* @description 選択中のテキストフィールド
|
|
4
|
+
* Selected text field
|
|
5
|
+
*
|
|
6
|
+
* @type {TextField | null}
|
|
7
|
+
* @private
|
|
8
|
+
*/
|
|
9
|
+
let $selectedTextField = null;
|
|
10
|
+
/**
|
|
11
|
+
* @description 選択したテキストフィールドをセット
|
|
12
|
+
* Set the selected text field
|
|
13
|
+
*
|
|
14
|
+
* @param {TextField | null} text_field
|
|
15
|
+
* @method
|
|
16
|
+
* @public
|
|
17
|
+
*/
|
|
18
|
+
export const $setSelectedTextField = (text_field) => {
|
|
19
|
+
$selectedTextField = text_field;
|
|
20
|
+
};
|
|
21
|
+
/**
|
|
22
|
+
* @description 選択中のテキストフィールドを返却
|
|
23
|
+
* Returns the selected text field
|
|
24
|
+
*
|
|
25
|
+
* @return {TextField | null}
|
|
26
|
+
* @method
|
|
27
|
+
* @public
|
|
28
|
+
*/
|
|
29
|
+
export const $getSelectedTextField = () => {
|
|
30
|
+
return $selectedTextField;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* @description テキスト変更用の TextArea Element(hidden)
|
|
34
|
+
* TextArea Element(hidden) for changing text
|
|
35
|
+
*
|
|
36
|
+
* @type {HTMLTextAreaElement}
|
|
37
|
+
* @protected
|
|
38
|
+
*/
|
|
39
|
+
export const $textArea = document.createElement("textarea");
|
|
40
|
+
textAreaRegisterEventUseCase($textArea);
|
|
41
|
+
$textArea.tabIndex = -1;
|
|
42
|
+
let style = "";
|
|
43
|
+
style += "position: fixed;";
|
|
44
|
+
style += "top: 0;";
|
|
45
|
+
style += "left: 0;";
|
|
46
|
+
style += "font-size: 16px;";
|
|
47
|
+
style += "border: 0;";
|
|
48
|
+
style += "resize: none;";
|
|
49
|
+
style += "opacity: 0;";
|
|
50
|
+
style += "z-index: -1;";
|
|
51
|
+
style += "pointer-events: none;";
|
|
52
|
+
$textArea.setAttribute("style", style);
|
|
53
|
+
/**
|
|
54
|
+
* @type {HTMLCanvasElement}
|
|
55
|
+
* @private
|
|
56
|
+
*/
|
|
57
|
+
const canvas = document.createElement("canvas");
|
|
58
|
+
canvas.width = canvas.height = 1;
|
|
59
|
+
export const $context = canvas.getContext("2d");
|
|
60
|
+
/**
|
|
61
|
+
* @type {number}
|
|
62
|
+
* @private
|
|
63
|
+
*/
|
|
64
|
+
let $currentWidth = 0;
|
|
65
|
+
/**
|
|
66
|
+
* @description 分解中のテキストの現在の幅を取得
|
|
67
|
+
* Get the current width of the text being decomposed
|
|
68
|
+
*
|
|
69
|
+
* @return {number}
|
|
70
|
+
* @method
|
|
71
|
+
* @protected
|
|
72
|
+
*/
|
|
73
|
+
export const $getCurrentWidth = () => {
|
|
74
|
+
return $currentWidth;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* @description 分解中のテキストの現在の幅をセット
|
|
78
|
+
* Set the current width of the text being decomposed
|
|
79
|
+
*
|
|
80
|
+
* @return {void}
|
|
81
|
+
* @method
|
|
82
|
+
* @protected
|
|
83
|
+
*/
|
|
84
|
+
export const $setCurrentWidth = (width) => {
|
|
85
|
+
$currentWidth = width;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* @description カラー文字列を数値に変換
|
|
89
|
+
* Convert color string to number
|
|
90
|
+
*
|
|
91
|
+
* @param {string} value
|
|
92
|
+
* @return {number}
|
|
93
|
+
* @method
|
|
94
|
+
* @protected
|
|
95
|
+
*/
|
|
96
|
+
export const $convertColorStringToNumber = (value) => {
|
|
97
|
+
if (!$context) {
|
|
98
|
+
return 0;
|
|
99
|
+
}
|
|
100
|
+
$context.fillStyle = value;
|
|
101
|
+
return +`0x${$context.fillStyle.slice(1)}`;
|
|
102
|
+
};
|
|
103
|
+
/**
|
|
104
|
+
* @description カラー文字列を数値に変換
|
|
105
|
+
* Convert color string to number
|
|
106
|
+
*
|
|
107
|
+
* @param {*} value
|
|
108
|
+
* @return {number}
|
|
109
|
+
* @method
|
|
110
|
+
* @static
|
|
111
|
+
*/
|
|
112
|
+
export const $toColorInt = (value) => {
|
|
113
|
+
return isNaN(+value)
|
|
114
|
+
? $convertColorStringToNumber(`${value}`)
|
|
115
|
+
: +value;
|
|
116
|
+
};
|
|
117
|
+
/**
|
|
118
|
+
* @param {number} color
|
|
119
|
+
* @param {number} [alpha=1]
|
|
120
|
+
* @returns {IRGBA}
|
|
121
|
+
* @method
|
|
122
|
+
* @static
|
|
123
|
+
*/
|
|
124
|
+
export const $intToRGBA = (color, alpha = 1) => {
|
|
125
|
+
return {
|
|
126
|
+
"R": (color & 0xff0000) >> 16,
|
|
127
|
+
"G": (color & 0x00ff00) >> 8,
|
|
128
|
+
"B": color & 0x0000ff,
|
|
129
|
+
"A": alpha * 255
|
|
130
|
+
};
|
|
131
|
+
};
|
|
132
|
+
/**
|
|
133
|
+
* @description 値が最小値と最大値の間に収まるように調整します。
|
|
134
|
+
* Adjust the value so that it falls between the minimum and maximum values.
|
|
135
|
+
*
|
|
136
|
+
* @param {number} value
|
|
137
|
+
* @param {number} min
|
|
138
|
+
* @param {number} max
|
|
139
|
+
* @param {number} [default_value=null]
|
|
140
|
+
* @return {number}
|
|
141
|
+
* @method
|
|
142
|
+
* @protected
|
|
143
|
+
*/
|
|
144
|
+
export const $clamp = (value, min, max, default_value = null) => {
|
|
145
|
+
const number = +value;
|
|
146
|
+
return isNaN(number) && default_value !== null
|
|
147
|
+
? default_value
|
|
148
|
+
: Math.min(Math.max(min, isNaN(number) ? 0 : number), max);
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* @type {NodeJS.Timeout}
|
|
152
|
+
* @private
|
|
153
|
+
*/
|
|
154
|
+
let $timerId;
|
|
155
|
+
/**
|
|
156
|
+
* @description テキスト点滅のタイマーIDを返却
|
|
157
|
+
* Returns the timer ID for text blinking
|
|
158
|
+
*
|
|
159
|
+
* @return {NodeJS.Timeout}
|
|
160
|
+
* @protected
|
|
161
|
+
*/
|
|
162
|
+
export const $getBlinkingTimerId = () => {
|
|
163
|
+
return $timerId;
|
|
164
|
+
};
|
|
165
|
+
/**
|
|
166
|
+
* @description テキスト点滅のタイマーIDをセット
|
|
167
|
+
* Set the timer ID for text blinking
|
|
168
|
+
*
|
|
169
|
+
* @param {NodeJS.Timeout} timer_id
|
|
170
|
+
* @return {void}
|
|
171
|
+
* @protected
|
|
172
|
+
*/
|
|
173
|
+
export const $setBlinkingTimerId = (timer_id) => {
|
|
174
|
+
$timerId = timer_id;
|
|
175
|
+
};
|
|
176
|
+
/**
|
|
177
|
+
* @description canvasの位置をセット
|
|
178
|
+
* Set the position of the canvas
|
|
179
|
+
*
|
|
180
|
+
* @type {IElementPosition}
|
|
181
|
+
* @public
|
|
182
|
+
*/
|
|
183
|
+
export const $mainCanvasPosition = {
|
|
184
|
+
"x": 0,
|
|
185
|
+
"y": 0
|
|
186
|
+
};
|
package/src/index.d.ts
ADDED
package/src/index.js
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type IBlendMode = "copy" | "add" | "alpha" | "darken" | "difference" | "erase" | "hardlight" | "invert" | "layer" | "lighten" | "multiply" | "normal" | "overlay" | "screen" | "subtract";
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { IMovieClipCharacter } from "./IMovieClipCharacter";
|
|
2
|
+
import type { IVideoCharacter } from "./IVideoCharacter";
|
|
3
|
+
import type { IShapeCharacter } from "./IShapeCharacter";
|
|
4
|
+
import type { ITextFieldCharacter } from "./ITextFieldCharacter";
|
|
5
|
+
export type ICharacter = IMovieClipCharacter | IVideoCharacter | IShapeCharacter | ITextFieldCharacter;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import type { BlurFilter, BevelFilter, ColorMatrixFilter, ConvolutionFilter, DisplacementMapFilter, DropShadowFilter, GlowFilter, GradientBevelFilter, GradientGlowFilter } from "@next2d/filters";
|
|
2
|
+
export type IFilterArray = Array<BlurFilter | BevelFilter | ColorMatrixFilter | ConvolutionFilter | DisplacementMapFilter | DropShadowFilter | GlowFilter | GradientBevelFilter | GradientGlowFilter>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export type ILoopType = 0 | 1 | 2 | 3 | 4;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { IMovieClipSoundObject } from "./IMovieClipSoundObject";
|
|
2
|
+
import type { IMovieClipActionObject } from "./IMovieClipActionObject";
|
|
3
|
+
import type { IMovieClipLabelObject } from "./IMovieClipLabelObject";
|
|
4
|
+
import type { IPlaceObject } from "./IPlaceObject";
|
|
5
|
+
import type { IDictionaryTag } from "./IDictionaryTag";
|
|
6
|
+
export interface IMovieClipCharacter {
|
|
7
|
+
symbol?: string;
|
|
8
|
+
extends: string;
|
|
9
|
+
totalFrame: number;
|
|
10
|
+
controller: Array<Array<number>>;
|
|
11
|
+
dictionary: IDictionaryTag[];
|
|
12
|
+
placeMap: Array<Array<number>>;
|
|
13
|
+
placeObjects: IPlaceObject[];
|
|
14
|
+
labels?: IMovieClipLabelObject[];
|
|
15
|
+
actions?: IMovieClipActionObject[];
|
|
16
|
+
sounds?: IMovieClipSoundObject[];
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|