diff options
author | Armin Le Grand <Armin.Le.Grand@Sun.COM> | 2010-01-27 11:51:56 +0100 |
---|---|---|
committer | Armin Le Grand <Armin.Le.Grand@Sun.COM> | 2010-01-27 11:51:56 +0100 |
commit | ffe5c97056ab181367e49691d487eb6f6f375200 (patch) | |
tree | 552e2d32015f11e023004a4104e15cce886312e0 /drawinglayer/source/geometry | |
parent | de7c998fe9ba5be956bf8a155455ad17985c4f88 (diff) |
aw079: #i99147# attribute rework and others
Diffstat (limited to 'drawinglayer/source/geometry')
-rw-r--r-- | drawinglayer/source/geometry/viewinformation2d.cxx | 47 | ||||
-rw-r--r-- | drawinglayer/source/geometry/viewinformation3d.cxx | 47 |
2 files changed, 93 insertions, 1 deletions
diff --git a/drawinglayer/source/geometry/viewinformation2d.cxx b/drawinglayer/source/geometry/viewinformation2d.cxx index 3a3fd68831db..0f808e69b205 100644 --- a/drawinglayer/source/geometry/viewinformation2d.cxx +++ b/drawinglayer/source/geometry/viewinformation2d.cxx @@ -313,6 +313,22 @@ namespace drawinglayer impInterpretPropertyValues(rViewParameters); } + ImpViewInformation2D() + : mnRefCount(0), + maObjectTransformation(), + maViewTransformation(), + maObjectToViewTransformation(), + maInverseObjectToViewTransformation(), + maViewport(), + maDiscreteViewport(), + mxVisualizedPage(), + mfViewTime(), + mbReducedDisplayQuality(false), + mxViewInformation(), + mxExtendedInformation() + { + } + const basegfx::B2DHomMatrix& getObjectTransformation() const { return maObjectTransformation; @@ -410,6 +426,21 @@ namespace drawinglayer && mfViewTime == rCandidate.mfViewTime && mxExtendedInformation == rCandidate.mxExtendedInformation); } + + static ImpViewInformation2D* get_global_default() + { + static ImpViewInformation2D* pDefault = 0; + + if(!pDefault) + { + pDefault = new ImpViewInformation2D(); + + // never delete; start with RefCount 1, not 0 + pDefault->mnRefCount++; + } + + return pDefault; + } }; } // end of anonymous namespace } // end of namespace drawinglayer @@ -442,6 +473,12 @@ namespace drawinglayer { } + ViewInformation2D::ViewInformation2D() + : mpViewInformation2D(ImpViewInformation2D::get_global_default()) + { + mpViewInformation2D->mnRefCount++; + } + ViewInformation2D::ViewInformation2D(const ViewInformation2D& rCandidate) : mpViewInformation2D(rCandidate.mpViewInformation2D) { @@ -463,6 +500,11 @@ namespace drawinglayer } } + bool ViewInformation2D::isDefault() const + { + return mpViewInformation2D == ImpViewInformation2D::get_global_default(); + } + ViewInformation2D& ViewInformation2D::operator=(const ViewInformation2D& rCandidate) { ::osl::Mutex m_mutex; @@ -489,6 +531,11 @@ namespace drawinglayer return true; } + if(rCandidate.isDefault() != isDefault()) + { + return false; + } + return (*rCandidate.mpViewInformation2D == *mpViewInformation2D); } diff --git a/drawinglayer/source/geometry/viewinformation3d.cxx b/drawinglayer/source/geometry/viewinformation3d.cxx index a47384485ee7..62388adad37c 100644 --- a/drawinglayer/source/geometry/viewinformation3d.cxx +++ b/drawinglayer/source/geometry/viewinformation3d.cxx @@ -395,6 +395,18 @@ namespace drawinglayer impInterpretPropertyValues(rViewParameters); } + ImpViewInformation3D() + : mnRefCount(0), + maObjectTransformation(), + maOrientation(), + maProjection(), + maDeviceToView(), + mfViewTime(), + mxViewInformation(), + mxExtendedInformation() + { + } + const basegfx::B3DHomMatrix& getObjectTransformation() const { return maObjectTransformation; } const basegfx::B3DHomMatrix& getOrientation() const { return maOrientation; } const basegfx::B3DHomMatrix& getProjection() const { return maProjection; } @@ -440,6 +452,21 @@ namespace drawinglayer && mfViewTime == rCandidate.mfViewTime && mxExtendedInformation == rCandidate.mxExtendedInformation); } + + static ImpViewInformation3D* get_global_default() + { + static ImpViewInformation3D* pDefault = 0; + + if(!pDefault) + { + pDefault = new ImpViewInformation3D(); + + // never delete; start with RefCount 1, not 0 + pDefault->mnRefCount++; + } + + return pDefault; + } }; } // end of anonymous namespace } // end of namespace drawinglayer @@ -457,7 +484,9 @@ namespace drawinglayer const basegfx::B3DHomMatrix& rDeviceToView, double fViewTime, const uno::Sequence< beans::PropertyValue >& rExtendedParameters) - : mpViewInformation3D(new ImpViewInformation3D(rObjectObjectTransformation, rOrientation, rProjection, rDeviceToView, fViewTime, rExtendedParameters)) + : mpViewInformation3D(new ImpViewInformation3D( + rObjectObjectTransformation, rOrientation, rProjection, + rDeviceToView, fViewTime, rExtendedParameters)) { } @@ -466,6 +495,12 @@ namespace drawinglayer { } + ViewInformation3D::ViewInformation3D() + : mpViewInformation3D(ImpViewInformation3D::get_global_default()) + { + mpViewInformation3D->mnRefCount++; + } + ViewInformation3D::ViewInformation3D(const ViewInformation3D& rCandidate) : mpViewInformation3D(rCandidate.mpViewInformation3D) { @@ -487,6 +522,11 @@ namespace drawinglayer } } + bool ViewInformation3D::isDefault() const + { + return mpViewInformation3D == ImpViewInformation3D::get_global_default(); + } + ViewInformation3D& ViewInformation3D::operator=(const ViewInformation3D& rCandidate) { ::osl::Mutex m_mutex; @@ -513,6 +553,11 @@ namespace drawinglayer return true; } + if(rCandidate.isDefault() != isDefault()) + { + return false; + } + return (*rCandidate.mpViewInformation3D == *mpViewInformation3D); } |