@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,66 @@
|
|
|
1
|
+
import { Event } from "@next2d/events";
|
|
2
|
+
import { Tween, Easing } from "@next2d/ui";
|
|
3
|
+
import { $clamp } from "../../TextUtil";
|
|
4
|
+
import { execute as textFieldApplyChangesService } from "../service/TextFieldApplyChangesService";
|
|
5
|
+
/**
|
|
6
|
+
* @description xスクロール位置を設定します
|
|
7
|
+
* x Sets the scroll position.
|
|
8
|
+
*
|
|
9
|
+
* @param {TextField} text_field
|
|
10
|
+
* @param {number} scroll_x
|
|
11
|
+
* @return {void}
|
|
12
|
+
* @method
|
|
13
|
+
* @protected
|
|
14
|
+
*/
|
|
15
|
+
export const execute = (text_field, scroll_x) => {
|
|
16
|
+
if (!text_field.scrollEnabled
|
|
17
|
+
|| text_field.autoSize !== "none") {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
// check y animation
|
|
21
|
+
if (text_field.yScrollShape.hasLocalVariable("job")) {
|
|
22
|
+
return;
|
|
23
|
+
}
|
|
24
|
+
const width = text_field.width;
|
|
25
|
+
scroll_x = $clamp(scroll_x, 0, width, 0);
|
|
26
|
+
if (text_field.scrollX === scroll_x) {
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
if (text_field.textWidth > width) {
|
|
30
|
+
textFieldApplyChangesService(text_field);
|
|
31
|
+
const xScrollShape = text_field.xScrollShape;
|
|
32
|
+
xScrollShape.width = width * width / text_field.textWidth;
|
|
33
|
+
const parent = text_field.parent;
|
|
34
|
+
if (parent) {
|
|
35
|
+
// start animation
|
|
36
|
+
if (xScrollShape.hasLocalVariable("job")) {
|
|
37
|
+
xScrollShape.getLocalVariable("job").stop();
|
|
38
|
+
}
|
|
39
|
+
// view start
|
|
40
|
+
xScrollShape.alpha = 0.9;
|
|
41
|
+
// set position
|
|
42
|
+
xScrollShape.x = text_field.x + 1
|
|
43
|
+
+ (width - 1 - xScrollShape.width)
|
|
44
|
+
/ (width - 1)
|
|
45
|
+
* (scroll_x - 1);
|
|
46
|
+
xScrollShape.y = text_field.y + text_field.height
|
|
47
|
+
- xScrollShape.height - 0.5;
|
|
48
|
+
// added sprite
|
|
49
|
+
parent.addChildAt(xScrollShape, parent.getChildIndex(text_field) + 1);
|
|
50
|
+
const job = Tween.add(xScrollShape, { "alpha": 0.9 }, { "alpha": 0 }, 0.5, 0.2, Easing.outQuad);
|
|
51
|
+
job.addEventListener(Event.COMPLETE, (event) => {
|
|
52
|
+
const shape = event.target.target;
|
|
53
|
+
shape.deleteLocalVariable("job");
|
|
54
|
+
if (shape.parent) {
|
|
55
|
+
shape.parent.removeChild(shape);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
job.start();
|
|
59
|
+
xScrollShape.setLocalVariable("job", job);
|
|
60
|
+
}
|
|
61
|
+
text_field.$scrollX = scroll_x;
|
|
62
|
+
}
|
|
63
|
+
if (text_field.willTrigger(Event.SCROLL)) {
|
|
64
|
+
text_field.dispatchEvent(new Event(Event.SCROLL, true));
|
|
65
|
+
}
|
|
66
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { TextField } from "../../TextField";
|
|
2
|
+
/**
|
|
3
|
+
* @description yスクロール位置を設定します
|
|
4
|
+
* y Sets the scroll position.
|
|
5
|
+
*
|
|
6
|
+
* @param {TextField} text_field
|
|
7
|
+
* @param {number} scroll_y
|
|
8
|
+
* @return {void}
|
|
9
|
+
* @method
|
|
10
|
+
* @protected
|
|
11
|
+
*/
|
|
12
|
+
export declare const execute: (text_field: TextField, scroll_y: number) => void;
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { Event } from "@next2d/events";
|
|
2
|
+
import { Tween, Easing } from "@next2d/ui";
|
|
3
|
+
import { $clamp } from "../../TextUtil";
|
|
4
|
+
import { execute as textFieldApplyChangesService } from "../service/TextFieldApplyChangesService";
|
|
5
|
+
/**
|
|
6
|
+
* @description yスクロール位置を設定します
|
|
7
|
+
* y Sets the scroll position.
|
|
8
|
+
*
|
|
9
|
+
* @param {TextField} text_field
|
|
10
|
+
* @param {number} scroll_y
|
|
11
|
+
* @return {void}
|
|
12
|
+
* @method
|
|
13
|
+
* @protected
|
|
14
|
+
*/
|
|
15
|
+
export const execute = (text_field, scroll_y) => {
|
|
16
|
+
if (!text_field.scrollEnabled
|
|
17
|
+
|| text_field.autoSize !== "none"
|
|
18
|
+
|| !text_field.multiline && !text_field.wordWrap) {
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
// check x animation
|
|
22
|
+
if (text_field.xScrollShape.hasLocalVariable("job")) {
|
|
23
|
+
return;
|
|
24
|
+
}
|
|
25
|
+
const height = text_field.height;
|
|
26
|
+
scroll_y = $clamp(scroll_y, 0, height, 0);
|
|
27
|
+
if (text_field.scrollY === scroll_y) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
if (text_field.textHeight > height) {
|
|
31
|
+
textFieldApplyChangesService(text_field);
|
|
32
|
+
const yScrollShape = text_field.yScrollShape;
|
|
33
|
+
yScrollShape.height = height * height / text_field.textHeight;
|
|
34
|
+
const parent = text_field.parent;
|
|
35
|
+
if (parent) {
|
|
36
|
+
// start animation
|
|
37
|
+
if (yScrollShape.hasLocalVariable("job")) {
|
|
38
|
+
yScrollShape.getLocalVariable("job").stop();
|
|
39
|
+
}
|
|
40
|
+
// view start
|
|
41
|
+
yScrollShape.alpha = 0.9;
|
|
42
|
+
// set position
|
|
43
|
+
yScrollShape.x = text_field.x + text_field.width - yScrollShape.width - 0.5;
|
|
44
|
+
yScrollShape.y = text_field.y + 0.5
|
|
45
|
+
+ (height - 1 - yScrollShape.height)
|
|
46
|
+
/ (height - 1)
|
|
47
|
+
* (scroll_y - 1);
|
|
48
|
+
// added sprite
|
|
49
|
+
parent.addChildAt(yScrollShape, parent.getChildIndex(text_field) + 1);
|
|
50
|
+
const job = Tween.add(yScrollShape, { "alpha": 0.9 }, { "alpha": 0 }, 0.5, 0.2, Easing.outQuad);
|
|
51
|
+
job.addEventListener(Event.COMPLETE, (event) => {
|
|
52
|
+
const shape = event.target.target;
|
|
53
|
+
shape.deleteLocalVariable("job");
|
|
54
|
+
if (shape.parent) {
|
|
55
|
+
shape.parent.removeChild(shape);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
job.start();
|
|
59
|
+
yScrollShape.setLocalVariable("job", job);
|
|
60
|
+
text_field.$scrollY = scroll_y;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
if (text_field.willTrigger(Event.SCROLL)) {
|
|
64
|
+
text_field.dispatchEvent(new Event(Event.SCROLL, true));
|
|
65
|
+
}
|
|
66
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { TextField } from "../../TextField";
|
|
2
|
+
/**
|
|
3
|
+
* @description テキストの任意の表示終了位置の設定
|
|
4
|
+
* Setting an arbitrary display end position for text.
|
|
5
|
+
*
|
|
6
|
+
* @param {TextField} text_field
|
|
7
|
+
* @param {number} stop_index
|
|
8
|
+
* @return {void}
|
|
9
|
+
* @method
|
|
10
|
+
* @protected
|
|
11
|
+
*/
|
|
12
|
+
export declare const execute: (text_field: TextField, stop_index: number) => void;
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
import { execute as textFieldGetTextDataUseCase } from "./TextFieldGetTextDataUseCase";
|
|
2
|
+
import { execute as textFieldApplyChangesService } from "../service/TextFieldApplyChangesService";
|
|
3
|
+
/**
|
|
4
|
+
* @description テキストの任意の表示終了位置の設定
|
|
5
|
+
* Setting an arbitrary display end position for text.
|
|
6
|
+
*
|
|
7
|
+
* @param {TextField} text_field
|
|
8
|
+
* @param {number} stop_index
|
|
9
|
+
* @return {void}
|
|
10
|
+
* @method
|
|
11
|
+
* @protected
|
|
12
|
+
*/
|
|
13
|
+
export const execute = (text_field, stop_index) => {
|
|
14
|
+
const textData = textFieldGetTextDataUseCase(text_field);
|
|
15
|
+
if (2 > textData.textTable.length) {
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
let currentTextWidth = 2;
|
|
19
|
+
let targetIndex = 0;
|
|
20
|
+
for (let idx = 1; idx < textData.textTable.length; ++idx) {
|
|
21
|
+
const textObject = textData.textTable[idx];
|
|
22
|
+
if (!textObject) {
|
|
23
|
+
continue;
|
|
24
|
+
}
|
|
25
|
+
let countUp = false;
|
|
26
|
+
if (textObject.mode === "text") {
|
|
27
|
+
countUp = true;
|
|
28
|
+
currentTextWidth += textObject.w;
|
|
29
|
+
}
|
|
30
|
+
if (targetIndex >= stop_index) {
|
|
31
|
+
targetIndex = idx;
|
|
32
|
+
break;
|
|
33
|
+
}
|
|
34
|
+
if (textObject.mode === "break") {
|
|
35
|
+
countUp = true;
|
|
36
|
+
currentTextWidth = 2;
|
|
37
|
+
}
|
|
38
|
+
if (countUp) {
|
|
39
|
+
targetIndex++;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
const textObject = textData.textTable[targetIndex];
|
|
43
|
+
if (!textObject) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
text_field.$scrollX = text_field.$scrollY = 0;
|
|
47
|
+
const line = textObject.line;
|
|
48
|
+
let currentTextHeight = 0;
|
|
49
|
+
for (let idx = 0; idx <= line; ++idx) {
|
|
50
|
+
currentTextHeight += textData.heightTable[idx];
|
|
51
|
+
}
|
|
52
|
+
const rawHeight = Math.abs(text_field.yMax - text_field.yMin);
|
|
53
|
+
let viewTextHeight = 0;
|
|
54
|
+
for (let idx = line; idx > -1; --idx) {
|
|
55
|
+
const lineHeight = textData.heightTable[idx];
|
|
56
|
+
if (rawHeight < viewTextHeight + lineHeight) {
|
|
57
|
+
break;
|
|
58
|
+
}
|
|
59
|
+
viewTextHeight += lineHeight;
|
|
60
|
+
}
|
|
61
|
+
if (currentTextHeight > rawHeight) {
|
|
62
|
+
const scaleY = (text_field.textHeight - rawHeight) / rawHeight;
|
|
63
|
+
text_field.$scrollY = Math.max(0, Math.min((currentTextHeight - viewTextHeight) / scaleY, rawHeight));
|
|
64
|
+
}
|
|
65
|
+
const rawWidth = Math.abs(text_field.xMax - text_field.xMin);
|
|
66
|
+
let viewTextWidth = 0;
|
|
67
|
+
for (let idx = targetIndex; idx > 0; --idx) {
|
|
68
|
+
const textObject = textData.textTable[idx];
|
|
69
|
+
if (textObject.mode !== "text") {
|
|
70
|
+
continue;
|
|
71
|
+
}
|
|
72
|
+
if (rawWidth < viewTextWidth + textObject.w) {
|
|
73
|
+
break;
|
|
74
|
+
}
|
|
75
|
+
viewTextWidth += textObject.w;
|
|
76
|
+
}
|
|
77
|
+
if (currentTextWidth > rawWidth) {
|
|
78
|
+
const scaleX = (text_field.textWidth - rawWidth) / rawWidth;
|
|
79
|
+
text_field.$scrollX = Math.max(0, Math.min((currentTextWidth - viewTextWidth) / scaleX, rawWidth + 0.5));
|
|
80
|
+
}
|
|
81
|
+
textFieldApplyChangesService(text_field);
|
|
82
|
+
};
|