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