LibreOffice Module sw (master)  1
ascharanchoredobjectposition.hxx
Go to the documentation of this file.
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_SW_SOURCE_CORE_INC_ASCHARANCHOREDOBJECTPOSITION_HXX
21 #define INCLUDED_SW_SOURCE_CORE_INC_ASCHARANCHOREDOBJECTPOSITION_HXX
22 
24 #include <swtypes.hxx>
25 #include <swrect.hxx>
26 #include <o3tl/typed_flags_set.hxx>
27 
28 class SwTextFrame;
29 class SwFormatVertOrient;
30 
31 // flags for positioning algorithm of as-character-anchored objects
32 enum class AsCharFlags {
33  None = 0x00,
34  Quick = 0x01,
35  UlSpace = 0x02,
36  Init = 0x04,
37  Rotate = 0x08,
38  Reverse = 0x10,
39  Bidi = 0x20,
40 };
41 namespace o3tl {
42  template<> struct typed_flags<AsCharFlags> : is_typed_flags<AsCharFlags, 0x3f> {};
43 };
44 
45 namespace sw
46 {
47  // TODO: merge/migrate this to com::sun::star::VertOrientation instead of duplicating?
48  enum class LineAlign
49  {
50  NONE,
51  TOP,
52  CENTER,
53  BOTTOM
54  };
55 };
56 namespace objectpositioning
57 {
59  {
60  private:
61  // data to calculate object position
62  // Proposed anchor position, starting point for the calculation
63  // of the object position.
65  // flags that influences the calculation of the anchor position
66  // AsCharFlags::Quick : quick formatting - calculated position not set at object
67  // AsCharFlags::UlSpace : consider upper/lower spacing - adjustment of anchor position
68  // AsCharFlags::Init : initial calculation
69  // AsCharFlags::Rotate : object is rotated by 90 degrees
70  // AsCharFlags::Reverse : object is reversed (rotated by 270 degrees)
71  // AsCharFlags::Bidi : object belongs to a BIDI-multi-portion
73  // needed line values for the different alignments.
78 
79  // calculated data for object position
83  // line alignment relative to line height
85 
86  // method to cast <SwAnchoredObjectPosition::GetAnchorFrame()>
87  const SwTextFrame& GetAnchorTextFrame() const;
88 
100  SwTwips GetRelPosToBase( const SwTwips _nObjBoundHeight,
101  const SwFormatVertOrient& _rVert );
102 
103  public:
128  const Point& _rProposedAnchorPos,
129  const AsCharFlags _nFlags,
130  const SwTwips _nLineAscent,
131  const SwTwips _nLineDescent,
132  const SwTwips _nLineAscentInclObjs,
133  const SwTwips _nLineDescentInclObjs );
134  virtual ~SwAsCharAnchoredObjectPosition() override;
135 
142  virtual void CalcPosition() override;
143 
144  // calculated anchored position for object position type AS_CHAR
145  const Point& GetAnchorPos() const { return maAnchorPos;}
146 
147  // calculated relative position to base line for object position type AS_CHAR
148  SwTwips GetRelPosY() const { return mnRelPos;}
149 
150  // determined object rectangle including spacing for object position type AS_CHAR
152 
153  // determined line alignment relative to line height
155  };
156 }
157 
158 #endif
159 
160 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Represents the visualization of a paragraph.
Definition: txtfrm.hxx:151
SwAsCharAnchoredObjectPosition(SdrObject &_rDrawObj, const Point &_rProposedAnchorPos, const AsCharFlags _nFlags, const SwTwips _nLineAscent, const SwTwips _nLineDescent, const SwTwips _nLineAscentInclObjs, const SwTwips _nLineDescentInclObjs)
constructor; provided object to be positioned and needed data for calculation of the object position ...
Dialog to specify the properties of date form field.
Of course Writer needs its own rectangles.
Definition: swrect.hxx:35
SwTwips GetRelPosToBase(const SwTwips _nObjBoundHeight, const SwFormatVertOrient &_rVert)
determine the relative position to base line for object position
tools::Long SwTwips
Definition: swtypes.hxx:49
const SwTextFrame & GetAnchorTextFrame() const
method to cast to needed type
virtual void CalcPosition() override
calculate position for object position