|
|
@@ -243,14 +243,14 @@ function buildText(destRst, cell, font, control, offsetX, offsetY, adjustY, canv
|
|
|
";font-size:" + innerDftFontHeight + "pt' x='" +
|
|
|
x +"' y='" + y + "' text-anchor='" + text_anchor + "' xml:space='preserve'" + HtoVStr + ">" + innerTxt + "</text>");
|
|
|
}
|
|
|
- let actLines = private_splitString(textValue, (area[JV.IDX_RIGHT] - area[JV.IDX_LEFT]), ctx);
|
|
|
+ let actLines = private_splitString(textValue, (area[JV.IDX_RIGHT] - area[JV.IDX_LEFT] - JV.OUTPUT_OFFSET[JV.IDX_LEFT] - JV.OUTPUT_OFFSET[JV.IDX_RIGHT]), ctx);
|
|
|
if (actLines.length === 1 || (control && control.Shrink !== 'T')) {
|
|
|
inner_build_text(textValue, area);
|
|
|
} else {
|
|
|
while (true) {
|
|
|
if (dftFontHeight > 6) {
|
|
|
let lines = Math.floor((area[JV.IDX_BOTTOM] - area[JV.IDX_TOP]) / (dftFontHeight + JV.OUTPUT_OFFSET[JV.IDX_BOTTOM] + JV.OUTPUT_OFFSET[JV.IDX_TOP] + 4));
|
|
|
- lines = (lines === 0)?1:lines;
|
|
|
+ lines = (lines === 0 || (control.Shrink === 'T' && control.ShrinkFirst === 'T'))?1:lines;
|
|
|
actLines = private_splitString(textValue, (area[JV.IDX_RIGHT] - area[JV.IDX_LEFT] - JV.OUTPUT_OFFSET[JV.IDX_LEFT] - JV.OUTPUT_OFFSET[JV.IDX_RIGHT]), ctx);
|
|
|
if (lines >= actLines.length) {
|
|
|
let aH = dftFontHeight + JV.OUTPUT_OFFSET[JV.IDX_BOTTOM] + JV.OUTPUT_OFFSET[JV.IDX_TOP] + 4;
|
|
|
@@ -283,9 +283,25 @@ function buildText(destRst, cell, font, control, offsetX, offsetY, adjustY, canv
|
|
|
}
|
|
|
}
|
|
|
};
|
|
|
+ let ah = height;
|
|
|
+ let restTopH = 0, restBottomH = 0;
|
|
|
+ if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_CLOSE_OUTPUT]] === 'T') {
|
|
|
+ ah = (parseFloat(font[JV.FONT_PROPS[1]]) + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_TOP] + JV.OUTPUT_OFFSET[JV.OFFSET_IDX_BOTTOM]) * values.length;
|
|
|
+ let restH = height - ah;
|
|
|
+ if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]] === 'center') {
|
|
|
+ restTopH = restH / 2;
|
|
|
+ restBottomH = restH / 2;
|
|
|
+ } else if (control[JV.CONTROL_PROPS[JV.CONTROL_PROP_IDX_VERTICAL]] === 'bottom') {
|
|
|
+ restBottomH = restH;
|
|
|
+ } else {
|
|
|
+ restTopH = restH;
|
|
|
+ }
|
|
|
+ }
|
|
|
for (let vidx = 0; vidx < values.length; vidx++) {
|
|
|
- area[JV.IDX_TOP] = top + vidx * (height / values.length);
|
|
|
- area[JV.IDX_BOTTOM] = top + (vidx + 1) * (height / values.length);
|
|
|
+ // area[JV.IDX_TOP] = top + vidx * (height / values.length);
|
|
|
+ // area[JV.IDX_BOTTOM] = top + (vidx + 1) * (height / values.length);
|
|
|
+ area[JV.IDX_TOP] = top + vidx * (ah / values.length) + restTopH;
|
|
|
+ area[JV.IDX_BOTTOM] = top + (vidx + 1) * (ah / values.length) + restTopH;
|
|
|
inner_draw_text(values[vidx]);
|
|
|
}
|
|
|
}
|