summaryrefslogtreecommitdiff
path: root/chart2/source/view/axes/VPolarAngleAxis.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'chart2/source/view/axes/VPolarAngleAxis.cxx')
-rw-r--r--chart2/source/view/axes/VPolarAngleAxis.cxx237
1 files changed, 0 insertions, 237 deletions
diff --git a/chart2/source/view/axes/VPolarAngleAxis.cxx b/chart2/source/view/axes/VPolarAngleAxis.cxx
deleted file mode 100644
index d1505dade..000000000
--- a/chart2/source/view/axes/VPolarAngleAxis.cxx
+++ /dev/null
@@ -1,237 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_chart2.hxx"
-#include <basegfx/numeric/ftools.hxx>
-
-#include "VPolarAngleAxis.hxx"
-#include "VPolarGrid.hxx"
-#include "ShapeFactory.hxx"
-#include "macros.hxx"
-#include "NumberFormatterWrapper.hxx"
-#include "PolarLabelPositionHelper.hxx"
-#include <tools/color.hxx>
-
-#include <memory>
-
-//.............................................................................
-namespace chart
-{
-//.............................................................................
-using namespace ::com::sun::star;
-using namespace ::com::sun::star::chart2;
-using namespace ::rtl::math;
-
-VPolarAngleAxis::VPolarAngleAxis( const AxisProperties& rAxisProperties
- , const uno::Reference< util::XNumberFormatsSupplier >& xNumberFormatsSupplier
- , sal_Int32 nDimensionCount )
- : VPolarAxis( rAxisProperties, xNumberFormatsSupplier, 0/*nDimensionIndex*/, nDimensionCount )
-{
-}
-
-VPolarAngleAxis::~VPolarAngleAxis()
-{
- delete m_pPosHelper;
- m_pPosHelper = NULL;
-}
-
-bool VPolarAngleAxis::createTextShapes_ForAngleAxis(
- const uno::Reference< drawing::XShapes >& xTarget
- , EquidistantTickIter& rTickIter
- , AxisLabelProperties& rAxisLabelProperties
- , double fLogicRadius
- , double fLogicZ )
-{
- sal_Int32 nDimensionCount = 2;
- ShapeFactory aShapeFactory(m_xShapeFactory);
-
- FixedNumberFormatter aFixedNumberFormatter(
- m_xNumberFormatsSupplier, rAxisLabelProperties.nNumberFormatKey );
-
- //------------------------------------------------
- //prepare text properties for multipropertyset-interface of shape
- tNameSequence aPropNames;
- tAnySequence aPropValues;
-
- uno::Reference< beans::XPropertySet > xProps( m_aAxisProperties.m_xAxisModel, uno::UNO_QUERY );
- PropertyMapper::getTextLabelMultiPropertyLists( xProps, aPropNames, aPropValues, false );
- LabelPositionHelper::doDynamicFontResize( aPropValues, aPropNames, xProps
- , rAxisLabelProperties.m_aFontReferenceSize );
-
- uno::Any* pColorAny = PropertyMapper::getValuePointer(aPropValues,aPropNames,C2U("CharColor"));
- sal_Int32 nColor = Color( COL_AUTO ).GetColor();
- if(pColorAny)
- *pColorAny >>= nColor;
-
- const uno::Sequence< rtl::OUString >* pLabels = m_bUseTextLabels? &m_aTextLabels : 0;
-
- //------------------------------------------------
-
- //TickInfo* pLastVisibleNeighbourTickInfo = NULL;
- sal_Int32 nTick = 0;
-
- for( TickInfo* pTickInfo = rTickIter.firstInfo()
- ; pTickInfo
- ; pTickInfo = rTickIter.nextInfo(), nTick++ )
- {
- //don't create labels which does not fit into the rhythm
- if( nTick%rAxisLabelProperties.nRhythm != 0)
- continue;
-
- //don't create labels for invisible ticks
- if( !pTickInfo->bPaintIt )
- continue;
-
- //if NO OVERLAP -> don't create labels where the
- //anchor position is the same as for the last label
- //@todo
-
- if(!pTickInfo->xTextShape.is())
- {
- //create single label
- bool bHasExtraColor=false;
- sal_Int32 nExtraColor=0;
-
- rtl::OUString aLabel;
- if(pLabels)
- {
- sal_Int32 nIndex = static_cast< sal_Int32 >(pTickInfo->getUnscaledTickValue()) - 1; //first category (index 0) matches with real number 1.0
- if( nIndex>=0 && nIndex<pLabels->getLength() )
- aLabel = (*pLabels)[nIndex];
- }
- else
- aLabel = aFixedNumberFormatter.getFormattedString( pTickInfo->getUnscaledTickValue(), nExtraColor, bHasExtraColor );
-
- if(pColorAny)
- *pColorAny = uno::makeAny(bHasExtraColor?nExtraColor:nColor);
-
- double fLogicAngle = pTickInfo->getUnscaledTickValue();
-
- LabelAlignment eLabelAlignment(LABEL_ALIGN_CENTER);
- PolarLabelPositionHelper aPolarLabelPositionHelper(m_pPosHelper,nDimensionCount,xTarget,&aShapeFactory);
- sal_Int32 nScreenValueOffsetInRadiusDirection = m_aAxisLabelProperties.m_aMaximumSpaceForLabels.Height/15;
- awt::Point aAnchorScreenPosition2D( aPolarLabelPositionHelper.getLabelScreenPositionAndAlignmentForLogicValues(
- eLabelAlignment, fLogicAngle, fLogicRadius, fLogicZ, nScreenValueOffsetInRadiusDirection ));
- LabelPositionHelper::changeTextAdjustment( aPropValues, aPropNames, eLabelAlignment );
-
- // #i78696# use mathematically correct rotation now
- const double fRotationAnglePi(rAxisLabelProperties.fRotationAngleDegree * (F_PI / -180.0));
-
- uno::Any aATransformation = ShapeFactory::makeTransformation( aAnchorScreenPosition2D, fRotationAnglePi );
- rtl::OUString aStackedLabel = ShapeFactory::getStackedString( aLabel, rAxisLabelProperties.bStackCharacters );
-
- pTickInfo->xTextShape = aShapeFactory.createText( xTarget, aStackedLabel, aPropNames, aPropValues, aATransformation );
- }
-
- //if NO OVERLAP -> remove overlapping shapes
- //@todo
- }
- return true;
-}
-
-void VPolarAngleAxis::createMaximumLabels()
-{
- if( !prepareShapeCreation() )
- return;
-
- createLabels();
-}
-
-void VPolarAngleAxis::updatePositions()
-{
- //todo: really only update the positions
-
- if( !prepareShapeCreation() )
- return;
-
- createLabels();
-}
-
-void VPolarAngleAxis::createLabels()
-{
- if( !prepareShapeCreation() )
- return;
-
- double fLogicRadius = m_pPosHelper->getOuterLogicRadius();
-
- if( m_aAxisProperties.m_bDisplayLabels )
- {
- //-----------------------------------------
- //get the transformed screen values for all tickmarks in aAllTickInfos
- std::auto_ptr< TickFactory > apTickFactory( this->createTickFactory() );
-
- //create tick mark text shapes
- //@todo: iterate through all tick depth wich should be labeled
-
- EquidistantTickIter aTickIter( m_aAllTickInfos, m_aIncrement, 0, 0 );
- this->updateUnscaledValuesAtTicks( aTickIter );
-
- removeTextShapesFromTicks();
-
- AxisLabelProperties aAxisLabelProperties( m_aAxisLabelProperties );
- aAxisLabelProperties.bOverlapAllowed = true;
- double fLogicZ = 1.0;//as defined
- while( !createTextShapes_ForAngleAxis( m_xTextTarget, aTickIter
- , aAxisLabelProperties
- , fLogicRadius, fLogicZ
- ) )
- {
- };
-
- //no staggering for polar angle axis
- }
-}
-
-void VPolarAngleAxis::createShapes()
-{
- if( !prepareShapeCreation() )
- return;
-
- double fLogicRadius = m_pPosHelper->getOuterLogicRadius();
- double fLogicZ = 1.0;//as defined
-
- //-----------------------------------------
- //create axis main lines
- drawing::PointSequenceSequence aPoints(1);
- VPolarGrid::createLinePointSequence_ForAngleAxis( aPoints, m_aAllTickInfos, m_aIncrement, m_aScale, m_pPosHelper, fLogicRadius, fLogicZ );
- uno::Reference< drawing::XShape > xShape = m_pShapeFactory->createLine2D(
- m_xGroupShape_Shapes, aPoints, &m_aAxisProperties.m_aLineProperties );
- //because of this name this line will be used for marking the axis
- m_pShapeFactory->setShapeName( xShape, C2U("MarkHandles") );
-
- //-----------------------------------------
- //create labels
- createLabels();
-}
-
-//.............................................................................
-} //namespace chart
-//.............................................................................
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */