1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_SW_SOURCE_FILTER_WW8_WW8GRAF_HXX
21 #define INCLUDED_SW_SOURCE_FILTER_WW8_WW8GRAF_HXX
26 #include <filter/msfilter/msdffimp.hxx>
27 #include <svx/svdpage.hxx>
29 #include "writerhelper.hxx"
30 #include "ww8struc.hxx"
34 sal_uLong mnEscherShapeOrder
;
35 sal_uLong mnNoInlines
;
37 bool mbInHeaderFooter
;
38 EscherShape( sal_uLong nEscherShapeOrder
,
40 bool _bInHeaderFooter
)
41 : mnEscherShapeOrder(nEscherShapeOrder
),
43 mbInHellLayer(bInHellLayer
),
44 mbInHeaderFooter( _bInHeaderFooter
)
51 // consider that objects in page header/footer
52 // are always behind objects in page body. Thus, assure, that in vector
53 // <maEscherLayer> objects in page header|footer are inserted before
54 // objects in page body - see method <GetEscherObjectPos(..)>.
55 //No of objects in doc before starting (always 0 unless using file->insert
56 //and probably 0 then as well
57 std::vector
<EscherShape
> maEscherLayer
;
58 typedef std::vector
<EscherShape
>::iterator myeiter
;
60 std::vector
<short> maDrawHeight
;
62 std::stack
<sal_uInt16
> maIndexes
;
64 sw::util::SetLayer maSetLayer
;
66 sal_uLong mnNoInitialObjects
;
69 const SvxMSDffShapeOrders
*mpShapeOrders
;
71 sal_uInt16
GetEscherObjectIdx(sal_uLong nSpId
);
72 myeiter
MapEscherIdxToIter(sal_uLong nIdx
);
73 // new parameter <_bInHeaderFooter>, indicating
74 // that object is in header or footer
75 sal_uLong
GetEscherObjectPos( sal_uLong nSpId
,
76 const bool bInHellLayer
,
77 const bool _bInHeaderFooter
);
78 sal_uLong
GetDrawingObjectPos(short nWwHeight
);
79 void InsertObject(SdrObject
*pObject
, sal_uLong nPos
);
81 wwZOrderer(const sw::util::SetLayer
&rSetLayer
, SdrPage
* pDrawPg
,
82 const SvxMSDffShapeOrders
*pShapeOrders
);
83 void InsertTextLayerObject(SdrObject
* pObject
);
85 We should have separate ZOrder classes for 95- and 97+ and
86 instantiate the appropriate one at run time.
88 void InsertDrawingObject(SdrObject
* pObj
, short nWwHeight
);
89 // new parameter <_bInHeaderFooter>, indicating that object is in header or footer
90 void InsertEscherObject( SdrObject
* pObject
,
92 const bool bInHellLayer
,
93 const bool _bInHeaderFooter
);
94 void InsideEscher(sal_uLong nIndex
);
98 void WW8FSPAShadowToReal(const WW8_FSPA_SHADOW
& rFSPAS
, WW8_FSPA
& rPic
);
101 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */