1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ 2 /* 3 * This file is part of the LibreOffice project. 4 * 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/. 8 * 9 * This file incorporates work covered by the following license notice: 10 * 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 . 18 */ 19 20 #ifndef INCLUDED_SVX_ENHANCEDCUSTOMSHAPEGEOMETRY_HXX 21 #define INCLUDED_SVX_ENHANCEDCUSTOMSHAPEGEOMETRY_HXX 22 23 #include <sal/types.h> 24 #include <svx/msdffdef.hxx> 25 #include <svx/svxdllapi.h> 26 #include <o3tl/typed_flags_set.hxx> 27 28 struct SvxMSDffVertPair 29 { 30 sal_Int32 const nValA; 31 sal_Int32 const nValB; 32 }; 33 struct SvxMSDffCalculationData 34 { 35 sal_uInt16 const nFlags; 36 sal_Int32 const nVal[ 3 ]; 37 }; 38 struct SvxMSDffTextRectangles 39 { 40 SvxMSDffVertPair const nPairA; 41 SvxMSDffVertPair const nPairB; 42 }; 43 44 enum class SvxMSDffHandleFlags 45 { 46 NONE = 0x0000, 47 MIRRORED_X = 0x0001, 48 MIRRORED_Y = 0x0002, 49 SWITCHED = 0x0004, 50 POLAR = 0x0008, 51 MAP = 0x0010, 52 RANGE = 0x0020, 53 RANGE_X_MIN_IS_SPECIAL = 0x0080, 54 RANGE_X_MAX_IS_SPECIAL = 0x0100, 55 RANGE_Y_MIN_IS_SPECIAL = 0x0200, 56 RANGE_Y_MAX_IS_SPECIAL = 0x0400, 57 CENTER_X_IS_SPECIAL = 0x0800, 58 CENTER_Y_IS_SPECIAL = 0x1000, 59 RADIUS_RANGE = 0x2000, 60 }; 61 namespace o3tl 62 { 63 template<> struct typed_flags<SvxMSDffHandleFlags> : is_typed_flags<SvxMSDffHandleFlags, 0x3fff> {}; 64 } 65 66 struct SvxMSDffHandle 67 { 68 SvxMSDffHandleFlags const nFlags; 69 sal_Int32 nPositionX, nPositionY, nCenterX, nCenterY, nRangeXMin, nRangeXMax, nRangeYMin, nRangeYMax; 70 }; 71 struct mso_CustomShape 72 { 73 SvxMSDffVertPair* const pVertices; 74 sal_uInt32 const nVertices; 75 sal_uInt16* const pElements; 76 sal_uInt32 const nElements; 77 SvxMSDffCalculationData* const pCalculation; 78 sal_uInt32 const nCalculation; 79 sal_Int32* const pDefData; 80 SvxMSDffTextRectangles* const pTextRect; 81 sal_uInt32 const nTextRect; 82 sal_Int32 const nCoordWidth; 83 sal_Int32 const nCoordHeight; 84 sal_Int32 const nXRef; 85 sal_Int32 const nYRef; 86 SvxMSDffVertPair* const pGluePoints; 87 sal_uInt32 const nGluePoints; 88 SvxMSDffHandle* const pHandles; 89 sal_uInt32 const nHandles; 90 }; 91 92 #define MSO_I | sal_Int32(0x80000000) 93 94 bool SortFilledObjectsToBackByDefault( MSO_SPT eSpType ); 95 SVX_DLLPUBLIC bool IsCustomShapeFilledByDefault( MSO_SPT eSpType ); 96 SVX_DLLPUBLIC sal_Int16 GetCustomShapeConnectionTypeDefault( MSO_SPT eSpType ); 97 98 // #i28269# 99 SVX_DLLPUBLIC bool IsCustomShapeStrokedByDefault( MSO_SPT eSpType ); 100 101 SVX_DLLPUBLIC const mso_CustomShape* GetCustomShapeContent( MSO_SPT eSpType ); 102 103 #endif 104 105 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ 106