Commit 1d14604b authored by Alexander.Trofimov's avatar Alexander.Trofimov Committed by Alexander.Trofimov
parent 99ae7cf7
...@@ -1049,14 +1049,16 @@ ...@@ -1049,14 +1049,16 @@
}; };
CellEditor.prototype._updateCursorPosition = function (redrawText) { CellEditor.prototype._updateCursorPosition = function (redrawText) {
// ToDo стоит переправить данную функцию
var t = this; var t = this;
var h = t.canvas.height; var h = t.canvas.height;
var y = - t.textRender.calcLineOffset(t.topLineIndex); var y = - t.textRender.calcLineOffset(t.topLineIndex);
var cur = t.textRender.calcCharOffset(t.cursorPos); var cur = t.textRender.calcCharOffset(t.cursorPos);
var charsCount = t.textRender.getCharsCount(); 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 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; var i, dy;
while (t.textRender.getLinesCount() > 1) { while (t.textRender.getLinesCount() > 1) {
......
...@@ -153,28 +153,25 @@ ...@@ -153,28 +153,25 @@
return this.chars.length; return this.chars.length;
}, },
calcCharOffset: function (pos) { getCharInfo: function (pos) {
var t = this, l = t.lines, i = 0, h = 0, co; for (var p = this.charProps[pos]; (!p || !p.font) && pos > 0; --pos) {
p = this.charProps[pos - 1];
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
};
} }
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) { charOffset: function (pos, lineIndex, h) {
var ci = getCharInfo(pos); var ci = this.getCharInfo(pos);
var li = l[lineIndex]; var li = this.lines[lineIndex];
return new CharOffset( return new CharOffset(li.startX + (pos > 0 ? this._calcCharsWidth(li.beg, pos - 1) : 0), h, ci.h, lineIndex);
li.startX + (pos > 0 ? t._calcCharsWidth(li.beg, pos - 1) : 0), },
h + li.bl - ci.fsz + ci.dh,
ci.fsz, calcCharOffset: function (pos) {
lineIndex); var t = this, l = t.lines, i, h, co;
}
if (l.length < 1) {return null;} if (l.length < 1) {return null;}
...@@ -183,14 +180,14 @@ ...@@ -183,14 +180,14 @@
for (i = 0, h = 0; i < l.length; ++i) { for (i = 0, h = 0; i < l.length; ++i) {
if (pos >= l[i].beg && pos <= l[i].end) { if (pos >= l[i].beg && pos <= l[i].end) {
return charOffset(i); return this.charOffset(pos, i, h);
} }
if (i !== l.length - 1) { if (i !== l.length - 1) {
h += l[i].th; h += l[i].th;
} }
} }
co = charOffset(i - 1); co = this.charOffset(pos, i - 1, h);
// если самый последний символ - это новая строка, то надо сместить еще на одну линию // если самый последний символ - это новая строка, то надо сместить еще на одну линию
if (t.charWidths[t.chars.length - 1] === 0) { if (t.charWidths[t.chars.length - 1] === 0) {
......
...@@ -575,36 +575,42 @@ ...@@ -575,36 +575,42 @@
var fpx = f * ppi / 72; var fpx = f * ppi / 72;
var topt = 72 / ppi; var topt = 72 / ppi;
var h = asc_calcnpt(hpt, ppi); var h;
var a = asc_round(fpx) * topt; var a = asc_round(fpx) * topt;
var d = h - a; var d;
var a_2 = asc_round(fpx / 2) * topt; 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 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; var x = a_2 + a_2_3;
if (va === "superscript") { if (va === "superscript") {
h = asc_calcnpt(hpt, ppi);
d = h - a;
l.th = x + d; l.th = x + d;
l.bl = x; l.bl = x;
l.bl2 = a_2_3; l.bl2 = a_2_3;
l.a = fm.ascender + a_2; // >0 l.a = fm.ascender + a_2; // >0
l.d = fm.descender - a_2; // <0 l.d = fm.descender - a_2; // <0
} else if (va === "subscript") { } 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.th = x + d_2_3;
l.bl = a; l.bl = a;
l.bl2 = x; l.bl2 = x;
l.a = fm.ascender + a - x; // >0 l.a = fm.ascender + a - x; // >0
l.d = fm.descender + x - a; // >0 l.d = fm.descender + x - a; // >0
} else { } else {
/* Было раньше
l.th = a + d; l.th = a + d;
l.bl = a; l.bl = a;
l.a = fm.ascender; 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 _a = Math.max(0, fm.nat_y1 * f / fm.nat_scale);
var _d = Math.max(0, (-fm.nat_y2) * 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