LibreOffice Module drawinglayer (master) 1
primitivetools2d.cxx
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
23
24
26{
28 {
29 // get the current DiscreteUnit, look at X and Y and use the maximum
30 const basegfx::B2DVector aDiscreteVector(rViewInformation.getInverseObjectToViewTransformation() * basegfx::B2DVector(1.0, 1.0));
31 const double fDiscreteUnit(std::min(fabs(aDiscreteVector.getX()), fabs(aDiscreteVector.getY())));
32
33 if(!getBuffered2DDecomposition().empty() && !basegfx::fTools::equal(fDiscreteUnit, getDiscreteUnit()))
34 {
35 // conditions of last local decomposition have changed, delete
37 }
38
39 if(getBuffered2DDecomposition().empty())
40 {
41 // remember new valid DiscreteUnit
42 const_cast< DiscreteMetricDependentPrimitive2D* >(this)->mfDiscreteUnit = fDiscreteUnit;
43 }
44
45 // call base implementation
47 }
48
49
50
51
53 {
54 // get the current Viewport
55 const basegfx::B2DRange& rViewport = rViewInformation.getViewport();
56
57 if(!getBuffered2DDecomposition().empty() && !rViewport.equal(getViewport()))
58 {
59 // conditions of last local decomposition have changed, delete
61 }
62
63 if(getBuffered2DDecomposition().empty())
64 {
65 // remember new valid DiscreteUnit
66 const_cast< ViewportDependentPrimitive2D* >(this)->maViewport = rViewport;
67 }
68
69 // call base implementation
71 }
72
74 {
75 // get the current ViewTransformation
76 const basegfx::B2DHomMatrix& rViewTransformation = rViewInformation.getViewTransformation();
77
78 if(!getBuffered2DDecomposition().empty() && rViewTransformation != getViewTransformation())
79 {
80 // conditions of last local decomposition have changed, delete
82 }
83
84 if(getBuffered2DDecomposition().empty())
85 {
86 // remember new valid ViewTransformation
87 const_cast< ViewTransformationDependentPrimitive2D* >(this)->maViewTransformation = rViewTransformation;
88 }
89
90 // call base implementation
92 }
93
95 {
96 // get the current ViewTransformation
97 const basegfx::B2DHomMatrix& rViewTransformation = rViewInformation.getViewTransformation();
98
99 if(!getBuffered2DDecomposition().empty() && rViewTransformation != getViewTransformation())
100 {
101 // conditions of last local decomposition have changed, delete
103 }
104
105 // get the current ObjectTransformation
106 const basegfx::B2DHomMatrix& rObjectTransformation = rViewInformation.getObjectTransformation();
107
108 if(!getBuffered2DDecomposition().empty() && rObjectTransformation != getObjectTransformation())
109 {
110 // conditions of last local decomposition have changed, delete
112 }
113
114 if(getBuffered2DDecomposition().empty())
115 {
116 // remember new valid ViewTransformation, and ObjectTransformation
117 const_cast< ObjectAndViewTransformationDependentPrimitive2D* >(this)->maViewTransformation = rViewTransformation;
118 const_cast< ObjectAndViewTransformationDependentPrimitive2D* >(this)->maObjectTransformation = rObjectTransformation;
119 }
120
121 // call base implementation
123 }
124
125} // end of namespace
126
127/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
bool equal(const Range2D &rRange) const
TYPE getX() const
TYPE getY() const
const basegfx::B2DRange & getViewport() const
Empty viewport means everything is visible.
const basegfx::B2DHomMatrix & getInverseObjectToViewTransformation() const
const basegfx::B2DHomMatrix & getObjectTransformation() const
data access
const basegfx::B2DHomMatrix & getViewTransformation() const
const Primitive2DContainer & getBuffered2DDecomposition() const
access methods to maBuffered2DDecomposition.
virtual void get2DDecomposition(Primitive2DDecompositionVisitor &rVisitor, const geometry::ViewInformation2D &rViewInformation) const override
The getDecomposition default implementation will on demand use create2DDecomposition() if maBuffered2...
virtual void get2DDecomposition(Primitive2DDecompositionVisitor &rVisitor, const geometry::ViewInformation2D &rViewInformation) const override
Override standard getDecomposition to be view-dependent here.
double mfDiscreteUnit
the last used fDiscreteUnit definitions for decomposition.
ObjectAndViewTransformationDependentPrimitive2D class.
virtual void get2DDecomposition(Primitive2DDecompositionVisitor &rVisitor, const geometry::ViewInformation2D &rViewInformation) const override
Override standard getDecomposition to be view-dependent here.
basegfx::B2DHomMatrix maViewTransformation
the last used ViewTransformation and the last ObjectTransformation definition for decomposition.
const basegfx::B2DHomMatrix & getViewTransformation() const
data read access
const basegfx::B2DHomMatrix & getViewTransformation() const
data read access
basegfx::B2DHomMatrix maViewTransformation
the last used ViewTransformation definition for decomposition.
virtual void get2DDecomposition(Primitive2DDecompositionVisitor &rVisitor, const geometry::ViewInformation2D &rViewInformation) const override
Override standard getDecomposition to be view-dependent here.
basegfx::B2DRange maViewport
the last used Viewport definition for decomposition.
virtual void get2DDecomposition(Primitive2DDecompositionVisitor &rVisitor, const geometry::ViewInformation2D &rViewInformation) const override
Override standard getDecomposition to be view-dependent here.
const basegfx::B2DRange & getViewport() const
data read access
bool equal(T const &rfValA, T const &rfValB)