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