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

Доработка нового параграфа на основе Run.

git-svn-id: svn://192.168.3.15/activex/AVS/Sources/TeamlabOffice/trunk/OfficeWeb@53062 954022d7-b5bf-4e40-9824-e11837661b57
parent ef228e97
...@@ -55,6 +55,8 @@ var recalcresult_NextElement = 0x00; // Пересчитываем следую ...@@ -55,6 +55,8 @@ var recalcresult_NextElement = 0x00; // Пересчитываем следую
var recalcresult_PrevPage = 0x01; // Пересчитываем заново предыдущую страницу var recalcresult_PrevPage = 0x01; // Пересчитываем заново предыдущую страницу
var recalcresult_CurPage = 0x02; // Пересчитываем заново текущую страницу var recalcresult_CurPage = 0x02; // Пересчитываем заново текущую страницу
var recalcresult_NextPage = 0x03; // Пересчитываем следующую страницу var recalcresult_NextPage = 0x03; // Пересчитываем следующую страницу
var recalcresult_NextLine = 0x04; // Пересчитываем следующую строку
var recalcresult_CurLine = 0x05; // Пересчитываем текущую строку
// Типы которые возвращают классы CDocument и CDocumentContent после пересчета страницы // Типы которые возвращают классы CDocument и CDocumentContent после пересчета страницы
var recalcresult2_End = 0x00; // Документ рассчитан до конца var recalcresult2_End = 0x00; // Документ рассчитан до конца
...@@ -9204,7 +9206,8 @@ CDocument.prototype = ...@@ -9204,7 +9206,8 @@ CDocument.prototype =
if ( PageIndex < 0 ) if ( PageIndex < 0 )
return; return;
//this.Update_CursorType( X, Y, PageIndex, e ); if ( false === g_TestColumns )
this.Update_CursorType( X, Y, PageIndex, e );
if ( true === this.Selection.Use && true === this.Selection.Start ) if ( true === this.Selection.Use && true === this.Selection.Start )
{ {
......
This diff is collapsed.
...@@ -24,6 +24,9 @@ function ParaRun(Document) ...@@ -24,6 +24,9 @@ function ParaRun(Document)
this.Descent = 0; // общий descent this.Descent = 0; // общий descent
this.YOffset = 0; // смещение по Y this.YOffset = 0; // смещение по Y
this.NeedAddNumbering = false; // Нужно ли добавлять нумерацию (true - нужно, false - не нужно, первый элемент,
// у которого будет false и будет элемент с нумерацией)
this.Lines = new Array(); // Массив CParaRunLine this.Lines = new Array(); // Массив CParaRunLine
this.StartLine = 0; // Строка, с которой начинается данный ран this.StartLine = 0; // Строка, с которой начинается данный ран
...@@ -69,7 +72,6 @@ ParaRun.prototype = ...@@ -69,7 +72,6 @@ ParaRun.prototype =
Recalculate_Reset : function(StartLine) Recalculate_Reset : function(StartLine)
{ {
this.StartLine = StartLine; this.StartLine = StartLine;
this.Lines = new Array(); this.Lines = new Array();
}, },
...@@ -165,9 +167,9 @@ ParaRun.prototype = ...@@ -165,9 +167,9 @@ ParaRun.prototype =
var ItemType = Item.Type; var ItemType = Item.Type;
// Проверяем, не нужно ли добавить нумерацию к данному элементу // Проверяем, не нужно ли добавить нумерацию к данному элементу
this.Internal_Recalculate_Numbering( Item, PRS ); if ( true === this.Internal_Recalculate_Numbering( Item, PRS, ParaPr ) )
RRS.Set_NumberingPos( Pos );
var bBreak = false;
switch( Item.Type ) switch( Item.Type )
{ {
case para_Sym: case para_Sym:
...@@ -200,7 +202,8 @@ ParaRun.prototype = ...@@ -200,7 +202,8 @@ ParaRun.prototype =
if ( true !== PRS.NewRange ) if ( true !== PRS.NewRange )
{ {
PRS.Set_WordStart( Pos ); // Отмечаем начало нового слова
PRS.Set_LineBreakPos( Pos );
PRS.WordLen = Item.Width; PRS.WordLen = Item.Width;
PRS.Word = true; PRS.Word = true;
} }
...@@ -223,7 +226,8 @@ ParaRun.prototype = ...@@ -223,7 +226,8 @@ ParaRun.prototype =
if ( false === Para.Internal_Check_Ranges(PRS.Line, PRS.Range) ) if ( false === Para.Internal_Check_Ranges(PRS.Line, PRS.Range) )
{ {
PRS.MovePosToWordStart = true; // Слово не убирается в отрезке. Переносим слово в следующий отрезок
PRS.MoveToLBP = true;
PRS.NewRange = true; PRS.NewRange = true;
} }
else else
...@@ -231,14 +235,16 @@ ParaRun.prototype = ...@@ -231,14 +235,16 @@ ParaRun.prototype =
PRS.EmptyLine = false; PRS.EmptyLine = false;
PRS.X += PRS.WordLen; PRS.X += PRS.WordLen;
// Слово не убирается в отрезке, но, поскольку, слово 1 на строке и отрезок тоже 1,
// делим слово в данном месте
PRS.NewRange = true; PRS.NewRange = true;
RangeEndPos = Pos; RangeEndPos = Pos;
} }
} }
else else
{ {
// Слово не убирается в промежутке. Переносим слово на новую строку // Слово не убирается в отрезке. Переносим слово в следующий отрезок
PRS.MovePosToWordStart = true; PRS.MoveToLBP = true;
PRS.NewRange = true; PRS.NewRange = true;
} }
} }
...@@ -319,6 +325,7 @@ ParaRun.prototype = ...@@ -319,6 +325,7 @@ ParaRun.prototype =
if ( PRS.X + PRS.SpaceLen + Item.Width > PRS.XEnd && ( false === PRS.FirstItemOnLine || false === Para.Internal_Check_Ranges( PRS.Line, PRS.Range ) ) ) if ( PRS.X + PRS.SpaceLen + Item.Width > PRS.XEnd && ( false === PRS.FirstItemOnLine || false === Para.Internal_Check_Ranges( PRS.Line, PRS.Range ) ) )
{ {
// Автофигура не убирается, ставим перенос перед ней
PRS.NewRange = true; PRS.NewRange = true;
RangeEndPos = Pos; RangeEndPos = Pos;
} }
...@@ -462,8 +469,9 @@ ParaRun.prototype = ...@@ -462,8 +469,9 @@ ParaRun.prototype =
if ( PRS.X + PRS.SpaceLen + Item.Width > PRS.XEnd && ( false === PRS.FirstItemOnLine || false === Para.Internal_Check_Ranges( PRS.Line, PRS.Range ) ) ) if ( PRS.X + PRS.SpaceLen + Item.Width > PRS.XEnd && ( false === PRS.FirstItemOnLine || false === Para.Internal_Check_Ranges( PRS.Line, PRS.Range ) ) )
{ {
// TODO: отмечаем здесь конец данного отрезка // Данный элемент не убирается, ставим перенос перед ним
PRS.NewRange = true; PRS.NewRange = true;
RangeEndPos = Pos;
} }
else else
{ {
...@@ -513,7 +521,7 @@ ParaRun.prototype = ...@@ -513,7 +521,7 @@ ParaRun.prototype =
{ {
PRS.WordLen = NewX - PRS.X; PRS.WordLen = NewX - PRS.X;
// TODO: отмечаем здесь конец данного отрезка RangeEndPos = Pos;
PRS.NewRange = true; PRS.NewRange = true;
} }
else else
...@@ -537,11 +545,11 @@ ParaRun.prototype = ...@@ -537,11 +545,11 @@ ParaRun.prototype =
} }
// Считаем, что с таба начинается слово // Считаем, что с таба начинается слово
PRS.Set_LineBreakPos( Pos );
PRS.StartWord = true; PRS.StartWord = true;
PRS.Word = true; PRS.Word = true;
PRS.Set_WordStart( Pos );
break; break;
} }
case para_NewLine: case para_NewLine:
...@@ -562,7 +570,8 @@ ParaRun.prototype = ...@@ -562,7 +570,8 @@ ParaRun.prototype =
} }
else else
{ {
// TODO: вставить перенос отрезка RangeEndPos = Pos + 1;
PRS.NewRange = true; PRS.NewRange = true;
PRS.EmptyLine = false; PRS.EmptyLine = false;
} }
...@@ -605,30 +614,34 @@ ParaRun.prototype = ...@@ -605,30 +614,34 @@ ParaRun.prototype =
} }
PRS.NewRange = true; PRS.NewRange = true;
PRS.End = true;
break; break;
} }
} }
if ( true === PRS.NewRange )
break;
Pos++; Pos++;
} }
this.Lines[CurLine].Add_Range( PRS.Range, RangeStartPos, RangeEndPos ); this.Lines[CurLine].Add_Range( PRS.Range, RangeStartPos, RangeEndPos );
}, },
Internal_Recalculate_Numbering : function(Item, PRS) Recalculate_Set_RangeEndPos : function(PRS, PRP, Depth)
{ {
if ( true === PRS.AddNumbering ) var CurLine = PRS.Line - this.StartLine;
{ var CurRange = PRS.Range;
var Para = PRS.Paragraph; var CurPos = PRP[Depth];
if ( undefined === Para )
return;
var Pr = Para.Get_CompiledPr2( false ); this.Line[CurLine].Ranges[CurRange].EndPos = CurPos;
var ParaPr = Pr.ParaPr; },
// Проверим, возможно на текущем элементе стоит добавить нумерацию Internal_Recalculate_Numbering : function(Item, PRS, ParaPr)
if ( true === Item.Can_AddNumbering() ) {
// Если нужно добавить нумерацию и на текущем элементе ее можно добавить, тогда добавляем её
if ( true === this.NeedAddNumbering && true === Item.Can_AddNumbering() )
{ {
var NumberingItem = Para.Numbering; var NumberingItem = Para.Numbering;
var NumberingType = Para.Numbering.Type; var NumberingType = Para.Numbering.Type;
...@@ -785,9 +798,12 @@ ParaRun.prototype = ...@@ -785,9 +798,12 @@ ParaRun.prototype =
Para.Numbering.Item = Item; Para.Numbering.Item = Item;
} }
PRS.AddNumbering = false; this.NeedAddNumbering = false;
}
return true;
} }
return false;
}, },
Internal_Recalculate_LineMetrics : function(PRS, SpacingLineRule) Internal_Recalculate_LineMetrics : function(PRS, SpacingLineRule)
...@@ -1377,7 +1393,7 @@ ParaRun.prototype = ...@@ -1377,7 +1393,7 @@ ParaRun.prototype =
switch ( Type ) switch ( Type )
{ {
} }
}, }
}; };
......
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