+ return __awaiter(this, void 0, void 0, function* () {
+ // preprocessed
+ var preprocessed = this.mainStream;
+ for (var i = 0; i < this.preprocessors.length; i++) {
+ preprocessed = this.preprocessors[i](preprocessed, this);
+ }
+ // generate the width and height of the stream
+ let defaultFontStyle = this.attrs["defaultFrameStyle"].textStyle;
+ let a = yield calculateTextWidthHeight(preprocessed, defaultFontStyle);
+ let breakLineAlgorithms = new breakLines.BreakLineAlgorithm();
+ // TODO
+ //console.log(breakLineAlgorithms.totalCost(a,70));
+ let segmentedNodes = breakLineAlgorithms.segmentedNodes(a, 70);
+ console.log(this.segmentedNodesToFrameBox(segmentedNodes, this.attrs["defaultFrameStyle"]));
+ });
+ }
+ segmentedNodesToFrameBox(segmentedNodes, frame) {
+ let baseLineskip = frame.baseLineskip;
+ let boxArrayEmpty = [];
+ let bigBox = {
+ x: frame.x,
+ y: frame.y,
+ textStyle: frame.textStyle,
+ direction: frame.direction,
+ width: frame.width,
+ height: frame.height,
+ content: boxArrayEmpty,
+ };
+ var bigBoxContent = boxArrayEmpty;
+ let segmentedNodesFixed = segmentedNodes.map((x) => this.removeBreakPoints(x).flat());
+ let segmentedNodeUnglue = segmentedNodesFixed.map((x) => this.removeGlue(x, frame).flat());
+ for (var i = 0; i < segmentedNodesFixed.length - 1; i++) {
+ var currentLineSkip = baseLineskip;
+ var glyphMaxHeight = this.getGlyphMaxHeight(segmentedNodesFixed[i]);
+ if (currentLineSkip === null || glyphMaxHeight > currentLineSkip) {
+ currentLineSkip = glyphMaxHeight;
+ }
+ var currentLineBox = {
+ x: null,
+ y: null,
+ textStyle: exports.defaultTextStyle,
+ direction: frame.directionInsideLine,
+ width: frame.width,
+ height: currentLineSkip,
+ content: segmentedNodeUnglue[i],
+ };
+ bigBoxContent.push(currentLineBox);