Commit f9cd78e0 authored by Ilya.Kirillov's avatar Ilya.Kirillov Committed by Alexander.Trofimov

Доработаны гиперссылки в новом варианте параграфа. Сделано, чтобы быстрый...

Доработаны гиперссылки в новом варианте параграфа. Сделано, чтобы быстрый пересчет работал и при наборе/удалении в гиперссылке. Исправлен баг с добавлением комментария в новом варианте параграфа.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@54607 954022d7-b5bf-4e40-9824-e11837661b57
parent db70c759
......@@ -908,6 +908,9 @@ function ParaComment(Start, Id)
this.StartLine = 0;
this.StartRange = 0;
this.Lines = new Array();
this.LinesLength = 0;
}
ParaComment.prototype =
......@@ -979,9 +982,11 @@ ParaComment.prototype =
Save_Lines : function()
{
var CommentLines = new CParagraphLinesInfo(this.StartLine, this.StartRange);
return CommentLines;
},
Restore_Lines : function(SL)
Restore_Lines : function(CommentLines)
{
},
......
......@@ -11557,6 +11557,9 @@ CDocument.prototype =
this.Content[Pos].Hyperlink_Remove();
}
if ( true === Debug_ParaRunMode )
this.Recalculate();
this.Document_UpdateInterfaceState();
},
......
......@@ -66,6 +66,14 @@ ParaHyperlink.prototype =
return this.Content[0].Is_StartFromNewLine();
},
Get_TextPr : function(_ContentPos, Depth)
{
if ( undefined === _ContentPos )
return this.Content[0].Get_TextPr();
else
return this.Content[_ContentPos.Get(Depth)].Get_TextPr( _ContentPos, Depth + 1 );
},
Get_CompiledTextPr : function()
{
var TextPr = null;
......@@ -325,7 +333,17 @@ ParaHyperlink.prototype =
return new CParaPos( this.StartRange, this.StartLine, 0, 0 );
},
Apply_TextPr : function(TextPr, IncFontSize)
Apply_TextPr : function(TextPr, IncFontSize, ApplyToAll)
{
if ( true === ApplyToAll )
{
var ContentLen = this.Content.length;
for ( var CurPos = 0; CurPos < ContentLen; CurPos++ )
{
this.Content[CurPos].Apply_TextPr( TextPr, IncFontSize, true );
}
}
else
{
var Selection = this.State.Selection;
......@@ -336,7 +354,7 @@ ParaHyperlink.prototype =
if ( StartPos === EndPos )
{
var NewElements = this.Content[EndPos].Apply_TextPr( TextPr, IncFontSize );
var NewElements = this.Content[EndPos].Apply_TextPr( TextPr, IncFontSize, false );
if ( para_Run === this.Content[EndPos].Type )
{
......@@ -364,15 +382,15 @@ ParaHyperlink.prototype =
for ( var CurPos = StartPos + 1; CurPos < EndPos; CurPos++ )
{
this.Content[CurPos].Apply_TextPr( TextPr, IncFontSize );
this.Content[CurPos].Apply_TextPr( TextPr, IncFontSize, false );
}
var NewElements = this.Content[EndPos].Apply_TextPr( TextPr, IncFontSize );
var NewElements = this.Content[EndPos].Apply_TextPr( TextPr, IncFontSize, false );
if ( para_Run === this.Content[EndPos].Type )
this.Internal_ReplaceRun( EndPos, NewElements );
var NewElements = this.Content[StartPos].Apply_TextPr( TextPr, IncFontSize );
var NewElements = this.Content[StartPos].Apply_TextPr( TextPr, IncFontSize, false );
if ( para_Run === this.Content[StartPos].Type )
this.Internal_ReplaceRun( StartPos, NewElements );
......@@ -384,7 +402,7 @@ ParaHyperlink.prototype =
{
var Pos = this.State.ContentPos;
var Element = this.Content[Pos];
var NewElements = Element.Apply_TextPr( TextPr, IncFontSize );
var NewElements = Element.Apply_TextPr( TextPr, IncFontSize, false );
if ( para_Run === Element.Type )
{
......@@ -392,6 +410,7 @@ ParaHyperlink.prototype =
this.State.ContentPos = CenterRunPos;
}
}
}
},
Internal_ReplaceRun : function(Pos, NewRuns)
......@@ -579,12 +598,36 @@ ParaHyperlink.prototype =
Save_Lines : function()
{
// TODO: Реализовать Save_Lines
var HyperLines = new CParagraphLinesInfo(this.StartLine, this.StartRange);
for ( var CurLine = 0; CurLine < this.LinesLength; CurLine++ )
{
HyperLines.Lines.push( this.Lines[CurLine].Copy() );
}
HyperLines.LinesLength = this.LinesLength;
var ContentLen = this.Content.length;
for ( var CurPos = 0; CurPos < ContentLen; CurPos++ )
{
var ContentLines = this.Content[CurPos].Save_Lines();
HyperLines.Content.push( ContentLines );
}
return HyperLines;
},
Restore_Lines : function(SL)
Restore_Lines : function(HyperLines)
{
this.Lines = HyperLines.Lines;
this.LinesLength = HyperLines.LinesLength;
this.Range = this.Lines[0].Ranges[0];
var ContentLen = this.Content.length;
for ( var CurPos = 0; CurPos < ContentLen; CurPos++ )
{
// TODO: Реализовать Restore_Lines
this.Content[CurPos].Restore_Lines( HyperLines.Content[CurPos] );
}
},
Is_EmptyRange : function(_CurLine, _CurRange)
......@@ -635,6 +678,13 @@ ParaHyperlink.prototype =
return true;
},
Get_ParaPosByContentPos : function(ContentPos, Depth)
{
var Pos = ContentPos.Get(Depth);
return this.Content[Pos].Get_ParaPosByContentPos( ContentPos, Depth + 1 );
},
Recalculate_CurPos : function(_X, Y, CurrentRun, _CurRange, _CurLine, _CurPage, UpdateCurPos, UpdateTarget, ReturnTarget)
{
var CurLine = _CurLine - this.StartLine;
......@@ -681,6 +731,8 @@ ParaHyperlink.prototype =
Draw_Elements : function(PDSE)
{
PDSE.VisitedHyperlink = this.Visited;
var CurLine = PDSE.Line - this.StartLine;
var CurRange = ( 0 === CurLine ? PDSE.Range - this.StartRange : PDSE.Range );
......@@ -691,10 +743,14 @@ ParaHyperlink.prototype =
{
this.Content[CurPos].Draw_Elements( PDSE );
}
PDSE.VisitedHyperlink = false;
},
Draw_Lines : function(PDSL)
{
PDSL.VisitedHyperlink = this.Visited;
var CurLine = PDSL.Line - this.StartLine;
var CurRange = ( 0 === CurLine ? PDSL.Range - this.StartRange : PDSL.Range );
......@@ -705,6 +761,8 @@ ParaHyperlink.prototype =
{
this.Content[CurPos].Draw_Lines( PDSL );
}
PDSL.VisitedHyperlink = false;
},
//-----------------------------------------------------------------------------------
// Функции для работы с курсором
......@@ -716,10 +774,18 @@ ParaHyperlink.prototype =
Cursor_Is_Start : function()
{
if ( 0 === this.State.ContentPos && this.Content.length > 0 )
return this.Content[0].Cursor_Is_Start();
var ContentLen = this.Content.length;
var CurPos = 0;
while ( CurPos < this.State.ContentPos && CurPos < this.Content.length - 1 )
{
if ( true === this.Content[CurPos].Is_Empty() )
CurPos++;
else
return false;
}
return this.Content[CurPos].Cursor_Is_Start();
},
Cursor_Is_NeededCorrectPos : function()
......@@ -729,10 +795,17 @@ ParaHyperlink.prototype =
Cursor_Is_End : function()
{
if ( this.Content.length - 1 === this.State.ContentPos && this.Content.length > 0 )
return this.Content[this.Content.length - 1].Cursor_Is_End();
var CurPos = this.Content.length - 1;
while ( CurPos > this.State.ContentPos && CurPos > 0 )
{
if ( true === this.Content[CurPos].Is_Empty() )
CurPos--;
else
return false;
}
return this.Content[CurPos].Cursor_Is_End();
},
Cursor_MoveToStartPos : function()
......@@ -805,7 +878,7 @@ ParaHyperlink.prototype =
Get_LeftPos : function(SearchPos, ContentPos, Depth, UseContentPos)
{
var CurPos = ( true === UseContentPos ? this.Content.length - 1 : ContentPos.Get(Depth) );
var CurPos = ( true === UseContentPos ? ContentPos.Get(Depth) : this.Content.length - 1 );
this.Content[CurPos].Get_LeftPos(SearchPos, ContentPos, Depth + 1, UseContentPos);
SearchPos.Pos.Update( CurPos, Depth );
......@@ -858,7 +931,7 @@ ParaHyperlink.prototype =
Get_WordStartPos : function(SearchPos, ContentPos, Depth, UseContentPos)
{
var CurPos = ( true === UseContentPos ? ContentPos.Get(Depth) : this.Content.lenght - 1 );
var CurPos = ( true === UseContentPos ? ContentPos.Get(Depth) : this.Content.length - 1 );
this.Content[CurPos].Get_WordStartPos(SearchPos, ContentPos, Depth + 1, UseContentPos);
......@@ -943,7 +1016,7 @@ ParaHyperlink.prototype =
if ( StartPos >= this.Content.length || StartPos < 0 )
return false;
var Result = this.Content[StartPos].Get_EndRangePos( _CurLine, _CurRange, SearchPos, Depth + 1 );
var Result = this.Content[StartPos].Get_StartRangePos( _CurLine, _CurRange, SearchPos, Depth + 1 );
if ( true === Result )
SearchPos.Pos.Update( StartPos, Depth );
......@@ -976,6 +1049,17 @@ ParaHyperlink.prototype =
//-----------------------------------------------------------------------------------
Set_SelectionContentPos : function(StartContentPos, EndContentPos, Depth, StartFlag, EndFlag)
{
var Selection = this.State.Selection;
var OldStartPos = Selection.StartPos;
var OldEndPos = Selection.EndPos;
if ( OldStartPos > OldEndPos )
{
OldStartPos = Selection.EndPos;
OldEndPos = Selection.StartPos;
}
var StartPos = 0;
switch (StartFlag)
{
......@@ -992,16 +1076,51 @@ ParaHyperlink.prototype =
case 0: EndPos = EndContentPos.Get(Depth); break;
}
var Selection = this.State.Selection;
// Удалим отметки о старом селекте
if ( OldStartPos < StartPos && OldStartPos < EndPos )
{
var TempLimit = Math.min( StartPos, EndPos );
for ( var CurPos = OldStartPos; CurPos < TempLimit; CurPos++ )
{
this.Content[CurPos].Selection_Remove();
}
}
if ( OldEndPos > StartPos && OldEndPos > EndPos )
{
var TempLimit = Math.max( StartPos, EndPos );
for ( var CurPos = TempLimit + 1; CurPos <= OldEndPos; CurPos++ )
{
this.Content[CurPos].Selection_Remove();
}
}
// Выставим метки нового селекта
Selection.Use = true;
Selection.StartPos = StartPos;
Selection.EndPos = EndPos;
Selection.Use = true;
if ( StartPos != EndPos )
{
this.Content[StartPos].Set_SelectionContentPos( StartContentPos, null, Depth + 1, StartFlag, StartPos > EndPos ? 1 : -1 );
this.Content[EndPos].Set_SelectionContentPos( null, EndContentPos, Depth + 1, StartPos > EndPos ? -1 : 1, EndFlag );
var _StartPos = StartPos;
var _EndPos = EndPos;
var Direction = 1;
if ( _StartPos > _EndPos )
{
_StartPos = EndPos;
_EndPos = StartPos;
Direction = -1;
}
for ( var CurPos = _StartPos + 1; CurPos < _EndPos; CurPos++ )
{
this.Content[CurPos].Select_All( Direction );
}
}
else
{
......@@ -1021,6 +1140,7 @@ ParaHyperlink.prototype =
Selection_Remove : function()
{
var Selection = this.State.Selection;
if ( true === Selection.Use )
{
var StartPos = Selection.StartPos;
......@@ -1085,7 +1205,7 @@ ParaHyperlink.prototype =
Selection_IsEmpty : function(CheckEnd)
{
var StartPos = this.State.Selection.StartPos;
var EndPos = this.State.Selection.StartPos;
var EndPos = this.State.Selection.EndPos;
if ( StartPos > EndPos )
{
......@@ -1108,6 +1228,110 @@ ParaHyperlink.prototype =
return false;
},
//-----------------------------------------------------------------------------------
// Работаем со значениями
//-----------------------------------------------------------------------------------
Get_Text : function(Text)
{
var ContentLen = this.Content.length;
for ( var CurPos = 0; CurPos < ContentLen; CurPos++ )
{
this.Content[CurPos].Get_Text( Text );
}
},
Set_Visited : function(Value)
{
this.Visited = Value;
},
Get_Visited : function()
{
return this.Visited;
},
Set_ToolTip : function(ToolTip)
{
History.Add( this, { Type : historyitem_Hyperlink_ToolTip, New : ToolTip, Old : this.ToolTip } );
this.ToolTip = ToolTip;
},
Get_ToolTip : function()
{
if ( null === this.ToolTip )
{
if ( "string" === typeof(this.Value) )
return this.Value;
else
return "";
}
else
return this.ToolTip;
},
Get_Value : function()
{
return this.Value;
},
Set_Value : function(Value)
{
History.Add( this, { Type : historyitem_Hyperlink_Value, New : Value, Old : this.Value } );
this.Value = Value;
},
Copy : function()
{
var Hyperlink_new = new ParaHyperlinkStart();
Hyperlink_new.Value = this.Value;
Hyperlink_new.Visited = this.Visited;
Hyperlink_new.ToolTip = this.ToolTip;
return Hyperlink_new;
},
//-----------------------------------------------------------------------------------
// Undo/Redo функции
//-----------------------------------------------------------------------------------
Undo : function(Data)
{
var Type = Data.Type;
switch(Type)
{
case historyitem_Hyperlink_Value :
{
this.Value = Data.Old;
break;
}
case historyitem_Hyperlink_ToolTip :
{
this.ToolTip = Data.Old;
break;
}
}
},
Redo : function(Data)
{
var Type = Data.Type;
switch(Type)
{
case historyitem_Hyperlink_Value :
{
this.Value = Data.New;
break;
}
case historyitem_Hyperlink_ToolTip :
{
this.ToolTip = Data.New;
break;
}
}
},
//----------------------------------------------------------------------------------------------------------------------
// Функции совместного редактирования
//----------------------------------------------------------------------------------------------------------------------
......
......@@ -5131,7 +5131,6 @@ Paragraph.prototype =
Recalculate_Fast : function(SimpleChanges)
{
return -1;
var Run = SimpleChanges[0].Class;
var StartLine = Run.StartLine;
......@@ -5140,19 +5139,6 @@ Paragraph.prototype =
var StartPos = this.Lines[StartLine].Ranges[StartRange].StartPos;
var EndPos = this.Lines[StartLine].Ranges[StartRange].EndPos;
var RunPos = -1;
for ( RunPos = StartPos; RunPos <= EndPos; RunPos++ )
{
// TODO: переделать данную проверку, т.к. Run может быть вложенным
if ( this.Content[RunPos] === Run )
break;
}
// Не нашли нужный Run
if ( RunPos > EndPos )
return -1;
var ParaPos = Run.Get_SimpleChanges_ParaPos(SimpleChanges);
if ( null === ParaPos )
return -1;
......@@ -5347,12 +5333,9 @@ Paragraph.prototype =
{
var Item = this.Content[Pos];
if ( para_Comment !== Item.Type )
{
PRS.Update_CurPos( Pos, 0 );
var SL = Item.Save_Lines();
var SavedLines = SL.Lines;
var SavedLines = Item.Save_Lines();
Item.Recalculate_Range( ParaPr, 1 );
......@@ -5363,13 +5346,11 @@ Paragraph.prototype =
Item.Recalculate_Set_RangeEndPos(PRS, PRS.LineBreakPos, 1);
}
// Нам нужно проверить только строку с номером CurLine
if ( false === SavedLines[CurLine - Item.StartLine].Compare( Item.Lines[CurLine - Item.StartLine], ( CurLine - Item.StartLine === 0 ? CurRange - Item.StartRange : CurRange ) ) )
if ( false === SavedLines.Compare( _Line, _Range, Item ) )
return -1;
Item.Restore_Lines( SL );
}
Item.Restore_Lines( SavedLines );
}
// Recalculate_Lines_Width
......@@ -7862,6 +7843,8 @@ Paragraph.prototype =
this.Internal_Content_Remove( StartPos );
}
this.Correct_Content(StartPos, EndPos);
if ( true !== this.Content[this.CurPos.ContentPos].Selection_IsUse() )
{
this.Selection_Remove();
......@@ -7902,6 +7885,8 @@ Paragraph.prototype =
if ( true === this.Content[ContentPos].Selection_IsUse() )
{
this.Correct_Content(ContentPos, ContentPos);
this.Selection.Use = true;
this.Selection.Start = false;
this.Selection.Flag = selectionflag_Common;
......@@ -7931,6 +7916,8 @@ Paragraph.prototype =
}
}
this.Correct_Content(ContentPos, ContentPos);
if ( Direction < 0 && false === Result )
{
// Мы стоим в начале параграфа и пытаемся удалить элемент влево. Действуем следующим образом:
......@@ -8475,9 +8462,6 @@ Paragraph.prototype =
TextPr.RFonts.CS = { Name : FName, Index : FIndex };
}
// Удалим все лишние пустые раны из параграфа
this.Remove_EmptyRuns();
if ( true === this.ApplyToAll )
{
// Применяем настройки ко всем элементам параграфа
......@@ -8485,7 +8469,7 @@ Paragraph.prototype =
for ( var CurPos = 0; CurPos < ContentLen; CurPos++ )
{
this.Content[CurPos].Apply_TextPr( TextPr );
this.Content[CurPos].Apply_TextPr( TextPr, undefined, false );
}
// Выставляем настройки для символа параграфа
......@@ -8551,11 +8535,6 @@ Paragraph.prototype =
break;
}
case para_HyperlinkStart:
{
// TODO: Сделать добавление гиперссылок
break;
}
case para_Math:
{
// TODO: Сделать добавление формул
......@@ -9018,7 +8997,7 @@ Paragraph.prototype =
for ( var CurPos = 0; CurPos < ContentLen; CurPos++ )
{
this.Content[CurPos].Apply_TextPr( undefined, bIncrease );
this.Content[CurPos].Apply_TextPr( undefined, bIncrease, false );
}
// Выставляем настройки для символа параграфа
......@@ -9028,7 +9007,7 @@ Paragraph.prototype =
{
if ( true === this.Selection.Use )
{
this.Apply_TextPr( undefined, bIncrease );
this.Apply_TextPr( undefined, bIncrease, false );
}
else
{
......@@ -9051,7 +9030,7 @@ Paragraph.prototype =
if ( null === RItem || para_End === RItem.Type )
{
this.Apply_TextPr( undefined, bIncrease );
this.Apply_TextPr( undefined, bIncrease, false );
// Выставляем настройки для символа параграфа
var EndTextPr = this.Get_CompiledPr2( false).TextPr.Copy();
......@@ -9076,14 +9055,14 @@ Paragraph.prototype =
this.Selection.Use = true;
this.Set_SelectionContentPos( SearchSPos.Pos, SearchEPos.Pos );
this.Apply_TextPr( undefined, bIncrease );
this.Apply_TextPr( undefined, bIncrease, false );
// Убираем селект
this.Selection_Remove();
}
else
{
this.Apply_TextPr( undefined, bIncrease );
this.Apply_TextPr( undefined, bIncrease, false );
}
}
}
......@@ -9174,6 +9153,7 @@ Paragraph.prototype =
{
var Count = this.Content.length;
var CurPos = this.CurPos.ContentPos;
// Может так случиться, что текущий элемент окажется непригодным для расположения курсора, тогда мы ищем ближайший пригодный
while ( CurPos > 0 && false === this.Content[CurPos].Is_CursorPlaceable() )
{
......@@ -9187,6 +9167,25 @@ Paragraph.prototype =
this.Content[CurPos].Cursor_MoveToStartPos(false);
}
// Если курсор находится в начале или конце гиперссылки, тогда выводим его из гиперссылки
while ( CurPos > 0 && para_Run !== this.Content[CurPos].Type && true === this.Content[CurPos].Cursor_Is_Start() )
{
if ( false === this.Content[CurPos - 1].Is_CursorPlaceable() )
break;
CurPos--;
this.Content[CurPos].Cursor_MoveToEndPos();
}
while ( CurPos < Count && para_Run !== this.Content[CurPos].Type && true === this.Content[CurPos].Cursor_Is_End() )
{
if ( false === this.Content[CurPos + 1].Is_CursorPlaceable() )
break;
CurPos++;
this.Content[CurPos].Cursor_MoveToStartPos(false);
}
this.CurPos.ContentPos = CurPos;
},
......@@ -11797,31 +11796,42 @@ Paragraph.prototype =
}
},
Remove_EmptyRuns : function()
Correct_Content : function(_StartPos, _EndPos)
{
// TODO: Надо переделать данную функцию. Надо удалять только спаренные пустые раны и добавлять новые пустые раны
// в места, где нет ранов, например, если параграф начинается не с рана, или заканчивается не раном, или у
// нас идут 2 гиперссылки подряд.
// В данной функции мы корректируем содержимое параграфа:
// 1. Спаренные пустые раны мы удаляем (удаляем 1 ран)
// 2. Добавляем пустой ран в место, где нет рана (например, между двумя идущими подряд гиперссылками)
return;
var StartPos = ( undefined === _StartPos ? 0 : Math.max( _StartPos - 1, 0 ) );
var EndPos = ( undefined === _EndPos ? this.Content.length - 1 : Math.min( _EndPos + 1, this.Content.length - 1 ) );
var ContentLen = this.Content.length;
for ( var CurPos = 0; CurPos < ContentLen; CurPos++ )
for ( var CurPos = EndPos; CurPos >= StartPos; CurPos-- )
{
var Element = this.Content[CurPos];
var CurElement = this.Content[CurPos];
if ( para_Run === Element.Type )
if ( para_Run !== CurElement.Type )
{
if ( CurPos !== this.CurPos.ContentPos && true === Element.Is_Empty() )
if ( CurPos === this.Content.length - 1 || para_Run !== this.Content[CurPos + 1].Type || CurPos === this.Content.length - 2 )
{
this.Internal_Content_Remove( CurPos );
CurPos--;
ContentLen--;
var NewRun = new ParaRun(this);
this.Internal_Content_Add( CurPos + 1, NewRun );
}
// Для начального элемента проверим еще и предыдущий
if ( StartPos === CurPos && ( 0 === CurPos || para_Run !== this.Content[CurPos - 1].Type ) )
{
var NewRun = new ParaRun(this);
this.Internal_Content_Add( CurPos, NewRun );
}
}
else
Element.Remove_EmptyRuns();
{
if ( true === CurElement.Is_Empty() && CurPos < this.Content.length - 1 && para_Run === this.Content[CurPos + 1].Type && true === this.Content[CurPos + 1].Is_Empty() )
this.Internal_Content_Remove( CurPos + 1 );
}
}
this.Correct_ContentPos2();
},
Apply_TextPr : function(TextPr, IncFontSize)
......@@ -11837,7 +11847,7 @@ Paragraph.prototype =
if ( StartPos === EndPos )
{
var NewElements = this.Content[EndPos].Apply_TextPr( TextPr, IncFontSize );
var NewElements = this.Content[EndPos].Apply_TextPr( TextPr, IncFontSize, false );
if ( para_Run === this.Content[EndPos].Type )
{
......@@ -11850,7 +11860,6 @@ Paragraph.prototype =
// Подправим селект
this.Selection.StartPos = CenterRunPos;
this.Selection.EndPos = CenterRunPos;
}
}
else
......@@ -11867,15 +11876,15 @@ Paragraph.prototype =
for ( var CurPos = StartPos + 1; CurPos < EndPos; CurPos++ )
{
this.Content[CurPos].Apply_TextPr( TextPr, IncFontSize );
this.Content[CurPos].Apply_TextPr( TextPr, IncFontSize, false );
}
var NewElements = this.Content[EndPos].Apply_TextPr( TextPr, IncFontSize );
var NewElements = this.Content[EndPos].Apply_TextPr( TextPr, IncFontSize, false );
if ( para_Run === this.Content[EndPos].Type )
this.Internal_ReplaceRun( EndPos, NewElements );
var NewElements = this.Content[StartPos].Apply_TextPr( TextPr, IncFontSize );
var NewElements = this.Content[StartPos].Apply_TextPr( TextPr, IncFontSize, false );
if ( para_Run === this.Content[StartPos].Type )
this.Internal_ReplaceRun( StartPos, NewElements );
......@@ -11887,7 +11896,7 @@ Paragraph.prototype =
{
var Pos = this.CurPos.ContentPos;
var Element = this.Content[Pos];
var NewElements = Element.Apply_TextPr( TextPr, IncFontSize );
var NewElements = Element.Apply_TextPr( TextPr, IncFontSize, false );
if ( para_Run === Element.Type )
{
......@@ -12351,6 +12360,8 @@ Paragraph.prototype =
},
Check_Hyperlink : function(X, Y, PageNum)
{
if ( true !== Debug_ParaRunMode )
{
var Result = this.Internal_GetContentPosByXY( X, Y, false, PageNum, false);
if ( -1 != Result.Pos && true === Result.InText )
......@@ -12361,6 +12372,17 @@ Paragraph.prototype =
}
return null;
}
else
{
var SearchPosXY = this.Get_ParaContentPosByXY( X, Y, PageNum, false, false );
var CurPos = SearchPosXY.Pos.Get(0);
if ( true === SearchPosXY.InText && para_Hyperlink === this.Content[CurPos].Type )
return this.Content[CurPos];
return null;
}
},
Check_Hyperlink2 : function(Pos, bCheckEnd, bNoSelectCheck)
......@@ -12458,7 +12480,49 @@ Paragraph.prototype =
{
if ( true === this.Selection.Use )
{
// Создаем гиперссылку
var Hyperlink = new ParaHyperlink();
// Разделяем содержимое по меткам селекта
var StartContentPos = this.Get_ParaContentPos(true, true);
var EndContentPos = this.Get_ParaContentPos(true, false);
if ( StartContentPos.Compare(EndContentPos) > 0 )
{
var Temp = StartContentPos;
StartContentPos = EndContentPos;
EndContentPos = Temp;
}
var StartPos = StartContentPos.Get(0);
var EndPos = EndContentPos.Get(0);
var NewElementE = this.Content[EndPos].Split( EndContentPos, 1 );
var NewElementS = this.Content[StartPos].Split( StartContentPos, 1 );
var HyperPos = 0;
Hyperlink.Add_ToContent( HyperPos++, NewElementS );
for ( var CurPos = StartPos + 1; CurPos <= EndPos; CurPos++ )
{
Hyperlink.Add_ToContent( HyperPos++, this.Content[CurPos] );
}
this.Internal_Content_Remove2( StartPos + 1, EndPos - StartPos );
this.Internal_Content_Add( StartPos + 1, Hyperlink );
this.Internal_Content_Add( StartPos + 2, NewElementE );
this.Selection.StartPos = StartPos + 1;
this.Selection.EndPos = StartPos + 1;
Hyperlink.Select_All();
// Выставляем специальную текстовую настройку
var TextPr = new CTextPr();
TextPr.Color = null;
TextPr.Underline = null;
TextPr.RStyle = editor.WordControl.m_oLogicDocument.Get_Styles().Get_Default_Hyperlink();
Hyperlink.Apply_TextPr( TextPr, undefined, false );
}
else if ( null !== HyperProps.Text && "" !== HyperProps.Text )
{
......@@ -12507,10 +12571,14 @@ Paragraph.prototype =
this.CurPos.ContentPos = CurPos + 1;
Hyperlink.Cursor_MoveToEndPos( false );
}
this.Correct_Content();
}
},
Hyperlink_Modify : function(HyperProps)
{
if ( true !== Debug_ParaRunMode )
{
var Hyperlink = null;
var Pos = -1;
......@@ -12587,9 +12655,114 @@ Paragraph.prototype =
}
return false;
}
else
{
var HyperPos = -1;
if ( true === this.Selection.Use )
{
var StartPos = this.Selection.StartPos;
var EndPos = this.Selection.EndPos;
if ( StartPos > EndPos )
{
StartPos = this.Selection.EndPos;
EndPos = this.Selection.StartPos;
}
for ( var CurPos = StartPos; CurPos <= EndPos; CurPos++ )
{
var Element = this.Content[CurPos];
if ( true !== Element.Selection_IsEmpty() && para_Hyperlink !== Element.Type )
break;
else if ( true !== Element.Selection_IsEmpty() && para_Hyperlink === Element.Type )
{
if ( -1 === HyperPos )
HyperPos = CurPos;
else
break;
}
}
if ( this.Selection.StartPos === this.Selection.EndPos && para_Hyperlink === this.Content[this.Selection.StartPos].Type )
HyperPos = this.Selection.StartPos;
}
else
{
if ( para_Hyperlink === this.Content[this.CurPos.ContentPos].Type )
HyperPos = this.CurPos.ContentPos;
}
if ( -1 != HyperPos )
{
var Hyperlink = this.Content[HyperPos];
if ( undefined != HyperProps.Value && null != HyperProps.Value )
Hyperlink.Set_Value( HyperProps.Value );
if ( undefined != HyperProps.ToolTip && null != HyperProps.ToolTip )
Hyperlink.Set_ToolTip( HyperProps.ToolTip );
if ( null != HyperProps.Text )
{
var TextPr = Hyperlink.Get_TextPr();
// Удаляем все что было в гиперссылке
Hyperlink.Remove_FromContent( 0, Hyperlink.Content.length - 1 );
// Создаем текстовый ран в гиперссылке
var HyperRun = new ParaRun(this);
// Добавляем ран в гиперссылку
Hyperlink.Add_ToContent( 0, HyperRun, false );
// Задаем текстовые настройки рана (те, которые шли в текущей позиции + стиль гиперссылки)
var Styles = editor.WordControl.m_oLogicDocument.Get_Styles();
HyperRun.Set_Pr( TextPr.Copy() );
HyperRun.Set_Color( undefined );
HyperRun.Set_Underline( undefined );
HyperRun.Set_RStyle( Styles.Get_Default_Hyperlink() );
// Заполняем ран гиперссылки текстом
for ( var NewPos = 0; NewPos < HyperProps.Text.length; NewPos++ )
{
var Char = HyperProps.Text.charAt( NewPos );
if ( " " == Char )
HyperRun.Add_ToContent( NewPos, new ParaSpace(), false );
else
HyperRun.Add_ToContent( NewPos, new ParaText(Char), false );
}
// Перемещаем кусор в конец гиперссылки
if ( true === this.Selection.Use )
{
this.Selection.StartPos = HyperPos;
this.Selection.EndPos = HyperPos;
Hyperlink.Select_All();
}
else
{
this.CurPos.ContentPos = HyperPos;
Hyperlink.Cursor_MoveToEndPos( false );
}
return true;
}
return false;
}
return false;
}
},
Hyperlink_Remove : function()
{
if ( true !== Debug_ParaRunMode )
{
var Pos = -1;
if ( true === this.Selection.Use )
......@@ -12642,9 +12815,84 @@ Paragraph.prototype =
}
return false;
}
else
{
// Сначала найдем гиперссылку, которую нужно удалить
var HyperPos = -1;
if ( true === this.Selection.Use )
{
var StartPos = this.Selection.StartPos;
var EndPos = this.Selection.EndPos;
if ( StartPos > EndPos )
{
StartPos = this.Selection.EndPos;
EndPos = this.Selection.StartPos;
}
for ( var CurPos = StartPos; CurPos <= EndPos; CurPos++ )
{
var Element = this.Content[CurPos];
if ( true !== Element.Selection_IsEmpty() && para_Hyperlink !== Element.Type )
break;
else if ( true !== Element.Selection_IsEmpty() && para_Hyperlink === Element.Type )
{
if ( -1 === HyperPos )
HyperPos = CurPos;
else
break;
}
}
if ( this.Selection.StartPos === this.Selection.EndPos && para_Hyperlink === this.Content[this.Selection.StartPos].Type )
HyperPos = this.Selection.StartPos;
}
else
{
if ( para_Hyperlink === this.Content[this.CurPos.ContentPos].Type )
HyperPos = this.CurPos.ContentPos;
}
if ( -1 !== HyperPos )
{
var Hyperlink = this.Content[HyperPos];
var ContentLen = Hyperlink.Content.length;
this.Internal_Content_Remove( HyperPos );
var TextPr = new CTextPr();
TextPr.RStyle = null;
for ( var CurPos = 0; CurPos < ContentLen; CurPos++ )
{
var Element = Hyperlink.Content[CurPos];
this.Internal_Content_Add( HyperPos + CurPos, Element );
Element.Apply_TextPr(TextPr, undefined, true);
}
if ( true === this.Selection.Use )
{
this.Selection.StartPos = HyperPos + Hyperlink.State.Selection.StartPos;
this.Selection.EndPos = HyperPos + Hyperlink.State.Selection.EndPos;
}
else
{
this.CurPos.ContentPos = HyperPos + Hyperlink.State.ContentPos;
}
return true;
}
return false;
}
},
Hyperlink_CanAdd : function(bCheckInHyperlink)
{
if ( true === Debug_ParaRunMode )
{
if ( true === bCheckInHyperlink )
{
......@@ -12740,9 +12988,84 @@ Paragraph.prototype =
return true;
}
}
}
else
{
if ( true === bCheckInHyperlink )
{
if ( true === this.Selection.Use )
{
// Если у нас в выделение попадает начало или конец гиперссылки, или конец параграфа, или
// у нас все выделение находится внутри гиперссылки, тогда мы не можем добавить новую. Во
// всех остальных случаях разрешаем добавить.
var StartPos = this.Selection.StartPos;
var EndPos = this.Selection.EndPos;
if ( EndPos < StartPos )
{
StartPos = this.Selection.EndPos;
EndPos = this.Selection.StartPos;
}
// Проверяем не находимся ли мы внутри гиперссылки
for ( var CurPos = StartPos; CurPos <= EndPos; CurPos++ )
{
var Element = this.Content[CurPos];
if ( para_Hyperlink === Element.Type || true === Element.Selection_CheckParaEnd() )
return false;
}
return true;
}
else
{
// Внутри гиперссылки мы не можем задать ниперссылку
if ( para_Hyperlink === this.Content[this.CurPos.ContentPos].Type )
return false;
else
return true;
}
}
else
{
if ( true === this.Selection.Use )
{
// Если у нас в выделение попадает несколько гиперссылок или конец параграфа, тогда
// возвращаем false, во всех остальных случаях true
var StartPos = this.Selection.StartPos;
var EndPos = this.Selection.EndPos;
if ( EndPos < StartPos )
{
StartPos = this.Selection.EndPos;
EndPos = this.Selection.StartPos;
}
var bHyper = false;
for ( var CurPos = StartPos; CurPos <= EndPos; CurPos++ )
{
var Element = this.Content[CurPos];
if ( (true === bHyper && para_Hyperlink === Element.Type) || true === Element.Selection_CheckParaEnd() )
return false;
else if ( true !== bHyper && para_Hyperlink === Element.Type )
bHyper = true;
}
return true;
}
else
{
return true;
}
}
}
},
Hyperlink_Check : function(bCheckEnd)
{
if ( true !== Debug_ParaRunMode )
{
if ( true === this.Selection.Use )
{
......@@ -12760,6 +13083,45 @@ Paragraph.prototype =
}
return null;
}
else
{
var Hyper = null;
if ( true === this.Selection.Use )
{
var StartPos = this.Selection.StartPos;
var EndPos = this.Selection.EndPos;
if ( StartPos > EndPos )
{
StartPos = this.Selection.EndPos;
EndPos = this.Selection.StartPos;
}
for ( var CurPos = StartPos; CurPos <= EndPos; CurPos++ )
{
var Element = this.Content[CurPos];
if ( para_Hyperlink === Element.Type && true !== Element.Selection_IsEmpty() )
{
if ( null === Hyper )
Hyper = Element;
else
return null;
}
}
}
else
{
var Element = this.Content[this.CurPos.ContentPos];
if ( para_Hyperlink === Element.Type )
Hyper = Element;
}
return Hyper;
}
},
Selection_SetStart : function(X,Y,PageNum, bTableBorder)
......@@ -16013,6 +16375,8 @@ Paragraph.prototype =
// Пока мы здесь проверяем только, находимся ли мы внутри гиперссылки
Document_UpdateInterfaceState : function()
{
if ( true !== Debug_ParaRunMode )
{
if ( true === this.Selection.Use )
{
......@@ -16135,6 +16499,60 @@ Paragraph.prototype =
this.SpellChecker.Document_UpdateInterfaceState( this.CurPos.ContentPos, this.CurPos.ContentPos );
}
}
else
{
// TODO: Разобраться с орфографией
var HyperPos = -1;
if ( true === this.Selection.Use )
{
var StartPos = this.Selection.StartPos;
var EndPos = this.Selection.EndPos;
if ( StartPos > EndPos )
{
StartPos = this.Selection.EndPos;
EndPos = this.Selection.StartPos;
}
for ( var CurPos = StartPos; CurPos <= EndPos; CurPos++ )
{
var Element = this.Content[CurPos];
if ( true !== Element.Selection_IsEmpty() && para_Hyperlink !== Element.Type )
break;
else if ( true !== Element.Selection_IsEmpty() && para_Hyperlink === Element.Type )
{
if ( -1 === HyperPos )
HyperPos = CurPos;
else
break;
}
}
if ( this.Selection.StartPos === this.Selection.EndPos && para_Hyperlink === this.Content[this.Selection.StartPos].Type )
HyperPos = this.Selection.StartPos;
}
else
{
if ( para_Hyperlink === this.Content[this.CurPos.ContentPos].Type )
HyperPos = this.CurPos.ContentPos;
}
if ( -1 !== HyperPos )
{
var Hyperlink = this.Content[HyperPos];
var HyperText = new CParagraphGetText();
Hyperlink.Get_Text( HyperText );
var HyperProps = new CHyperlinkProperty( Hyperlink );
HyperProps.put_Text( HyperText.Text );
editor.sync_HyperlinkPropCallback( HyperProps );
}
}
},
// Функция, которую нужно вызвать перед удалением данного элемента
......@@ -19245,28 +19663,46 @@ Paragraph.prototype =
if ( true === bEnd )
{
var EndContentPos = this.Get_EndPos( false );
var CommentEnd = new ParaComment( false, Comment.Get_Id() );
var EndPos = EndContentPos.Get(0);
// Любые другие элементы мы целиком включаем в комментарий
if ( para_Run === this.Content[EndPos].Type )
{
var NewElement = this.Content[EndPos].Split( EndContentPos, 1 );
if ( null !== NewElement )
this.Internal_Content_Add( EndPos + 1, NewElement );
}
var CommentEnd = new ParaComment( false, Comment.Get_Id() );
this.Internal_Content_Add( EndPos + 1, CommentEnd );
}
if ( true === bStart )
{
var StartContentPos = this.Get_StartPos();
var CommentStart = new ParaComment( true, Comment.Get_Id() );
var StartPos = StartContentPos.Get(0);
// Любые другие элементы мы целиком включаем в комментарий
if ( para_Run === this.Content[StartPos].Type )
{
var NewElement = this.Content[StartPos].Split( StartContentPos, 1 );
if ( null !== NewElement )
this.Internal_Content_Add( StartPos + 1, NewElement );
var CommentStart = new ParaComment( true, Comment.Get_Id() );
this.Internal_Content_Add( StartPos + 1, CommentStart );
}
else
{
this.Internal_Content_Add( StartPos, CommentStart );
}
}
}
else
{
......@@ -19284,27 +19720,46 @@ Paragraph.prototype =
if ( true === bEnd )
{
var CommentEnd = new ParaComment( false, Comment.Get_Id() );
var EndPos = EndContentPos.Get(0);
// Любые другие элементы мы целиком включаем в комментарий
if ( para_Run === this.Content[EndPos].Type )
{
var NewElement = this.Content[EndPos].Split( EndContentPos, 1 );
if ( null !== NewElement )
this.Internal_Content_Add( EndPos + 1, NewElement );
}
var CommentEnd = new ParaComment( false, Comment.Get_Id() );
this.Internal_Content_Add( EndPos + 1, CommentEnd );
}
if ( true === bStart )
{
var CommentStart = new ParaComment( true, Comment.Get_Id() );
var StartPos = StartContentPos.Get(0);
// Любые другие элементы мы целиком включаем в комментарий
if ( para_Run === this.Content[StartPos].Type )
{
var NewElement = this.Content[StartPos].Split( StartContentPos, 1 );
if ( null !== NewElement )
{
this.Internal_Content_Add( StartPos + 1, NewElement );
NewElement.Select_All();
}
var CommentStart = new ParaComment( true, Comment.Get_Id() );
this.Internal_Content_Add( StartPos + 1, CommentStart );
}
else
{
this.Internal_Content_Add( StartPos, CommentStart );
}
}
}
else
{
......@@ -19312,34 +19767,53 @@ Paragraph.prototype =
if ( true === bEnd )
{
var CommentEnd = new ParaComment( false, Comment.Get_Id() );
var EndPos = ContentPos.Get(0);
// Любые другие элементы мы целиком включаем в комментарий
if ( para_Run === this.Content[EndPos].Type )
{
var NewElement = this.Content[EndPos].Split( ContentPos, 1 );
if ( null !== NewElement )
this.Internal_Content_Add( EndPos + 1, NewElement );
}
var CommentEnd = new ParaComment( false, Comment.Get_Id() );
this.Internal_Content_Add( EndPos + 1, CommentEnd );
}
if ( true === bStart )
{
var CommentStart = new ParaComment( true, Comment.Get_Id() );
var StartPos = ContentPos.Get(0);
// Любые другие элементы мы целиком включаем в комментарий
if ( para_Run === this.Content[StartPos].Type )
{
var NewElement = this.Content[StartPos].Split( ContentPos, 1 );
if ( null !== NewElement )
this.Internal_Content_Add( StartPos + 1, NewElement );
var CommentStart = new ParaComment( true, Comment.Get_Id() );
this.Internal_Content_Add( StartPos + 1, CommentStart );
}
else
{
this.Internal_Content_Add( StartPos, CommentStart );
}
}
}
}
this.Correct_Content();
}
},
Add_Comment2 : function(Comment, ObjectId)
{
// TODO: Реализовать добавление комментария по ID объекта
var Pos = -1;
var Count = this.Content.length;
for ( var Index = 0; Index < Count; Index++ )
......@@ -20805,3 +21279,66 @@ function CParagraphCheckPageBreakEnd(PageBreak)
this.PageBreak = PageBreak;
this.FindPB = true;
}
function CParagraphGetText()
{
this.Text = "";
}
//----------------------------------------------------------------------------------------------------------------------
//
//----------------------------------------------------------------------------------------------------------------------
function CParagraphLinesInfo(StartLine, StartRange)
{
this.StartLine = StartLine;
this.StartRange = StartRange
this.Lines = new Array(); // CParaRunLines
this.LinesLength = 0;
this.Content = new Array();
}
CParagraphLinesInfo.prototype =
{
Compare : function(_CurLine, _CurRange, OtherLinesInfo)
{
var OLI = OtherLinesInfo;
var CurLine = _CurLine - this.StartLine;
var CurRange = ( 0 === CurLine ? _CurRange - this.StartRange : _CurRange );
// Специальная заглушка для элементов типа комментария
if ( ( 0 === this.Lines.length || 0 === this.LinesLength ) && ( 0 === OLI.Lines.length || 0 === OLI.LinesLength ) )
return true;
if ( this.StartLine !== OLI.StartLine || this.StartRange !== OLI.StartRange || CurLine < 0 || CurLine >= this.Lines.length || CurLine >= OLI.Lines.length || CurRange < 0 || CurRange >= this.Lines[CurLine].Ranges.length || CurRange >= OLI.Lines[CurLine].Ranges.length )
return false;
var ThisSP = this.Lines[CurLine].Ranges[CurRange].StartPos;
var ThisEP = this.Lines[CurLine].Ranges[CurRange].EndPos;
var OtherSP = OLI.Lines[CurLine].Ranges[CurRange].StartPos;
var OtherEP = OLI.Lines[CurLine].Ranges[CurRange].EndPos;
if ( ThisSP !== OtherSP || ThisEP !== OtherEP )
return false;
if ( ( (OLI.Content === undefined || para_Run === OLI.Type) && this.Content.length > 0 ) || ( OLI.Content !== undefined && para_Run !== OLI.Type && OLI.Content.length !== this.Content.length) )
return false;
var ContentLen = this.Content.length;
var StartPos = ThisSP;
var EndPos = Math.min( ContentLen - 1, ThisEP );
for ( var CurPos = StartPos; CurPos <= EndPos; CurPos++ )
{
if ( false === this.Content[CurPos].Compare( _CurLine, _CurRange, OLI.Content[CurPos] ) )
return false;
}
return true;
}
};
\ No newline at end of file
......@@ -70,6 +70,39 @@ ParaRun.prototype =
// Функции для работы с содержимым данного рана
//-----------------------------------------------------------------------------------
Get_Text : function(Text)
{
if ( null === Text.Text )
return;
var ContentLen = this.Content.length;
for ( var CurPos = 0; CurPos < ContentLen; CurPos++ )
{
var Item = this.Content[CurPos];
var bBreak = false;
switch ( Item.Type )
{
case para_Drawing:
case para_End:
case para_PageNum:
{
Text.Text = null;
bBreak = true;
break;
}
case para_Text : Text.Text += Item.Value; break;
case para_Space:
case para_Tab : Text.Text += " "; break;
}
if ( true === bBreak )
break;
}
},
// Проверяем пустой ли ран
Is_Empty : function(Props)
{
......@@ -1852,20 +1885,22 @@ ParaRun.prototype =
Save_Lines : function()
{
var Lines = new Array();
var RunLines = new CParagraphLinesInfo(this.StartLine, this.StartRange);
for ( var CurLine = 0; CurLine < this.LinesLength; CurLine++ )
{
Lines.push( this.Lines[CurLine].Copy() );
RunLines.Lines.push( this.Lines[CurLine].Copy() );
}
return { Lines : Lines, LinesLength : this.LinesLength } ;
RunLines.LinesLength = this.LinesLength;
return RunLines;
},
Restore_Lines : function(SL)
Restore_Lines : function(RunLines)
{
this.Lines = SL.Lines;
this.LinesLength = SL.LinesLength;
this.Lines = RunLines.Lines;
this.LinesLength = RunLines.LinesLength;
this.Range = this.Lines[0].Ranges[0];
},
......@@ -3093,7 +3128,23 @@ ParaRun.prototype =
this.Recalc_CompiledPr(true);
},
Apply_TextPr : function(TextPr, IncFontSize)
Apply_TextPr : function(TextPr, IncFontSize, ApplyToAll)
{
if ( true === ApplyToAll )
{
if ( undefined === IncFontSize )
{
this.Apply_Pr( TextPr );
}
else
{
var _TextPr = new CTextPr();
var CurTextPr = this.Get_CompiledPr( false );
this.Set_FontSize( FontSize_IncreaseDecreaseValue( IncFontSize, CurTextPr.FontSize ) );
}
}
else
{
var Result = [];
var LRun = this, CRun = null, RRun = null;
......@@ -3216,6 +3267,7 @@ ParaRun.prototype =
Result.push( RRun );
return Result;
}
},
Split_Run : function(Pos)
......@@ -3272,46 +3324,46 @@ ParaRun.prototype =
Apply_Pr : function(TextPr)
{
if ( undefined != TextPr.Bold )
this.Set_Bold( TextPr.Bold );
this.Set_Bold( null === TextPr.Bold ? undefined : TextPr.Bold );
if ( undefined != TextPr.Italic )
this.Set_Italic( TextPr.Italic );
this.Set_Italic( null === TextPr.Italic ? undefined : TextPr.Italic );
if ( undefined != TextPr.Strikeout )
this.Set_Strikeout( TextPr.Strikeout );
this.Set_Strikeout( null === TextPr.Strikeout ? undefined : TextPr.Strikeout );
if ( undefined != TextPr.Underline )
this.Set_Underline( TextPr.Underline );
if ( undefined !== TextPr.Underline )
this.Set_Underline( null === TextPr.Underline ? undefined : TextPr.Underline );
if ( undefined != TextPr.FontSize )
this.Set_FontSize( TextPr.FontSize );
this.Set_FontSize( null === TextPr.FontSize ? undefined : TextPr.FontSize );
if ( undefined != TextPr.Color )
this.Set_Color( TextPr.Color );
if ( undefined !== TextPr.Color )
this.Set_Color( null === TextPr.Color ? undefined : TextPr.Color );
if ( undefined != TextPr.VertAlign )
this.Set_VertAlign( TextPr.VertAlign );
this.Set_VertAlign( null === TextPr.VertAlign ? undefined : TextPr.VertAlign );
if ( undefined != TextPr.HighLight )
this.Set_HighLight( TextPr.HighLight );
this.Set_HighLight( null === TextPr.HighLight ? undefined : TextPr.HighLight );
if ( undefined != TextPr.RStyle )
this.Set_RStyle( TextPr.RStyle );
if ( undefined !== TextPr.RStyle )
this.Set_RStyle( null === TextPr.RStyle ? undefined : TextPr.RStyle );
if ( undefined != TextPr.Spacing )
this.Set_Spacing( TextPr.Spacing );
this.Set_Spacing( null === TextPr.Spacing ? undefined : TextPr.Spacing );
if ( undefined != TextPr.DStrikeout )
this.Set_DStrikeout( TextPr.DStrikeout );
this.Set_DStrikeout( null === TextPr.DStrikeout ? undefined : TextPr.DStrikeout );
if ( undefined != TextPr.Caps )
this.Set_Caps( TextPr.Caps );
this.Set_Caps( null === TextPr.Caps ? undefined : TextPr.Caps );
if ( undefined != TextPr.SmallCaps )
this.Set_SmallCaps( TextPr.SmallCaps );
this.Set_SmallCaps( null === TextPr.SmallCaps ? undefined : TextPr.SmallCaps );
if ( undefined != TextPr.Position )
this.Set_Position( TextPr.Position );
this.Set_Position( null === TextPr.Position ? undefined : TextPr.Position );
if ( undefined != TextPr.RFonts )
this.Set_RFonts2( TextPr.RFonts );
......
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