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

1. Поправила баг при сравнении на быстром пересчете некорректно повторно...

1. Поправила баг при сравнении на быстром пересчете некорректно повторно рассчитывалась максимальная ширина форммулы на странице(при первом пересчете все операторы имеют Gaps, при поседующем у крайних операторов их нет)
2.  Добавила сравнение на выход за граница формулы для быстрого пересчете (в случае если до быстрого пересчета и после формула выходит за границы не нужно пересчитывать выравнивание и соответственно роверять на изменение максимальной ширины формулы на странице)
3. Добавила флаги состояний Gaps bEmptyGapLeft и bEmptyGapRight (необходимы для крайних элементов, если true, то Gaps отсутствует у соответствующего элемента), пока только для операторов

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@62812 954022d7-b5bf-4e40-9824-e11837661b57
parent a121f9d4
...@@ -301,8 +301,8 @@ function CMathInfo() ...@@ -301,8 +301,8 @@ function CMathInfo()
this.FirstLineOnPage = -1; this.FirstLineOnPage = -1;
this.WrapState = ALIGN_EMPTY; this.WrapState = ALIGN_EMPTY;
this.LineWidths = new CParaMathLineWidths(); this.LineWidths = new CParaMathLineWidths();
this.bWordLarge = false;
this.NeedUpdateWrap = true; this.NeedUpdateWrap = true;
} }
CMathInfo.prototype.GetFirstLineOnPage = function() CMathInfo.prototype.GetFirstLineOnPage = function()
{ {
...@@ -368,12 +368,21 @@ CMathPageInfo.prototype.SetNextWrapState = function() ...@@ -368,12 +368,21 @@ CMathPageInfo.prototype.SetNextWrapState = function()
if(InfoPage.WrapState !== ALIGN_EMPTY) if(InfoPage.WrapState !== ALIGN_EMPTY)
InfoPage.WrapState++; InfoPage.WrapState++;
}; };
CMathPageInfo.prototype.SetStateWordLarge = function(bWordLarge)
{
this.private_CheckInfo(this.CurPage);
this.Info[this.CurPage].bWordLarge = bWordLarge;
};
CMathPageInfo.prototype.GetWrap = function(_Page) CMathPageInfo.prototype.GetWrap = function(_Page)
{ {
var Page = _Page - this.StartPage; var Page = _Page - this.StartPage;
return this.Info[Page].WrapState; return this.Info[Page].WrapState;
}; };
CMathPageInfo.prototype.GetCurrentStateWordLarge = function()
{
return this.Info[this.CurPage].bWordLarge;
};
CMathPageInfo.prototype.IsFirstPage = function(_Page) CMathPageInfo.prototype.IsFirstPage = function(_Page)
{ {
return _Page - this.StartPage == 0; return _Page - this.StartPage == 0;
...@@ -384,6 +393,8 @@ CMathPageInfo.prototype.GetStarLinetWidth = function() ...@@ -384,6 +393,8 @@ CMathPageInfo.prototype.GetStarLinetWidth = function()
}; };
CMathPageInfo.prototype.UpdateCurrentWidth = function(_Line, Width) CMathPageInfo.prototype.UpdateCurrentWidth = function(_Line, Width)
{ {
this.private_CheckInfo(this.CurPage);
var Line = _Line - this.StartLine - this.Info[this.CurPage].FirstLineOnPage; var Line = _Line - this.StartLine - this.Info[this.CurPage].FirstLineOnPage;
return this.Info[this.CurPage].LineWidths.UpdateWidth(Line, Width); return this.Info[this.CurPage].LineWidths.UpdateWidth(Line, Width);
...@@ -465,19 +476,18 @@ function ParaMath() ...@@ -465,19 +476,18 @@ function ParaMath()
this.FirstPage = -1; this.FirstPage = -1;
this.PageInfo = new CMathPageInfo(); this.PageInfo = new CMathPageInfo();
this.ParaMathRPI = new CMathRecalculateInfo(); this.ParaMathRPI = new CMathRecalculateInfo();
this.bSelectionUse = false;
this.Paragraph = null;
this.NearPosArray = []; this.bSelectionUse = false;
this.Paragraph = null;
this.Width = 0; this.NearPosArray = [];
this.WidthVisible = 0;
this.Height = 0;
this.Ascent = 0;
this.Descent = 0;
this.Width = 0;
this.WidthVisible = 0;
this.Height = 0;
this.Ascent = 0;
this.Descent = 0;
this.DefaultTextPr = new CTextPr(); this.DefaultTextPr = new CTextPr();
...@@ -1061,6 +1071,7 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -1061,6 +1071,7 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
// Paragraph.js // Paragraph.js
// CRunRecalculateObject.Compare // CRunRecalculateObject.Compare
if ( this.Paragraph !== PRS.Paragraph ) if ( this.Paragraph !== PRS.Paragraph )
{ {
this.Paragraph = PRS.Paragraph; this.Paragraph = PRS.Paragraph;
...@@ -1125,7 +1136,6 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -1125,7 +1136,6 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
if(bStartLine == false) if(bStartLine == false)
{ {
PRS.X += WrapIndent; PRS.X += WrapIndent;
//PRS.bCompareWrapIndent = false;
} }
else else
{ {
...@@ -1140,8 +1150,6 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -1140,8 +1150,6 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
PRS.PrevLineRecalcInfo.Object = null; PRS.PrevLineRecalcInfo.Object = null;
} }
//console.log("Line " + PRS.Line);
this.Root.Recalculate_Range(PRS, ParaPr, Depth); this.Root.Recalculate_Range(PRS, ParaPr, Depth);
if(PRS.NewRange == false) if(PRS.NewRange == false)
...@@ -1159,6 +1167,11 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -1159,6 +1167,11 @@ ParaMath.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
this.UpdateWidthLine(PRS, WidthLine); this.UpdateWidthLine(PRS, WidthLine);
} }
if(PRS.X + PRS.SpaceLen + PRS.WordLen > PRS.XEnd && WrapState == ALIGN_EMPTY)
{
this.PageInfo.SetStateWordLarge(true);
}
if(PRS.bMathWordLarge == true && WrapState !== ALIGN_EMPTY) if(PRS.bMathWordLarge == true && WrapState !== ALIGN_EMPTY)
{ {
this.UpdateInfoForBreak(PRS); this.UpdateInfoForBreak(PRS);
...@@ -1180,7 +1193,7 @@ ParaMath.prototype.UpdateInfoForBreak = function(PRS) ...@@ -1180,7 +1193,7 @@ ParaMath.prototype.UpdateInfoForBreak = function(PRS)
ParaMath.prototype.Save_MathInfo = function(Copy) ParaMath.prototype.Save_MathInfo = function(Copy)
{ {
var RecalculateObject = new CMathRecalculateObject(); var RecalculateObject = new CMathRecalculateObject();
RecalculateObject.Fill(this.PageInfo); RecalculateObject.Fill(this.PageInfo, this.ParaMathRPI.bInline, this.Get_Align());
return RecalculateObject; return RecalculateObject;
}; };
...@@ -1209,7 +1222,12 @@ ParaMath.prototype.Recalculate_Range_Width = function(PRSC, _CurLine, _CurRange) ...@@ -1209,7 +1222,12 @@ ParaMath.prototype.Recalculate_Range_Width = function(PRSC, _CurLine, _CurRange)
{ {
var SpaceLen = PRSC.SpaceLen; var SpaceLen = PRSC.SpaceLen;
this.Root.UpdateOperators(_CurLine, _CurRange); var bBrkBefore = this.Is_BrkBinBefore();
var bGapLeft = bBrkBefore == true,
bGapRight = bBrkBefore == false;
this.Root.UpdateOperators(_CurLine, _CurRange, bGapLeft, bGapRight);
this.Root.Recalculate_Range_Width(PRSC, _CurLine, _CurRange); this.Root.Recalculate_Range_Width(PRSC, _CurLine, _CurRange);
...@@ -3188,13 +3206,21 @@ CMathRecalculateInfo.prototype.ClearRecalculate = function() ...@@ -3188,13 +3206,21 @@ CMathRecalculateInfo.prototype.ClearRecalculate = function()
function CMathRecalculateObject() function CMathRecalculateObject()
{ {
this.WrapState = ALIGN_EMPTY; this.WrapState = ALIGN_EMPTY;
this.MaxW = 0; this.MaxW = 0;
this.bWordLarge = false;
this.bInline = false;
this.align = align_Justify;
} }
CMathRecalculateObject.prototype.Fill = function(PageInfo) CMathRecalculateObject.prototype.Fill = function(PageInfo, bInline, align)
{ {
this.WrapState = PageInfo.GetCurrentWrapState(); this.WrapState = PageInfo.GetCurrentWrapState();
this.MaxW = PageInfo.GetCurrentMaxWidthAllLines(); this.MaxW = PageInfo.GetCurrentMaxWidthAllLines();
this.bWordLarge = PageInfo.GetCurrentStateWordLarge();
this.bInline = bInline;
this.align = align;
}; };
CMathRecalculateObject.prototype.Load_MathInfo = function(PageInfo) CMathRecalculateObject.prototype.Load_MathInfo = function(PageInfo)
{ {
...@@ -3210,7 +3236,14 @@ CMathRecalculateObject.prototype.Compare = function(PageInfo) ...@@ -3210,7 +3236,14 @@ CMathRecalculateObject.prototype.Compare = function(PageInfo)
if(this.WrapState !== PageInfo.GetCurrentWrapState()) if(this.WrapState !== PageInfo.GetCurrentWrapState())
result = false; result = false;
if(this.MaxW !== PageInfo.GetCurrentMaxWidthAllLines()) var DiffMaxW = this.MaxW - PageInfo.GetCurrentMaxWidthAllLines();
if(DiffMaxW < 0)
DiffMaxW = -DiffMaxW;
var LargeComposition = this.bWordLarge == true && true == PageInfo.GetCurrentStateWordLarge();
if(LargeComposition == false && this.bInline == false && this.align == align_Justify && DiffMaxW > 0.001)
result = false; result = false;
return result; return result;
......
...@@ -13353,7 +13353,6 @@ function CRunRecalculateObject(StartLine, StartRange) ...@@ -13353,7 +13353,6 @@ function CRunRecalculateObject(StartLine, StartRange)
this.Content = []; this.Content = [];
this.MathInfo = null; this.MathInfo = null;
//this.WrapState = ALIGN_EMPTY;
} }
CRunRecalculateObject.prototype = CRunRecalculateObject.prototype =
...@@ -13386,8 +13385,6 @@ CRunRecalculateObject.prototype = ...@@ -13386,8 +13385,6 @@ CRunRecalculateObject.prototype =
Save_MathInfo: function(Obj, Copy) Save_MathInfo: function(Obj, Copy)
{ {
this.MathInfo = Obj.Save_MathInfo(Copy); this.MathInfo = Obj.Save_MathInfo(Copy);
//this.WrapState = Obj.GetCurrentWrapState();
}, },
Load_Lines : function(Obj) Load_Lines : function(Obj)
......
...@@ -2310,10 +2310,10 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -2310,10 +2310,10 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
{ {
bOverXEnd = X + WordLen + SpaceLen > XEnd; bOverXEnd = X + WordLen + SpaceLen > XEnd;
if(Word == false) // слово только началось /*if(Word == false) // слово только началось
{ {
OperGapLeft = Item.GapLeft; OperGapLeft = Item.GapLeft;
} }*/
if(bOverXEnd && FirstItemOnLine == false) // Слово не убирается в отрезке. Переносим слово в следующий отрезок if(bOverXEnd && FirstItemOnLine == false) // Слово не убирается в отрезке. Переносим слово в следующий отрезок
{ {
...@@ -2346,7 +2346,9 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -2346,7 +2346,9 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
// FirstItemOnLine == true && Word == false // FirstItemOnLine == true && Word == false
// первое слово в строке // первое слово в строке
if(FirstItemOnLine == true) if(FirstItemOnLine == true)
SpaceLen += BrkLen - OperGapLeft; {
SpaceLen += BrkLen - Item.GapLeft;
}
} }
} }
} }
...@@ -2925,7 +2927,7 @@ ParaRun.prototype.Recalculate_Range_Width = function(PRSC, _CurLine, _CurRange) ...@@ -2925,7 +2927,7 @@ ParaRun.prototype.Recalculate_Range_Width = function(PRSC, _CurLine, _CurRange)
{ {
PRSC.Letters++; PRSC.Letters++;
PRSC.Range.W += Item.Get_Width2() / TEXTWIDTH_DIVIDER; PRSC.Range.W += Item.Get_Width() / TEXTWIDTH_DIVIDER; // Get_Width рассчитываем ширину с учетом состояний Gaps
break; break;
} }
case para_Space: case para_Space:
...@@ -3063,7 +3065,7 @@ ParaRun.prototype.Recalculate_Range_Spaces = function(PRSA, _CurLine, _CurRange, ...@@ -3063,7 +3065,7 @@ ParaRun.prototype.Recalculate_Range_Spaces = function(PRSA, _CurLine, _CurRange,
case para_Math_BreakOperator: case para_Math_BreakOperator:
case para_Math_Ampersand: case para_Math_Ampersand:
{ {
var WidthVisible = Item.Get_Width2() / TEXTWIDTH_DIVIDER; var WidthVisible = Item.Get_Width() / TEXTWIDTH_DIVIDER; // Get_Width рассчитываем ширину с учетом состояний Gaps
Item.WidthVisible = (WidthVisible * TEXTWIDTH_DIVIDER)| 0;//Item.Set_WidthVisible(WidthVisible); Item.WidthVisible = (WidthVisible * TEXTWIDTH_DIVIDER)| 0;//Item.Set_WidthVisible(WidthVisible);
PRSA.X += WidthVisible; PRSA.X += WidthVisible;
...@@ -8600,7 +8602,8 @@ ParaRun.prototype.Math_SetPosition = function(pos, PRSA, Line, Range, Page) ...@@ -8600,7 +8602,8 @@ ParaRun.prototype.Math_SetPosition = function(pos, PRSA, Line, Range, Page)
for(var i = StartPos; i < EndPos; i++) for(var i = StartPos; i < EndPos; i++)
{ {
this.Content[i].setPosition(pos); this.Content[i].setPosition(pos);
pos.x += this.Content[i].Get_Width(); pos.x += this.Content[i].Get_WidthVisible(); // Get_Width => Get_WidthVisible
// Get_WidthVisible - Width + Gaps с учетом настроек состояния
} }
}; };
ParaRun.prototype.Math_GetWidth = function(_CurLine, _CurRange) ParaRun.prototype.Math_GetWidth = function(_CurLine, _CurRange)
...@@ -8614,7 +8617,8 @@ ParaRun.prototype.Math_GetWidth = function(_CurLine, _CurRange) ...@@ -8614,7 +8617,8 @@ ParaRun.prototype.Math_GetWidth = function(_CurLine, _CurRange)
var W = 0; var W = 0;
for(var i = StartPos; i < EndPos; i++) for(var i = StartPos; i < EndPos; i++)
{ {
W += this.Content[i].Get_Width(); W += this.Content[i].Get_WidthVisible(); // Get_Width => Get_WidthVisible
// Get_WidthVisible - Width + Gaps с учетом настроек состояния
} }
return W; return W;
...@@ -8717,7 +8721,8 @@ ParaRun.prototype.Recalculate_Range_OneLine = function(PRS, ParaPr, Depth) ...@@ -8717,7 +8721,8 @@ ParaRun.prototype.Recalculate_Range_OneLine = function(PRS, ParaPr, Depth)
var size = this.Content[i].size, var size = this.Content[i].size,
Type = this.Content[i].Type; Type = this.Content[i].Type;
var WidthItem = this.Content[i].Get_Width(); var WidthItem = this.Content[i].Get_WidthVisible(); // Get_Width => Get_WidthVisible
// Get_WidthVisible - Width + Gaps с учетом настроек состояния
width += WidthItem; width += WidthItem;
...@@ -8743,7 +8748,8 @@ ParaRun.prototype.Recalculate_Range_OneLine = function(PRS, ParaPr, Depth) ...@@ -8743,7 +8748,8 @@ ParaRun.prototype.Recalculate_Range_OneLine = function(PRS, ParaPr, Depth)
this.protected_FillRange(CurLine, CurRange, RangeStartPos, RangeEndPos); this.protected_FillRange(CurLine, CurRange, RangeStartPos, RangeEndPos);
}; };
ParaRun.prototype.UpdateOperators = function(_CurLine, _CurRange) // в этой функции проставляем состояние Gaps (крайние или нет) для всех операторов, к-ые участвуют в разбиении, чтобы не получилось случайно, что при изменении разбивки формулы на строки произошло, что у оператора не будет проставлен Gap
ParaRun.prototype.UpdateOperators = function(_CurLine, _CurRange, bEmptyGapLeft, bEmptyGapRight)
{ {
var CurLine = _CurLine - this.StartLine; var CurLine = _CurLine - this.StartLine;
var CurRange = ( 0 === CurLine ? _CurRange - this.StartRange : _CurRange ); var CurRange = ( 0 === CurLine ? _CurRange - this.StartRange : _CurRange );
...@@ -8751,25 +8757,14 @@ ParaRun.prototype.UpdateOperators = function(_CurLine, _CurRange) ...@@ -8751,25 +8757,14 @@ ParaRun.prototype.UpdateOperators = function(_CurLine, _CurRange)
var StartPos = this.protected_GetRangeStartPos(CurLine, CurRange); var StartPos = this.protected_GetRangeStartPos(CurLine, CurRange);
var EndPos = this.protected_GetRangeEndPos(CurLine, CurRange); var EndPos = this.protected_GetRangeEndPos(CurLine, CurRange);
var result = true; for(var Pos = StartPos; Pos < EndPos; Pos++)
if(StartPos == EndPos)
{ {
result = false; var _bEmptyGapLeft = bEmptyGapLeft && Pos == StartPos,
} _bEmptyGapRight = bEmptyGapRight && Pos == EndPos - 1;
else
{
if(this.ParaMath.Is_BrkBinBefore() == true)
{
this.Content[StartPos].Update_GapLeft(0);
}
else
{
this.Content[EndPos-1].Update_GapRight(0);
}
}
return result; this.Content[Pos].Update_StateGapLeft(_bEmptyGapLeft);
this.Content[Pos].Update_StateGapRight(_bEmptyGapRight);
}
}; };
ParaRun.prototype.Math_Apply_Style = function(Value) ParaRun.prototype.Math_Apply_Style = function(Value)
{ {
...@@ -8939,7 +8934,8 @@ ParaRun.prototype.ApplyPoints = function(PointsInfo) ...@@ -8939,7 +8934,8 @@ ParaRun.prototype.ApplyPoints = function(PointsInfo)
this.Content[Pos].size.width = PointsInfo.GetAlign(); this.Content[Pos].size.width = PointsInfo.GetAlign();
} }
this.size.width += this.Content[Pos].Get_Width(); this.size.width += this.Content[Pos].Get_WidthVisible(); // Get_Width => Get_WidthVisible
// Get_WidthVisible - Width + Gaps с учетом настроек состояния
} }
} }
}; };
......
...@@ -2047,34 +2047,14 @@ CMathBase.prototype.Recalculate_Range_Width = function(PRSC, _CurLine, _CurRange ...@@ -2047,34 +2047,14 @@ CMathBase.prototype.Recalculate_Range_Width = function(PRSC, _CurLine, _CurRange
this.Bounds.SetWidth(CurLine, PRSC.Range.W - RangeW); this.Bounds.SetWidth(CurLine, PRSC.Range.W - RangeW);
}; };
CMathBase.prototype.UpdateOperators = function(_CurLine, _CurRange) CMathBase.prototype.UpdateOperators = function(_CurLine, _CurRange, bEmptyGapLeft, bEmptyGapRight)
{ {
var CurLine = _CurLine - this.StartLine; if(this.bOneLine == false)
var CurRange = ( 0 === CurLine ? _CurRange - this.StartRange : _CurRange );
if(this.bOneLine == true)
{
result = true;
}
else
{ {
var StartPos = this.protected_GetRangeStartPos(CurLine, CurRange); // Content[this.NumBreakContent] должен содержаться в каждой строке многострочного объекта
var EndPos = this.protected_GetRangeEndPos(CurLine, CurRange); this.Content[this.NumBreakContent].UpdateOperators(_CurLine, _CurRange, bEmptyGapLeft, bEmptyGapRight);
var result = true;
if(this.ParaMath.Is_BrkBinBefore() == true)
{
result = this.Content[StartPos].UpdateOperators(_CurLine, _CurRange);
}
else
{
result = this.Content[EndPos].UpdateOperators(_CurLine, _CurRange);
}
} }
return result;
}; };
CMathBase.prototype.Is_EmptyRange = function() CMathBase.prototype.Is_EmptyRange = function()
{ {
......
...@@ -528,7 +528,9 @@ CBox.prototype.Update_WordLen = function(PRS, WordLen) ...@@ -528,7 +528,9 @@ CBox.prototype.Update_WordLen = function(PRS, WordLen)
{ {
PRS.WordLen = WordLen; PRS.WordLen = WordLen;
}; };
CBox.prototype.UpdateOperators = function(_CurLine, _CurRange)
// TO DO передела в base.js
CBox.prototype.UpdateOperators____2 = function(_CurLine, _CurRange)
{ {
if(true == this.ParaMath.Is_BrkBinBefore()) if(true == this.ParaMath.Is_BrkBinBefore())
{ {
......
...@@ -3940,10 +3940,10 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth) ...@@ -3940,10 +3940,10 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
} }
else // контент может занимать несколько строк else // контент может занимать несколько строк
{ {
var FirstItemOnLine = PRS.FirstItemOnLine,
Word = PRS.Word;
var bNoOneBreakOperator = PRS.bNoOneBreakOperator; var bNoOneBreakOperator = PRS.bNoOneBreakOperator;
var W_Before = PRS.WordLen + PRS.SpaceLen + PRS.X;
Item.Recalculate_Range(PRS, ParaPr, Depth + 1); Item.Recalculate_Range(PRS, ParaPr, Depth + 1);
if(Type == para_Math_Composition) if(Type == para_Math_Composition)
...@@ -4149,7 +4149,7 @@ CMathContent.prototype.Recalculate_LineMetrics = function(PRS, ParaPr, _CurLine, ...@@ -4149,7 +4149,7 @@ CMathContent.prototype.Recalculate_LineMetrics = function(PRS, ParaPr, _CurLine,
ContentMetrics.UpdateMetrics(NewContentMetrics); ContentMetrics.UpdateMetrics(NewContentMetrics);
}; };
CMathContent.prototype.UpdateOperators = function(_CurLine, _CurRange) CMathContent.prototype.UpdateOperators = function(_CurLine, _CurRange, bEmptyGapLeft, bEmptyGapRight)
{ {
var CurLine = _CurLine - this.StartLine; var CurLine = _CurLine - this.StartLine;
var CurRange = ( 0 === CurLine ? _CurRange - this.StartRange : _CurRange ); var CurRange = ( 0 === CurLine ? _CurRange - this.StartRange : _CurRange );
...@@ -4157,27 +4157,13 @@ CMathContent.prototype.UpdateOperators = function(_CurLine, _CurRange) ...@@ -4157,27 +4157,13 @@ CMathContent.prototype.UpdateOperators = function(_CurLine, _CurRange)
var StartPos = this.protected_GetRangeStartPos(CurLine, CurRange); var StartPos = this.protected_GetRangeStartPos(CurLine, CurRange);
var EndPos = this.protected_GetRangeEndPos(CurLine, CurRange); var EndPos = this.protected_GetRangeEndPos(CurLine, CurRange);
var result = false; for(var Pos = StartPos; Pos <= EndPos; Pos++)
if(this.ParaMath.Is_BrkBinBefore() == true)
{
while(StartPos <= EndPos && result == false)
{
result = this.Content[StartPos].UpdateOperators(_CurLine, _CurRange);
StartPos++;
}
}
else
{ {
while(StartPos <= EndPos && result == false) var _bEmptyGapLeft = bEmptyGapLeft && Pos == StartPos,
{ _bEmptyGapRight = bEmptyGapRight && Pos == EndPos;
result = this.Content[EndPos].UpdateOperators(_CurLine, _CurRange);
EndPos--;
}
}
return result;
this.Content[Pos].UpdateOperators(_CurLine, _CurRange, _bEmptyGapLeft, _bEmptyGapRight);
}
}; };
CMathContent.prototype.Get_Bounds = function() CMathContent.prototype.Get_Bounds = function()
{ {
......
...@@ -40,15 +40,12 @@ CMathSize.prototype.Set = function(size) ...@@ -40,15 +40,12 @@ CMathSize.prototype.Set = function(size)
function CMathText(bJDraw) function CMathText(bJDraw)
{ {
// для Para_Run // для Para_Run
this.Type = para_Math_Text; this.Type = para_Math_Text;
this.bJDraw = (undefined === bJDraw ? false : bJDraw);
this.bJDraw = (undefined === bJDraw ? false : bJDraw); this.value = null;
this.value = null;
this.RecalcInfo = this.RecalcInfo =
{ {
//NewLetter: true,
StyleCode: null, StyleCode: null,
bAccentIJ: false, bAccentIJ: false,
bSpaceSpecial: false, bSpaceSpecial: false,
...@@ -56,20 +53,23 @@ function CMathText(bJDraw) ...@@ -56,20 +53,23 @@ function CMathText(bJDraw)
bSpecialOperator: false bSpecialOperator: false
}; };
this.ParaMath = null; this.bEmptyGapLeft = false;
this.Flags = 0; this.bEmptyGapRight = false;
this.Parent = null;
this.size = new CMathSize();
this.Width = 0; // для Recalculate_Range
this.pos = new CMathPosition(); this.ParaMath = null;
this.Flags = 0;
this.Parent = null;
this.size = new CMathSize();
this.Width = 0; // для Recalculate_Range
this.pos = new CMathPosition();
this.rasterOffsetX = 0; this.rasterOffsetX = 0;
this.rasterOffsetY = 0; this.rasterOffsetY = 0;
this.GapLeft = 0; this.GapLeft = 0;
this.GapRight = 0; this.GapRight = 0;
this.FontSlot = fontslot_ASCII; this.FontSlot = fontslot_ASCII;
// TO DO // TO DO
// убрать // убрать
...@@ -655,7 +655,15 @@ CMathText.prototype = ...@@ -655,7 +655,15 @@ CMathText.prototype =
}, },
Get_Width: function() // работаем через функцию, т.к. поля GapLeft и GapRight могут измениться из-за изменения переноса, а пересчет (Measure) в этом случае не прийдет Get_Width: function() // работаем через функцию, т.к. поля GapLeft и GapRight могут измениться из-за изменения переноса, а пересчет (Measure) в этом случае не прийдет
{ {
return this.size.width + this.GapLeft + this.GapRight; var Width = this.size.width;
if(this.bEmptyGapLeft == false)
Width += this.GapLeft;
if(this.bEmptyGapRight == false)
Width += this.GapRight;
return (Width*TEXTWIDTH_DIVIDER) | 0;
}, },
Get_Width2: function() // работаем через функцию, т.к. поля GapLeft и GapRight могут измениться из-за изменения переноса, а пересчет (Measure) в этом случае не прийдет Get_Width2: function() // работаем через функцию, т.к. поля GapLeft и GapRight могут измениться из-за изменения переноса, а пересчет (Measure) в этом случае не прийдет
{ {
...@@ -663,21 +671,23 @@ CMathText.prototype = ...@@ -663,21 +671,23 @@ CMathText.prototype =
}, },
Get_WidthVisible: function() Get_WidthVisible: function()
{ {
return this.size.width + this.GapLeft + this.GapRight; var Width = this.size.width;
if(this.bEmptyGapLeft == false)
Width += this.GapLeft;
if(this.bEmptyGapRight == false)
Width += this.GapRight;
return Width;
}, },
Update_GapLeft: function(Gap) Update_StateGapLeft: function(bState)
{ {
this.GapLeft = Gap; this.bEmptyGapLeft = bState;
//this.size.width = this.MeasureWidth + this.GapRight + this.GapLeft;
//this.Width = (this.size.width * TEXTWIDTH_DIVIDER) | 0;
}, },
Update_GapRight: function(Gap) Update_StateGapRight: function(bState)
{ {
this.GapRight = Gap; this.bEmptyGapRight = bState;
//this.size.width = this.MeasureWidth + this.GapRight + this.GapLeft;
//this.Width = (this.size.width * TEXTWIDTH_DIVIDER) | 0;
}, },
Draw_Elements: function(PDSE) Draw_Elements: function(PDSE)
{ {
...@@ -686,9 +696,14 @@ CMathText.prototype = ...@@ -686,9 +696,14 @@ CMathText.prototype =
}, },
Draw: function(x, y, pGraphics, InfoTextPr) Draw: function(x, y, pGraphics, InfoTextPr)
{ {
var X = this.pos.x + x + this.GapLeft,
var X = this.pos.x + x,
Y = this.pos.y + y; Y = this.pos.y + y;
if(this.bEmptyGapLeft == false)
X += this.GapLeft;
/*var tx = 0; /*var tx = 0;
var ty = 0; var ty = 0;
......
...@@ -567,28 +567,6 @@ CNary.prototype.Recalculate_Range_Width = function(PRSC, _CurLine, _CurRange) ...@@ -567,28 +567,6 @@ CNary.prototype.Recalculate_Range_Width = function(PRSC, _CurLine, _CurRange)
this.Bounds.SetWidth(CurLine, PRSC.Range.W - RangeW); this.Bounds.SetWidth(CurLine, PRSC.Range.W - RangeW);
} }
}; };
CNary.prototype.UpdateOperators = function(_CurLine, _CurRange)
{
/*var CurLine = _CurLine - this.StartLine;
var CurRange = ( 0 === CurLine ? _CurRange - this.StartRange : _CurRange );
var StartPos = this.protected_GetRangeStartPos(CurLine, CurRange);
var EndPos = this.protected_GetRangeEndPos(CurLine, CurRange);*/
var result = true;
if(this.ParaMath.Is_BrkBinBefore() == true)
{
result = this.Arg.UpdateOperators(_CurLine, _CurRange);
}
else
{
result = this.Arg.UpdateOperators(_CurLine, _CurRange);
}
return result;
};
CNary.prototype.Draw_Elements = function(PDSE) CNary.prototype.Draw_Elements = function(PDSE)
{ {
var CurLine = PDSE.Line - this.StartLine; var CurLine = PDSE.Line - this.StartLine;
...@@ -1619,13 +1597,6 @@ CIntegral.prototype.getCoord = function() ...@@ -1619,13 +1597,6 @@ CIntegral.prototype.getCoord = function()
X[44] = X[0]; Y[44] = Y[0]; X[44] = X[0]; Y[44] = Y[0];
X[43] = (X[42] + X[44])/2; Y[43] = (Y[44] + Y[42])/2; X[43] = (X[42] + X[44])/2; Y[43] = (Y[44] + Y[42])/2;
/*for(var i = 0; i < X.length; i++)
{
var k = i + 34;
var str = "X[" + k + "] = " + X[i] + "; Y[" + k + "] = " + Y[i] + ";";
console.log(str);
}*/
var W = X[9], var W = X[9],
H = Y[27]; H = Y[27];
...@@ -1819,14 +1790,6 @@ CCircle.prototype.getCoord = function() ...@@ -1819,14 +1790,6 @@ CCircle.prototype.getCoord = function()
X[32] = 11930.6; Y[32] = 407.15; X[32] = 11930.6; Y[32] = 407.15;
X[33] = 18345.98; Y[33] = 0; X[33] = 18345.98; Y[33] = 0;
/*
for(var i = 0; i < 34; i++)
{
var str = "X[" + i + "] = " + Math.round(X[i]*85)/100 + "; Y[" + i + "] = " + Math.round(Y[i]*85)/100 + ";";
console.log(str);
}*/
var W = X[7], var W = X[7],
H = Y[16]; H = Y[16];
...@@ -1912,33 +1875,10 @@ CSurface.prototype.getCoord = function() ...@@ -1912,33 +1875,10 @@ CSurface.prototype.getCoord = function()
X[41] = 21192.77; Y[41] = 841.7; X[41] = 21192.77; Y[41] = 841.7;
X[42] = 24855.55; Y[42] = 312.82; X[42] = 24855.55; Y[42] = 312.82;
/*var t = Y[1];
for(var i = 0 ; i < X.length; i++)
{
var yy = Math.round((Y[i] - t)*100)/100;
var str = "X[" + i + "] = " + X[i] + "; Y[" + i + "] = " + yy + ";";
console.log(str);
}*/
var W = X[11], var W = X[11],
H = Y[21]; H = Y[21];
/*for(var i = 0; i < X.length; i++)
{
X[i] *= 1.03;
Y[i] *= 0.97;
var xx = Math.round(X[i]*100)/100;
var yy = Math.round(Y[i]*100)/100;
var str = "X[" + i + "] = " + xx + "; Y[" + i + "] = " + yy + ";";
console.log(str);
}*/
return {X: X, Y: Y, W: W, H: H}; return {X: X, Y: Y, W: W, H: H};
}; };
...@@ -2032,37 +1972,6 @@ CVolume.prototype.getCoord = function() ...@@ -2032,37 +1972,6 @@ CVolume.prototype.getCoord = function()
X[49] = 18795; Y[49] = 2963.07; X[49] = 18795; Y[49] = 2963.07;
X[50] = 24086.6; Y[50] = 1584.99; X[50] = 24086.6; Y[50] = 1584.99;
/*var min_y = 23530,
ind_y;
for(var i = 0; i < X.length; i++)
{
if(Y[i] < min_y)
{
ind_y = i;
min_y = Y[i];
}
}
for(var i = 0; i < 51; i++)
{
X[i] *= 1.074;
Y[i] *= 0.99;
}
var t = Y[ind_y];
for(var i = 0; i < 51; i++)
{
var yy = Math.round((Y[i] - t)*100)/100;
var xx = Math.round(X[i]*100)/100;
var str = "X["+i+"] = " + xx + "; Y["+i+ "] = "+ yy + ";";
console.log(str);
}*/
var W = X[15], var W = X[15],
H = Y[28]; H = Y[28];
......
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