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

Поправлено расположение степеней для случаев, когда ArgSize равен -1 либо -2...

Поправлено расположение степеней для случаев, когда ArgSize равен -1 либо -2 (в функциях GetSizeSubScript, GetSizeSup в классе CDegreeBase, GetSize в классе CDegreeSubSupBase)
Bug #31676

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@68393 954022d7-b5bf-4e40-9824-e11837661b57
parent 3d8c2d10
......@@ -1838,7 +1838,7 @@ ParaRun.prototype.Collect_DocumentStatistics = function(ParaStats)
}
};
ParaRun.prototype.Create_FontMap = function(Map, ArgSize)
ParaRun.prototype.Create_FontMap = function(Map)
{
// для Math_Para_Pun argSize учитывается, когда мержатся текстовые настройки в Internal_Compile_Pr()
if ( undefined !== this.Paragraph && null !== this.Paragraph )
......@@ -1854,8 +1854,8 @@ ParaRun.prototype.Create_FontMap = function(Map, ArgSize)
if(null !== this.Parent && undefined !== this.Parent && null !== this.Parent.ParaMath && undefined !== this.Parent.ParaMath)
{
TextPr.FontSize *= MatGetKoeffArgSize(TextPr.FontSize, ArgSize.value);
TextPr.FontSizeCS *= MatGetKoeffArgSize(TextPr.FontSizeCS, ArgSize.value);
TextPr.FontSize = this.Math_GetRealFontSize(TextPr.FontSize);
TextPr.FontSizeCS = this.Math_GetRealFontSize(TextPr.FontSizeCS);
}
}
else
......@@ -9997,7 +9997,6 @@ ParaRun.prototype.Math_PreRecalc = function(Parent, ParaMath, ArgSize, RPI, Gaps
if(RPI.bCorrect_ConvertFontSize) // изменение FontSize после конвертации из старого формата в новый
{
var ArgSize = this.Parent.Compiled_ArgSz.value;
var FontKoef;
if(ArgSize == -1 || ArgSize == -2)
......@@ -10034,6 +10033,33 @@ ParaRun.prototype.Math_PreRecalc = function(Parent, ParaMath, ArgSize, RPI, Gaps
}
};
ParaRun.prototype.Math_GetRealFontSize = function(FontSize)
{
var RealFontSize = FontSize ;
if(FontSize !== null && FontSize !== undefined)
{
var ArgSize = this.Parent.Compiled_ArgSz.value;
RealFontSize = FontSize*MatGetKoeffArgSize(FontSize, ArgSize);
}
return RealFontSize;
};
ParaRun.prototype.Math_CompareFontSize = function(ComparableFontSize, bStartLetter)
{
var lng = this.Content.length;
var Letter = this.Content[lng - 1];
if(bStartLetter == true)
Letter = this.Content[0];
var CompiledPr = this.Get_CompiledPr(false);
var LetterFontSize = Letter.Is_LetterCS() ? CompiledPr.FontSizeCS : CompiledPr.FontSize;
return ComparableFontSize == this.Math_GetRealFontSize(LetterFontSize);
};
ParaRun.prototype.Math_EmptyRange = function(_CurLine, _CurRange) // до пересчета нужно узнать будет ли данный Run пустым или нет в данном Range, необходимо для того, чтобы выставить wrapIndent
{
var bEmptyRange = true;
......
......@@ -145,8 +145,8 @@ CDegreeBase.prototype.GetSizeSup = function(oMeasure, Metric)
{
lastElem = this.baseContent.GetLastElement();
var BaseRun = lastElem.Type == para_Math_Run && mgCtrPrp.FontSize == lastElem.Get_CompiledPr(false).FontSize;
bTextElement = BaseRun || (lastElem.Type !== para_Math_Run && lastElem.IsJustDraw());
var bSameFontSize = lastElem.Type == para_Math_Run && lastElem.Math_CompareFontSize(mgCtrPrp.FontSize, false);
bTextElement = bSameFontSize || (lastElem.Type !== para_Math_Run && lastElem.IsJustDraw());
}
var PlH = 0.64*this.ParaMath.GetPlh(oMeasure, mgCtrPrp);
......@@ -221,18 +221,14 @@ CDegreeBase.prototype.GetSizeSubScript = function(oMeasure, Metric)
var mgCtrPrp = this.Get_TxtPrControlLetter();
var shCenter = this.ParaMath.GetShiftCenter(oMeasure, mgCtrPrp);
var bTextElement = false,
lastElem;
var bTextElement = false;
if(!this.baseContent.IsJustDraw())
{
lastElem = this.baseContent.GetLastElement();
var lastElem = this.baseContent.GetLastElement();
var txtPrpControl = this.ParaMath.GetFirstRPrp();// нам нужен текстовые настройки для управляющих элементов без учета ArgSize, а это как раз будут текстовые настройки первого рана
// если учтем ArgSize, то для вложенных дробей эта проверка на Run не сработает
var BaseRun = lastElem.Type == para_Math_Run && txtPrpControl.FontSize == lastElem.Get_CompiledPr(false).FontSize;
bTextElement = BaseRun || (lastElem.Type !== para_Math_Run && lastElem.IsJustDraw());
var bSameFontSize = lastElem.Type == para_Math_Run && lastElem.Math_CompareFontSize(mgCtrPrp.FontSize, false);
bTextElement = bSameFontSize || (lastElem.Type !== para_Math_Run && lastElem.IsJustDraw());
}
var height, ascent, descent;
......@@ -244,7 +240,6 @@ CDegreeBase.prototype.GetSizeSubScript = function(oMeasure, Metric)
//var last = lastElem.size;
var DownBaseline = 0.9*shCenter;
if(iter.ascent - DownBaseline > 3/4*PlH)
this.upIter = 1/4*PlH;
else
......@@ -488,7 +483,7 @@ CDegree.prototype.setPosition = function(pos, PosInfo)
var EndPos = this.protected_GetRangeEndPos(CurLine, CurRange);
var Len = this.Content.length;
// у степени всегда итератор идет в конце, поэтому сделать проверку на то, что текущий контент tпоследний (т.е. это и будет итератор)
// у степени всегда итератор идет в конце, поэтому сделать проверку на то, что текущий контент последний (т.е. это и будет итератор)
if(this.bOneLine || EndPos == Len - 1)
{
......@@ -740,10 +735,11 @@ CDegreeSubSupBase.prototype.GetSize = function(oMeasure, Metric)
if(!this.baseContent.IsJustDraw())
{
var BaseItem = this.Pr.type == DEGREE_SubSup ? this.baseContent.GetLastElement() : this.baseContent.GetFirstElement();
var bFirstItem = this.Pr.type == DEGREE_SubSup;
var BaseItem = bFirstItem ? this.baseContent.GetLastElement() : this.baseContent.GetFirstElement();
var BaseRun = BaseItem.Type == para_Math_Run && mgCtrPrp.FontSize >= BaseItem.Get_CompiledPr(false).FontSize;
TextElement = BaseRun || (BaseItem.Type !== para_Math_Run && BaseItem.IsJustDraw());
var bSameFontSize = BaseItem.Type == para_Math_Run && BaseItem.Math_CompareFontSize(mgCtrPrp.FontSize, bFirstItem);
TextElement = bSameFontSize || (BaseItem.Type !== para_Math_Run && BaseItem.IsJustDraw());
}
if(TextElement)
......
......@@ -3838,8 +3838,9 @@ CMathContent.prototype.Correct_Selection = function()
};
CMathContent.prototype.Create_FontMap = function(Map)
{
// ArgSize компилируется только тогда, когда выставлены все ссылки на родительские классы
for (var nIndex = 0, nCount = this.Content.length; nIndex < nCount; nIndex++)
this.Content[nIndex].Create_FontMap(Map, this.Compiled_ArgSz); // ArgSize компилируется только тогда, когда выставлены все ссылки на родительские классы
this.Content[nIndex].Create_FontMap(Map);
};
CMathContent.prototype.Get_AllFontNames = function(AllFonts)
{
......
......@@ -663,7 +663,6 @@ CMathText.prototype.Measure = function(oMeasure, TextPr, InfoMathText)
*/
var metricsTxt;
var letter;
// measure
if(this.bJDraw)
......@@ -677,7 +676,7 @@ CMathText.prototype.Measure = function(oMeasure, TextPr, InfoMathText)
{
var ascent, width, height, descent;
letter = this.private_getCode();
var letter = this.private_getCode();
this.FontSlot = InfoMathText.GetFontSlot(letter); // возвращает fontslot_ASCII || fontslot_EastAsia || fontslot_CS || fontslot_HAnsi
......@@ -956,6 +955,10 @@ CMathText.prototype.Read_FromBinary = function(Reader)
this.Type = Reader.GetLong();
this.value = Reader.GetLong();
};
CMathText.prototype.Is_LetterCS = function()
{
return this.FontSlot == fontslot_CS;
};
/*CMathText.prototype.Recalculate_Reset = function(StartRange, StartLine, PRS)
{
var bNotUpdate = PRS !== null && PRS!== undefined && PRS.bFastRecalculate == true;
......
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