Mobile API Reference  MicroStrategy 2019
PiePlot.h
Go to the documentation of this file.
1 //=======================================================================
2 // Filename: Kernel/SourceCode/ChartEngine/PrivateSource/PiePlot.h
3 // Date: 2008-05-21
4 // Authors: Bing Huang
5 
6 // Copyright (C) 1997-2008 MicroStrategy Incorporated
7 // All rights reserved
8 //=======================================================================
9 
10 #ifndef MsiChart_PiePlot_h
11 #define MsiChart_PiePlot_h
12 
13 #include "PDCHeader/PDCvector"
14 
15 #include "NumberObject.h"
16 #include "PolyLineObject.h"
17 #include "PieSliceObject.h"
18 #include "Plot.h"
19 
20 namespace MsiChart
21 {
22  typedef enum
23  {
27 
28  typedef enum
29  {
35 
36  typedef enum
37  {
41 
42  typedef enum
43  {
50 
52  {
55  {
56  }
63  };
64 
66  {
68 
70  {
71  }
72 
76  };
77 
79  {
80  GraphOptionsPie() : mLayout(PL_PIE), mPieTilt(0), mPieDepth(0), mPieRotation(90), // Rotation = 90, slice start at 12 o'clock
81  mPiesPerRow(2), mPieSizeProportional(false), mPieTiltOn(false),
84  mShowLabelsOnSide(false), mPieRestore(false), mShowDataValues(true),
86  {
87  }
88 
95  bool mPieTiltOn;
110  };
111 
112  //pre-declaration
113  class GraphCollectionObject;
114  class PieSliceObject;
115 
117  {
119 
120  TextLabelAndValue(const PieSliceObject* ipSlice, TextObject::Ptr iLabelPtr, TextObject::Ptr iValuePtr,
121  bool iLabelOnSlice, bool iValueOnSlice, Int32 iSeriesIndex)
122  : mpSlice(ipSlice), mSeriesIndex(iSeriesIndex)
123  {
124  mValueLabelPtr[0] = iLabelPtr;
125  mValueLabelPtr[1] = iValuePtr;
126  mValueLabelOnSlice[0] = iLabelOnSlice;
127  mValueLabelOnSlice[1] = iValueOnSlice;
128  }
129 
134  };
135 
137  {
138  //typedef MSynch::SmartPtr<TextHeightAndCount> Ptr;
139 
140  TextHeightAndCount(Int32 iTextHeight, Int32 iLineCount, TextObject::Ptr iTextPtr) : mTextHeight(iTextHeight)
141  , mLineCount(iLineCount), mTextPtr(iTextPtr)
142  {}
143 
144  //friend bool GreaterThan(const TextHeightAndCount& irTextHeightAndCountA, const TextHeightAndCount& irTextHeightAndCountB);
145 
149  };
150 
151  bool GreaterThan(const TextHeightAndCount& irTextHeightAndCountA, const TextHeightAndCount& irTextHeightAndCountB);
152 
153  class PiePlot : public Plot
154  {
155  public:
157 
158  PiePlot(const TripleId& irTripleId, GraphObjectManager* ipManager, const Rect2D& irDeviceRect);
159 
160  //virtual functions from GraphObjectManager
161  virtual void GenerateMapAndList();
162  virtual void GetOptions(Int32 iSeriesId, Int32 iPropertyId, CComVariant* opValue) const;
163  virtual void Draw();
164  virtual void GenerateView();
165 
166  //override functions
167  virtual GraphObject::Ptr OnPointDetection(const Point2D& irCursor) const;
168  virtual void OnRectangleSelection(const Rect2D& irRect, std::vector<GraphObject::Ptr>& iorSelectedObjects) const;
169 
170  virtual bool GetToolTipData(Int32 iSeriesID, Int32 iGroupID, double& orValue, double& orPercentValue, Int32 iOffset = 0);
171  virtual bool GetGroupSpace(std::vector<Int32>& orVect, Int32 iGroupIndex);
172 
173  void GetOptions(Int32 iPropertyId, CComVariant* opValue) const;
174 
179  Int32 GetPiesPerRow() const;
180 
185  Int32 GetNumberOfRows() const;
186 
193  const EnumPieDataLabelsPosition GetValuePosition(Int32 iSeriesIndex) const;
194 
201  const EnumPieDataLabelsPosition GetLabelPosition(Int32 iSeriesIndex) const;
202 
203  double GetSmartLabelRadius(Int32 iGroupId) const;
204 
206  bool GetDataPoint(Int32 iSeriesId, Int32 iGroupId, Point2D& orDataPoint);
207 
208  protected:
209  virtual void SetGraphType(EnumDSSGraphType iType);
210 
217 
223  void hSetValuePosition(Int32 iSeriesIndex, EnumDSSGraphDataTextPosition iPosition);
224 
231 
237  void hSetLabelPosition(Int32 iSeriesIndex, EnumDSSGraphDataTextPosition iPosition);
238 
247  void hGetDrawingOrder(std::vector<float>& irAngles, std::vector<Int32>& orDrawingOrderIndex, Int32& orDividedIndex, Int32& orDividedAngle) const;
248 
252  void hLoadProperties();
253 
258  void hLoadSeriesProperties(Int32 iSeriesIndex);
259 
260  virtual bool hDoInitialize();
261 
262  virtual void hGenerateMapAndListForGroup(Int32 iGroupId, std::vector<GraphCollectionObject::Ptr>& iorSliceCollection, std::vector<GraphCollectionObject::Ptr>& iorTextLabelCollection,
263  std::vector<GraphCollectionObject::Ptr>& iorTextValueCollection);
264 
269  bool hAdjustBigFontOutSideForGroup(Int32 iGroupId);
270 
271  void hGetAngleInfoForGroup(Int32 iGroupId, Int32& orValidSeriesNumber, Int32& orValidSeriesIndex, std::vector<float>& orAngles);
272 
273  virtual const PieSliceObject* hCreateSlice(Int32 iSeriesIndex, Int32 iGroupId, float iStartAngle, float iEndAngle, bool iIsOneSeries, GraphCollectionObject::Ptr iSliceCollectionPtr);
274 
275  void hCreateLabelsAndValues(Int32 iSeriesIndex, Int32 iGroupId, const PieSliceObject* ipSlice, GraphCollectionObject::Ptr iLabelCollectionPtr, GraphCollectionObject::Ptr iValueCollectionPtr);
276 
277  bool hGetDisplayValue(Int32 iSeriesIndex, Int32 iGroupId, double& orValue);
278 
279  TextObject::Ptr hCreateValue(Int32 iSeriesIndex, Int32 iGroupId, double& irValue, GraphCollectionObject::Ptr ioTextValueCollectionPtr);
280 
281  TextObject::Ptr hCreateLabel(Int32 iSeriesIndex, Int32 iGroupId, GraphCollectionObject::Ptr ioTextLabelCollectionPtr);
282 
283  void hCreateRingPieTotal();
284 
285  void hCreateGroupLabel();
286 
287  virtual void hGetInitRadius();
288 
289  void hSmartAndSideAdjustForGroup(Int32 iGroupId);
290 
291  void hSmartAndSide(Int32 iGroupId);
292 
293  void hSmartLabels(Int32 iGroupId);
294 
295  void hSideOutsideSlice(Int32 iGroupId);
296 
297  void hSmartLabelsOnSlice(Int32 iGroupId);
298 
299  void hSmartLabelsOutsideSlice(Int32 iGroupId);
300 
301  void hLabelsOnSide(Int32 iGroupId);
302 
303  void hLabelsOnSliceSide(Int32 iGroupId);
304 
305  void hSmartAdjustY(Int32 iGroupId);
306 
307  void hLabelsOnSideForLR(Int32 iGroupId, bool iIsLeft);
308 
309  void hGetRectsAndIndexLR(Int32 iGroupId, bool iIsLeft, std::vector<Rect2D>& orRect, std::vector<Int32>& orIndex, Int32& orHeightTotal);
310 
311  void hSmartLabelsOnSliceLR(Int32 iGroupId, bool iIsLeft, double iRadiusA, double iRadiusB);
312 
313  void hSmartLabelsOutsideSliceLR(Int32 iGroupId, bool iIsLeft, double iRadiusA, double iRadiusB, std::vector<Rect2D>& irRect, std::vector<Int32>& irIndex, Int32 iHeightTotal);
314 
315  void hLabelsOnSliceSideForLR(Int32 iGroupId, bool iIsLeft);
316 
317  void hSmartAdjustYForLR(Int32 iGroupId, bool iIsLeft);
318 
319  bool hIsRectInEllipse(const Rect2D& irRect, const Point2D& irCenter, double& irRadiusA, double& irRadiusB);
320 
321  bool hIsPointInEllipse(const Point2D& irPoint, const Point2D& irCenter, double& irRadiusA, double& irRadiusB);
322 
323  Int32 hGetDeltaXFromEllipseY(Int32 iY, const Point2D& irCenter, double& irRadiusA, double& irRadiusB);
324 
325  virtual void hUpdateAllRadius(bool iIsProportional);
326 
327  void hSetOnSliceHeightLimitationForGroup(Int32 iGroupId, bool iIsLeft);
328 
330 
331  void hMoveLabel(Int32 iGroupId, TextLabelAndValue::Ptr iTextValueAndLabelPtr);
332 
333  void hMoveOutsideLabel(Point2D& irPoint, Int32 iXSign, Int32 iYSign, TextObject::Ptr iTextPtr);
334 
335  void hGetOffScale(Int32 iGroupId, TextLabelAndValue::Ptr iTextValueAndLabelPtr, Int32& orHorizontalOffScale, Int32& orVerticalOffScale);
336 
337  void hGetRectForLabelAndValue(TextLabelAndValue::Ptr iTextPtr, bool iIsInside, bool iIsRotateRect, bool iIsVerticalAligned, Rect2D& orRect);
338 
339  void hAdjustToOutside(Int32 iGroupId, TextLabelAndValue::Ptr iTextPtr);
340 
341  void hCreateLeaderLines(GraphCollectionObject::Ptr ioLeaderLineCollectionPtr);
342 
343  void hCreateLeaderLinesForGroupLR(Int32 iGroupId, bool iIsLeft, GraphCollectionObject::Ptr ioLeaderLineCollectionPtr);
344 
345  bool hGetLeaderLinePoint(TextLabelAndValue::Ptr iTextValueAndLabelPt, Point2D& orPoint);
346 
348 
349  bool hMoveLabelInEllipse(Int32 iGroupId, TextLabelAndValue::Ptr iTextValueAndLabelPtr, Rect2D& irBoundingRect, bool& orIsValidDirection, bool& orUpDirection);
350 
351  void hMoveLabelInAngularBisector(Int32 iGroupId, TextLabelAndValue::Ptr iTextValueAndLabelPtr, Rect2D& irBoundingRect, Int32 iYOffset);
352 
353  bool hRectangleEqual(const Rect2D& irRectA, const Rect2D& irRectB);
354 
355  void hSetHeightLimit(Int32 iGroupId, TextLabelAndValue::Ptr iTextValueAndLabelPtr);
356 
357  bool hGetOnSliceBound(Int32 iGroupId, TextLabelAndValue::Ptr iTextValueAndLabelPtr, Rect2D& irBoundingRect, bool iIsOuter, bool iIsMoveInEllipse, Point2D& orBound);
358 
359  //void hGetOutsideLabelRotation(std::vector<GraphCollectionObject::Ptr>& irTextLabelCollection, std::vector<GraphCollectionObject::Ptr>& irTextValueCollection);
360 
367  void hSmartDistance(std::vector<Int32>& iorDistance) const;
368 
369  //all other members are initialized in hDoInitialize()
370  protected:
371  std::vector<double> mGroupTotals;
374  Int32 mInitRadius; // no proportional
377 
378  //initialize in hLoadProperties() & hLoadSeriesProperties.
379  std::vector<GraphSeriesPie::Ptr> mSeriesOptions;
380 
381  //vector for slice object
382  std::vector<std::vector<PieSliceObject::Ptr> > mSlices;
383 
384 
386 
387 // private:
388  //member variables
389 
390 
391 
392 
393  //different the mPiesPerRow in GraphOptionsPie, it is the actually pies in per row
396 
397  //the cairo scale value.
398  double mScale;
399 
400  //rectangles
401  std::vector<Rect2D> mGroupRects;
402  std::vector<Rect2D> mPieRects;
403 
404  //center and radius
405  std::vector<Point<Int32> > mPieCenters;
406  std::vector<Int32> mRadius;
407 
408 
409  std::vector<TextObject::Ptr> mGroupLabels;
411  std::vector<Int32> mGroupLabelY;
412 
415 
416 
417  //vector for leader lines
418  //std::vector<PolyLineObject::Ptr> mLeaderLines;
419 
420  //text object for all the groups
421  //we have to store all the know whether we are going to make the pie size smaller or
422  //bigger after checking whether all labels should be on slice.
423  //one for left side, one for right side
424  //the Int32 value indicate the series index
425 
426  std::vector<std::vector<TextLabelAndValue::Ptr> > mLeftTexts;
427  std::vector<std::vector<TextLabelAndValue::Ptr> > mRightTexts;
428 
429  //std::vector<Int32> mAngles;
430 
432 
434  //bool mIsAllOutsideLabelSameRotated;
435 
437  };
438 
440  {
441  return mPiesPerRowInChart;
442  }
443 
445  {
446  return mNumberRows;
447  }
448 
450  {
451  return mSeriesOptions[iSeriesIndex]->mDataLabels.mDataValuesPosition;
452  }
453 
455  {
456  return mSeriesOptions[iSeriesIndex]->mDataLabels.mDataLabelsPosition;
457  }
458 
459  inline double PiePlot::GetSmartLabelRadius(Int32 iGroupId) const
460  {
461  return 0.6 * mInitRadius + 0.6 * mRadius[iGroupId];
462  }
463 
464 }
465 
466 #endif
void hSmartAdjustYForLR(Int32 iGroupId, bool iIsLeft)
EnumGMPieLayout mGMPieLayout
Definition: PiePlot.h:109
Int32 mDetachSlice
Definition: PiePlot.h:73
virtual void hGetInitRadius()
TextLabelAndValue(const PieSliceObject *ipSlice, TextObject::Ptr iLabelPtr, TextObject::Ptr iValuePtr, bool iLabelOnSlice, bool iValueOnSlice, Int32 iSeriesIndex)
Definition: PiePlot.h:120
virtual void OnRectangleSelection(const Rect2D &irRect, std::vector< GraphObject::Ptr > &iorSelectedObjects) const
Definition: PiePlot.h:25
bool hAdjustBigFontOutSideForGroup(Int32 iGroupId)
std::vector< Point< Int32 > > mPieCenters
Definition: PiePlot.h:405
const PieSliceObject * mpSlice
Definition: PiePlot.h:130
void hGetAngleInfoForGroup(Int32 iGroupId, Int32 &orValidSeriesNumber, Int32 &orValidSeriesIndex, std::vector< float > &orAngles)
TextObject::Ptr mValueLabelPtr[2]
Definition: PiePlot.h:131
std::vector< GraphSeriesPie::Ptr > mSeriesOptions
Definition: PiePlot.h:379
void hGetRectForLabelAndValue(TextLabelAndValue::Ptr iTextPtr, bool iIsInside, bool iIsRotateRect, bool iIsVerticalAligned, Rect2D &orRect)
bool mSmartLabelPlacement
Definition: PiePlot.h:101
void hSetLabelPosition(Int32 iSeriesIndex, EnumDSSGraphDataTextPosition iPosition)
EnumPieDataLabelsPosition
Definition: PiePlot.h:36
void hSmartAndSide(Int32 iGroupId)
Definition: PiePlot.h:51
void hLabelsOnSideForLR(Int32 iGroupId, bool iIsLeft)
Definition: PiePlot.h:39
bool hIsRectInEllipse(const Rect2D &irRect, const Point2D &irCenter, double &irRadiusA, double &irRadiusB)
Int32 mPieDepth
Definition: PiePlot.h:91
Definition: PiePlot.h:32
Int32 GetPiesPerRow() const
Definition: PiePlot.h:439
Definition: PiePlot.h:153
EnumPieDataLabelsPosition mDataLabelsPosition
Definition: PiePlot.h:107
Definition: PiePlot.h:30
virtual void Draw()
void hLabelsOnSliceSideForLR(Int32 iGroupId, bool iIsLeft)
std::vector< double > mGroupTotals
Definition: PiePlot.h:371
Definition: PieSliceObject.h:74
virtual void GenerateView()
This struct is from ChartCtrl.h.
Definition: NumberObject.h:38
std::vector< std::vector< PieSliceObject::Ptr > > mSlices
Definition: PiePlot.h:382
void hAdjustToOutside(Int32 iGroupId, TextLabelAndValue::Ptr iTextPtr)
ChartAdvFormat mGraphNumberFormat
Definition: PiePlot.h:108
EnumDSSGraphDataTextPosition hGetValuePosition(Int32 iSeriesIndex) const
Definition: GraphCollectionObject.h:19
Int32 mRingPieFactor
Definition: PiePlot.h:94
void hAdjustAllLabelsPosition()
bool mShowDataValues
Definition: PiePlot.h:104
std::vector< std::vector< TextLabelAndValue::Ptr > > mRightTexts
Definition: PiePlot.h:427
bool mValueLabelOnSlice[2]
Definition: PiePlot.h:132
void hSmartLabelsOnSliceLR(Int32 iGroupId, bool iIsLeft, double iRadiusA, double iRadiusB)
double GetSmartLabelRadius(Int32 iGroupId) const
Definition: PiePlot.h:459
std::vector< Int32 > mRadius
Definition: PiePlot.h:406
void hSetHeightLimit(Int32 iGroupId, TextLabelAndValue::Ptr iTextValueAndLabelPtr)
void hSetValuePosition(Int32 iSeriesIndex, EnumDSSGraphDataTextPosition iPosition)
double mScale
Definition: PiePlot.h:398
Int32 mPieRotation
Definition: PiePlot.h:92
TextObject::Ptr hCreateValue(Int32 iSeriesIndex, Int32 iGroupId, double &irValue, GraphCollectionObject::Ptr ioTextValueCollectionPtr)
void hCreateLabelsAndValues(Int32 iSeriesIndex, Int32 iGroupId, const PieSliceObject *ipSlice, GraphCollectionObject::Ptr iLabelCollectionPtr, GraphCollectionObject::Ptr iValueCollectionPtr)
Int32 mMaxGroupLabelsHeight
Definition: PiePlot.h:410
void hSmartLabelsOutsideSlice(Int32 iGroupId)
EnumDSSGraphDataTextPosition
Definition: DSSIPhoneEnums.h:1836
void hGetRectsAndIndexLR(Int32 iGroupId, bool iIsLeft, std::vector< Rect2D > &orRect, std::vector< Int32 > &orIndex, Int32 &orHeightTotal)
Int32 mLineCount
Definition: PiePlot.h:147
virtual bool GetToolTipData(Int32 iSeriesID, Int32 iGroupID, double &orValue, double &orPercentValue, Int32 iOffset=0)
bool hGetDisplayValue(Int32 iSeriesIndex, Int32 iGroupId, double &orValue)
EnumPieDataLabelsPosition mDataValuesPosition
Definition: PiePlot.h:106
Definition: PiePlot.h:116
virtual void GenerateMapAndList()
virtual void SetGraphType(EnumDSSGraphType iType)
bool mShowRingPieTotal
Definition: PiePlot.h:100
TextObject::Ptr mTextPtr
Definition: PiePlot.h:148
Int32 GetNumberOfRows() const
Definition: PiePlot.h:444
void hSideOutsideSlice(Int32 iGroupId)
EnumPieDataLabelsPosition mDataValuesPosition
Definition: PiePlot.h:60
std::vector< std::vector< TextLabelAndValue::Ptr > > mLeftTexts
Definition: PiePlot.h:426
void hCreateGroupLabel()
bool hGetLeaderLinePoint(TextLabelAndValue::Ptr iTextValueAndLabelPt, Point2D &orPoint)
Int32 mPiesPerRowInChart
Definition: PiePlot.h:394
void hCreateLeaderLines(GraphCollectionObject::Ptr ioLeaderLineCollectionPtr)
TextObject::Ptr hCreateLabel(Int32 iSeriesIndex, Int32 iGroupId, GraphCollectionObject::Ptr ioTextLabelCollectionPtr)
#define Int32
Definition: BasicTypes.h:20
Definition: PiePlot.h:136
GraphPieDataLabels()
Definition: PiePlot.h:53
virtual void hGenerateMapAndListForGroup(Int32 iGroupId, std::vector< GraphCollectionObject::Ptr > &iorSliceCollection, std::vector< GraphCollectionObject::Ptr > &iorTextLabelCollection, std::vector< GraphCollectionObject::Ptr > &iorTextValueCollection)
bool mShowDataLabels
Definition: PiePlot.h:58
void hMoveLabel(Int32 iGroupId, TextLabelAndValue::Ptr iTextValueAndLabelPtr)
Definition: PiePlot.h:24
bool mPieRestore
Definition: PiePlot.h:103
MSynch::SmartPtr< TextLabelAndValue > Ptr
Definition: PiePlot.h:118
const EnumPieDataLabelsPosition GetLabelPosition(Int32 iSeriesIndex) const
Definition: PiePlot.h:454
void hSetOnSliceHeightLimitationForGroup(Int32 iGroupId, bool iIsLeft)
Definition: PiePlot.h:33
TextHeightAndCount(Int32 iTextHeight, Int32 iLineCount, TextObject::Ptr iTextPtr)
Definition: PiePlot.h:140
void hSmartLabels(Int32 iGroupId)
void hLabelsOnSliceSide(Int32 iGroupId)
PiePlot(const TripleId &irTripleId, GraphObjectManager *ipManager, const Rect2D &irDeviceRect)
void hLoadSeriesProperties(Int32 iSeriesIndex)
Int32 mPieTilt
Definition: PiePlot.h:90
GraphOptionsPie()
Definition: PiePlot.h:80
Definition: PiePlot.h:48
MSynch::SmartPtr< GraphSeriesPie > Ptr
Definition: PiePlot.h:67
Definition: PiePlot.h:65
bool mShowDataValues
Definition: PiePlot.h:57
EnumPieLayout mLayout
Definition: PiePlot.h:89
Definition: SmartPtr.h:38
bool hRectangleEqual(const Rect2D &irRectA, const Rect2D &irRectB)
ChartAdvFormat mNumberFormat
Definition: PiePlot.h:62
Int32 mSeriesIndex
Definition: PiePlot.h:133
bool mShowPieName
Definition: PiePlot.h:98
std::vector< Rect2D > mGroupRects
Definition: PiePlot.h:401
EnumDSSGraphType
Definition: DSSIPhoneEnums.h:2431
void hGetOffScale(Int32 iGroupId, TextLabelAndValue::Ptr iTextValueAndLabelPtr, Int32 &orHorizontalOffScale, Int32 &orVerticalOffScale)
EnumGMPieLayout
Definition: PiePlot.h:28
Definition: PiePlot.h:44
bool mPieSizeProportional
Definition: PiePlot.h:96
bool mShowDataLabels
Definition: PiePlot.h:105
bool mShowDataValuesAsPercentage
Definition: PiePlot.h:99
bool hGetOnSliceBound(Int32 iGroupId, TextLabelAndValue::Ptr iTextValueAndLabelPtr, Rect2D &irBoundingRect, bool iIsOuter, bool iIsMoveInEllipse, Point2D &orBound)
Definition: PiePlot.h:38
GraphPieDataLabels mDataLabels
Definition: PiePlot.h:75
virtual bool GetGroupSpace(std::vector< Int32 > &orVect, Int32 iGroupIndex)
Int32 mInitRadius
Definition: PiePlot.h:374
double mMaxGroupTotal
Definition: PiePlot.h:372
bool hMoveLabelInEllipse(Int32 iGroupId, TextLabelAndValue::Ptr iTextValueAndLabelPtr, Rect2D &irBoundingRect, bool &orIsValidDirection, bool &orUpDirection)
GraphSeriesPie()
Definition: PiePlot.h:69
virtual GraphObject::Ptr OnPointDetection(const Point2D &irCursor) const
bool mIsAllLabelsOnSlice
Definition: PiePlot.h:431
void hSmartLabelsOutsideSliceLR(Int32 iGroupId, bool iIsLeft, double iRadiusA, double iRadiusB, std::vector< Rect2D > &irRect, std::vector< Int32 > &irIndex, Int32 iHeightTotal)
Definition: ABLPlot.h:21
Definition: PiePlot.h:47
Int32 mNumberRows
Definition: PiePlot.h:395
std::vector< TextObject::Ptr > mGroupLabels
Definition: PiePlot.h:409
bool GetDataPoint(Int32 iSeriesId, Int32 iGroupId, Point2D &orDataPoint)
Provide position information for tooltip display on iPad.
void hCreateRingPieTotal()
GraphOptionsPie mPieOption
Definition: PiePlot.h:376
void hGetDrawingOrder(std::vector< float > &irAngles, std::vector< Int32 > &orDrawingOrderIndex, Int32 &orDividedIndex, Int32 &orDividedAngle) const
bool hIsPointInEllipse(const Point2D &irPoint, const Point2D &irCenter, double &irRadiusA, double &irRadiusB)
virtual bool hDoInitialize()
bool hAdjustRadiusForOutsideLabels()
void hSmartLabelsOnSlice(Int32 iGroupId)
Int32 mDepthInChart
Definition: PiePlot.h:385
bool mPieTiltOn
Definition: PiePlot.h:95
std::vector< Int32 > mGroupLabelY
Definition: PiePlot.h:411
Definition: PiePlot.h:46
Definition: Msi_ccomvariant.h:24
virtual void GetOptions(Int32 iSeriesId, Int32 iPropertyId, CComVariant *opValue) const
EnumPieDataLabelsPosition mDataLabelsPosition
Definition: PiePlot.h:61
void hSmartAndSideAdjustForGroup(Int32 iGroupId)
void hLabelsOnSide(Int32 iGroupId)
bool mShowLeaderLines
Definition: PiePlot.h:59
void hCreateLeaderLinesForGroupLR(Int32 iGroupId, bool iIsLeft, GraphCollectionObject::Ptr ioLeaderLineCollectionPtr)
Definition: PiePlot.h:78
bool mShowLabelsOnSide
Definition: PiePlot.h:102
virtual const PieSliceObject * hCreateSlice(Int32 iSeriesIndex, Int32 iGroupId, float iStartAngle, float iEndAngle, bool iIsOneSeries, GraphCollectionObject::Ptr iSliceCollectionPtr)
virtual void hUpdateAllRadius(bool iIsProportional)
void hSmartAdjustY(Int32 iGroupId)
EnumDSSGraphDataTextPosition hGetLabelPosition(Int32 iSeriesIndex) const
const EnumPieDataLabelsPosition GetValuePosition(Int32 iSeriesIndex) const
Definition: PiePlot.h:449
Definition: Plot.h:70
Int32 hGetDeltaXFromEllipseY(Int32 iY, const Point2D &irCenter, double &irRadiusA, double &irRadiusB)
bool mIs2DCircular
Definition: PiePlot.h:97
void hMoveOutsideLabel(Point2D &irPoint, Int32 iXSign, Int32 iYSign, TextObject::Ptr iTextPtr)
Int32 mPiesPerRow
Definition: PiePlot.h:93
MSynch::SmartPtr< PiePlot > Ptr
Definition: PiePlot.h:156
std::vector< Rect2D > mPieRects
Definition: PiePlot.h:402
bool GreaterThan(const TextHeightAndCount &irTextHeightAndCountA, const TextHeightAndCount &irTextHeightAndCountB)
double mMinGroupTotal
Definition: PiePlot.h:373
Definition: GraphObjectManager.h:37
Int32 mMaxExplode
used for the rotation handling
Definition: PiePlot.h:436
void hMoveLabelInAngularBisector(Int32 iGroupId, TextLabelAndValue::Ptr iTextValueAndLabelPtr, Rect2D &irBoundingRect, Int32 iYOffset)
void hSmartDistance(std::vector< Int32 > &iorDistance) const
Definition: PiePlot.h:45
Use four Int32 values to represent a 2D rectangle.
Definition: Rect2D.h:25
Int32 mTextHeight
Definition: PiePlot.h:146
EnumPieLayout
Definition: PiePlot.h:22
EnumRadiusRatio
Definition: PiePlot.h:42
Definition: Common.h:397
Int32 mGroupCount
Definition: PiePlot.h:375
Definition: PiePlot.h:31
bool mDeleteSlice
Definition: PiePlot.h:74