summaryrefslogtreecommitdiff
path: root/drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx
diff options
context:
space:
mode:
authorArmin Le Grand <Armin.Le.Grand@Sun.COM>2009-09-29 18:33:34 +0200
committerArmin Le Grand <Armin.Le.Grand@Sun.COM>2009-09-29 18:33:34 +0200
commit78fb1283ea0f5a059740790e3933fe60b520c7cf (patch)
tree881578cf78604d0e571e8313fb46d36b29e79ce3 /drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx
parent2d634e6084547875a170d8350850110238b9e55c (diff)
#i97509# corrected usage of create/get/2D/3DDecomposition for all derivations
Diffstat (limited to 'drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx')
-rw-r--r--drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx16
1 files changed, 15 insertions, 1 deletions
diff --git a/drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx b/drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx
index d95473a27805..de28e3ad74e5 100644
--- a/drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx
+++ b/drawinglayer/source/primitive3d/polygontubeprimitive3d.cxx
@@ -417,7 +417,7 @@ namespace drawinglayer
{
namespace primitive3d
{
- Primitive3DSequence PolygonTubePrimitive3D::create3DDecomposition(const geometry::ViewInformation3D& /*rViewInformation*/) const
+ Primitive3DSequence PolygonTubePrimitive3D::impCreate3DDecomposition(const geometry::ViewInformation3D& /*rViewInformation*/) const
{
const sal_uInt32 nPointCount(getB3DPolygon().count());
std::vector< BasePrimitive3D* > aResultVector;
@@ -541,6 +541,7 @@ namespace drawinglayer
double fDegreeStepWidth,
double fMiterMinimumAngle)
: PolygonHairlinePrimitive3D(rPolygon, rBColor),
+ maLast3DDecomposition(),
mfRadius(fRadius),
mfDegreeStepWidth(fDegreeStepWidth),
mfMiterMinimumAngle(fMiterMinimumAngle),
@@ -563,6 +564,19 @@ namespace drawinglayer
return false;
}
+ Primitive3DSequence PolygonTubePrimitive3D::get3DDecomposition(const geometry::ViewInformation3D& rViewInformation) const
+ {
+ ::osl::MutexGuard aGuard( m_aMutex );
+
+ if(!getLast3DDecomposition().hasElements())
+ {
+ const Primitive3DSequence aNewSequence(impCreate3DDecomposition(rViewInformation));
+ const_cast< PolygonTubePrimitive3D* >(this)->setLast3DDecomposition(aNewSequence);
+ }
+
+ return getLast3DDecomposition();
+ }
+
// provide unique ID
ImplPrimitrive3DIDBlock(PolygonTubePrimitive3D, PRIMITIVE3D_ID_POLYGONTUBEPRIMITIVE3D)