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