using FastReport.Table;
using System.Collections.Generic;
namespace FastReport.Engine
{
partial class ReportEngine
{
private void InitializePages()
{
for (int i = 0; i < Report.Pages.Count; i++)
{
ReportPage page = Report.Pages[i] as ReportPage;
if (page != null)
{
PreparedPages.AddSourcePage(page);
}
}
}
///
/// Translate RichObject to series of ReportComponentBase objects
///
///
internal float Translate_Rich(RichObject rich)
{
BandBase parentBand = rich.Parent as BandBase;
float height = 0;
bool isRich = rich.Text.StartsWith(@"{\rtf");
if (rich.localVisibleStorage && rich.ConvertRichText)
{
height = rich.Convert2ReportObjects();
}
return height;
}
private void TranslateTableObject(TableBase table)
{
foreach(ComponentBase obj in table.AllObjects)
{
if(obj is RichObject)
{
RichObject rich = obj as RichObject;
if (rich.Visible && rich.ConvertRichText)
{
float height = rich.Convert2ReportObjects();
TableCell cell = rich.Parent as TableCell;
foreach(ComponentBase trnslated_ojbect in rich.TransltedObjects)
{
trnslated_ojbect.Parent = cell;
}
rich.Visible = false;
}
}
}
}
///
/// This code splits RichObject to report objects
///
///
public void TranslateObjects(BandBase parentBand)
{
int originalObjectsCount = parentBand.Objects.Count;
float shift = 0;
for (int i = 0; i < originalObjectsCount; i++)
{
ComponentBase obj = parentBand.Objects[i];
obj.Top += shift;
if (obj is RichObject)
{
RichObject rich = obj as RichObject;
if(rich.ConvertRichText)
{
Translate_Rich(rich);
rich.SecondStageTranslation();
}
}
if(obj is TableObject)
{
TranslateTableObject(obj as TableBase);
}
}
}
internal void RestoreRich(RichObject rich)
{
BandBase parentBand = rich.Parent as BandBase;
foreach(ComponentBase obj in rich.TransltedObjects)
{
if(parentBand != null)
{
parentBand.RemoveChild(obj);
parentBand.Objects.Remove(obj);
}
else if(rich.Parent is TableCell)
{
TableCell cell = rich.Parent as TableCell;
cell.RemoveChild(obj);
cell.Objects.Remove(obj);
}
obj.SetParent(null);
}
rich.TransltedObjects.Clear();
}
}
}