Commit 1d14604b authored by Alexander.Trofimov's avatar Alexander.Trofimov Committed by Alexander.Trofimov
parent 99ae7cf7
......@@ -1049,14 +1049,16 @@
};
CellEditor.prototype._updateCursorPosition = function (redrawText) {
// ToDo стоит переправить данную функцию
var t = this;
var h = t.canvas.height;
var y = - t.textRender.calcLineOffset(t.topLineIndex);
var cur = t.textRender.calcCharOffset(t.cursorPos);
var charsCount = t.textRender.getCharsCount();
var curLeft = asc_round(((kRightAlign !== t.textFlags.textAlign || t.cursorPos !== charsCount) && cur !== null && cur.left !== null ? cur.left : t._getContentPosition()) * t.kx);
var curLeft = asc_round(((kRightAlign !== t.textFlags.textAlign || t.cursorPos !== charsCount) &&
cur !== null && cur.left !== null ? cur.left : t._getContentPosition()) * t.kx);
var curTop = asc_round(((cur !== null ? cur.top : 0) + y) * t.ky);
var curHeight = asc_round((cur !== null ? cur.height : t.options.font.FontSize) * 1.275 * t.ky);
var curHeight = asc_round((cur !== null ? cur.height : t._getContentHeight()) * t.ky);
var i, dy;
while (t.textRender.getLinesCount() > 1) {
......
......@@ -153,28 +153,25 @@
return this.chars.length;
},
calcCharOffset: function (pos) {
var t = this, l = t.lines, i = 0, h = 0, co;
function getCharInfo(pos) {
for (var p = t.charProps[pos]; (!p || !p.font) && pos > 0; --pos) {
p = t.charProps[pos - 1];
}
return {
fsz: p.font.FontSize,
dh: p && p.lm && p.lm.bl2 > 0 ? p.lm.bl2 - p.lm.bl : 0
};
getCharInfo: function (pos) {
for (var p = this.charProps[pos]; (!p || !p.font) && pos > 0; --pos) {
p = this.charProps[pos - 1];
}
return {
fsz: p.font.FontSize,
dh: p && p.lm && p.lm.bl2 > 0 ? p.lm.bl2 - p.lm.bl : 0,
h: p && p.lm ? p.lm.th: 0
};
},
function charOffset(lineIndex) {
var ci = getCharInfo(pos);
var li = l[lineIndex];
return new CharOffset(
li.startX + (pos > 0 ? t._calcCharsWidth(li.beg, pos - 1) : 0),
h + li.bl - ci.fsz + ci.dh,
ci.fsz,
lineIndex);
}
charOffset: function (pos, lineIndex, h) {
var ci = this.getCharInfo(pos);
var li = this.lines[lineIndex];
return new CharOffset(li.startX + (pos > 0 ? this._calcCharsWidth(li.beg, pos - 1) : 0), h, ci.h, lineIndex);
},
calcCharOffset: function (pos) {
var t = this, l = t.lines, i, h, co;
if (l.length < 1) {return null;}
......@@ -183,14 +180,14 @@
for (i = 0, h = 0; i < l.length; ++i) {
if (pos >= l[i].beg && pos <= l[i].end) {
return charOffset(i);
return this.charOffset(pos, i, h);
}
if (i !== l.length - 1) {
h += l[i].th;
}
}
co = charOffset(i - 1);
co = this.charOffset(pos, i - 1, h);
// если самый последний символ - это новая строка, то надо сместить еще на одну линию
if (t.charWidths[t.chars.length - 1] === 0) {
......
......@@ -575,36 +575,42 @@
var fpx = f * ppi / 72;
var topt = 72 / ppi;
var h = asc_calcnpt(hpt, ppi);
var h;
var a = asc_round(fpx) * topt;
var d = h - a;
var d;
var a_2 = asc_round(fpx / 2) * topt;
var h_2_3 = asc_calcnpt(hpt * 2/3, ppi);
var h_2_3;
var a_2_3 = asc_round(fpx * 2/3) * topt;
var d_2_3 = h_2_3 - a_2_3;
var d_2_3;
var x = a_2 + a_2_3;
if (va === "superscript") {
h = asc_calcnpt(hpt, ppi);
d = h - a;
l.th = x + d;
l.bl = x;
l.bl2 = a_2_3;
l.a = fm.ascender + a_2; // >0
l.d = fm.descender - a_2; // <0
} else if (va === "subscript") {
h_2_3 = asc_calcnpt(hpt * 2/3, ppi);
d_2_3 = h_2_3 - a_2_3;
l.th = x + d_2_3;
l.bl = a;
l.bl2 = x;
l.a = fm.ascender + a - x; // >0
l.d = fm.descender + x - a; // >0
} else {
/* Было раньше
l.th = a + d;
l.bl = a;
l.a = fm.ascender;
l.d = fm.descender;
l.d = fm.descender;*/
var _a = Math.max(0, fm.nat_y1 * f / fm.nat_scale);
var _d = Math.max(0, (-fm.nat_y2) * f / fm.nat_scale);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment