xref: /AOO41X/main/svx/source/sdr/contact/viewcontactofsdrpage.cxx (revision 47148b3bc50811ceb41802e4cc50a5db21535900)
1f6e50924SAndrew Rist /**************************************************************
2cdf0e10cSrcweir  *
3f6e50924SAndrew Rist  * Licensed to the Apache Software Foundation (ASF) under one
4f6e50924SAndrew Rist  * or more contributor license agreements.  See the NOTICE file
5f6e50924SAndrew Rist  * distributed with this work for additional information
6f6e50924SAndrew Rist  * regarding copyright ownership.  The ASF licenses this file
7f6e50924SAndrew Rist  * to you under the Apache License, Version 2.0 (the
8f6e50924SAndrew Rist  * "License"); you may not use this file except in compliance
9f6e50924SAndrew Rist  * with the License.  You may obtain a copy of the License at
10cdf0e10cSrcweir  *
11f6e50924SAndrew Rist  *   http://www.apache.org/licenses/LICENSE-2.0
12cdf0e10cSrcweir  *
13f6e50924SAndrew Rist  * Unless required by applicable law or agreed to in writing,
14f6e50924SAndrew Rist  * software distributed under the License is distributed on an
15f6e50924SAndrew Rist  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16f6e50924SAndrew Rist  * KIND, either express or implied.  See the License for the
17f6e50924SAndrew Rist  * specific language governing permissions and limitations
18f6e50924SAndrew Rist  * under the License.
19cdf0e10cSrcweir  *
20f6e50924SAndrew Rist  *************************************************************/
21f6e50924SAndrew Rist 
22f6e50924SAndrew Rist 
23cdf0e10cSrcweir 
24cdf0e10cSrcweir // MARKER(update_precomp.py): autogen include statement, do not remove
25cdf0e10cSrcweir #include "precompiled_svx.hxx"
26cdf0e10cSrcweir #include <svx/sdr/contact/viewcontactofsdrpage.hxx>
27cdf0e10cSrcweir #include <svx/sdr/contact/viewobjectcontact.hxx>
28cdf0e10cSrcweir #include <svx/svdpage.hxx>
29cdf0e10cSrcweir #include <svx/sdr/contact/displayinfo.hxx>
30cdf0e10cSrcweir #include <svx/sdr/contact/viewobjectcontactofsdrpage.hxx>
31cdf0e10cSrcweir #include <basegfx/polygon/b2dpolygontools.hxx>
32cdf0e10cSrcweir #include <basegfx/matrix/b2dhommatrix.hxx>
33cdf0e10cSrcweir #include <svx/svdpagv.hxx>
34cdf0e10cSrcweir #include <svx/svdview.hxx>
35cdf0e10cSrcweir #include <vcl/svapp.hxx>
36cdf0e10cSrcweir #include <svx/sdr/contact/objectcontact.hxx>
37cdf0e10cSrcweir #include <drawinglayer/primitive2d/backgroundcolorprimitive2d.hxx>
38cdf0e10cSrcweir #include <drawinglayer/primitive2d/polypolygonprimitive2d.hxx>
39cdf0e10cSrcweir #include <drawinglayer/primitive2d/polygonprimitive2d.hxx>
40cdf0e10cSrcweir #include <basegfx/polygon/b2dpolygon.hxx>
41cdf0e10cSrcweir #include <svx/sdr/primitive2d/sdrattributecreator.hxx>
42cdf0e10cSrcweir #include <svx/sdr/primitive2d/sdrdecompositiontools.hxx>
43cdf0e10cSrcweir #include <vcl/lazydelete.hxx>
44cdf0e10cSrcweir #include <svx/svdstr.hrc>
45cdf0e10cSrcweir #include <svx/svdglob.hxx>
46cdf0e10cSrcweir #include <drawinglayer/primitive2d/discreteshadowprimitive2d.hxx>
47cdf0e10cSrcweir #include <drawinglayer/attribute/sdrfillattribute.hxx>
48cdf0e10cSrcweir 
49cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////
50cdf0e10cSrcweir 
51cdf0e10cSrcweir #define PAPER_SHADOW(SIZE) (SIZE >> 8)
52cdf0e10cSrcweir 
53cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////
54cdf0e10cSrcweir 
55cdf0e10cSrcweir namespace sdr
56cdf0e10cSrcweir {
57cdf0e10cSrcweir     namespace contact
58cdf0e10cSrcweir     {
ViewContactOfPageSubObject(ViewContactOfSdrPage & rParentViewContactOfSdrPage)59cdf0e10cSrcweir         ViewContactOfPageSubObject::ViewContactOfPageSubObject(ViewContactOfSdrPage& rParentViewContactOfSdrPage)
60cdf0e10cSrcweir         :   mrParentViewContactOfSdrPage(rParentViewContactOfSdrPage)
61cdf0e10cSrcweir         {
62cdf0e10cSrcweir         }
63cdf0e10cSrcweir 
~ViewContactOfPageSubObject()64cdf0e10cSrcweir         ViewContactOfPageSubObject::~ViewContactOfPageSubObject()
65cdf0e10cSrcweir         {
66cdf0e10cSrcweir         }
67cdf0e10cSrcweir 
GetParentContact() const68cdf0e10cSrcweir         ViewContact* ViewContactOfPageSubObject::GetParentContact() const
69cdf0e10cSrcweir         {
70cdf0e10cSrcweir             return &mrParentViewContactOfSdrPage;
71cdf0e10cSrcweir         }
72cdf0e10cSrcweir 
getPage() const73cdf0e10cSrcweir         const SdrPage& ViewContactOfPageSubObject::getPage() const
74cdf0e10cSrcweir         {
75cdf0e10cSrcweir             return mrParentViewContactOfSdrPage.GetSdrPage();
76cdf0e10cSrcweir         }
77cdf0e10cSrcweir     } // end of namespace contact
78cdf0e10cSrcweir } // end of namespace sdr
79cdf0e10cSrcweir 
80cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////
81cdf0e10cSrcweir 
82cdf0e10cSrcweir namespace sdr
83cdf0e10cSrcweir {
84cdf0e10cSrcweir     namespace contact
85cdf0e10cSrcweir     {
CreateObjectSpecificViewObjectContact(ObjectContact & rObjectContact)86cdf0e10cSrcweir         ViewObjectContact& ViewContactOfPageBackground::CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact)
87cdf0e10cSrcweir         {
88cdf0e10cSrcweir             ViewObjectContact* pRetval = new ViewObjectContactOfPageBackground(rObjectContact, *this);
89cdf0e10cSrcweir             DBG_ASSERT(pRetval, "ViewContact::CreateObjectSpecificViewObjectContact() failed (!)");
90cdf0e10cSrcweir 
91cdf0e10cSrcweir             return *pRetval;
92cdf0e10cSrcweir         }
93cdf0e10cSrcweir 
createViewIndependentPrimitive2DSequence() const94cdf0e10cSrcweir         drawinglayer::primitive2d::Primitive2DSequence ViewContactOfPageBackground::createViewIndependentPrimitive2DSequence() const
95cdf0e10cSrcweir         {
96cdf0e10cSrcweir             // We have only the page information, not the view information. Use the
97cdf0e10cSrcweir             // svtools::DOCCOLOR color for initialisation
98cdf0e10cSrcweir             const svtools::ColorConfig aColorConfig;
99cdf0e10cSrcweir             const Color aInitColor(aColorConfig.GetColorValue(svtools::DOCCOLOR).nColor);
100cdf0e10cSrcweir             const basegfx::BColor aRGBColor(aInitColor.getBColor());
101cdf0e10cSrcweir             const drawinglayer::primitive2d::Primitive2DReference xReference(
102cdf0e10cSrcweir                 new drawinglayer::primitive2d::BackgroundColorPrimitive2D(aRGBColor));
103cdf0e10cSrcweir 
104cdf0e10cSrcweir             return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
105cdf0e10cSrcweir         }
106cdf0e10cSrcweir 
ViewContactOfPageBackground(ViewContactOfSdrPage & rParentViewContactOfSdrPage)107cdf0e10cSrcweir         ViewContactOfPageBackground::ViewContactOfPageBackground(ViewContactOfSdrPage& rParentViewContactOfSdrPage)
108cdf0e10cSrcweir         :   ViewContactOfPageSubObject(rParentViewContactOfSdrPage)
109cdf0e10cSrcweir         {
110cdf0e10cSrcweir         }
111cdf0e10cSrcweir 
~ViewContactOfPageBackground()112cdf0e10cSrcweir         ViewContactOfPageBackground::~ViewContactOfPageBackground()
113cdf0e10cSrcweir         {
114cdf0e10cSrcweir         }
115cdf0e10cSrcweir     } // end of namespace contact
116cdf0e10cSrcweir } // end of namespace sdr
117cdf0e10cSrcweir 
118cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////
119cdf0e10cSrcweir 
120cdf0e10cSrcweir namespace sdr
121cdf0e10cSrcweir {
122cdf0e10cSrcweir     namespace contact
123cdf0e10cSrcweir     {
CreateObjectSpecificViewObjectContact(ObjectContact & rObjectContact)124cdf0e10cSrcweir         ViewObjectContact& ViewContactOfPageShadow::CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact)
125cdf0e10cSrcweir         {
126cdf0e10cSrcweir             ViewObjectContact* pRetval = new ViewObjectContactOfPageShadow(rObjectContact, *this);
127cdf0e10cSrcweir             DBG_ASSERT(pRetval, "ViewContact::CreateObjectSpecificViewObjectContact() failed (!)");
128cdf0e10cSrcweir 
129cdf0e10cSrcweir             return *pRetval;
130cdf0e10cSrcweir         }
131cdf0e10cSrcweir 
createViewIndependentPrimitive2DSequence() const132cdf0e10cSrcweir         drawinglayer::primitive2d::Primitive2DSequence ViewContactOfPageShadow::createViewIndependentPrimitive2DSequence() const
133cdf0e10cSrcweir         {
134cdf0e10cSrcweir             static bool bUseOldPageShadow(false);
135cdf0e10cSrcweir             const SdrPage& rPage = getPage();
136cdf0e10cSrcweir             basegfx::B2DHomMatrix aPageMatrix;
137cdf0e10cSrcweir             aPageMatrix.set(0, 0, (double)rPage.GetWdt());
138cdf0e10cSrcweir             aPageMatrix.set(1, 1, (double)rPage.GetHgt());
139cdf0e10cSrcweir 
140cdf0e10cSrcweir             if(bUseOldPageShadow)
141cdf0e10cSrcweir             {
142cdf0e10cSrcweir                 // create page shadow polygon
143cdf0e10cSrcweir                 const double fPageBorderFactor(1.0 / 256.0);
144cdf0e10cSrcweir                 basegfx::B2DPolygon aPageShadowPolygon;
145cdf0e10cSrcweir                 aPageShadowPolygon.append(basegfx::B2DPoint(1.0, fPageBorderFactor));
146cdf0e10cSrcweir                 aPageShadowPolygon.append(basegfx::B2DPoint(1.0 + fPageBorderFactor, fPageBorderFactor));
147cdf0e10cSrcweir                 aPageShadowPolygon.append(basegfx::B2DPoint(1.0 + fPageBorderFactor, 1.0 + fPageBorderFactor));
148cdf0e10cSrcweir                 aPageShadowPolygon.append(basegfx::B2DPoint(fPageBorderFactor, 1.0 + fPageBorderFactor));
149cdf0e10cSrcweir                 aPageShadowPolygon.append(basegfx::B2DPoint(fPageBorderFactor, 1.0));
150cdf0e10cSrcweir                 aPageShadowPolygon.append(basegfx::B2DPoint(1.0, 1.0));
151cdf0e10cSrcweir                 aPageShadowPolygon.setClosed(true);
152cdf0e10cSrcweir                 aPageShadowPolygon.transform(aPageMatrix);
153cdf0e10cSrcweir 
154cdf0e10cSrcweir                 // We have only the page information, not the view information. Use the
155cdf0e10cSrcweir                 // svtools::FONTCOLOR color for initialisation
156cdf0e10cSrcweir                 const svtools::ColorConfig aColorConfig;
157cdf0e10cSrcweir                 const Color aShadowColor(aColorConfig.GetColorValue(svtools::FONTCOLOR).nColor);
158cdf0e10cSrcweir                 const basegfx::BColor aRGBShadowColor(aShadowColor.getBColor());
159cdf0e10cSrcweir                 const drawinglayer::primitive2d::Primitive2DReference xReference(
160cdf0e10cSrcweir                     new drawinglayer::primitive2d::PolyPolygonColorPrimitive2D(
161cdf0e10cSrcweir                         basegfx::B2DPolyPolygon(aPageShadowPolygon),
162cdf0e10cSrcweir                         aRGBShadowColor));
163cdf0e10cSrcweir 
164cdf0e10cSrcweir                 return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
165cdf0e10cSrcweir             }
166cdf0e10cSrcweir             else
167cdf0e10cSrcweir             {
168*6de8cae6SArmin Le Grand                 static vcl::DeleteOnDeinit< drawinglayer::primitive2d::DiscreteShadow > aDiscreteShadow(
169*6de8cae6SArmin Le Grand                     new drawinglayer::primitive2d::DiscreteShadow(
170*6de8cae6SArmin Le Grand                         BitmapEx(
171*6de8cae6SArmin Le Grand                             ResId(
172*6de8cae6SArmin Le Grand                                 SIP_SA_PAGESHADOW35X35,
173*6de8cae6SArmin Le Grand                                 *ImpGetResMgr()))));
174*6de8cae6SArmin Le Grand 
175*6de8cae6SArmin Le Grand                 if(aDiscreteShadow.get())
176cdf0e10cSrcweir                 {
177cdf0e10cSrcweir                     const drawinglayer::primitive2d::Primitive2DReference xReference(
178cdf0e10cSrcweir                         new drawinglayer::primitive2d::DiscreteShadowPrimitive2D(
179cdf0e10cSrcweir                             aPageMatrix,
180cdf0e10cSrcweir                             *aDiscreteShadow.get()));
181cdf0e10cSrcweir 
182cdf0e10cSrcweir                     return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
183cdf0e10cSrcweir                 }
184*6de8cae6SArmin Le Grand 
185cdf0e10cSrcweir                 return drawinglayer::primitive2d::Primitive2DSequence();
186cdf0e10cSrcweir             }
187cdf0e10cSrcweir         }
188cdf0e10cSrcweir 
ViewContactOfPageShadow(ViewContactOfSdrPage & rParentViewContactOfSdrPage)189cdf0e10cSrcweir         ViewContactOfPageShadow::ViewContactOfPageShadow(ViewContactOfSdrPage& rParentViewContactOfSdrPage)
190cdf0e10cSrcweir         :   ViewContactOfPageSubObject(rParentViewContactOfSdrPage)
191cdf0e10cSrcweir         {
192cdf0e10cSrcweir         }
193cdf0e10cSrcweir 
~ViewContactOfPageShadow()194cdf0e10cSrcweir         ViewContactOfPageShadow::~ViewContactOfPageShadow()
195cdf0e10cSrcweir         {
196cdf0e10cSrcweir         }
197cdf0e10cSrcweir     } // end of namespace contact
198cdf0e10cSrcweir } // end of namespace sdr
199cdf0e10cSrcweir 
200cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////
201cdf0e10cSrcweir 
202cdf0e10cSrcweir namespace sdr
203cdf0e10cSrcweir {
204cdf0e10cSrcweir     namespace contact
205cdf0e10cSrcweir     {
CreateObjectSpecificViewObjectContact(ObjectContact & rObjectContact)206cdf0e10cSrcweir         ViewObjectContact& ViewContactOfMasterPage::CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact)
207cdf0e10cSrcweir         {
208cdf0e10cSrcweir             ViewObjectContact* pRetval = new ViewObjectContactOfMasterPage(rObjectContact, *this);
209cdf0e10cSrcweir             DBG_ASSERT(pRetval, "ViewContact::CreateObjectSpecificViewObjectContact() failed (!)");
210cdf0e10cSrcweir 
211cdf0e10cSrcweir             return *pRetval;
212cdf0e10cSrcweir         }
213cdf0e10cSrcweir 
createViewIndependentPrimitive2DSequence() const214cdf0e10cSrcweir         drawinglayer::primitive2d::Primitive2DSequence ViewContactOfMasterPage::createViewIndependentPrimitive2DSequence() const
215cdf0e10cSrcweir         {
216cdf0e10cSrcweir             drawinglayer::primitive2d::Primitive2DSequence xRetval;
217cdf0e10cSrcweir 
218cdf0e10cSrcweir             // this class is used when the page is a MasterPage and is responsible to
219cdf0e10cSrcweir             // create a visualisation for the MPBGO, if exists. This needs to be suppressed
220cdf0e10cSrcweir             // when a SdrPage which uses a MasterPage creates it's output. Suppression
221cdf0e10cSrcweir             // is done in the corresponding VOC since DisplayInfo data is needed
222cdf0e10cSrcweir             const SdrPage& rPage = getPage();
223cdf0e10cSrcweir 
224cdf0e10cSrcweir             if(rPage.IsMasterPage())
225cdf0e10cSrcweir             {
226cdf0e10cSrcweir                 if(0 == rPage.GetPageNum())
227cdf0e10cSrcweir                 {
228cdf0e10cSrcweir                     // #i98063#
229cdf0e10cSrcweir                     // filter MasterPage 0 since it's the HandoutPage. Thus, it's a
230cdf0e10cSrcweir                     // MasterPage, but has no MPBGO, so there is nothing to do here.
231cdf0e10cSrcweir                 }
232cdf0e10cSrcweir                 else
233cdf0e10cSrcweir                 {
234cdf0e10cSrcweir                     drawinglayer::attribute::SdrFillAttribute aFill;
235cdf0e10cSrcweir 
236cdf0e10cSrcweir                     // #i110846# Suppress SdrPage FillStyle for MasterPages without StyleSheets,
237cdf0e10cSrcweir                     // else the PoolDefault (XFILL_COLOR and Blue8) will be used. Normally, all
238cdf0e10cSrcweir                     // MasterPages should have a StyleSheet excactly for this reason, but historically
239cdf0e10cSrcweir                     // e.g. the Notes MasterPage has no StyleSheet set (and there maybe others).
240cdf0e10cSrcweir                     if(rPage.getSdrPageProperties().GetStyleSheet())
241cdf0e10cSrcweir                     {
242cdf0e10cSrcweir                         // create page fill attributes with correct properties
243cdf0e10cSrcweir                         aFill = drawinglayer::primitive2d::createNewSdrFillAttribute(
244cdf0e10cSrcweir                             rPage.getSdrPageProperties().GetItemSet());
245cdf0e10cSrcweir                     }
246cdf0e10cSrcweir 
247cdf0e10cSrcweir                     if(!aFill.isDefault())
248cdf0e10cSrcweir                     {
249cdf0e10cSrcweir                         // direct model data is the page size, get and use it
250cdf0e10cSrcweir                         const basegfx::B2DRange aInnerRange(
251cdf0e10cSrcweir                             rPage.GetLftBorder(), rPage.GetUppBorder(),
252cdf0e10cSrcweir                             rPage.GetWdt() - rPage.GetRgtBorder(), rPage.GetHgt() - rPage.GetLwrBorder());
253cdf0e10cSrcweir                         const basegfx::B2DPolygon aInnerPolgon(basegfx::tools::createPolygonFromRect(aInnerRange));
254cdf0e10cSrcweir                         const basegfx::B2DHomMatrix aEmptyTransform;
255cdf0e10cSrcweir                         const drawinglayer::primitive2d::Primitive2DReference xReference(
256cdf0e10cSrcweir                             drawinglayer::primitive2d::createPolyPolygonFillPrimitive(
257cdf0e10cSrcweir                                 basegfx::B2DPolyPolygon(aInnerPolgon),
258cdf0e10cSrcweir                                 aEmptyTransform,
259cdf0e10cSrcweir                                 aFill,
260cdf0e10cSrcweir                                 drawinglayer::attribute::FillGradientAttribute()));
261cdf0e10cSrcweir 
262cdf0e10cSrcweir                         xRetval = drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
263cdf0e10cSrcweir                     }
264cdf0e10cSrcweir                 }
265cdf0e10cSrcweir             }
266cdf0e10cSrcweir 
267cdf0e10cSrcweir             return xRetval;
268cdf0e10cSrcweir         }
269cdf0e10cSrcweir 
ViewContactOfMasterPage(ViewContactOfSdrPage & rParentViewContactOfSdrPage)270cdf0e10cSrcweir         ViewContactOfMasterPage::ViewContactOfMasterPage(ViewContactOfSdrPage& rParentViewContactOfSdrPage)
271cdf0e10cSrcweir         :   ViewContactOfPageSubObject(rParentViewContactOfSdrPage)
272cdf0e10cSrcweir         {
273cdf0e10cSrcweir         }
274cdf0e10cSrcweir 
~ViewContactOfMasterPage()275cdf0e10cSrcweir         ViewContactOfMasterPage::~ViewContactOfMasterPage()
276cdf0e10cSrcweir         {
277cdf0e10cSrcweir         }
278cdf0e10cSrcweir     } // end of namespace contact
279cdf0e10cSrcweir } // end of namespace sdr
280cdf0e10cSrcweir 
281cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////
282cdf0e10cSrcweir 
283cdf0e10cSrcweir namespace sdr
284cdf0e10cSrcweir {
285cdf0e10cSrcweir     namespace contact
286cdf0e10cSrcweir     {
CreateObjectSpecificViewObjectContact(ObjectContact & rObjectContact)287cdf0e10cSrcweir         ViewObjectContact& ViewContactOfPageFill::CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact)
288cdf0e10cSrcweir         {
289cdf0e10cSrcweir             ViewObjectContact* pRetval = new ViewObjectContactOfPageFill(rObjectContact, *this);
290cdf0e10cSrcweir             DBG_ASSERT(pRetval, "ViewContact::CreateObjectSpecificViewObjectContact() failed (!)");
291cdf0e10cSrcweir 
292cdf0e10cSrcweir             return *pRetval;
293cdf0e10cSrcweir         }
294cdf0e10cSrcweir 
createViewIndependentPrimitive2DSequence() const295cdf0e10cSrcweir         drawinglayer::primitive2d::Primitive2DSequence ViewContactOfPageFill::createViewIndependentPrimitive2DSequence() const
296cdf0e10cSrcweir         {
297cdf0e10cSrcweir             const SdrPage& rPage = getPage();
298cdf0e10cSrcweir             const basegfx::B2DRange aPageFillRange(0.0, 0.0, (double)rPage.GetWdt(), (double)rPage.GetHgt());
299cdf0e10cSrcweir             const basegfx::B2DPolygon aPageFillPolygon(basegfx::tools::createPolygonFromRect(aPageFillRange));
300cdf0e10cSrcweir 
301cdf0e10cSrcweir             // We have only the page information, not the view information. Use the
302cdf0e10cSrcweir             // svtools::DOCCOLOR color for initialisation
303cdf0e10cSrcweir             const svtools::ColorConfig aColorConfig;
304cdf0e10cSrcweir             const Color aPageFillColor(aColorConfig.GetColorValue(svtools::DOCCOLOR).nColor);
305cdf0e10cSrcweir 
306cdf0e10cSrcweir             // create and add primitive
307cdf0e10cSrcweir             const basegfx::BColor aRGBColor(aPageFillColor.getBColor());
308cdf0e10cSrcweir             const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::PolyPolygonColorPrimitive2D(basegfx::B2DPolyPolygon(aPageFillPolygon), aRGBColor));
309cdf0e10cSrcweir 
310cdf0e10cSrcweir             return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
311cdf0e10cSrcweir         }
312cdf0e10cSrcweir 
ViewContactOfPageFill(ViewContactOfSdrPage & rParentViewContactOfSdrPage)313cdf0e10cSrcweir         ViewContactOfPageFill::ViewContactOfPageFill(ViewContactOfSdrPage& rParentViewContactOfSdrPage)
314cdf0e10cSrcweir         :   ViewContactOfPageSubObject(rParentViewContactOfSdrPage)
315cdf0e10cSrcweir         {
316cdf0e10cSrcweir         }
317cdf0e10cSrcweir 
~ViewContactOfPageFill()318cdf0e10cSrcweir         ViewContactOfPageFill::~ViewContactOfPageFill()
319cdf0e10cSrcweir         {
320cdf0e10cSrcweir         }
321cdf0e10cSrcweir     } // end of namespace contact
322cdf0e10cSrcweir } // end of namespace sdr
323cdf0e10cSrcweir 
324cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////
325cdf0e10cSrcweir 
326cdf0e10cSrcweir namespace sdr
327cdf0e10cSrcweir {
328cdf0e10cSrcweir     namespace contact
329cdf0e10cSrcweir     {
CreateObjectSpecificViewObjectContact(ObjectContact & rObjectContact)330cdf0e10cSrcweir         ViewObjectContact& ViewContactOfOuterPageBorder::CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact)
331cdf0e10cSrcweir         {
332cdf0e10cSrcweir             ViewObjectContact* pRetval = new ViewObjectContactOfOuterPageBorder(rObjectContact, *this);
333cdf0e10cSrcweir             DBG_ASSERT(pRetval, "ViewContact::CreateObjectSpecificViewObjectContact() failed (!)");
334cdf0e10cSrcweir 
335cdf0e10cSrcweir             return *pRetval;
336cdf0e10cSrcweir         }
337cdf0e10cSrcweir 
createViewIndependentPrimitive2DSequence() const338cdf0e10cSrcweir         drawinglayer::primitive2d::Primitive2DSequence ViewContactOfOuterPageBorder::createViewIndependentPrimitive2DSequence() const
339cdf0e10cSrcweir         {
340cdf0e10cSrcweir             drawinglayer::primitive2d::Primitive2DSequence xRetval;
341cdf0e10cSrcweir             const SdrPage& rPage = getPage();
342cdf0e10cSrcweir             const basegfx::B2DRange aPageBorderRange(0.0, 0.0, (double)rPage.GetWdt(), (double)rPage.GetHgt());
343cdf0e10cSrcweir 
344cdf0e10cSrcweir             // Changed to 0x949599 for renaissance, before svtools::FONTCOLOR was used.
345cdf0e10cSrcweir             // Added old case as fallback for HighContrast.
346cdf0e10cSrcweir             basegfx::BColor aRGBBorderColor(0x94 / (double)0xff, 0x95 / (double)0xff, 0x99 / (double)0xff);
347cdf0e10cSrcweir 
348cdf0e10cSrcweir             if(Application::GetSettings().GetStyleSettings().GetHighContrastMode())
349cdf0e10cSrcweir             {
350cdf0e10cSrcweir                 const svtools::ColorConfig aColorConfig;
351cdf0e10cSrcweir                 const Color aBorderColor(aColorConfig.GetColorValue(svtools::FONTCOLOR).nColor);
352cdf0e10cSrcweir 
353cdf0e10cSrcweir                 aRGBBorderColor = aBorderColor.getBColor();
354cdf0e10cSrcweir             }
355cdf0e10cSrcweir 
356cdf0e10cSrcweir             if(rPage.getPageBorderOnlyLeftRight())
357cdf0e10cSrcweir             {
358cdf0e10cSrcweir                 // #i93597# for Report Designer, the page border shall be only displayed right and left,
359cdf0e10cSrcweir                 // but not top and bottom. Create simplified geometry.
360cdf0e10cSrcweir                 basegfx::B2DPolygon aLeft, aRight;
361cdf0e10cSrcweir 
362cdf0e10cSrcweir                 aLeft.append(basegfx::B2DPoint(aPageBorderRange.getMinX(), aPageBorderRange.getMinY()));
363cdf0e10cSrcweir                 aLeft.append(basegfx::B2DPoint(aPageBorderRange.getMinX(), aPageBorderRange.getMaxY()));
364cdf0e10cSrcweir 
365cdf0e10cSrcweir                 aRight.append(basegfx::B2DPoint(aPageBorderRange.getMaxX(), aPageBorderRange.getMinY()));
366cdf0e10cSrcweir                 aRight.append(basegfx::B2DPoint(aPageBorderRange.getMaxX(), aPageBorderRange.getMaxY()));
367cdf0e10cSrcweir 
368cdf0e10cSrcweir                 xRetval.realloc(2);
369cdf0e10cSrcweir                 xRetval[0] = drawinglayer::primitive2d::Primitive2DReference(new drawinglayer::primitive2d::PolygonHairlinePrimitive2D(aLeft, aRGBBorderColor));
370cdf0e10cSrcweir                 xRetval[1] = drawinglayer::primitive2d::Primitive2DReference(new drawinglayer::primitive2d::PolygonHairlinePrimitive2D(aRight, aRGBBorderColor));
371cdf0e10cSrcweir             }
372cdf0e10cSrcweir             else
373cdf0e10cSrcweir             {
374cdf0e10cSrcweir                 xRetval.realloc(1);
375cdf0e10cSrcweir                 const basegfx::B2DPolygon aPageBorderPolygon(basegfx::tools::createPolygonFromRect(aPageBorderRange));
376cdf0e10cSrcweir                 xRetval[0] = drawinglayer::primitive2d::Primitive2DReference(new drawinglayer::primitive2d::PolygonHairlinePrimitive2D(aPageBorderPolygon, aRGBBorderColor));
377cdf0e10cSrcweir             }
378cdf0e10cSrcweir 
379cdf0e10cSrcweir             return xRetval;
380cdf0e10cSrcweir         }
381cdf0e10cSrcweir 
ViewContactOfOuterPageBorder(ViewContactOfSdrPage & rParentViewContactOfSdrPage)382cdf0e10cSrcweir         ViewContactOfOuterPageBorder::ViewContactOfOuterPageBorder(ViewContactOfSdrPage& rParentViewContactOfSdrPage)
383cdf0e10cSrcweir         :   ViewContactOfPageSubObject(rParentViewContactOfSdrPage)
384cdf0e10cSrcweir         {
385cdf0e10cSrcweir         }
386cdf0e10cSrcweir 
~ViewContactOfOuterPageBorder()387cdf0e10cSrcweir         ViewContactOfOuterPageBorder::~ViewContactOfOuterPageBorder()
388cdf0e10cSrcweir         {
389cdf0e10cSrcweir         }
390cdf0e10cSrcweir     } // end of namespace contact
391cdf0e10cSrcweir } // end of namespace sdr
392cdf0e10cSrcweir 
393cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////
394cdf0e10cSrcweir 
395cdf0e10cSrcweir namespace sdr
396cdf0e10cSrcweir {
397cdf0e10cSrcweir     namespace contact
398cdf0e10cSrcweir     {
CreateObjectSpecificViewObjectContact(ObjectContact & rObjectContact)399cdf0e10cSrcweir         ViewObjectContact& ViewContactOfInnerPageBorder::CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact)
400cdf0e10cSrcweir         {
401cdf0e10cSrcweir             ViewObjectContact* pRetval = new ViewObjectContactOfInnerPageBorder(rObjectContact, *this);
402cdf0e10cSrcweir             DBG_ASSERT(pRetval, "ViewContact::CreateObjectSpecificViewObjectContact() failed (!)");
403cdf0e10cSrcweir 
404cdf0e10cSrcweir             return *pRetval;
405cdf0e10cSrcweir         }
406cdf0e10cSrcweir 
createViewIndependentPrimitive2DSequence() const407cdf0e10cSrcweir         drawinglayer::primitive2d::Primitive2DSequence ViewContactOfInnerPageBorder::createViewIndependentPrimitive2DSequence() const
408cdf0e10cSrcweir         {
409cdf0e10cSrcweir             const SdrPage& rPage = getPage();
410cdf0e10cSrcweir             const basegfx::B2DRange aPageBorderRange(
411cdf0e10cSrcweir                 (double)rPage.GetLftBorder(), (double)rPage.GetUppBorder(),
412cdf0e10cSrcweir                 (double)(rPage.GetWdt() - rPage.GetRgtBorder()), (double)(rPage.GetHgt() - rPage.GetLwrBorder()));
413cdf0e10cSrcweir             const basegfx::B2DPolygon aPageBorderPolygon(basegfx::tools::createPolygonFromRect(aPageBorderRange));
414cdf0e10cSrcweir 
415cdf0e10cSrcweir             // We have only the page information, not the view information. Use the
416cdf0e10cSrcweir             // svtools::FONTCOLOR or svtools::DOCBOUNDARIES color for initialisation
417cdf0e10cSrcweir             const svtools::ColorConfig aColorConfig;
418cdf0e10cSrcweir             Color aBorderColor;
419cdf0e10cSrcweir 
420cdf0e10cSrcweir             if(Application::GetSettings().GetStyleSettings().GetHighContrastMode())
421cdf0e10cSrcweir             {
422cdf0e10cSrcweir                 aBorderColor = aColorConfig.GetColorValue(svtools::FONTCOLOR).nColor;
423cdf0e10cSrcweir             }
424cdf0e10cSrcweir             else
425cdf0e10cSrcweir             {
426cdf0e10cSrcweir                 aBorderColor = aColorConfig.GetColorValue(svtools::DOCBOUNDARIES).nColor;
427cdf0e10cSrcweir             }
428cdf0e10cSrcweir 
429cdf0e10cSrcweir             // create page outer border primitive
430cdf0e10cSrcweir             const basegfx::BColor aRGBBorderColor(aBorderColor.getBColor());
431cdf0e10cSrcweir             const drawinglayer::primitive2d::Primitive2DReference xReference(new drawinglayer::primitive2d::PolygonHairlinePrimitive2D(aPageBorderPolygon, aRGBBorderColor));
432cdf0e10cSrcweir 
433cdf0e10cSrcweir             return drawinglayer::primitive2d::Primitive2DSequence(&xReference, 1);
434cdf0e10cSrcweir         }
435cdf0e10cSrcweir 
ViewContactOfInnerPageBorder(ViewContactOfSdrPage & rParentViewContactOfSdrPage)436cdf0e10cSrcweir         ViewContactOfInnerPageBorder::ViewContactOfInnerPageBorder(ViewContactOfSdrPage& rParentViewContactOfSdrPage)
437cdf0e10cSrcweir         :   ViewContactOfPageSubObject(rParentViewContactOfSdrPage)
438cdf0e10cSrcweir         {
439cdf0e10cSrcweir         }
440cdf0e10cSrcweir 
~ViewContactOfInnerPageBorder()441cdf0e10cSrcweir         ViewContactOfInnerPageBorder::~ViewContactOfInnerPageBorder()
442cdf0e10cSrcweir         {
443cdf0e10cSrcweir         }
444cdf0e10cSrcweir     } // end of namespace contact
445cdf0e10cSrcweir } // end of namespace sdr
446cdf0e10cSrcweir 
447cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////
448cdf0e10cSrcweir 
449cdf0e10cSrcweir namespace sdr
450cdf0e10cSrcweir {
451cdf0e10cSrcweir     namespace contact
452cdf0e10cSrcweir     {
CreateObjectSpecificViewObjectContact(ObjectContact & rObjectContact)453cdf0e10cSrcweir         ViewObjectContact& ViewContactOfPageHierarchy::CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact)
454cdf0e10cSrcweir         {
455cdf0e10cSrcweir             ViewObjectContact* pRetval = new ViewObjectContactOfPageHierarchy(rObjectContact, *this);
456cdf0e10cSrcweir             DBG_ASSERT(pRetval, "ViewContact::CreateObjectSpecificViewObjectContact() failed (!)");
457cdf0e10cSrcweir 
458cdf0e10cSrcweir             return *pRetval;
459cdf0e10cSrcweir         }
460cdf0e10cSrcweir 
createViewIndependentPrimitive2DSequence() const461cdf0e10cSrcweir         drawinglayer::primitive2d::Primitive2DSequence ViewContactOfPageHierarchy::createViewIndependentPrimitive2DSequence() const
462cdf0e10cSrcweir         {
463cdf0e10cSrcweir             // collect sub-hierarchy
464cdf0e10cSrcweir             drawinglayer::primitive2d::Primitive2DSequence xRetval;
465cdf0e10cSrcweir             const sal_uInt32 nObjectCount(GetObjectCount());
466cdf0e10cSrcweir 
467cdf0e10cSrcweir             // collect all sub-primitives
468cdf0e10cSrcweir             for(sal_uInt32 a(0); a < nObjectCount; a++)
469cdf0e10cSrcweir             {
470cdf0e10cSrcweir                 const ViewContact& rCandidate(GetViewContact(a));
471cdf0e10cSrcweir                 const drawinglayer::primitive2d::Primitive2DSequence aCandSeq(rCandidate.getViewIndependentPrimitive2DSequence());
472cdf0e10cSrcweir 
473cdf0e10cSrcweir                 drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(xRetval, aCandSeq);
474cdf0e10cSrcweir             }
475cdf0e10cSrcweir 
476cdf0e10cSrcweir             return xRetval;
477cdf0e10cSrcweir         }
478cdf0e10cSrcweir 
ViewContactOfPageHierarchy(ViewContactOfSdrPage & rParentViewContactOfSdrPage)479cdf0e10cSrcweir         ViewContactOfPageHierarchy::ViewContactOfPageHierarchy(ViewContactOfSdrPage& rParentViewContactOfSdrPage)
480cdf0e10cSrcweir         :   ViewContactOfPageSubObject(rParentViewContactOfSdrPage)
481cdf0e10cSrcweir         {
482cdf0e10cSrcweir         }
483cdf0e10cSrcweir 
~ViewContactOfPageHierarchy()484cdf0e10cSrcweir         ViewContactOfPageHierarchy::~ViewContactOfPageHierarchy()
485cdf0e10cSrcweir         {
486cdf0e10cSrcweir         }
487cdf0e10cSrcweir 
GetObjectCount() const488cdf0e10cSrcweir         sal_uInt32 ViewContactOfPageHierarchy::GetObjectCount() const
489cdf0e10cSrcweir         {
490cdf0e10cSrcweir             return getPage().GetObjCount();
491cdf0e10cSrcweir         }
492cdf0e10cSrcweir 
GetViewContact(sal_uInt32 nIndex) const493cdf0e10cSrcweir         ViewContact& ViewContactOfPageHierarchy::GetViewContact(sal_uInt32 nIndex) const
494cdf0e10cSrcweir         {
495cdf0e10cSrcweir             SdrObject* pObj = getPage().GetObj(nIndex);
496cdf0e10cSrcweir             DBG_ASSERT(pObj, "ViewContactOfPageHierarchy::GetViewContact: Corrupt SdrObjList (!)");
497cdf0e10cSrcweir             return pObj->GetViewContact();
498cdf0e10cSrcweir         }
499cdf0e10cSrcweir     } // end of namespace contact
500cdf0e10cSrcweir } // end of namespace sdr
501cdf0e10cSrcweir 
502cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////
503cdf0e10cSrcweir 
504cdf0e10cSrcweir namespace sdr
505cdf0e10cSrcweir {
506cdf0e10cSrcweir     namespace contact
507cdf0e10cSrcweir     {
CreateObjectSpecificViewObjectContact(ObjectContact & rObjectContact)508cdf0e10cSrcweir         ViewObjectContact& ViewContactOfGrid::CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact)
509cdf0e10cSrcweir         {
510cdf0e10cSrcweir             ViewObjectContact* pRetval = new ViewObjectContactOfPageGrid(rObjectContact, *this);
511cdf0e10cSrcweir             DBG_ASSERT(pRetval, "ViewContact::CreateObjectSpecificViewObjectContact() failed (!)");
512cdf0e10cSrcweir 
513cdf0e10cSrcweir             return *pRetval;
514cdf0e10cSrcweir         }
515cdf0e10cSrcweir 
createViewIndependentPrimitive2DSequence() const516cdf0e10cSrcweir         drawinglayer::primitive2d::Primitive2DSequence ViewContactOfGrid::createViewIndependentPrimitive2DSequence() const
517cdf0e10cSrcweir         {
518cdf0e10cSrcweir             // We have only the page information, not the view information and thus no grid settings. Create empty
519cdf0e10cSrcweir             // default. For the view-dependent implementation, see ViewObjectContactOfPageGrid::createPrimitive2DSequence
520cdf0e10cSrcweir             return drawinglayer::primitive2d::Primitive2DSequence();
521cdf0e10cSrcweir         }
522cdf0e10cSrcweir 
ViewContactOfGrid(ViewContactOfSdrPage & rParentViewContactOfSdrPage,bool bFront)523cdf0e10cSrcweir         ViewContactOfGrid::ViewContactOfGrid(ViewContactOfSdrPage& rParentViewContactOfSdrPage, bool bFront)
524cdf0e10cSrcweir         :   ViewContactOfPageSubObject(rParentViewContactOfSdrPage),
525cdf0e10cSrcweir             mbFront(bFront)
526cdf0e10cSrcweir         {
527cdf0e10cSrcweir         }
528cdf0e10cSrcweir 
~ViewContactOfGrid()529cdf0e10cSrcweir         ViewContactOfGrid::~ViewContactOfGrid()
530cdf0e10cSrcweir         {
531cdf0e10cSrcweir         }
532cdf0e10cSrcweir     } // end of namespace contact
533cdf0e10cSrcweir } // end of namespace sdr
534cdf0e10cSrcweir 
535cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////
536cdf0e10cSrcweir 
537cdf0e10cSrcweir namespace sdr
538cdf0e10cSrcweir {
539cdf0e10cSrcweir     namespace contact
540cdf0e10cSrcweir     {
CreateObjectSpecificViewObjectContact(ObjectContact & rObjectContact)541cdf0e10cSrcweir         ViewObjectContact& ViewContactOfHelplines::CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact)
542cdf0e10cSrcweir         {
543cdf0e10cSrcweir             ViewObjectContact* pRetval = new ViewObjectContactOfPageHelplines(rObjectContact, *this);
544cdf0e10cSrcweir             DBG_ASSERT(pRetval, "ViewContact::CreateObjectSpecificViewObjectContact() failed (!)");
545cdf0e10cSrcweir 
546cdf0e10cSrcweir             return *pRetval;
547cdf0e10cSrcweir         }
548cdf0e10cSrcweir 
createViewIndependentPrimitive2DSequence() const549cdf0e10cSrcweir         drawinglayer::primitive2d::Primitive2DSequence ViewContactOfHelplines::createViewIndependentPrimitive2DSequence() const
550cdf0e10cSrcweir         {
551cdf0e10cSrcweir             // We have only the page information, not the view information and thus no helplines. Create empty
552cdf0e10cSrcweir             // default. For the view-dependent implementation, see ViewObjectContactOfPageHelplines::createPrimitive2DSequence
553cdf0e10cSrcweir             return drawinglayer::primitive2d::Primitive2DSequence();
554cdf0e10cSrcweir         }
555cdf0e10cSrcweir 
ViewContactOfHelplines(ViewContactOfSdrPage & rParentViewContactOfSdrPage,bool bFront)556cdf0e10cSrcweir         ViewContactOfHelplines::ViewContactOfHelplines(ViewContactOfSdrPage& rParentViewContactOfSdrPage, bool bFront)
557cdf0e10cSrcweir         :   ViewContactOfPageSubObject(rParentViewContactOfSdrPage),
558cdf0e10cSrcweir             mbFront(bFront)
559cdf0e10cSrcweir         {
560cdf0e10cSrcweir         }
561cdf0e10cSrcweir 
~ViewContactOfHelplines()562cdf0e10cSrcweir         ViewContactOfHelplines::~ViewContactOfHelplines()
563cdf0e10cSrcweir         {
564cdf0e10cSrcweir         }
565cdf0e10cSrcweir     } // end of namespace contact
566cdf0e10cSrcweir } // end of namespace sdr
567cdf0e10cSrcweir 
568cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////
569cdf0e10cSrcweir 
570cdf0e10cSrcweir namespace sdr
571cdf0e10cSrcweir {
572cdf0e10cSrcweir     namespace contact
573cdf0e10cSrcweir     {
574cdf0e10cSrcweir         // Create a Object-Specific ViewObjectContact, set ViewContact and
575cdf0e10cSrcweir         // ObjectContact. Always needs to return something.
CreateObjectSpecificViewObjectContact(ObjectContact & rObjectContact)576cdf0e10cSrcweir         ViewObjectContact& ViewContactOfSdrPage::CreateObjectSpecificViewObjectContact(ObjectContact& rObjectContact)
577cdf0e10cSrcweir         {
578cdf0e10cSrcweir             ViewObjectContact* pRetval = new ViewObjectContactOfSdrPage(rObjectContact, *this);
579cdf0e10cSrcweir             DBG_ASSERT(pRetval, "ViewContact::CreateObjectSpecificViewObjectContact() failed (!)");
580cdf0e10cSrcweir 
581cdf0e10cSrcweir             return *pRetval;
582cdf0e10cSrcweir         }
583cdf0e10cSrcweir 
ViewContactOfSdrPage(SdrPage & rPage)584cdf0e10cSrcweir         ViewContactOfSdrPage::ViewContactOfSdrPage(SdrPage& rPage)
585cdf0e10cSrcweir         :   ViewContact(),
586cdf0e10cSrcweir             mrPage(rPage),
587cdf0e10cSrcweir             maViewContactOfPageBackground(*this),
588cdf0e10cSrcweir             maViewContactOfPageShadow(*this),
589cdf0e10cSrcweir             maViewContactOfPageFill(*this),
590cdf0e10cSrcweir             maViewContactOfMasterPage(*this),
591cdf0e10cSrcweir             maViewContactOfOuterPageBorder(*this),
592cdf0e10cSrcweir             maViewContactOfInnerPageBorder(*this),
593cdf0e10cSrcweir             maViewContactOfGridBack(*this, false),
594cdf0e10cSrcweir             maViewContactOfHelplinesBack(*this, false),
595cdf0e10cSrcweir             maViewContactOfPageHierarchy(*this),
596cdf0e10cSrcweir             maViewContactOfGridFront(*this, true),
597cdf0e10cSrcweir             maViewContactOfHelplinesFront(*this, true)
598cdf0e10cSrcweir         {
599cdf0e10cSrcweir         }
600cdf0e10cSrcweir 
~ViewContactOfSdrPage()601cdf0e10cSrcweir         ViewContactOfSdrPage::~ViewContactOfSdrPage()
602cdf0e10cSrcweir         {
603cdf0e10cSrcweir         }
604cdf0e10cSrcweir 
605cdf0e10cSrcweir         // Access to possible sub-hierarchy
GetObjectCount() const606cdf0e10cSrcweir         sal_uInt32 ViewContactOfSdrPage::GetObjectCount() const
607cdf0e10cSrcweir         {
608cdf0e10cSrcweir             // Fixed count of content. It contains PageBackground (Wiese), PageShadow, PageFill,
609cdf0e10cSrcweir             // then - depending on if the page has a MasterPage - either MasterPage Hierarchy
610cdf0e10cSrcweir             // or MPBGO. Also OuterPageBorder, InnerPageBorder and two pairs of Grid and Helplines
611cdf0e10cSrcweir             // (for front and back) which internally are visible or not depending on the current
612cdf0e10cSrcweir             // front/back setting for those.
613cdf0e10cSrcweir             return 11;
614cdf0e10cSrcweir         }
615cdf0e10cSrcweir 
GetViewContact(sal_uInt32 nIndex) const616cdf0e10cSrcweir         ViewContact& ViewContactOfSdrPage::GetViewContact(sal_uInt32 nIndex) const
617cdf0e10cSrcweir         {
618cdf0e10cSrcweir             switch(nIndex)
619cdf0e10cSrcweir             {
620cdf0e10cSrcweir                 case 0: return (ViewContact&)maViewContactOfPageBackground;
621cdf0e10cSrcweir                 case 1: return (ViewContact&)maViewContactOfPageShadow;
622cdf0e10cSrcweir                 case 2: return (ViewContact&)maViewContactOfPageFill;
623cdf0e10cSrcweir                 case 3:
624cdf0e10cSrcweir                 {
625cdf0e10cSrcweir                     const SdrPage& rPage = GetSdrPage();
626cdf0e10cSrcweir 
627cdf0e10cSrcweir                     if(rPage.TRG_HasMasterPage())
628cdf0e10cSrcweir                     {
629cdf0e10cSrcweir                         return rPage.TRG_GetMasterPageDescriptorViewContact();
630cdf0e10cSrcweir                     }
631cdf0e10cSrcweir                     else
632cdf0e10cSrcweir                     {
633cdf0e10cSrcweir                         return (ViewContact&)maViewContactOfMasterPage;
634cdf0e10cSrcweir                     }
635cdf0e10cSrcweir                 }
636cdf0e10cSrcweir                 case 4: return (ViewContact&)maViewContactOfOuterPageBorder;
637cdf0e10cSrcweir                 case 5: return (ViewContact&)maViewContactOfInnerPageBorder;
638cdf0e10cSrcweir                 case 6: return (ViewContact&)maViewContactOfGridBack;
639cdf0e10cSrcweir                 case 7: return (ViewContact&)maViewContactOfHelplinesBack;
640cdf0e10cSrcweir                 case 8: return (ViewContact&)maViewContactOfPageHierarchy;
641cdf0e10cSrcweir                 case 9: return (ViewContact&)maViewContactOfGridFront;
642cdf0e10cSrcweir                 default: return (ViewContact&)maViewContactOfHelplinesFront;
643cdf0e10cSrcweir             }
644cdf0e10cSrcweir         }
645cdf0e10cSrcweir 
646cdf0e10cSrcweir         // React on changes of the object of this ViewContact
ActionChanged()647cdf0e10cSrcweir         void ViewContactOfSdrPage::ActionChanged()
648cdf0e10cSrcweir         {
649cdf0e10cSrcweir             // call parent
650cdf0e10cSrcweir             ViewContact::ActionChanged();
651cdf0e10cSrcweir 
652cdf0e10cSrcweir             // apply to local viewContacts, they all rely on page information. Exception
653cdf0e10cSrcweir             // is the sub hierarchy; this will not be influenced by the change
654cdf0e10cSrcweir             maViewContactOfPageBackground.ActionChanged();
655cdf0e10cSrcweir             maViewContactOfPageShadow.ActionChanged();
656cdf0e10cSrcweir             maViewContactOfPageFill.ActionChanged();
657cdf0e10cSrcweir 
658cdf0e10cSrcweir             const SdrPage& rPage = GetSdrPage();
659cdf0e10cSrcweir 
660cdf0e10cSrcweir             if(rPage.TRG_HasMasterPage())
661cdf0e10cSrcweir             {
662cdf0e10cSrcweir                 rPage.TRG_GetMasterPageDescriptorViewContact().ActionChanged();
663cdf0e10cSrcweir             }
664cdf0e10cSrcweir             else if(rPage.IsMasterPage())
665cdf0e10cSrcweir             {
666cdf0e10cSrcweir                 maViewContactOfMasterPage.ActionChanged();
667cdf0e10cSrcweir             }
668cdf0e10cSrcweir 
669cdf0e10cSrcweir             maViewContactOfOuterPageBorder.ActionChanged();
670cdf0e10cSrcweir             maViewContactOfInnerPageBorder.ActionChanged();
671cdf0e10cSrcweir             maViewContactOfGridBack.ActionChanged();
672cdf0e10cSrcweir             maViewContactOfHelplinesBack.ActionChanged();
673cdf0e10cSrcweir             maViewContactOfGridFront.ActionChanged();
674cdf0e10cSrcweir             maViewContactOfHelplinesFront.ActionChanged();
675cdf0e10cSrcweir         }
676cdf0e10cSrcweir 
677cdf0e10cSrcweir         // overload for acessing the SdrPage
TryToGetSdrPage() const678cdf0e10cSrcweir         SdrPage* ViewContactOfSdrPage::TryToGetSdrPage() const
679cdf0e10cSrcweir         {
680cdf0e10cSrcweir             return &GetSdrPage();
681cdf0e10cSrcweir         }
682cdf0e10cSrcweir 
createViewIndependentPrimitive2DSequence() const683cdf0e10cSrcweir         drawinglayer::primitive2d::Primitive2DSequence ViewContactOfSdrPage::createViewIndependentPrimitive2DSequence() const
684cdf0e10cSrcweir         {
685cdf0e10cSrcweir             drawinglayer::primitive2d::Primitive2DSequence xRetval;
686cdf0e10cSrcweir 
687cdf0e10cSrcweir             // collect all sub-sequences including sub hierarchy.
688cdf0e10cSrcweir             drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(xRetval, maViewContactOfPageBackground.getViewIndependentPrimitive2DSequence());
689cdf0e10cSrcweir             drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(xRetval, maViewContactOfPageShadow.getViewIndependentPrimitive2DSequence());
690cdf0e10cSrcweir             drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(xRetval, maViewContactOfPageFill.getViewIndependentPrimitive2DSequence());
691cdf0e10cSrcweir 
692cdf0e10cSrcweir             const SdrPage& rPage = GetSdrPage();
693cdf0e10cSrcweir 
694cdf0e10cSrcweir             if(rPage.TRG_HasMasterPage())
695cdf0e10cSrcweir             {
696cdf0e10cSrcweir                 drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(xRetval,
697cdf0e10cSrcweir                     rPage.TRG_GetMasterPageDescriptorViewContact().getViewIndependentPrimitive2DSequence());
698cdf0e10cSrcweir             }
699cdf0e10cSrcweir             else if(rPage.IsMasterPage())
700cdf0e10cSrcweir             {
701cdf0e10cSrcweir                 drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(xRetval,
702cdf0e10cSrcweir                     maViewContactOfMasterPage.getViewIndependentPrimitive2DSequence());
703cdf0e10cSrcweir             }
704cdf0e10cSrcweir 
705cdf0e10cSrcweir             drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(xRetval, maViewContactOfOuterPageBorder.getViewIndependentPrimitive2DSequence());
706cdf0e10cSrcweir             drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(xRetval, maViewContactOfInnerPageBorder.getViewIndependentPrimitive2DSequence());
707cdf0e10cSrcweir             drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(xRetval, maViewContactOfPageHierarchy.getViewIndependentPrimitive2DSequence());
708cdf0e10cSrcweir 
709cdf0e10cSrcweir             // Only add front versions of grid and helplines since no visibility test is done,
710cdf0e10cSrcweir             // so adding the back incarnations is not necessary. This makes the Front
711cdf0e10cSrcweir             // visualisation the default when no visibility tests are done.
712cdf0e10cSrcweir             //
713cdf0e10cSrcweir             // Since we have no view here, no grid and helpline definitions are available currently. The used
714cdf0e10cSrcweir             // methods at ViewContactOfHelplines and ViewContactOfGrid return only empty sequences and
715cdf0e10cSrcweir             // do not need to be called ATM. This may change later if grid or helpline info gets
716cdf0e10cSrcweir             // model data (it should not). Keeping the lines commented to hold this hint.
717cdf0e10cSrcweir             //
718cdf0e10cSrcweir             // drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(xRetval, maViewContactOfGridFront.getViewIndependentPrimitive2DSequence());
719cdf0e10cSrcweir             // drawinglayer::primitive2d::appendPrimitive2DSequenceToPrimitive2DSequence(xRetval, maViewContactOfHelplinesFront.getViewIndependentPrimitive2DSequence());
720cdf0e10cSrcweir 
721cdf0e10cSrcweir             return xRetval;
722cdf0e10cSrcweir         }
723cdf0e10cSrcweir     } // end of namespace contact
724cdf0e10cSrcweir } // end of namespace sdr
725cdf0e10cSrcweir 
726cdf0e10cSrcweir //////////////////////////////////////////////////////////////////////////////
727cdf0e10cSrcweir // eof
728