fp_TableContainer Class Reference

#include <fp_TableContainer.h>

Inheritance diagram for fp_TableContainer:

fp_VerticalContainer fp_Container fp_ContainerObject

List of all members.

Public Member Functions

 fp_TableContainer (fl_SectionLayout *pSectionLayout)
 fp_TableContainer (fl_SectionLayout *pSectionLayout, fp_TableContainer *pMaster)
 ~fp_TableContainer ()
void sizeRequest (fp_Requisition *pRequest)
void sizeAllocate (fp_Allocation *pAllocate)
virtual void mapXYToPosition (UT_sint32 x, UT_sint32 y, PT_DocPosition &pos, bool &bBOL, bool &bEOL, bool &isTOC)
virtual fp_PagegetPage (void)
fp_LinegetFirstLineInColumn (fp_Column *pCol)
fp_LinegetLastLineInColumn (fp_Column *pCol)
void layout (void)
virtual void setY (UT_sint32 iY)
virtual UT_sint32 getHeight (void)
virtual void setHeight (UT_sint32 iHeight)
virtual void setContainer (fp_Container *pContainer)
virtual void draw (dg_DrawArgs *)
virtual void draw (GR_Graphics *)
virtual UT_sint32 getMarginBefore (void) const
virtual UT_sint32 getMarginAfter (void) const
void setAdditionalMargin (UT_sint32 iMarg)
fp_ColumngetBrokenColumn (void)
void drawLines ()
bool containsFootnoteReference (void)
bool getFootnoteContainers (UT_GenericVector< fp_FootnoteContainer * > *pvecFoots)
bool containsAnnotations (void)
bool getAnnotationContainers (UT_GenericVector< fp_AnnotationContainer * > *pvecAnns)
UT_sint32 tweakBrokenTable (fp_TableContainer *pBroke)
virtual void clearScreen (void)
virtual bool isVBreakable (void)
virtual bool isHBreakable (void)
virtual UT_sint32 wantVBreakAt (UT_sint32)
virtual UT_sint32 wantHBreakAt (UT_sint32)
virtual fp_ContainerObjectVBreakAt (UT_sint32)
void breakCellsAt (UT_sint32 vpos)
virtual fp_ContainerObjectHBreakAt (UT_sint32)
UT_sint32 getBrokenNumber (void)
void setToAllocation (void)
void tableAttach (fp_CellContainer *pCell)
void setHomogeneous (bool bIsHomogeneous)
void setColSpacings (UT_sint32 spacing)
void setRowSpacings (UT_sint32 spacing)
void setColSpacing (UT_sint32 column, UT_sint32 spacing)
void setRowSpacing (UT_sint32 row, UT_sint32 spacing)
void resize (UT_sint32 n_rows, UT_sint32 n_cols)
void setBorderWidth (UT_sint32 i)
UT_sint32 getBorderWidth (void) const
void setLeftOffset (UT_sint32 iLeftOff)
void setRightOffset (UT_sint32 iRightOff)
void setTopOffset (UT_sint32 iTopOff)
void setBottomOffset (UT_sint32 iBotOff)
void setLineThickness (UT_sint32 iLineThickness)
UT_sint32 getLineThickness (void)
void queueResize (void)
UT_sint32 getYOfRow (UT_sint32 row)
fp_CellContainergetCellAtRowColumn (UT_sint32 row, UT_sint32 column)
fp_CellContainergetCellAtRowColumnLinear (UT_sint32 row, UT_sint32 column)
virtual fp_ContainergetNextContainerInSection (void) const
virtual fp_ContainergetPrevContainerInSection (void) const
fp_TableContainergetMasterTable (void) const
bool isThisBroken (void) const
void setYBreakHere (UT_sint32 iBreakHere)
void setYBottom (UT_sint32 iBotContainer)
bool isInBrokenTable (fp_CellContainer *pCell, fp_Container *pCon)
UT_sint32 getYBreak (void) const
UT_sint32 getYBottom (void) const
fp_TableContainergetFirstBrokenTable (void) const
fp_TableContainergetLastBrokenTable (void) const
void setFirstBrokenTable (fp_TableContainer *pBroke)
void setLastBrokenTable (fp_TableContainer *pBroke)
void deleteBrokenTables (bool bClearFirst, bool bRecurseUp=true)
void adjustBrokenTables (void)
UT_sint32 getBrokenTop (void)
UT_sint32 getBrokenBot (void)
void setBrokenTop (UT_sint32 iTop)
void setBrokenBot (UT_sint32 iBot)
UT_sint32 getNumRows (void) const
UT_sint32 getNumCols (void) const
UT_sint32 getRowHeight (UT_sint32 iRow, UT_sint32 iMeasHeight)
void setRedrawLines (void)
bool doRedrawLines (void) const
fp_TableRowColumngetNthCol (UT_sint32 i)
fp_TableRowColumngetNthRow (UT_sint32 i)
bool containsNestedTables (void)
void setRowHeightType (FL_RowHeightType iType)
void setRowHeight (UT_sint32 iHeight)
void setLastWantedVBreak (UT_sint32 iBreakAt)
UT_sint32 getLastWantedVBreak (void) const

Private Member Functions

void _size_request_init (void)
void _size_request_pass1 (void)
void _size_request_pass2 (void)
void _size_request_pass3 (void)
void _size_allocate_init (void)
void _size_allocate_pass1 (void)
void _size_allocate_pass2 (void)
UT_uint32 _getBottomOfLastContainer (void) const
void _drawBoundaries (dg_DrawArgs *pDA)
void _drawBrokenBoundaries (dg_DrawArgs *pDA)
void _brokenDraw (dg_DrawArgs *pDA)

Private Attributes

UT_sint32 m_iRows
UT_sint32 m_iCols
UT_sint32 m_iBorderWidth
bool m_bIsHomogeneous
UT_GenericVector
< fp_TableRowColumn * > 
m_vecRows
UT_GenericVector
< fp_TableRowColumn * > 
m_vecColumns
fp_Allocation m_MyAllocation
fp_Requisition m_MyRequest
UT_sint32 m_iRowSpacing
UT_sint32 m_iColSpacing
fp_TableContainerm_pFirstBrokenTable
fp_TableContainerm_pLastBrokenTable
bool m_bIsBroken
fp_TableContainerm_pMasterTable
UT_sint32 m_iYBreakHere
UT_sint32 m_iYBottom
UT_sint32 m_iBrokenTop
UT_sint32 m_iBrokenBottom
bool m_bRedrawLines
UT_sint32 m_iRepeatedRowNumber
UT_sint32 m_iRepeatedRowHeight
UT_sint32 m_iLeftOffset
UT_sint32 m_iRightOffset
UT_sint32 m_iTopOffset
UT_sint32 m_iBottomOffset
UT_sint32 m_iLineThickness
FL_RowHeightType m_iRowHeightType
UT_sint32 m_iRowHeight
UT_sint32 m_iLastWantedVBreak
fp_CellContainerm_pFirstBrokenCell
fp_CellContainerm_pLastBrokenCell
bool m_bRecursiveClear
UT_sint32 m_iAdditionalMarginAfter


Constructor & Destructor Documentation

fp_TableContainer::fp_TableContainer ( fl_SectionLayout pSectionLayout  ) 

Create a Master Table container. This is broken across other vertical Containers.

Parameters:
iType Container type
pSectionLayout Section layout type used for this container

References fp_ContainerObject::getSectionLayout(), fl_SectionLayout::markAllRunsDirty(), and fl_SectionLayout::setNeedsRedraw().

Referenced by VBreakAt().

fp_TableContainer::fp_TableContainer ( fl_SectionLayout pSectionLayout,
fp_TableContainer pMaster 
)

Create a broken Table container. This is placed between the cells and drawing. A vertical offset is subtracted from the Cells Y location for all manipulations.

Parameters:
iType Container type
pSectionLayout Section layout type used for this container

fp_TableContainer::~fp_TableContainer (  ) 

Destruct container

Note:
The Containers in vector of the container are not destructed. They are owned by the logical hierarchy (i.e., the fl_Container classes like fl_BlockLayout), not the physical hierarchy.

References fp_Container::clearCons(), deleteBrokenTables(), m_pMasterTable, m_vecColumns, m_vecRows, setContainer(), fp_Container::setNext(), fp_Container::setPrev(), UT_VECTOR_PURGEALL, and xxx_UT_DEBUGMSG.


Member Function Documentation

void fp_TableContainer::sizeRequest ( fp_Requisition pRequest  ) 

void fp_TableContainer::sizeAllocate ( fp_Allocation pAllocate  ) 

void fp_TableContainer::mapXYToPosition ( UT_sint32  x,
UT_sint32  y,
PT_DocPosition pos,
bool &  bBOL,
bool &  bEOL,
bool &  isTOC 
) [virtual]

Find document position from X and Y coordinates

Parameters:
x X coordinate
y Y coordinate
Return values:
pos Document position
bBOL True if position is at begining of line, otherwise false
bEOL True if position is at end of line, otherwise false

Reimplemented from fp_VerticalContainer.

References fp_Container::countCons(), d, fp_VerticalContainer::distanceFromPoint(), FP_CONTAINER_TABLE, fp_ContainerObject::getContainerType(), getFirstBrokenTable(), getMasterTable(), fp_VerticalContainer::getMaxHeight(), fp_Container::getNthCon(), fp_VerticalContainer::getWidth(), fp_VerticalContainer::getX(), fp_VerticalContainer::getY(), getYBreak(), isThisBroken(), fp_VerticalContainer::mapXYToPosition(), mapXYToPosition(), UT_return_if_fail, and xxx_UT_DEBUGMSG.

Referenced by mapXYToPosition(), and fp_VerticalContainer::mapXYToPosition().

fp_Page * fp_TableContainer::getPage ( void   )  [virtual]

fp_Line * fp_TableContainer::getFirstLineInColumn ( fp_Column pCol  ) 

fp_Line * fp_TableContainer::getLastLineInColumn ( fp_Column pCol  ) 

void fp_TableContainer::layout ( void   ) 

void fp_TableContainer::setY ( UT_sint32  i  )  [virtual]

UT_sint32 fp_TableContainer::getHeight ( void   )  [virtual]

void fp_TableContainer::setHeight ( UT_sint32  iHeight  )  [virtual]

void fp_TableContainer::setContainer ( fp_Container pContainer  )  [virtual]

void fp_TableContainer::draw ( dg_DrawArgs pDA  )  [virtual]

virtual void fp_TableContainer::draw ( GR_Graphics  )  [inline, virtual]

Reimplemented from fp_VerticalContainer.

UT_sint32 fp_TableContainer::getMarginBefore ( void   )  const [virtual]

UT_sint32 fp_TableContainer::getMarginAfter ( void   )  const [virtual]

void fp_TableContainer::setAdditionalMargin ( UT_sint32  iMarg  )  [inline]

fp_Column * fp_TableContainer::getBrokenColumn ( void   ) 

void fp_TableContainer::drawLines ( void   ) 

bool fp_TableContainer::containsFootnoteReference ( void   ) 

bool fp_TableContainer::getFootnoteContainers ( UT_GenericVector< fp_FootnoteContainer * > *  pVecFoots  ) 

bool fp_TableContainer::containsAnnotations ( void   ) 

bool fp_TableContainer::getAnnotationContainers ( UT_GenericVector< fp_AnnotationContainer * > *  pVecAnns  ) 

UT_sint32 fp_TableContainer::tweakBrokenTable ( fp_TableContainer pBroke  ) 

void fp_TableContainer::clearScreen ( void   )  [virtual]

bool fp_TableContainer::isVBreakable ( void   )  [virtual]

Returns true since a table can be broken vertically.

Reimplemented from fp_VerticalContainer.

References FP_CONTAINER_CELL, fp_Container::getContainer(), and fp_ContainerObject::getContainerType().

virtual bool fp_TableContainer::isHBreakable ( void   )  [inline, virtual]

Reimplemented from fp_VerticalContainer.

UT_sint32 fp_TableContainer::wantVBreakAt ( UT_sint32  vpos  )  [virtual]

The caller to this method requests a break at the vertical height given. It returns the actual break height, which will always be less than or equal to the requested height.

Reimplemented from fp_VerticalContainer.

References fp_Container::countCons(), fp_VerticalContainer::getHeight(), getMasterTable(), fp_Container::getNthCon(), fp_VerticalContainer::getY(), isThisBroken(), fp_CellContainer::wantVBreakAt(), and wantVBreakAt().

Referenced by fb_ColumnBreaker::_breakTable(), and wantVBreakAt().

virtual UT_sint32 fp_TableContainer::wantHBreakAt ( UT_sint32   )  [inline, virtual]

Reimplemented from fp_VerticalContainer.

fp_ContainerObject * fp_TableContainer::VBreakAt ( UT_sint32  vpos  )  [virtual]

This method creates a new broken tablecontainer, broken at the offset given. If the new tablecontainer is broken from a pre-existing broken table it is inserted into the holding vertical container after the old broken table. It also inserted into the linked list of containers in the vertical container. vpos is relative to the either the start of the table if it's the first non-zero vpos or relative to the previous ybreak if it's further down.

Reimplemented from fp_VerticalContainer.

References fp_Container::addCon(), breakCellsAt(), fp_Container::countCons(), fp_Container::findCon(), FP_CONTAINER_CELL, fp_TableContainer(), fp_Container::getContainer(), fp_ContainerObject::getContainerType(), getFirstBrokenTable(), getHeight(), fp_VerticalContainer::getHeight(), getLastBrokenTable(), getMasterTable(), fp_ContainerObject::getSectionLayout(), fp_VerticalContainer::getY(), getYBottom(), getYBreak(), fp_Container::insertConAt(), isThisBroken(), setContainer(), setFirstBrokenTable(), setHeight(), setLastBrokenTable(), fp_Container::setNext(), fp_Container::setPrev(), setY(), setYBottom(), setYBreakHere(), tweakBrokenTable(), UT_ASSERT, UT_return_val_if_fail, UT_SHOULD_NOT_HAPPEN, VBreakAt(), and xxx_UT_DEBUGMSG.

Referenced by fb_ColumnBreaker::_breakTable(), fp_CellContainer::drawBroken(), fp_CellContainer::getBrokenTable(), fp_CellContainer::layout(), fp_FrameContainer::layout(), setY(), VBreakAt(), and fp_CellContainer::VBreakAt().

void fp_TableContainer::breakCellsAt ( UT_sint32  vpos  ) 

virtual fp_ContainerObject* fp_TableContainer::HBreakAt ( UT_sint32   )  [inline, virtual]

Reimplemented from fp_VerticalContainer.

UT_sint32 fp_TableContainer::getBrokenNumber ( void   ) 

void fp_TableContainer::setToAllocation ( void   ) 

void fp_TableContainer::tableAttach ( fp_CellContainer pCell  ) 

void fp_TableContainer::setHomogeneous ( bool  bIsHomogeneous  ) 

void fp_TableContainer::setColSpacings ( UT_sint32  spacing  ) 

void fp_TableContainer::setRowSpacings ( UT_sint32  spacing  ) 

void fp_TableContainer::setColSpacing ( UT_sint32  column,
UT_sint32  spacing 
)

void fp_TableContainer::setRowSpacing ( UT_sint32  row,
UT_sint32  spacing 
)

void fp_TableContainer::resize ( UT_sint32  n_rows,
UT_sint32  n_cols 
)

void fp_TableContainer::setBorderWidth ( UT_sint32  i  )