Commit 06c16bcb 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@54491 954022d7-b5bf-4e40-9824-e11837661b57
parent 06917a82
...@@ -908,14 +908,12 @@ function ParaComment(Start, Id) ...@@ -908,14 +908,12 @@ function ParaComment(Start, Id)
this.StartLine = 0; this.StartLine = 0;
this.StartRange = 0; this.StartRange = 0;
this.RecalcInfo = new CParaRunRecalcInfo();
} }
ParaComment.prototype = ParaComment.prototype =
{ {
Reset_Parent : function() Set_Paragraph : function()
{ {
}, },
...@@ -937,7 +935,7 @@ ParaComment.prototype = ...@@ -937,7 +935,7 @@ ParaComment.prototype =
// Функции пересчета // Функции пересчета
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
Recalculate_Reset : function(StartRange, StartLine, RecalcInfo) Recalculate_Reset : function(StartRange, StartLine)
{ {
this.StartLine = StartLine; this.StartLine = StartLine;
this.StartRange = StartRange; this.StartRange = StartRange;
...@@ -987,16 +985,6 @@ ParaComment.prototype = ...@@ -987,16 +985,6 @@ ParaComment.prototype =
{ {
}, },
Get_RecalcInfo : function()
{
return this.RecalcInfo;
},
Reset_RecalcInfo : function()
{
this.RecalcInfo.Reset();
},
Is_EmptyRange : function(_CurLine, _CurRange) Is_EmptyRange : function(_CurLine, _CurRange)
{ {
return true; return true;
......
...@@ -615,7 +615,7 @@ CDocument.prototype = ...@@ -615,7 +615,7 @@ CDocument.prototype =
{ {
if ( false === bWord ) if ( false === bWord )
{ {
Run = new ParaRun( this, Para ); Run = new ParaRun( Para );
Para.Content.push( Run ); Para.Content.push( Run );
bWord = true; bWord = true;
} }
...@@ -627,7 +627,7 @@ CDocument.prototype = ...@@ -627,7 +627,7 @@ CDocument.prototype =
if ( true === bWord ) if ( true === bWord )
{ {
bWord = false; bWord = false;
Run = new ParaRun( this, Para ); Run = new ParaRun( Para );
Para.Content.push( Run ); Para.Content.push( Run );
} }
...@@ -635,7 +635,7 @@ CDocument.prototype = ...@@ -635,7 +635,7 @@ CDocument.prototype =
} }
} }
Run = new ParaRun( this, Para ); Run = new ParaRun( Para );
Run.Content.push( new ParaEnd() ); Run.Content.push( new ParaEnd() );
Para.Content.push( Run ); Para.Content.push( Run );
...@@ -652,7 +652,7 @@ CDocument.prototype = ...@@ -652,7 +652,7 @@ CDocument.prototype =
} }
} }
Run = new ParaRun( this, Para ); Run = new ParaRun( Para );
Run.Content.push( new ParaEnd() ); Run.Content.push( new ParaEnd() );
Para.Content.push( Run ); Para.Content.push( Run );
...@@ -718,19 +718,19 @@ CDocument.prototype = ...@@ -718,19 +718,19 @@ CDocument.prototype =
{ {
if ( " " != Strings[i].charAt( Index ) ) if ( " " != Strings[i].charAt( Index ) )
{ {
Run = new ParaRun( this, Para ); Run = new ParaRun( Para );
Para.Content.push( Run ); Para.Content.push( Run );
Run.Content.push( new ParaText( Strings[i].charAt( Index ) ) ); Run.Content.push( new ParaText( Strings[i].charAt( Index ) ) );
} }
else else
{ {
Run = new ParaRun( this, Para ); Run = new ParaRun( Para );
Para.Content.push( Run ); Para.Content.push( Run );
Run.Content.push( new ParaSpace() ); Run.Content.push( new ParaSpace() );
} }
} }
Run = new ParaRun( this, Para ); Run = new ParaRun( Para );
Run.Content.push( new ParaEnd() ); Run.Content.push( new ParaEnd() );
Para.Content.push( Run ); Para.Content.push( Run );
...@@ -747,7 +747,7 @@ CDocument.prototype = ...@@ -747,7 +747,7 @@ CDocument.prototype =
} }
} }
Run = new ParaRun( this, Para ); Run = new ParaRun( Para );
Run.Content.push( new ParaEnd() ); Run.Content.push( new ParaEnd() );
Para.Content.push( Run ); Para.Content.push( Run );
...@@ -788,7 +788,7 @@ CDocument.prototype = ...@@ -788,7 +788,7 @@ CDocument.prototype =
var bWord = false; var bWord = false;
var Run = undefined; var Run = undefined;
Run = new ParaRun( this, Para ); Run = new ParaRun( Para );
Para.Content.push( Run ); Para.Content.push( Run );
this.Content = []; this.Content = [];
this.Content.push( Para ); this.Content.push( Para );
...@@ -846,7 +846,7 @@ CDocument.prototype = ...@@ -846,7 +846,7 @@ CDocument.prototype =
Para = new Paragraph( this.DrawingDocument, this, 0, 50, 50, X_Right_Field, Y_Bottom_Field ); Para = new Paragraph( this.DrawingDocument, this, 0, 50, 50, X_Right_Field, Y_Bottom_Field );
Para.Content = []; Para.Content = [];
Run = new ParaRun( this, Para ); Run = new ParaRun( Para );
Para.Content.push( Run ); Para.Content.push( Run );
oldPara.Set_DocumentNext(Para); oldPara.Set_DocumentNext(Para);
......
This diff is collapsed.
...@@ -43,6 +43,7 @@ var para_Math = 0x0026; // Формула ...@@ -43,6 +43,7 @@ var para_Math = 0x0026; // Формула
var para_Run = 0x0027; // Текстовый элемент var para_Run = 0x0027; // Текстовый элемент
var para_Sym = 0x0028; // Символ var para_Sym = 0x0028; // Символ
var para_Comment = 0x0029; // Метка начала или конца комментария var para_Comment = 0x0029; // Метка начала или конца комментария
var para_Hyperlink = 0x0030; // Гиперссылка
var break_Line = 0x01; var break_Line = 0x01;
var break_Page = 0x02; var break_Page = 0x02;
......
...@@ -4,13 +4,11 @@ ...@@ -4,13 +4,11 @@
* Time: 18:28 * Time: 18:28
*/ */
function ParaRun(Document,Parent) function ParaRun(Paragraph)
{ {
this.Id = g_oIdCounter.Get_NewId(); // Id данного элемента this.Id = g_oIdCounter.Get_NewId(); // Id данного элемента
this.Type = para_Run; // тип данного элемента this.Type = para_Run; // тип данного элемента
this.Document = Document; // Ссылка на верхний класс документа this.Paragraph = Paragraph; // Ссылка на параграф
this.Parent = Parent; // Ссылка на родительский класс
this.Paragraph = Parent; // Ссылка на параграф
this.Pr = new CTextPr(); // Текстовые настройки данного run this.Pr = new CTextPr(); // Текстовые настройки данного run
this.Content = new Array(); // Содержимое данного run this.Content = new Array(); // Содержимое данного run
this.State = new CParaRunState(); // Положение курсора и селекта в данного run this.State = new CParaRunState(); // Положение курсора и селекта в данного run
...@@ -59,24 +57,13 @@ ParaRun.prototype = ...@@ -59,24 +57,13 @@ ParaRun.prototype =
return this.Id; return this.Id;
}, },
Set_Parent : function(Paragraph)
{
this.Parent = Paragraph;
},
Get_Parent : function()
{
return this.Parent;
},
Get_Paragraph : function() Get_Paragraph : function()
{ {
return this.Parent; return this.Paragraph;
}, },
Reset_Parent : function(Parent, Paragraph) Set_Paragraph : function(Paragraph)
{ {
this.Parent = Parent;
this.Paragraph = Paragraph; this.Paragraph = Paragraph;
}, },
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
...@@ -411,7 +398,7 @@ ParaRun.prototype = ...@@ -411,7 +398,7 @@ ParaRun.prototype =
} }
// Значит курсор стоит в самом конце, поэтому посылаем последний отрезок // Значит курсор стоит в самом конце, поэтому посылаем последний отрезок
return new CParaPos( ( LinesCount === 1 ? this.Lines[0].RangesLength - 1 + this.StartRange : this.Lines[LinesCount - 1].RangesLength - 1 ), LinesCount - 1 + this.StartLine, 0, 0 ); return new CParaPos( ( LinesCount <= 1 ? this.Lines[0].RangesLength - 1 + this.StartRange : this.Lines[LinesCount - 1].RangesLength - 1 ), LinesCount - 1 + this.StartLine, 0, 0 );
}, },
Get_ParaPosByContentPos : function(ContentPos, Depth) Get_ParaPosByContentPos : function(ContentPos, Depth)
...@@ -642,7 +629,7 @@ ParaRun.prototype = ...@@ -642,7 +629,7 @@ ParaRun.prototype =
var CurPos = ContentPos.Get(Depth); var CurPos = ContentPos.Get(Depth);
// Создаем новый ран // Создаем новый ран
var NewRun = new ParaRun(this.Document, this.Parent); var NewRun = new ParaRun(this.Paragraph);
// Копируем настройки // Копируем настройки
NewRun.Set_Pr( this.Pr.Copy() ); NewRun.Set_Pr( this.Pr.Copy() );
...@@ -658,21 +645,11 @@ ParaRun.prototype = ...@@ -658,21 +645,11 @@ ParaRun.prototype =
//----------------------------------------------------------------------------------- //-----------------------------------------------------------------------------------
// Выставляем начальную строку и обнуляем массив строк // Выставляем начальную строку и обнуляем массив строк
Recalculate_Reset : function(StartRange, StartLine, RecalcInfo) Recalculate_Reset : function(StartRange, StartLine)
{ {
this.StartLine = StartLine; this.StartLine = StartLine;
this.StartRange = StartRange; this.StartRange = StartRange;
this.LinesLength = 0; this.LinesLength = 0;
if ( null === RecalcInfo )
this.RecalcInfo.NumberingAdd = true;
else
{
this.RecalcInfo.NumberingAdd = RecalcInfo.NumberingAdd;
}
this.RecalcInfo.NumberingUse = false;
this.RecalcInfo.NumberingItem = null;
}, },
// Пересчитываем размеры всех элементов // Пересчитываем размеры всех элементов
...@@ -712,7 +689,7 @@ ParaRun.prototype = ...@@ -712,7 +689,7 @@ ParaRun.prototype =
this.RecalcInfo.Measure = false; this.RecalcInfo.Measure = false;
}, },
Recalculate_Range : function( ParaPr) Recalculate_Range : function(ParaPr, Depth)
{ {
// Сначала измеряем элементы (можно вызывать каждый раз, внутри разруливается, чтобы измерялось 1 раз) // Сначала измеряем элементы (можно вызывать каждый раз, внутри разруливается, чтобы измерялось 1 раз)
this.Recalculate_MeasureContent(); this.Recalculate_MeasureContent();
...@@ -722,6 +699,25 @@ ParaRun.prototype = ...@@ -722,6 +699,25 @@ ParaRun.prototype =
var CurLine = PRS.Line - this.StartLine; var CurLine = PRS.Line - this.StartLine;
var CurRange = ( 0 === CurLine ? PRS.Range - this.StartRange : PRS.Range ); var CurRange = ( 0 === CurLine ? PRS.Range - this.StartRange : PRS.Range );
// Если мы рассчитываем первый отрезок в первой строке, тогда нам нужно обновить информацию о нумерации
if ( 0 === CurRange && 0 === CurLine )
{
var PrevRecalcInfo = PRS.RunRecalcInfoLast;
// Либо до этого ничего не было (изначально первая строка и первый отрезок), либо мы заново пересчитываем
// первую строку и первый отрезок (из-за обтекания, например).
if ( null === PrevRecalcInfo )
this.RecalcInfo.NumberingAdd = true;
else
this.RecalcInfo.NumberingAdd = PrevRecalcInfo.NumberingAdd;
this.RecalcInfo.NumberingUse = false;
this.RecalcInfo.NumberingItem = null;
}
// Сохраняем ссылку на информацию пересчета данного рана
PRS.RunRecalcInfoLast = this.RecalcInfo;
// Если это первый отрезок в данной строке, тогда нам надо добавить строку (первую строку не добавляем, // Если это первый отрезок в данной строке, тогда нам надо добавить строку (первую строку не добавляем,
// т.к. она всегда есть) // т.к. она всегда есть)
if ( 0 === CurRange ) if ( 0 === CurRange )
...@@ -1851,7 +1847,7 @@ ParaRun.prototype = ...@@ -1851,7 +1847,7 @@ ParaRun.prototype =
Refresh_RecalcData : function(Data) Refresh_RecalcData : function(Data)
{ {
this.Parent.Refresh_RecalcData2(0); this.Paragraph.Refresh_RecalcData2(0);
}, },
Save_Lines : function() Save_Lines : function()
...@@ -1873,16 +1869,6 @@ ParaRun.prototype = ...@@ -1873,16 +1869,6 @@ ParaRun.prototype =
this.Range = this.Lines[0].Ranges[0]; this.Range = this.Lines[0].Ranges[0];
}, },
Get_RecalcInfo : function()
{
return this.RecalcInfo;
},
Reset_RecalcInfo : function()
{
this.RecalcInfo.Reset();
},
Is_EmptyRange : function(_CurLine, _CurRange) Is_EmptyRange : function(_CurLine, _CurRange)
{ {
var CurLine = _CurLine - this.StartLine; var CurLine = _CurLine - this.StartLine;
...@@ -3062,7 +3048,7 @@ ParaRun.prototype = ...@@ -3062,7 +3048,7 @@ ParaRun.prototype =
Internal_Compile_Pr : function () Internal_Compile_Pr : function ()
{ {
if ( undefined === this.Parent ) if ( undefined === this.Paragraph )
{ {
// Сюда мы никогда не должны попадать, но на всякий случай, // Сюда мы никогда не должны попадать, но на всякий случай,
// чтобы не выпадало ошибок сгенерим дефолтовые настройки // чтобы не выпадало ошибок сгенерим дефолтовые настройки
...@@ -3072,12 +3058,12 @@ ParaRun.prototype = ...@@ -3072,12 +3058,12 @@ ParaRun.prototype =
} }
// Получим настройки текста, для данного параграфа // Получим настройки текста, для данного параграфа
var TextPr = this.Parent.Get_CompiledPr2(false).TextPr.Copy(); var TextPr = this.Paragraph.Get_CompiledPr2(false).TextPr.Copy();
// Если в прямых настройках задан стиль, тогда смержим настройки стиля // Если в прямых настройках задан стиль, тогда смержим настройки стиля
if ( undefined != this.Pr.RStyle ) if ( undefined != this.Pr.RStyle )
{ {
var Styles = this.Document.Get_Styles(); var Styles = this.Paragraph.Parent.Get_Styles();
var StyleTextPr = Styles.Get_Pr( this.Pr.RStyle, styletype_Character ).TextPr; var StyleTextPr = Styles.Get_Pr( this.Pr.RStyle, styletype_Character ).TextPr;
TextPr.Merge( StyleTextPr ); TextPr.Merge( StyleTextPr );
} }
...@@ -3230,7 +3216,7 @@ ParaRun.prototype = ...@@ -3230,7 +3216,7 @@ ParaRun.prototype =
Split_Run : function(Pos) Split_Run : function(Pos)
{ {
// Создаем новый ран // Создаем новый ран
var NewRun = new ParaRun(this.Document, this.Parent); var NewRun = new ParaRun(this.Paragraph);
// Копируем настройки // Копируем настройки
NewRun.Set_Pr( this.Pr.Copy() ); NewRun.Set_Pr( this.Pr.Copy() );
......
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