/************************************************************** * * 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 #include #include #include #include #include #include #include #include #include //............................................................................. 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