1*1d2dbeb0SAndrew Rist /************************************************************** 2cdf0e10cSrcweir * 3*1d2dbeb0SAndrew Rist * Licensed to the Apache Software Foundation (ASF) under one 4*1d2dbeb0SAndrew Rist * or more contributor license agreements. See the NOTICE file 5*1d2dbeb0SAndrew Rist * distributed with this work for additional information 6*1d2dbeb0SAndrew Rist * regarding copyright ownership. The ASF licenses this file 7*1d2dbeb0SAndrew Rist * to you under the Apache License, Version 2.0 (the 8*1d2dbeb0SAndrew Rist * "License"); you may not use this file except in compliance 9*1d2dbeb0SAndrew Rist * with the License. You may obtain a copy of the License at 10*1d2dbeb0SAndrew Rist * 11*1d2dbeb0SAndrew Rist * http://www.apache.org/licenses/LICENSE-2.0 12*1d2dbeb0SAndrew Rist * 13*1d2dbeb0SAndrew Rist * Unless required by applicable law or agreed to in writing, 14*1d2dbeb0SAndrew Rist * software distributed under the License is distributed on an 15*1d2dbeb0SAndrew Rist * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*1d2dbeb0SAndrew Rist * KIND, either express or implied. See the License for the 17*1d2dbeb0SAndrew Rist * specific language governing permissions and limitations 18*1d2dbeb0SAndrew Rist * under the License. 19*1d2dbeb0SAndrew Rist * 20*1d2dbeb0SAndrew Rist *************************************************************/ 21*1d2dbeb0SAndrew Rist 22*1d2dbeb0SAndrew Rist 23cdf0e10cSrcweir #ifndef _NODE2LAY_HXX 24cdf0e10cSrcweir #define _NODE2LAY_HXX 25cdf0e10cSrcweir 26cdf0e10cSrcweir #include <tools/solar.h> 27cdf0e10cSrcweir 28cdf0e10cSrcweir /* -----------------23.02.99 11:33------------------- 29cdf0e10cSrcweir * Die Klasse SwNode2Layout stellt die Verbindung von Nodes zum Layout her. 30cdf0e10cSrcweir * Sie liefert einen intelligenten Iterator ueber die zum Node oder Nodebereich 31cdf0e10cSrcweir * gehoerenden Frames. Je nach Zweck der Iteration, z.B. um vor oder hinter 32cdf0e10cSrcweir * den Frames andere Frames einzufuegen, werden Master/Follows erkannt und nur 33cdf0e10cSrcweir * die relevanten zurueckgegeben. Auch wiederholte Tabellenueberschriften werden 34cdf0e10cSrcweir * beachtet. 35cdf0e10cSrcweir * Es ist auch moeglich, ueber SectionNodes zu iterieren, die durch Schachtelung 36cdf0e10cSrcweir * manchmal gar keinem SectionFrm direkt zugeordnet sind, manchmal aber sogar 37cdf0e10cSrcweir * mehreren. 38cdf0e10cSrcweir * SwNode2Layout ist ein Schnittstelle zwischen der aufrufenden Methode und 39cdf0e10cSrcweir * einem SwClientIter, sie waehlt je nach Aufgabenstellung das richtige 40cdf0e10cSrcweir * SwModify aus, erzeugt einen SwClientIter und filtert dessen Iterationen 41cdf0e10cSrcweir * je nach Aufgabenstellung. 42cdf0e10cSrcweir * Die Aufgabenstellung wird durch die Wahl des Ctors bestimmt. 43cdf0e10cSrcweir * 1. Das Einsammeln der UpperFrms, damit spaeter RestoreUpperFrms wird, 44cdf0e10cSrcweir * wird von MakeFrms gerufen, wenn es keinen PrevNext gibt, vor/hinter den 45cdf0e10cSrcweir * die Frames gehaengt werden koennen. 46cdf0e10cSrcweir * 2. Die Lieferung der Frames hinter/vor die die neuen Frames eines Nodes 47cdf0e10cSrcweir * gehaengt werden muessen, ebenfalls von MakeFrms gerufen. 48cdf0e10cSrcweir * --------------------------------------------------*/ 49cdf0e10cSrcweir 50cdf0e10cSrcweir class SwNode2LayImpl; 51cdf0e10cSrcweir class SwFrm; 52cdf0e10cSrcweir class SwLayoutFrm; 53cdf0e10cSrcweir class SwNode; 54cdf0e10cSrcweir class SwNodes; 55cdf0e10cSrcweir class Point; 56cdf0e10cSrcweir struct SwPosition; 57cdf0e10cSrcweir 58cdf0e10cSrcweir class SwNode2Layout 59cdf0e10cSrcweir { 60cdf0e10cSrcweir SwNode2LayImpl *pImpl; 61cdf0e10cSrcweir public: 62cdf0e10cSrcweir // Dieser Ctor ist zum Einsammeln der UpperFrms gedacht. 63cdf0e10cSrcweir SwNode2Layout( const SwNode& rNd ); 64cdf0e10cSrcweir // Dieser Ctor ist fuer das Einfuegen vor oder hinter rNd gedacht, 65cdf0e10cSrcweir // nIdx ist der Index des einzufuegenden Nodes 66cdf0e10cSrcweir SwNode2Layout( const SwNode& rNd, sal_uLong nIdx ); 67cdf0e10cSrcweir ~SwNode2Layout(); 68cdf0e10cSrcweir SwFrm* NextFrm(); 69cdf0e10cSrcweir SwLayoutFrm* UpperFrm( SwFrm* &rpFrm, const SwNode& rNode ); 70cdf0e10cSrcweir void RestoreUpperFrms( SwNodes& rNds, sal_uLong nStt, sal_uLong nEnd ); 71cdf0e10cSrcweir 72cdf0e10cSrcweir SwFrm *GetFrm( const Point* pDocPos = 0, 73cdf0e10cSrcweir const SwPosition *pPos = 0, 74cdf0e10cSrcweir const sal_Bool bCalcFrm = sal_True ) const; 75cdf0e10cSrcweir }; 76cdf0e10cSrcweir 77cdf0e10cSrcweir #endif 78