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)
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;
}
......@@ -399,6 +406,24 @@ CMathBase.prototype.Shift_Range = function(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)
{
var CurLine = Line - this.StartLine;
......@@ -1155,7 +1180,9 @@ CMathBase.prototype.Recalculate_Range_Spaces = function(PRSA, _CurLine, _CurRang
PRSA.LettersSkip--;
}
else
{
WidthVisible = this.Bounds.GetWidth(CurLine, CurRange) + PRSA.JustifyWord;
}
PRSA.X += WidthVisible;
PRSA.LastW = WidthVisible;
......@@ -2151,17 +2178,17 @@ CMathBase.prototype.Recalculate_Range_Width = function(PRSC, _CurLine, _CurRange
PRSC.Range.W += this.dW*(EndPos - StartPos);
// Здесь проверяем не на кол-во строк, т.к. на данном этапе еще идет вычисление строк, а на конец контента !
// Здесь проверяем не на то, что это последний Range (т.к. на данном этапе еще идет вычисление строк) а на конец контента !
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 EndBrContentEnd = this.NumBreakContent == EndPos && this.Content[EndPos].Math_Is_End( _CurLine, _CurRange),
NotBrContent = this.NumBreakContent !== EndPos;
var bEnd = EndBrContentEnd || NotBrContent;
if(EndBrContentEnd || NotBrContent)
PRSC.Range.W += this.BrGapRight;
if(EndPos == Len - 1 && true === bEnd)
{
PRSC.Range.W += this.BrGapRight;
}
}
......
......@@ -338,20 +338,26 @@ CDegreeBase.prototype.setPosition = function(pos, PRSA, Line, Range, Page)
}
else
{
if(this.bOneLine || CurLine == 0 && CurRange == 0)
if(CurLine == 0 && CurRange == 0)
pos.x += this.BrGapLeft;
Y = pos.y;
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;
}
......@@ -469,7 +475,9 @@ CDegree.prototype.setPosition = function(pos, PRSA, Line, Range, Page)
var EndPos = this.protected_GetRangeEndPos(CurLine, CurRange);
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);
}
......@@ -835,7 +843,7 @@ CDegreeSubSup.prototype.Recalculate_LineMetrics = function(PRS, ParaPr, _CurLine
this.Bounds.Reset();
}
if(this.bOneLine == false && this.Need_Iters(_CurLine, _CurRange))
if(this.bOneLine === false && true === this.Need_Iters(_CurLine, _CurRange))
{
// чтобы при вычислении метрик итератора не были перебили метрики (например, у внутр мат объекта Asc может быть больше Asc текущего объекта)
......
......@@ -4518,11 +4518,6 @@ CMathContent.prototype.Math_Is_End = function(_CurLine, _CurRange)
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)
{
return Line == this.StartLine;
......@@ -4531,13 +4526,6 @@ CMathContent.prototype.IsFirstRange = function(Line, Range)
{
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)
{
var result = false;
......
......@@ -3560,17 +3560,13 @@ CDelimiter.prototype.GetAscentOperator = function(operator) // в качеств
};
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);
if(this.bOneLine == false)
{
var LinesCount = this.protected_GetLinesCount();
var PosOper = new CMathPosition();
if(CurLine == 0 && CurRange == 0)
if(true === this.IsFirstRange(Line, Range))
{
PosOper.x = pos.x;
PosOper.y = pos.y - this.begOper.size.ascent;
......@@ -3580,7 +3576,8 @@ CDelimiter.prototype.setPosition = function(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.y = pos.y - this.endOper.size.ascent;
......@@ -3627,10 +3624,7 @@ CDelimiter.prototype.Draw_Elements = function(PDSE)
if(this.bOneLine == false)
{
var CurLine = PDSE.Line - this.StartLine;
var CurRange = ( 0 === CurLine ? PDSE.Range - this.StartRange : PDSE.Range );
if(CurLine == 0 && CurRange == 0)
if(true === this.IsFirstRange(PDSE.Line, PDSE.Range))
{
this.begOper.draw(PosLine.x, PosLine.y, PDSE.Graphics, PDSE);
PDSE.X += this.BrGapLeft;
......@@ -3638,9 +3632,7 @@ CDelimiter.prototype.Draw_Elements = function(PDSE)
this.Content[0].Draw_Elements(PDSE);
var LinesCount = this.protected_GetLinesCount();
if(LinesCount - 1 == CurLine)
if(true === this.IsLastRange(PDSE.Line, PDSE.Range))
{
this.endOper.draw(PosLine.x, PosLine.y, PDSE.Graphics, PDSE);
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