diff options
Diffstat (limited to 'drawinglayer/source/processor3d/baseprocessor3d.cxx')
-rw-r--r-- | drawinglayer/source/processor3d/baseprocessor3d.cxx | 43 |
1 files changed, 41 insertions, 2 deletions
diff --git a/drawinglayer/source/processor3d/baseprocessor3d.cxx b/drawinglayer/source/processor3d/baseprocessor3d.cxx index 9daa9a44bc55..7d630f2522be 100644 --- a/drawinglayer/source/processor3d/baseprocessor3d.cxx +++ b/drawinglayer/source/processor3d/baseprocessor3d.cxx @@ -4,9 +4,9 @@ * * $RCSfile: baseprocessor3d.cxx,v $ * - * $Revision: 1.6 $ + * $Revision: 1.7 $ * - * last change: $Author: aw $ $Date: 2008-06-10 09:29:33 $ + * last change: $Author: aw $ $Date: 2008-06-24 15:31:09 $ * * The Contents of this file are made available subject to * the terms of GNU Lesser General Public License Version 2.1. @@ -48,6 +48,10 @@ namespace drawinglayer { namespace processor3d { + void BaseProcessor3D::processBasePrimitive3D(const primitive3d::BasePrimitive3D& /*rCandidate*/) + { + } + BaseProcessor3D::BaseProcessor3D(const geometry::ViewInformation3D& rViewInformation) : maViewInformation3D(rViewInformation) { @@ -56,6 +60,37 @@ namespace drawinglayer BaseProcessor3D::~BaseProcessor3D() { } + + void BaseProcessor3D::process(const primitive3d::Primitive3DSequence& rSource) + { + if(rSource.hasElements()) + { + const sal_Int32 nCount(rSource.getLength()); + + for(sal_Int32 a(0L); a < nCount; a++) + { + // get reference + const primitive3d::Primitive3DReference xReference(rSource[a]); + + if(xReference.is()) + { + // try to cast to BasePrimitive3D implementation + const primitive3d::BasePrimitive3D* pBasePrimitive = dynamic_cast< const primitive3d::BasePrimitive3D* >(xReference.get()); + + if(pBasePrimitive) + { + processBasePrimitive3D(*pBasePrimitive); + } + else + { + // unknown implementation, use UNO API call instead and process recursively + const uno::Sequence< beans::PropertyValue >& rViewParameters(getViewInformation3D().getViewInformationSequence()); + process(xReference->getDecomposition(rViewParameters)); + } + } + } + } + } } // end of namespace processor3d } // end of namespace drawinglayer @@ -71,6 +106,10 @@ namespace drawinglayer { } + CollectingProcessor3D::~CollectingProcessor3D() + { + } + void CollectingProcessor3D::process(const primitive3d::Primitive3DSequence& rSource) { // accept everything |