| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| * |
| *************************************************************/ |
| |
| |
| #ifndef _CHART2_VIEW_SHAPEFACTORY_HXX |
| #define _CHART2_VIEW_SHAPEFACTORY_HXX |
| |
| #include "PropertyMapper.hxx" |
| #include "VLineProperties.hxx" |
| #include "BaseGFXHelper.hxx" |
| #include <com/sun/star/beans/XPropertySet.hpp> |
| #include <com/sun/star/drawing/Direction3D.hpp> |
| #include <com/sun/star/drawing/HomogenMatrix.hpp> |
| #include <com/sun/star/drawing/PointSequenceSequence.hpp> |
| #include <com/sun/star/drawing/PolyPolygonShape3D.hpp> |
| #include <com/sun/star/drawing/Position3D.hpp> |
| #include <com/sun/star/drawing/XDrawPage.hpp> |
| #include <com/sun/star/drawing/XShapes.hpp> |
| #include <com/sun/star/lang/XMultiServiceFactory.hpp> |
| #include <com/sun/star/graphic/XGraphic.hpp> |
| |
| //............................................................................. |
| namespace chart |
| { |
| //............................................................................. |
| |
| class Stripe; |
| class ShapeFactory |
| { |
| public: |
| ShapeFactory(::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory> xFactory) |
| {m_xShapeFactory = xFactory;} |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > |
| createGroup2D( |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::drawing::XShapes >& xTarget |
| , ::rtl::OUString aName = ::rtl::OUString() ); |
| |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > |
| createGroup3D( |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::drawing::XShapes >& xTarget |
| , ::rtl::OUString aName = ::rtl::OUString() ); |
| |
| //------ |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > |
| createCube( const ::com::sun::star::uno::Reference< |
| ::com::sun::star::drawing::XShapes >& xTarget |
| , const ::com::sun::star::drawing::Position3D& rPosition |
| , const ::com::sun::star::drawing::Direction3D& rSize |
| , sal_Int32 nRotateZAngleHundredthDegree |
| , const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xSourceProp |
| , const tPropertyNameMap& rPropertyNameMap |
| , bool bRounded = false); |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > |
| createCylinder( const ::com::sun::star::uno::Reference< |
| ::com::sun::star::drawing::XShapes >& xTarget |
| , const ::com::sun::star::drawing::Position3D& rPosition |
| , const ::com::sun::star::drawing::Direction3D& rSize |
| , sal_Int32 nRotateZAngleHundredthDegree ); |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > |
| createPyramid( const ::com::sun::star::uno::Reference< |
| ::com::sun::star::drawing::XShapes >& xTarget |
| , const ::com::sun::star::drawing::Position3D& rPosition |
| , const ::com::sun::star::drawing::Direction3D& rSize |
| , double fTopHeight |
| , bool bRotateZ |
| , const ::com::sun::star::uno::Reference< |
| ::com::sun::star::beans::XPropertySet >& xSourceProp |
| , const tPropertyNameMap& rPropertyNameMap); |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > |
| createCone( const ::com::sun::star::uno::Reference< |
| ::com::sun::star::drawing::XShapes >& xTarget |
| , const ::com::sun::star::drawing::Position3D& rPosition |
| , const ::com::sun::star::drawing::Direction3D& rSize |
| , double fTopHeight, sal_Int32 nRotateZAngleHundredthDegree ); |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > |
| createPieSegment2D( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget |
| , double fUnitCircleStartAngleDegree, double fUnitCircleWidthAngleDegree |
| , double fUnitCircleInnerRadius, double fUnitCircleOuterRadius |
| , const ::com::sun::star::drawing::Direction3D& rOffset |
| , const ::com::sun::star::drawing::HomogenMatrix& rUnitCircleToScene ); |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > |
| createPieSegment( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget |
| , double fUnitCircleStartAngleDegree, double fUnitCircleWidthAngleDegree |
| , double fUnitCircleInnerRadius, double fUnitCircleOuterRadius |
| , const ::com::sun::star::drawing::Direction3D& rOffset |
| , const ::com::sun::star::drawing::HomogenMatrix& rUnitCircleToScene |
| , double fDepth ); |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > |
| createStripe( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget |
| , const Stripe& rStripe |
| , const ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet >& xSourceProp |
| , const tPropertyNameMap& rPropertyNameMap |
| , sal_Bool bDoubleSided = true |
| , short nRotatedTexture = 0 //0 to 7 are the different possibilities |
| , bool bFlatNormals=true ); |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > |
| createArea3D( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget |
| , const ::com::sun::star::drawing::PolyPolygonShape3D& rPolyPolygon |
| , double fDepth); |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > |
| createArea2D( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget |
| , const ::com::sun::star::drawing::PolyPolygonShape3D& rPolyPolygon); |
| |
| static sal_Int32 getSymbolCount(); |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > |
| createSymbol2D( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget |
| , const ::com::sun::star::drawing::Position3D& rPos |
| , const ::com::sun::star::drawing::Direction3D& rSize |
| , sal_Int32 nStandardSymbol |
| , sal_Int32 nBorderColor=0 |
| , sal_Int32 nFillColor=0 ); |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > |
| createGraphic2D( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget |
| , const ::com::sun::star::drawing::Position3D& rPos |
| , const ::com::sun::star::drawing::Direction3D& rSize |
| , const ::com::sun::star::uno::Reference< ::com::sun::star::graphic::XGraphic >& xGraphic ); |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > |
| createLine2D( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget |
| , const ::com::sun::star::drawing::PointSequenceSequence& rPoints |
| , const VLineProperties* pLineProperties = NULL ); |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > |
| createLine3D( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget |
| , const ::com::sun::star::drawing::PolyPolygonShape3D& rPoints |
| , const VLineProperties& rLineProperties ); |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > |
| createCircle2D( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget |
| , const ::com::sun::star::drawing::Position3D& rPos |
| , const ::com::sun::star::drawing::Direction3D& rSize ); |
| |
| //------------------- create 2D elements: |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > |
| createText( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget2D |
| , const ::rtl::OUString& rText |
| , const tNameSequence& rPropNames |
| , const tAnySequence& rPropValues |
| , const ::com::sun::star::uno::Any& rATransformation |
| ); |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > |
| createInvisibleRectangle( |
| const ::com::sun::star::uno::Reference< |
| ::com::sun::star::drawing::XShapes >& xTarget |
| , const ::com::sun::star::awt::Size& rSize ); |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > |
| getOrCreateChartRootShape( const ::com::sun::star::uno::Reference< |
| ::com::sun::star::drawing::XDrawPage>& xPage ); |
| |
| static ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes > |
| getChartRootShape( const ::com::sun::star::uno::Reference< |
| ::com::sun::star::drawing::XDrawPage>& xPage ); |
| |
| //------ |
| static void makeShapeInvisible( const ::com::sun::star::uno::Reference< |
| ::com::sun::star::drawing::XShape >& xShape ); |
| |
| static void setShapeName( const ::com::sun::star::uno::Reference< |
| ::com::sun::star::drawing::XShape >& xShape |
| , const rtl::OUString& rName ); |
| |
| static rtl::OUString getShapeName( const ::com::sun::star::uno::Reference< |
| ::com::sun::star::drawing::XShape >& xShape ); |
| |
| static ::com::sun::star::uno::Any makeTransformation( const ::com::sun::star::awt::Point& rScreenPosition2D, double fRotationAnglePi=0.0 ); |
| |
| static rtl::OUString getStackedString( const rtl::OUString& rString, bool bStacked=true ); |
| |
| static bool hasPolygonAnyLines( ::com::sun::star::drawing::PolyPolygonShape3D& rPoly ); |
| static bool isPolygonEmptyOrSinglePoint( ::com::sun::star::drawing::PolyPolygonShape3D& rPoly ); |
| static void closePolygon( ::com::sun::star::drawing::PolyPolygonShape3D& rPoly ); |
| |
| static ::com::sun::star::awt::Size calculateNewSizeRespectingAspectRatio( |
| const ::com::sun::star::awt::Size& rTargetSize |
| , const ::com::sun::star::awt::Size& rSourceSizeWithCorrectAspectRatio ); |
| |
| static ::com::sun::star::awt::Point calculateTopLeftPositionToCenterObject( |
| const ::com::sun::star::awt::Point& rTargetAreaPosition |
| , const ::com::sun::star::awt::Size& rTargetAreaSize |
| , const ::com::sun::star::awt::Size& rObjectSize ); |
| |
| static ::basegfx::B2IRectangle getRectangleOfShape( |
| const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape ); |
| |
| static ::com::sun::star::awt::Size getSizeAfterRotation( |
| const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >& xShape, double fRotationAngleDegree ); |
| |
| static void removeSubShapes( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xShapes ); |
| |
| private: |
| ShapeFactory(); |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > |
| impl_createCube( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget |
| , const ::com::sun::star::drawing::Position3D& rPosition |
| , const ::com::sun::star::drawing::Direction3D& rSize, sal_Int32 nRotateZAngleHundredthDegree |
| , bool bRounded ); |
| |
| ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > |
| impl_createConeOrCylinder( const ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShapes >& xTarget |
| , const ::com::sun::star::drawing::Position3D& rPosition |
| , const ::com::sun::star::drawing::Direction3D& rSize |
| , double fTopHeight, sal_Int32 nRotateZAngleHundredthDegree |
| , bool bCylinder = false); |
| |
| //member: |
| ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory> |
| m_xShapeFactory; |
| }; |
| |
| //............................................................................. |
| } //namespace chart |
| //............................................................................. |
| #endif |