main/sw/source/core/layout/trvlfrm.cxx
/*
 * nun koennen folgende Situationen auftreten:
 *	1. Start und Ende liegen in einer Bildschirm - Zeile und im
 * 	   gleichen Node
 *		-> aus Start und End ein Rectangle, dann Ok
 *	2. Start und Ende liegen in einem Frame (dadurch im gleichen Node!)
 *		-> Start nach rechts, End nach links erweitern,
 *		   und bei mehr als 2 Bildschirm - Zeilen, das dazwischen
 *		   liegende berechnen
 * 	3. Start und Ende liegen in verschiedenen Frames
 *		-> Start nach rechts erweitern, bis Frame-Ende Rect berechnen
 *		   Ende nach links erweitern, bis Frame-Start Rect berechnen
 *		   und bei mehr als 2 Frames von allen dazwischen liegenden
 * 		   Frames die PrtArea dazu.
 *
 * Grosser Umbau wg. der FlyFrm; denn diese muessen ausgespart werden.
 * Ausnahmen: - Der Fly in dem die Selektion stattfindet (wenn sie in einem Fly
 *				stattfindet).
 * 			  - Die Flys, die vom Text unterlaufen werden.
 * Arbeitsweise: Zuerst wird eine SwRegion mit der Root initialisiert.
 * 				 Aus der Region werden die zu invertierenden Bereiche
 * 				 ausgestantzt. Die Region wird Komprimiert und letztlich
 * 				 invertiert. Damit liegen dann die zu invertierenden
 * 				 Rechtecke vor.
 * 				 Am Ende werden die Flys aus der Region ausgestanzt.
 */
nun koennen folgende Situationen auftreten:
1. Start und Ende liegen in einer Bildschirm - Zeile und im
gleichen Node
-> aus Start und End ein Rectangle, dann Ok
2. Start und Ende liegen in einem Frame (dadurch im gleichen Node!)
-> Start nach rechts, End nach links erweitern,
und bei mehr als 2 Bildschirm - Zeilen, das dazwischen
liegende berechnen
3. Start und Ende liegen in verschiedenen Frames
-> Start nach rechts erweitern, bis Frame-Ende Rect berechnen
Ende nach links erweitern, bis Frame-Start Rect berechnen
und bei mehr als 2 Frames von allen dazwischen liegenden
Frames die PrtArea dazu.

Grosser Umbau wg. der FlyFrm; denn diese muessen ausgespart werden.
Ausnahmen: - Der Fly in dem die Selektion stattfindet (wenn sie in einem Fly
stattfindet).
- Die Flys, die vom Text unterlaufen werden.
Arbeitsweise: Zuerst wird eine SwRegion mit der Root initialisiert.
Aus der Region werden die zu invertierenden Bereiche
ausgestantzt. Die Region wird Komprimiert und letztlich
invertiert. Damit liegen dann die zu invertierenden
Rechtecke vor.
Am Ende werden die Flys aus der Region ausgestanzt.
nun koennen folgende Situationen auftreten : 1 . Start und Ende liegen in einer Bildschirm - Zeile und im gleichen Node - > aus Start und End ein Rectangle dann Ok 2 . Start und Ende liegen in einem Frame ( dadurch im gleichen Node! ) - > Start nach rechts End nach links erweitern und bei mehr als 2 Bildschirm - Zeilen das dazwischen liegende berechnen 3 . Start und Ende liegen in verschiedenen Frames - > Start nach rechts erweitern bis Frame - Ende Rect berechnen Ende nach links erweitern bis Frame - Start Rect berechnen und bei mehr als 2 Frames von allen dazwischen liegenden Frames die PrtArea dazu . Grosser Umbau wg . der FlyFrm ; denn diese muessen ausgespart werden . Ausnahmen : - Der Fly in dem die Selektion stattfindet ( wenn sie in einem Fly stattfindet ) . - Die Flys die vom Text unterlaufen werden . Arbeitsweise : Zuerst wird eine SwRegion mit der Root initialisiert . Aus der Region werden die zu invertierenden Bereiche ausgestantzt . Die Region wird Komprimiert und letztlich invertiert . Damit liegen dann die zu invertierenden Rechtecke vor . Am Ende werden die Flys aus der Region ausgestanzt .
inline void Sub( SwRegionRects& rRegion, const SwRect& rRect )
{
	if( rRect.Width() > 1 && rRect.Height() > 1 &&
		rRect.IsOver( rRegion.GetOrigin() ))
		rRegion -= rRect;
}
inline void Sub ( SwRegionRects & rRegion , const SwRect & rRect ) { if ( rRect . Width ( ) > 1 && rRect . Height ( ) > 1 && rRect . IsOver ( rRegion . GetOrigin ( ) ) ) rRegion -= rRect ; }
nun koennen folgende Situationen auftreten:
      1.
nun koennen folgende Situationen auftreten : 1 .