summaryrefslogtreecommitdiff
path: root/drawinglayer/source/processor3d/baseprocessor3d.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'drawinglayer/source/processor3d/baseprocessor3d.cxx')
-rw-r--r--drawinglayer/source/processor3d/baseprocessor3d.cxx43
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