xref: /trunk/main/sw/source/ui/app/docshdrw.cxx (revision 26ea3662)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 // MARKER(update_precomp.py): autogen include statement, do not remove
23 #include "precompiled_sw.hxx"
24 
25 #include <hintids.hxx>
26 #include <svx/svxids.hrc>
27 #include <svl/stritem.hxx>
28 #include <svx/drawitem.hxx>
29 #include <svx/svdmodel.hxx>
30 #include <svx/svdoutl.hxx>
31 #include <svx/xtable.hxx>
32 #include <docsh.hxx>
33 #include <doc.hxx>
34 #include <drawdoc.hxx>
35 
36 using namespace ::com::sun::star;
37 
38 /*--------------------------------------------------------------------
39 	Beschreibung: Document laden
40  --------------------------------------------------------------------*/
41 
InitDrawModelAndDocShell(SwDocShell * pSwDocShell,SwDrawModel * pSwDrawDocument)42 void InitDrawModelAndDocShell(SwDocShell* pSwDocShell, SwDrawModel* pSwDrawDocument)
43 {
44     if(pSwDrawDocument)
45     {
46         if(pSwDocShell == pSwDrawDocument->GetObjectShell())
47         {
48             // association already done, nothing to do
49         }
50         else
51         {
52             // set object shell (mainly for FormControl stuff), maybe zero
53             pSwDrawDocument->SetObjectShell(pSwDocShell);
54 
55             // set persist, maybe zero
56             pSwDrawDocument->SetPersist(pSwDocShell);
57 
58             // get and decide on the color table to use
59             if(pSwDocShell)
60             {
61                 const SvxColorTableItem* pColItemFromDocShell = static_cast< const SvxColorTableItem* >(pSwDocShell->GetItem(SID_COLOR_TABLE));
62 
63                 if(pColItemFromDocShell)
64                 {
65                     // the DocShell has a ColorTable, use it also in DrawingLayer
66                     pSwDrawDocument->SetColorTableAtSdrModel(pColItemFromDocShell->GetColorTable());
67                 }
68                 else
69                 {
70                     // Use the ColorTable which is used at the DrawingLayer's SdrModel
71                     pSwDocShell->PutItem(SvxColorTableItem(pSwDrawDocument->GetColorTableFromSdrModel(), SID_COLOR_TABLE));
72                 }
73 
74                 // add other tables in SfxItemSet of the DocShell
75                 pSwDocShell->PutItem(SvxGradientListItem(pSwDrawDocument->GetGradientListFromSdrModel(), SID_GRADIENT_LIST));
76                 pSwDocShell->PutItem(SvxHatchListItem(pSwDrawDocument->GetHatchListFromSdrModel(), SID_HATCH_LIST));
77                 pSwDocShell->PutItem(SvxBitmapListItem(pSwDrawDocument->GetBitmapListFromSdrModel(), SID_BITMAP_LIST));
78                 pSwDocShell->PutItem(SvxDashListItem(pSwDrawDocument->GetDashListFromSdrModel(), SID_DASH_LIST));
79                 pSwDocShell->PutItem(SvxLineEndListItem(pSwDrawDocument->GetLineEndListFromSdrModel(), SID_LINEEND_LIST));
80             }
81 
82             // init hyphenator for DrawingLayer outliner
83             uno::Reference<linguistic2::XHyphenator> xHyphenator(::GetHyphenator());
84             Outliner& rOutliner = pSwDrawDocument->GetDrawOutliner();
85 
86             rOutliner.SetHyphenator(xHyphenator);
87         }
88     }
89     else if(pSwDocShell)
90     {
91         // fallback: add the default color list to have one when someone requests it from the DocShell
92         pSwDocShell->PutItem(SvxColorTableItem(XColorList::GetStdColorList(), SID_COLOR_TABLE));
93     }
94 }
95 
96 //eof
97