Commit bb1a3161 authored by Anna.Pavlova's avatar Anna.Pavlova

Merged revision(s) 65719-65872 from AVS/Sources/TeamlabOffice/branches/Word_Math

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@65873 954022d7-b5bf-4e40-9824-e11837661b57
parent 6508dbfa
This diff is collapsed.
......@@ -457,6 +457,7 @@ function CDocumentRecalcInfo()
this.KeepNextParagraph = null; // Параграф, который надо пересчитать из-за того, что следующий начался с новой страницы
this.FrameRecalc = false; // Пересчитываем ли рамку
this.ParaMath = null;
}
CDocumentRecalcInfo.prototype =
......@@ -474,12 +475,14 @@ CDocumentRecalcInfo.prototype =
this.WidowControlReset = false;
this.KeepNextParagraph = null;
this.ParaMath = null;
},
// Проверяем, можно ли начать пересчет какого-либо элемента
Can_RecalcObject : function()
{
if ( null === this.FlowObject && null === this.WidowControlParagraph && null === this.KeepNextParagraph )
if ( null === this.FlowObject && null === this.WidowControlParagraph && null === this.KeepNextParagraph && null == this.ParaMath)
return true;
return false;
......@@ -492,6 +495,17 @@ CDocumentRecalcInfo.prototype =
this.FlowObjectElementsCount = ElementsCount;
this.RecalcResult = RecalcResult;
},
Set_ParaMath : function(Object)
{
this.ParaMath = Object;
},
Check_ParaMath: function(ParaMath)
{
if ( ParaMath === this.ParaMath )
return true;
return false;
},
Check_FlowObject : function(FlowObject)
{
......
This diff is collapsed.
This diff is collapsed.
......@@ -2151,7 +2151,7 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
var OperGapLeft = PRS.OperGapLeft;
var bInsideOper = PRS.bInsideOper;
var bFirstCompareOper = PRS.bFirstCompareOper;
var bContainCompareOper = PRS.bContainCompareOper;
var bEndRunToContent = PRS.bEndRunToContent;
var bNoOneBreakOperator = PRS.bNoOneBreakOperator;
var BreakBox = PRS.BreakBox;
......@@ -2376,7 +2376,7 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
var bOperBefore = this.ParaMath.Is_BrkBinBefore() == true;
var bOperInEndContent = bOperBefore === false && bEndRunToContent === true && Pos == ContentLen - 1 && Word == true, // необходимо для того, чтобы у контентов мат объектов (к-ые могут разбиваться на строки) не было отметки Set_LineBreakPos, иначе скобка (или GapLeft), перед которой стоит break_Operator, перенесется на следующую строку (без текста !)
bLowPriority = bCompareOper == false && bFirstCompareOper == false;
bLowPriority = bCompareOper == false && bContainCompareOper == false;
if(Pos == 0 && true === this.MathPrp.IsBreak()) // принудительный перенос
{
......@@ -2425,11 +2425,12 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
var WorLenCompareOper = WordLen + X - XRange + (bOperBefore ? SpaceLen : BrkLen);
var bOverXEnd;
var bNotUpdBreakOper = false;
var bCompareWrapIndent = PRS.bFirstLine == true ? WorLenCompareOper > PRS.WrapIndent : true;
if(PRS.bPriorityOper == true && bCompareOper == true && bFirstCompareOper == true && bCompareWrapIndent == true && !(Word == false && FirstItemOnLine === true)) // (Word == true && FirstItemOnLine == true) - не первый элемент в строке
bFirstCompareOper = false;
if(PRS.bPriorityOper == true && bCompareOper == true && bContainCompareOper == true && bCompareWrapIndent == true && !(Word == false && FirstItemOnLine === true)) // (Word == true && FirstItemOnLine == true) - не первый элемент в строке
bContainCompareOper = false;
if(bOperBefore) // оператор "до" => оператор находится в начале строки
{
......@@ -2455,8 +2456,17 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
X += SpaceLen + WordLen;
if(PRS.bBreakPosInLWord == true)
{
PRS.Set_LineBreakPos(Pos);
}
else
{
bNotUpdBreakOper = true;
}
RangeEndPos = Pos;
SpaceLen = 0;
WordLen = 0;
......@@ -2516,6 +2526,7 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
if(bOverXEnd) // FirstItemOnLine == true
{
bMathWordLarge = true;
}
X += BrkLen + WordLen;
......@@ -2524,8 +2535,17 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
SpaceLen = 0;
WordLen = 0;
if(PRS.bBreakPosInLWord == true)
PRS.Set_LineBreakPos(Pos+1); // LineBreakPos обновляем здесь, т.к. слово может начаться с мат объекта, а не с Run, в мат объекте нет соответствующей проверки
var bNotUpdate = bOverXEnd == true && PRS.bBreakPosInLWord == false;
// FirstItemOnLine == true
if(bNotUpdate == false) // LineBreakPos обновляем здесь, т.к. слово может начаться с мат объекта, а не с Run, в мат объекте нет соответствующей проверки
{
PRS.Set_LineBreakPos(Pos+1);
}
else
{
bNotUpdBreakOper = true;
}
FirstItemOnLine = false;
......@@ -2535,7 +2555,8 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
}
}
bNoOneBreakOperator = false;
if(bNotUpdBreakOper == false)
bNoOneBreakOperator = false;
break;
}
......@@ -2641,6 +2662,7 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
Word = false;
SpaceLen = 0;
WordLen = 0;
}
}
......@@ -2805,6 +2827,10 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
{
NewRange = true;
EmptyLine = false;
// здесь оставляем проверку, т.к. в случае, если после неинлайновой формулы нах-ся инлайновая необходимо в любом случае сделать перенос (проверка в private_RecalculateRange(), где выставляется PRS.ForceNewLine = true не пройдет)
if (true === PRS.MathNotInline)
PRS.ForceNewLine = true;
}
RangeEndPos = Pos + 1;
......@@ -2872,7 +2898,7 @@ ParaRun.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
PRS.XEnd = XEnd;
PRS.bInsideOper = bInsideOper;
PRS.bFirstCompareOper = bFirstCompareOper;
PRS.bContainCompareOper = bContainCompareOper;
PRS.bEndRunToContent = bEndRunToContent;
PRS.bNoOneBreakOperator = bNoOneBreakOperator;
PRS.BreakBox = BreakBox;
......
......@@ -1836,6 +1836,7 @@ CMathBase.prototype.GetFirstElement = function()
CMathBase.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
{
var WordLen = PRS.WordLen; // запоминаем, чтобы внутр мат объекты не увеличили WordLen
var bContainCompareOper = PRS.bContainCompareOper;
var bOneLine = PRS.bMath_OneLine;
this.bOneLine = this.bCanBreak == false || PRS.bMath_OneLine == true;
......@@ -1939,6 +1940,7 @@ CMathBase.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
}
PRS.bMath_OneLine = bOneLine;
PRS.bContainCompareOper = bContainCompareOper;
};
CMathBase.prototype.Get_WrapToLine = function(_CurLine, _CurRange, WrapIndent)
{
......
......@@ -889,6 +889,8 @@ CDegreeSubSup.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
var CurLine = PRS.Line - this.StartLine;
var CurRange = ( 0 === CurLine ? PRS.Range - this.StartRange : PRS.Range );
var bContainCompareOper = PRS.bContainCompareOper;
var iterUp = this.iters.iterUp,
iterDn = this.iters.iterDn;
......@@ -937,8 +939,9 @@ CDegreeSubSup.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
if(PRS.NewRange == false)
PRS.WordLen += this.BrGapRight;
this.protected_FillRange(CurLine, CurRange, RangeStartPos, RangeEndPos);
PRS.bContainCompareOper = bContainCompareOper;
}
};
CDegreeSubSup.prototype.Recalculate_Range_Width = function(PRSC, _CurLine, _CurRange)
......
......@@ -817,45 +817,6 @@ CMathContent.prototype.Math_UpdateGaps = function(_CurLine, _CurRange)
}
}
};
/*CMathContent.prototype.Resize = function(oMeasure, RPI) // пересчитываем всю формулу
{
if ( false === this.RecalcInfo.Measure )
return;
this.WidthToElement.length = 0;
var lng = this.Content.length;
this.size.SetZero();
this.InfoPoints.SetDefault();
for(var pos = 0; pos < lng; pos++)
{
if(this.Content[pos].Type == para_Math_Composition)
{
this.Content[pos].Resize(oMeasure, RPI);
if(this.RecalcInfo.bEqArray)
this.InfoPoints.ContentPoints.UpdatePoint(this.Content[pos].size.width);
}
else if(this.Content[pos].Type == para_Math_Run)
{
this.Content[pos].Math_Recalculate(oMeasure, this.InfoPoints.ContentPoints);
}
this.WidthToElement[pos] = this.size.width;
var oSize = this.Content[pos].size;
this.size.width += oSize.width;
var oDescent = oSize.height - oSize.ascent,
SizeDescent = this.size.height - this.size.ascent;
this.size.ascent = this.size.ascent > oSize.ascent ? this.size.ascent : oSize.ascent;
this.size.height = SizeDescent < oDescent ? oDescent + this.size.ascent : SizeDescent + this.size.ascent;
}
};*/
CMathContent.prototype.IsEqArray = function()
{
return this.RecalcInfo.bEqArray;
......@@ -4097,7 +4058,7 @@ CMathContent.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
}
var CheckWrapIndent = PRS.bFirstLine == true ? PRS.X - PRS.XRange > PRS.WrapIndent : true;
if(PRS.bPriorityOper == true && PRS.bInsideOper == true && CheckWrapIndent == true)
if(PRS.bInsideOper == true && CheckWrapIndent == true)
{
PRS.bOnlyForcedBreak = true;
}
......
......@@ -472,6 +472,8 @@ CNary.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
this.setDistance();
var bContainCompareOper = PRS.bContainCompareOper;
var RangeStartPos = this.protected_AddRange(CurLine, CurRange),
RangeEndPos = 2;
......@@ -519,6 +521,7 @@ CNary.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
this.protected_FillRange(CurLine, CurRange, RangeStartPos, RangeEndPos);
PRS.bMath_OneLine = false;
PRS.bContainCompareOper = bContainCompareOper;
}
};
CNary.prototype.Recalculate_Range_Width = function(PRSC, _CurLine, _CurRange)
......
......@@ -3316,6 +3316,7 @@ CDelimiter.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
{
var CurLine = PRS.Line - this.StartLine;
var CurRange = ( 0 === CurLine ? PRS.Range - this.StartRange : PRS.Range );
var bContainCompareOper = PRS.bContainCompareOper;
this.protected_AddRange(CurLine, CurRange);
......@@ -3357,6 +3358,7 @@ CDelimiter.prototype.Recalculate_Range = function(PRS, ParaPr, Depth)
this.protected_FillRange(CurLine, CurRange, 0, 0);
PRS.bMath_OneLine = false;
PRS.bContainCompareOper = bContainCompareOper;
}
else
{
......
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