xref: /AOO41X/main/svx/inc/svx/EnhancedCustomShapeGeometry.hxx (revision ca62e2c2083b5d0995f1245bad6c2edfb455fbec)
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 
23 
24 #ifndef _ENHANCEDCUSTOMSHAPEGEOMETRY_HXX
25 #define _ENHANCEDCUSTOMSHAPEGEOMETRY_HXX
26 
27 #include <sal/types.h>
28 #include <svx/msdffdef.hxx>
29 
30 struct SvxMSDffVertPair
31 {
32     sal_Int32   nValA;
33     sal_Int32   nValB;
34 };
35 struct SvxMSDffCalculationData
36 {
37     sal_uInt16  nFlags;
38     sal_Int32   nVal[ 3 ];
39 };
40 struct SvxMSDffTextRectangles
41 {
42     SvxMSDffVertPair    nPairA;
43     SvxMSDffVertPair    nPairB;
44 };
45 
46 #define MSDFF_HANDLE_FLAGS_MIRRORED_X                   0x0001
47 #define MSDFF_HANDLE_FLAGS_MIRRORED_Y                   0x0002
48 #define MSDFF_HANDLE_FLAGS_SWITCHED                     0x0004
49 #define MSDFF_HANDLE_FLAGS_POLAR                        0x0008
50 #define MSDFF_HANDLE_FLAGS_MAP                          0x0010
51 #define MSDFF_HANDLE_FLAGS_RANGE                        0x0020
52 #define MSDFF_HANDLE_FLAGS_RANGE_X_MIN_IS_SPECIAL       0x0080
53 #define MSDFF_HANDLE_FLAGS_RANGE_X_MAX_IS_SPECIAL       0x0100
54 #define MSDFF_HANDLE_FLAGS_RANGE_Y_MIN_IS_SPECIAL       0x0200
55 #define MSDFF_HANDLE_FLAGS_RANGE_Y_MAX_IS_SPECIAL       0x0400
56 #define MSDFF_HANDLE_FLAGS_CENTER_X_IS_SPECIAL          0x0800
57 #define MSDFF_HANDLE_FLAGS_CENTER_Y_IS_SPECIAL          0x1000
58 #define MSDFF_HANDLE_FLAGS_RADIUS_RANGE                 0x2000
59 
60 struct SvxMSDffHandle
61 {
62     sal_uInt32  nFlags;
63     sal_Int32   nPositionX, nPositionY, nCenterX, nCenterY, nRangeXMin, nRangeXMax, nRangeYMin, nRangeYMax;
64 };
65 struct mso_CustomShape
66 {
67     SvxMSDffVertPair*                       pVertices;
68     sal_uInt32                              nVertices;
69     sal_uInt16*                             pElements;
70     sal_uInt32                              nElements;
71     SvxMSDffCalculationData*                pCalculation;
72     sal_uInt32                              nCalculation;
73     sal_Int32*                              pDefData;
74     SvxMSDffTextRectangles*                 pTextRect;
75     sal_uInt32                              nTextRect;
76     sal_Int32                               nCoordWidth;
77     sal_Int32                               nCoordHeight;
78     sal_Int32                               nXRef;
79     sal_Int32                               nYRef;
80     SvxMSDffVertPair*                       pGluePoints;
81     sal_uInt32                              nGluePoints;
82     SvxMSDffHandle*                         pHandles;
83     sal_uInt32                              nHandles;
84 };
85 
86 // 0x80000000 is used as magic constant all over the customshape code where
87 // it is squeezed into signed int32 type that cannot preserve this value. Good
88 // compilers notice the problem and have every right to complain or error-out.
89 // Using the magic constant already casted down consolidates the problem and is
90 // the least invasive way to fix it until the code gets its well deserved makeover.
91 #define Mx80000000 static_cast<sal_Int32>(0x80000000)
92 #define MSO_I | Mx80000000
93 
94 sal_Bool            SortFilledObjectsToBackByDefault( MSO_SPT eSpType );
95 SVX_DLLPUBLIC sal_Bool          IsCustomShapeFilledByDefault( MSO_SPT eSpType );
96 SVX_DLLPUBLIC sal_Int16         GetCustomShapeConnectionTypeDefault( MSO_SPT eSpType );
97 
98 // #i28269#
99 SVX_DLLPUBLIC sal_Bool          IsCustomShapeStrokedByDefault( MSO_SPT eSpType );
100 
101 SVX_DLLPUBLIC const mso_CustomShape*    GetCustomShapeContent( MSO_SPT eSpType );
102 
103 #endif
104