main/sw/source/filter/html/htmltab.cxx
// Suchen des SwStartNodes der letzten belegten Vorgaengerbox
Suchen des SwStartNodes der letzten belegten Vorgaengerbox
Suchen des SwStartNodes der letzten belegten Vorgaengerbox
const SwStartNode* HTMLTable::GetPrevBoxStartNode( sal_uInt16 nRow, sal_uInt16 nCol ) const
{
	const HTMLTableCnts *pPrevCnts = 0;
	if( 0==nRow )
	{
		if( nCol>0 )
			pPrevCnts = GetCell( 0, nCol-1 )->GetContents();
		else
			return pPrevStNd;
	}
	else if( USHRT_MAX==nRow && USHRT_MAX==nCol )
		pPrevCnts = GetCell( nRows-1, nCols-1 )->GetContents();
	else
	{
		sal_uInt16 i;
		HTMLTableRow *pPrevRow = (*pRows)[nRow-1];
		i = nCol;
		while( i )
		{
			i--;
			if( 1 == pPrevRow->GetCell(i)->GetRowSpan() )
			{
				pPrevCnts = GetCell(nRow,i)->GetContents();
				break;
			}
		}
		if( !pPrevCnts )
		{
			i = nCols;
			while( !pPrevCnts && i )
			{
				i--;
				pPrevCnts = pPrevRow->GetCell(i)->GetContents();
			}
		}
	}
	ASSERT( pPrevCnts, "keine gefuellte Vorgaenger-Zelle gefunden" );
	if( !pPrevCnts )
	{
		pPrevCnts = GetCell(0,0)->GetContents();
		if( !pPrevCnts )
			return pPrevStNd;
	}
	while( pPrevCnts->Next() )
		pPrevCnts = pPrevCnts->Next();
	return ( pPrevCnts->GetStartNode() ? pPrevCnts->GetStartNode()
			   : pPrevCnts->GetTable()->GetPrevBoxStartNode( USHRT_MAX, USHRT_MAX ) );
}
const SwStartNode * HTMLTable :: GetPrevBoxStartNode ( sal_uInt16 nRow , sal_uInt16 nCol ) const { const HTMLTableCnts * pPrevCnts = 0 ; if ( 0 == nRow ) { if ( nCol > 0 ) pPrevCnts = GetCell ( 0 , nCol - 1 ) -> GetContents ( ) ; else return pPrevStNd ; } else if ( USHRT_MAX == nRow && USHRT_MAX == nCol ) pPrevCnts = GetCell ( nRows - 1 , nCols - 1 ) -> GetContents ( ) ; else { sal_uInt16 i ; HTMLTableRow * pPrevRow = ( * pRows ) [ nRow - 1 ] ; i = nCol ; while ( i ) { i -- ; if ( 1 == pPrevRow -> GetCell ( i ) -> GetRowSpan ( ) ) { pPrevCnts = GetCell ( nRow , i ) -> GetContents ( ) ; break ; } } if ( ! pPrevCnts ) { i = nCols ; while ( ! pPrevCnts && i ) { i -- ; pPrevCnts = pPrevRow -> GetCell ( i ) -> GetContents ( ) ; } } } ASSERT ( pPrevCnts , " " ) ; if ( ! pPrevCnts ) { pPrevCnts = GetCell ( 0 , 0 ) -> GetContents ( ) ; if ( ! pPrevCnts ) return pPrevStNd ; } while ( pPrevCnts -> Next ( ) ) pPrevCnts = pPrevCnts -> Next ( ) ; return ( pPrevCnts -> GetStartNode ( ) ? pPrevCnts -> GetStartNode ( ) : pPrevCnts -> GetTable ( ) -> GetPrevBoxStartNode ( USHRT_MAX , USHRT_MAX ) ) ; }
Suchen des SwStartNodes der letzten belegten Vorgaengerbox
Suchen des SwStartNodes der letzten belegten Vorgaengerbox
// immer die Vorgaenger-Zelle // der Contents der letzten Zelle // evtl. eine Zelle in der aktuellen Zeile // sonst die letzte gefuellte Zelle der Zeile davor suchen