Commit b931abef authored by Anna.Pavlova's avatar Anna.Pavlova Committed by Alexander.Trofimov

Поправила баг : два раза отрисовывалась закрывающаяся скобка в delimiters,...

Поправила баг : два раза отрисовывалась закрывающаяся скобка в delimiters, один раз поверх предшествующего элемента

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@63844 954022d7-b5bf-4e40-9824-e11837661b57
parent b84063e9
...@@ -354,7 +354,14 @@ CMathBase.prototype.setPosition = function(pos, PRSA, Line, Range, Page) ...@@ -354,7 +354,14 @@ CMathBase.prototype.setPosition = function(pos, PRSA, Line, Range, Page)
var Len = this.Content.length; var Len = this.Content.length;
if(EndPos == Len - 1 && this.Content[EndPos].Math_Is_End( Line, Range)) // Здесь проверяем не на то, что это последний Range (т.к. на данном этапе еще идет вычисление строк) а на конец контента !
var EndBrContentEnd = this.NumBreakContent == EndPos && this.Content[EndPos].Math_Is_End(Line, Range),
NotBrContent = this.NumBreakContent !== EndPos;
var bEnd = EndBrContentEnd || NotBrContent;
if(EndPos == Len - 1 && true === bEnd)
pos.x += this.BrGapRight; pos.x += this.BrGapRight;
} }
...@@ -399,6 +406,24 @@ CMathBase.prototype.Shift_Range = function(Dx, Dy, _CurLine, _CurRange) ...@@ -399,6 +406,24 @@ CMathBase.prototype.Shift_Range = function(Dx, Dy, _CurLine, _CurRange)
CMathBase.superclass.Shift_Range.call(this, Dx, Dy, _CurLine, _CurRange); CMathBase.superclass.Shift_Range.call(this, Dx, Dy, _CurLine, _CurRange);
} }
}; };
CMathBase.prototype.IsFirstRange = function(_CurLine, _CurRange)
{
var CurLine = _CurLine - this.StartLine;
var CurRange = ( 0 === CurLine ? _CurRange - this.StartRange : _CurRange );
return CurLine == 0 && CurRange == 0;
};
CMathBase.prototype.IsLastRange = function(_CurLine, _CurRange)
{
var CurLine = _CurLine - this.StartLine;
var CurRange = ( 0 === CurLine ? _CurRange - this.StartRange : _CurRange );
var LinesCount = this.protected_GetLinesCount(),
RangesCount = this.protected_GetRangesCount(CurLine);
return CurLine == LinesCount - 1 && CurRange == RangesCount - 1;
};
CMathBase.prototype.UpdatePosBound = function(pos, PRSA, Line, Range, Page) CMathBase.prototype.UpdatePosBound = function(pos, PRSA, Line, Range, Page)
{ {
var CurLine = Line - this.StartLine; var CurLine = Line - this.StartLine;
...@@ -1155,7 +1180,9 @@ CMathBase.prototype.Recalculate_Range_Spaces = function(PRSA, _CurLine, _CurRang ...@@ -1155,7 +1180,9 @@ CMathBase.prototype.Recalculate_Range_Spaces = function(PRSA, _CurLine, _CurRang
PRSA.LettersSkip--; PRSA.LettersSkip--;
} }
else else
{
WidthVisible = this.Bounds.GetWidth(CurLine, CurRange) + PRSA.JustifyWord; WidthVisible = this.Bounds.GetWidth(CurLine, CurRange) + PRSA.JustifyWord;
}
PRSA.X += WidthVisible; PRSA.X += WidthVisible;
PRSA.LastW = WidthVisible; PRSA.LastW = WidthVisible;
...@@ -2151,17 +2178,17 @@ CMathBase.prototype.Recalculate_Range_Width = function(PRSC, _CurLine, _CurRange ...@@ -2151,17 +2178,17 @@ CMathBase.prototype.Recalculate_Range_Width = function(PRSC, _CurLine, _CurRange
PRSC.Range.W += this.dW*(EndPos - StartPos); PRSC.Range.W += this.dW*(EndPos - StartPos);
// Здесь проверяем не на кол-во строк, т.к. на данном этапе еще идет вычисление строк, а на конец контента ! // Здесь проверяем не на то, что это последний Range (т.к. на данном этапе еще идет вычисление строк) а на конец контента !
var Len = this.Content.length; var Len = this.Content.length;
var EndBrContentEnd = this.NumBreakContent == EndPos && this.Content[EndPos].Math_Is_End( _CurLine, _CurRange),
NotBrContent = this.NumBreakContent !== EndPos;
if(EndPos == Len - 1) var bEnd = EndBrContentEnd || NotBrContent;
{
var EndBrContentEnd = this.NumBreakContent == EndPos && this.Content[EndPos].Math_Is_End( _CurLine, _CurRange),
NotBrContent = this.NumBreakContent !== EndPos;
if(EndBrContentEnd || NotBrContent) if(EndPos == Len - 1 && true === bEnd)
PRSC.Range.W += this.BrGapRight; {
PRSC.Range.W += this.BrGapRight;
} }
} }
......
...@@ -338,20 +338,26 @@ CDegreeBase.prototype.setPosition = function(pos, PRSA, Line, Range, Page) ...@@ -338,20 +338,26 @@ CDegreeBase.prototype.setPosition = function(pos, PRSA, Line, Range, Page)
} }
else else
{ {
if(this.bOneLine || CurLine == 0 && CurRange == 0) if(CurLine == 0 && CurRange == 0)
pos.x += this.BrGapLeft; pos.x += this.BrGapLeft;
Y = pos.y; Y = pos.y;
this.baseContent.setPosition(pos, PRSA, Line, Range, Page); this.baseContent.setPosition(pos, PRSA, Line, Range, Page);
pos.x += this.dW; var EndPos = this.protected_GetRangeEndPos(CurLine, CurRange);
var Lng = this.Content.length;
pos.y += this.upIter + this.iterContent.size.ascent; if(EndPos == Lng - 1)
{
pos.x += this.dW;
this.iterContent.setPosition(pos, PRSA, Line, Range, Page); pos.y += this.upIter + this.iterContent.size.ascent;
pos.x += this.BrGapRight; this.iterContent.setPosition(pos, PRSA, Line, Range, Page);
pos.x += this.BrGapRight;
}
pos.y = Y; pos.y = Y;
} }
...@@ -469,7 +475,9 @@ CDegree.prototype.setPosition = function(pos, PRSA, Line, Range, Page) ...@@ -469,7 +475,9 @@ CDegree.prototype.setPosition = function(pos, PRSA, Line, Range, Page)
var EndPos = this.protected_GetRangeEndPos(CurLine, CurRange); var EndPos = this.protected_GetRangeEndPos(CurLine, CurRange);
var Len = this.Content.length; var Len = this.Content.length;
if(this.bOneLine || (EndPos == Len - 1 && this.Content[EndPos].Math_Is_End( Line, Range))) // у степени всегда итератор идет в конце, поэтому сделать проверку на то, что текущий контент tпоследний (т.е. это и будет итератор)
if(this.bOneLine || EndPos == Len - 1)
{ {
CDegree.superclass.setPosition.call(this, pos, PRSA, Line, Range, Page); CDegree.superclass.setPosition.call(this, pos, PRSA, Line, Range, Page);
} }
...@@ -835,7 +843,7 @@ CDegreeSubSup.prototype.Recalculate_LineMetrics = function(PRS, ParaPr, _CurLine ...@@ -835,7 +843,7 @@ CDegreeSubSup.prototype.Recalculate_LineMetrics = function(PRS, ParaPr, _CurLine
this.Bounds.Reset(); this.Bounds.Reset();
} }
if(this.bOneLine == false && this.Need_Iters(_CurLine, _CurRange)) if(this.bOneLine === false && true === this.Need_Iters(_CurLine, _CurRange))
{ {
// чтобы при вычислении метрик итератора не были перебили метрики (например, у внутр мат объекта Asc может быть больше Asc текущего объекта) // чтобы при вычислении метрик итератора не были перебили метрики (например, у внутр мат объекта Asc может быть больше Asc текущего объекта)
......
...@@ -4518,11 +4518,6 @@ CMathContent.prototype.Math_Is_End = function(_CurLine, _CurRange) ...@@ -4518,11 +4518,6 @@ CMathContent.prototype.Math_Is_End = function(_CurLine, _CurRange)
return result; return result;
}; };
CMathContent.prototype.IsStartRange = function(Line, Range)
{
var bFirstLine = Line - this.StartLine == 0;
return bFirstLine ? Range - this.StartRange == 0 : Range == 0;
};
CMathContent.prototype.IsStartLine = function(Line) CMathContent.prototype.IsStartLine = function(Line)
{ {
return Line == this.StartLine; return Line == this.StartLine;
...@@ -4531,13 +4526,6 @@ CMathContent.prototype.IsFirstRange = function(Line, Range) ...@@ -4531,13 +4526,6 @@ CMathContent.prototype.IsFirstRange = function(Line, Range)
{ {
return Line - this.StartLine == 0 && Range - this.StartRange == 0; return Line - this.StartLine == 0 && Range - this.StartRange == 0;
}; };
CMathContent.prototype.IsEndLine = function(Line)
{
var CurLine = Line - this.StartLine;
var LinesCount = this.protected_GetLinesCount();
return CurLine == LinesCount - 1;
};
CMathContent.prototype.IsFirstMCompInContent = function(Class) CMathContent.prototype.IsFirstMCompInContent = function(Class)
{ {
var result = false; var result = false;
......
...@@ -3560,17 +3560,13 @@ CDelimiter.prototype.GetAscentOperator = function(operator) // в качеств ...@@ -3560,17 +3560,13 @@ CDelimiter.prototype.GetAscentOperator = function(operator) // в качеств
}; };
CDelimiter.prototype.setPosition = function(pos, PRSA, Line, Range, Page) CDelimiter.prototype.setPosition = function(pos, PRSA, Line, Range, Page)
{ {
var CurLine = Line - this.StartLine;
var CurRange = ( 0 === CurLine ? Range - this.StartRange : Range );
this.UpdatePosBound(pos, PRSA, Line, Range, Page); this.UpdatePosBound(pos, PRSA, Line, Range, Page);
if(this.bOneLine == false) if(this.bOneLine == false)
{ {
var LinesCount = this.protected_GetLinesCount();
var PosOper = new CMathPosition(); var PosOper = new CMathPosition();
if(CurLine == 0 && CurRange == 0) if(true === this.IsFirstRange(Line, Range))
{ {
PosOper.x = pos.x; PosOper.x = pos.x;
PosOper.y = pos.y - this.begOper.size.ascent; PosOper.y = pos.y - this.begOper.size.ascent;
...@@ -3580,7 +3576,8 @@ CDelimiter.prototype.setPosition = function(pos, PRSA, Line, Range, Page) ...@@ -3580,7 +3576,8 @@ CDelimiter.prototype.setPosition = function(pos, PRSA, Line, Range, Page)
this.Content[0].setPosition(pos, PRSA, Line, Range, Page); this.Content[0].setPosition(pos, PRSA, Line, Range, Page);
if(LinesCount - 1 == CurLine) // пересчет еще не закончился, поэтому на LastRange не можем проверить
if(true === this.Content[0].Math_Is_End(Line, Range))
{ {
PosOper.x = pos.x; PosOper.x = pos.x;
PosOper.y = pos.y - this.endOper.size.ascent; PosOper.y = pos.y - this.endOper.size.ascent;
...@@ -3627,10 +3624,7 @@ CDelimiter.prototype.Draw_Elements = function(PDSE) ...@@ -3627,10 +3624,7 @@ CDelimiter.prototype.Draw_Elements = function(PDSE)
if(this.bOneLine == false) if(this.bOneLine == false)
{ {
var CurLine = PDSE.Line - this.StartLine; if(true === this.IsFirstRange(PDSE.Line, PDSE.Range))
var CurRange = ( 0 === CurLine ? PDSE.Range - this.StartRange : PDSE.Range );
if(CurLine == 0 && CurRange == 0)
{ {
this.begOper.draw(PosLine.x, PosLine.y, PDSE.Graphics, PDSE); this.begOper.draw(PosLine.x, PosLine.y, PDSE.Graphics, PDSE);
PDSE.X += this.BrGapLeft; PDSE.X += this.BrGapLeft;
...@@ -3638,9 +3632,7 @@ CDelimiter.prototype.Draw_Elements = function(PDSE) ...@@ -3638,9 +3632,7 @@ CDelimiter.prototype.Draw_Elements = function(PDSE)
this.Content[0].Draw_Elements(PDSE); this.Content[0].Draw_Elements(PDSE);
var LinesCount = this.protected_GetLinesCount(); if(true === this.IsLastRange(PDSE.Line, PDSE.Range))
if(LinesCount - 1 == CurLine)
{ {
this.endOper.draw(PosLine.x, PosLine.y, PDSE.Graphics, PDSE); this.endOper.draw(PosLine.x, PosLine.y, PDSE.Graphics, PDSE);
PDSE.X += this.BrGapRight; PDSE.X += this.BrGapRight;
......
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