//
// Android PDF Writer
// http://coderesearchlabs.com/androidpdfwriter
//
// by Javier Santo Domingo (j-a-s-d@coderesearchlabs.com)
//
package totalcross.util.pdf;
import java.util.ArrayList;
public class Body extends List
{
private int mByteOffsetStart;
private int mObjectNumberStart;
private int mGeneratedObjectsCount;
private ArrayList<IndirectObject> mObjectsList;
public Body()
{
super();
clear();
}
public int getObjectNumberStart()
{
return mObjectNumberStart;
}
public void setObjectNumberStart(int Value)
{
mObjectNumberStart = Value;
}
public int getByteOffsetStart()
{
return mByteOffsetStart;
}
public void setByteOffsetStart(int Value)
{
mByteOffsetStart = Value;
}
public int getObjectsCount()
{
return mObjectsList.size();
}
private int getNextAvailableObjectNumber()
{
return ++mGeneratedObjectsCount + mObjectNumberStart;
}
public IndirectObject getNewIndirectObject()
{
return getNewIndirectObject(getNextAvailableObjectNumber(), 0, true);
}
public IndirectObject getNewIndirectObject(int Number, int Generation, boolean InUse)
{
IndirectObject iobj = new IndirectObject();
iobj.setNumberID(Number);
iobj.setGeneration(Generation);
iobj.setInUse(InUse);
return iobj;
}
public IndirectObject getObjectByNumberID(int Number)
{
IndirectObject iobj;
int x = 0;
while (x < mObjectsList.size())
{
iobj = mObjectsList.get(x);
if (iobj.getNumberID() == Number)
return iobj;
x++;
}
return null;
}
public void includeIndirectObject(IndirectObject iobj)
{
mObjectsList.add(iobj);
}
private String render()
{
int x = 0;
int offset = mByteOffsetStart;
while (x < mObjectsList.size())
{
IndirectObject iobj = getObjectByNumberID(++x);
String s = "";
if (iobj != null)
s = iobj.toPDFString() + "\n";
mList.add(s);
iobj.setByteOffset(offset);
offset += s.length();
}
return renderList();
}
public String toPDFString()
{
return render();
}
public void clear()
{
super.clear();
mByteOffsetStart = 0;
mObjectNumberStart = 0;
mGeneratedObjectsCount = 0;
mObjectsList = new ArrayList<IndirectObject>();
}
}