Mobile API Reference  MicroStrategy 2019
BarSeriesRenderer.h
Go to the documentation of this file.
1 //=======================================================================
2 // Filename: BarSeriesRenderer.h
3 // Date: 2008-10-06
4 // Authors: Bing Huang
5 
6 // Copyright (C) 1997-2008 MicroStrategy Incorporated
7 // All rights reserved
8 //=======================================================================
9 
10 #ifndef MsiChart_BarSeriesRenderer_h
11 #define MsiChart_BarSeriesRenderer_h
12 
13 #include "SeriesRenderer.h"
14 #include "GraphCollectionObject.h"
15 #include "DataLabelManager.h"
16 
17 namespace MsiChart
18 {
19  /*struct BarDataLabelInfo
20  {
21  bool mIsDisPlayed; //<Whether this label is already been located
22  bool mIsValid; //Is Host marker valid ?
23 
24  Int32 mSeriesId;
25  Int32 mGroupId;
26 
27  Int32 mSeriesInfo;
28 
29  Rect2D mHostMarkerBound;
30 
31  TextObject::Ptr mLabelPtr;
32 
33  BarDataLabelInfo(): mSeriesId(0),mGroupId(0), mIsDisPlayed(false), mIsValid(false)
34  {}
35 
36  Rect2D ToRectangle()
37  {
38  Rect2D lRect;
39  mLabelPtr->GetBoundingRect(lRect);
40  return lRect;
41  }
42  };
43 
44  typedef std::vector<BarDataLabelInfo> DataLables;*/
45 
47  struct BarOptions
48  {
50  mRiserShape(0),mShowErrorBar(false),mHasMiddleValue(false),
52  mColorBySeries(true){}
55  unsigned char mRiserShape;
61  };
62 
64  struct RiserInfo
65  {
66  RiserInfo(Int32 iGroupID,Int32 iSeriesInfoID)
67  : mGroupID(iGroupID),mSeriesInfoID(iSeriesInfoID)
68  {}
71 
72  virtual Int32 GetGroupIndex();
73  };
74 
76 
77  struct RiserInfoWithIndex : public RiserInfo //used by Pareto chart...
78  {
79 
80  RiserInfoWithIndex(Int32 iGroupID,Int32 iSeriesInfoID) :
81  RiserInfo(iGroupID, iSeriesInfoID)
82  {
83  mGroupIndex = iGroupID;
84  }
85 
86 
87  RiserInfoWithIndex(Int32 iGroupID, Int32 iSeriesInfoID, Int32 iGroupIndex) :
88  RiserInfo(iGroupID, iSeriesInfoID)
89  {
90  mGroupIndex = iGroupIndex;
91  }
92 
93 
95 
96  virtual Int32 GetGroupIndex();
97  };
98 
100 
102 
104  {
108  };
109 
111  {
112  struct PointInfo
113  {
115 
117  {
118  Clear(SLC_BOTH);
119  }
120 
122  {
123  if (iType == SLC_FRONT || iType == SLC_BOTH)
124  {
125  if (mpFront)
126  {
127  delete mpFront; mpFront = NULL;
128  }
129  }
130 
131  if (iType == SLC_BACK || iType == SLC_BOTH)
132  {
133  if (mpBack)
134  {
135  delete mpBack; mpBack = NULL;
136  }
137  }
138  }
139 
142  };
143 
144  SeriesLineInfo(Int32 iGroupCount, Int32 iSeriesCount):
145  mGroupCount(iGroupCount),mSeriesCount(iSeriesCount)
146  {
147 
148  if (iGroupCount > 0 && iSeriesCount > 0)
149  mpPointInfo = new PointInfo[iSeriesCount * iGroupCount];
150  }
152  {
153  delete [] mpPointInfo;
154  }
155 
156  void SetPoint(Int32 iGroupID, Int32 iSeriesID, const Point2D& irPoint, bool iFront)
157  {
158  if (iFront)
159  {
160  mpPointInfo[iGroupID + iSeriesID * mGroupCount].Clear(SLC_FRONT);
161  mpPointInfo[iGroupID + iSeriesID * mGroupCount].mpFront = new Point2D(irPoint);
162  }
163  else
164  {
165  mpPointInfo[iGroupID + iSeriesID * mGroupCount].Clear(SLC_BACK);
166  mpPointInfo[iGroupID + iSeriesID * mGroupCount].mpBack = new Point2D(irPoint);
167  }
168  }
169 
170  bool GetPoint(Int32 iGroupID, Int32 iSeriesID, Point2D& orPoint, bool iFront)
171  {
172  if (iFront)
173  {
174  if(mpPointInfo[iGroupID + iSeriesID * mGroupCount].mpFront)
175  {
176  orPoint = (*mpPointInfo[iGroupID + iSeriesID * mGroupCount].mpFront);
177  return true;
178  }
179  }
180  else
181  {
182  if(mpPointInfo[iGroupID + iSeriesID * mGroupCount].mpBack)
183  {
184  orPoint = (*mpPointInfo[iGroupID + iSeriesID * mGroupCount].mpBack);
185  return true;
186  }
187  }
188 
189  return false;
190  }
191 
193 
196  };
197 
200  {
205  };
206 
211  {
212  public:
215 
219  BarSeriesRenderer(const TripleId& irTripleId, GraphObjectManager* ipManager,
220  Dataset::Ptr iDatasetPtr, Legend::Ptr iLegendPtr);
221 
223  {
224  if (mpSeriesLineInfo)
225  {
227  }
228  }
229 
230  virtual void GenerateMapAndList();
231 
238  virtual void GenerateByValueAxis(EnumValueAxis iValueAxis, std::vector<GraphObject::Ptr>& iorGraphObjectList);
239 
240 
245  void SetDeviceDataArea(const Rect2D& irDeviceDataArea);
246 
247  virtual void GetOptions(Int32 iSeriesId, Int32 iPropertyId, CComVariant* opValue) const;
248 
250  virtual void AddTextToMapAndList(std::map<TripleId, GraphObject::Ptr>& irGraphObjectMap, std::vector<GraphObject::Ptr>& irGraphObjectList);
251 
253  void hGenerateTrendLine();
254 
256  virtual bool GetDataPoint(Int32 iSeriesId, Int32 iGroupId, Point2D& orDataPoint);
257 
262  void ReserveAreaForDataLabels(Rect2D& iorRect);
263 
264  //----Data Label for Graph Matrix---//
265  bool ShouldRotateDataLabel();
266  void AddObjectsToDataLabelManager(DataLabelManager::Ptr iDataLabelManagerPtr);
268  protected:
270  virtual void LoadProperties();
271 
277  virtual void hRenderItems(EnumValueAxis iVA, BOOL iIsOnlyForDataLabels);
278 
284  void hGenerateByValueAxis(EnumValueAxis iValueAxis, BOOL iIsOnlyForDataLabels);
285 
286  //private:
287 
289  bool hShouldRotateDataLabel();
290  Int32 hGetDataLabelNumber(bool iIsRotated);
291  void hCreateDataLabels(std::vector<Rect2D> &iorBarsRect, std::vector<Rect2D> &iorDLRect, bool iIsRotated, bool iIsOnlyForRect = false);
292  void hCreateOneDataLabelItem(const RiserInfo& irRiserInfo, std::vector<Rect2D> &iorBarsRect, std::vector<Rect2D> &iorDLRect, bool iIsRoteated, bool iIsOnlyForRect = true);
293  bool hIsFitPaddingToBorder(const Rect2D &irDLRect, const Int32 &irPadding);
294  bool hIsTwoRectFitPadding(const Rect2D &irDLRect, const Rect2D &irRect, const Int32 &irPadding);
295  void hPutOneDataLabel(const Rect2D &irBarRect, TextObject::Ptr irDLText, double irValue, bool iIsForJudgeRotate = false, bool iIsRotated = false); // used for both verticla and horizontal bar, cal the data label's position
296  void hPutOneDataLabel(const Rect2D &irHostRect, TextObject::Ptr irLDText, EnumDssGraphMatrixDataLabelPosition irLocation, bool iIsRotated);
297  //TextObject::Ptr hCreateDataLabelForGraphMatrix(const double &irValue, GraphCollectionObject *ipCollection);
298  void hRenderDataLabels(); //detect overlap, show data labels
300 
302 
304  void hGetRenderingType();
305 
307  void hCalSeriesOrderForOneGroup(Int32 iGroupIndex, std::vector<Int32>& orSeries, EnumValueAxis iVA);
308 
309 
312 
314  Int32 hGetNumberOfVA() const;
315 
317  void hGetVAOrder(EnumValueAxis& orFirst, EnumValueAxis& orSecond);
318 
320  void hGetSeriesByVA(std::vector<Int32>& irSeries,EnumValueAxis iVA);
321 
323  void hGetSeriesOrderByType(Int32 iGroupIndex, std::vector<Int32>& orSerie, EnumValueAxis iVA);
324 
326  virtual void hGetRiserStartPosAndSize(const RiserInfo& irRiserInfo, Int32& orStart, Int32& orSize);
327 
331  void hGetLogicalMiddlePosition(Int32 iSeriesIndex, Int32 iGroupId, double& orPosition) const;
332 
334  virtual Int32 hGetIndexInColumn(const RiserInfo& irRiserInfo);
335 
337  Int32 hGetGroupIndex(const RiserInfo& irRiserInfo);
338 
340  virtual void hCalBarWidth();
341 
342  //lizhang, 2016-06-21, US55868, Calculate how many series clusters in combo chart when subtype is Absolue(Cluster)
343  void hCalClusterNum();
344 
345  // Calculate the drawing order for 3 different kinds of render
346  // Need to consider 3 factors
347  // 1. Depth direction 2. Plot Orientation 3. ValueAxis.IsReverseOrder 4. Data
348 
350  void hAdjustSeriesOrderForNegativeValue(Int32 iGroupIndex, std::vector<Int32> &iorVecSeries);
351 
356  void hRenderOneItem(const RiserInfo& irRiserInfo, std::vector<std::pair<Int32, TextObject::Ptr> >& orTextForGroup, BOOL iIsForReserveArea);
358 
359  //The followings are helper functions called by hRenderOneItem
360  bool hPrepareData(const RiserInfo& irRiserInfo, double& orValue);
361  Rect2D hPrepareRect(const RiserInfo& irRiserInfo, double iDataValue, bool& orAboveZero);
362  GraphObject::Ptr hPrepareRectangleObject(const RiserInfo& irRiserInfo, const Rect2D& irRectBar, bool iAboveZero);
363  //lizhang, 2016-06-20, US55868, new shapes in combo
364  void hGetSingleShapeCenter(Point2D& iCenter, const Rect2D& iRectBar, bool iAboveZero);
365  GraphObject::Ptr hprepareSingleShape(const TripleId& irTripleId, const Point2D& irPoint, bool iIsLineAsDots);
366  void hGetSingleShapeSize(Int32& iMarkersize, const TripleId& irTripleId, bool iIsLineAsDots);
367 
368  void hPrepareAnimationForOneBar(const RiserInfo& irRiserInfo, const Rect2D& irRectBar, GraphObject::Ptr iObjectPtr);
369  void hPostProcessOneBar(const RiserInfo& irRiserInfo, GraphObject::Ptr iObjectPtr);
370  void hPrepareErrorBar(const RiserInfo& irRiserInfo, const Rect2D& irRectBar);
371  void hPrepareGMRiserLabel(const TripleId& ID, const RiserInfo& irRiserInfo, const Rect2D& irRectBar, const Rect2D& irOldRectBar, double iDataValue);
372  bool hCheckBarRect(const Int32 iSeriesIndex, const Rect2D& irRect);
373 
374  bool hIsTickShapeForGMObject(const TripleId& iID);
375 
378  bool hGetOneBarRect(const RiserInfo& irRiserInfo, Rect2D& iorRect, bool iIsOnlyForDataLabels = true);
379 
381  TextObject::Ptr hCreateRiserLabel(const RiserInfo& irRiserInfo, const Rect2D& irRefRect, GraphCollectionObject::Ptr iColPtr);
382 
384  void hCheckLabelForClipping(const RiserInfo& irRiserInfo, TextObject::Ptr iTextObjectPtr, const Point2D& irMax, const Point2D& irMin);
385 
387  bool hGetSamplePoint(const RiserInfo& irRiserInfo, Point<double>& orSample);
388 
390  void hGetSeriesLinePoint(const RiserInfo& irRiserInfo, const Rect2D& irRefRect, Point2D& orFront, Point2D& orBack);
391 
393  void hGenerateSeriesLine(EnumValueAxis iValueAxis);
394 
395  void hSmartLabelForCluster(EnumValueAxis iVA, std::vector<TextObject::Ptr>& irTextForGroup);
396 
397  bool hIsLegendMarkerAddedToCollection(Int32 iSeriesID);
398 
401  bool hUpdateBarRectSize(const RiserInfo& irRiserInfo, Rect2D& iorRect, bool iIsDataPointAboveZero, double iDataValue);
402  bool hUpdateBarRectSizeToTickMode(const RiserInfo& irRiserInfo, Rect2D& iorRect, bool iIsDataPointAboveZero, double iDataValue);
403 
405  double hGetBarRiserWidth(const RiserInfo& irRiserInfo);
406  double hGetBarThickness(const RiserInfo& irRiserInfo);
407  bool hUpdateSpecificColor(const TripleId& irId, GraphObject::Ptr lPtr);
408  void hPrepareForAnimation();
409  //lizhang, de38822, 20160727, reform case in combo
410  bool multipleShapes();
411 
418  bool hReserveAreaForDataLabel(Rect2D &iorRect, TextObject* ipTextObject);
419  virtual void hReserveAreaForDataLabel(Rect2D &iorRect); //used by subclass.
420  virtual void hClearUp();
421  virtual bool hIsLabelShown();
422 
424  std::map<Int32, GraphCollectionObject::Ptr> mSGMapLabel;
426  std::map<Int32, std::vector<Point<double> > > mSGMapTrend;
429 
430  std::map<Int32, Rect2D> mMapTotalRect[2];
431 
433  double mBarWidth;
434  double mGroupSize;
438  //lizhang, 2016-06-21, US55868, how many series clusters in combo chart when subtype is Absolue(Cluster)
441 
442  std::map<Int32, bool> mAddedLegendMarkerSet;
444  std::map<Int32, Int32> mBarSeriesInfoToIndex;
445  bool mReformedCombo;//lizhang, 20160728, de38822, indicate whether data is reformed in combo
446 
447  };
448 }
449 
450 #endif
double mGroupSize
Definition: BarSeriesRenderer.h:434
void hGetSingleShapeSize(Int32 &iMarkersize, const TripleId &irTripleId, bool iIsLineAsDots)
bool hUpdateBarRectSize(const RiserInfo &irRiserInfo, Rect2D &iorRect, bool iIsDataPointAboveZero, double iDataValue)
Int32 mGroupIndex
Definition: BarSeriesRenderer.h:94
signed char BOOL
Definition: PDCwtypes.h:101
double hGetBarThickness(const RiserInfo &irRiserInfo)
bool hGetOneBarRect(const RiserInfo &irRiserInfo, Rect2D &iorRect, bool iIsOnlyForDataLabels=true)
Int32 mGapWidth
Gap width between groups.
Definition: BarSeriesRenderer.h:54
Int32 mMiddleValueSize
Middle value&#39;s size.
Definition: BarSeriesRenderer.h:58
Point< Int32 > Point2D
Definition: Point2D.h:402
Definition: BarSeriesRenderer.h:204
void hGetSeriesOrderByType(Int32 iGroupIndex, std::vector< Int32 > &orSerie, EnumValueAxis iVA)
Get the series order by rendering type for one group.
void hPrepareErrorBar(const RiserInfo &irRiserInfo, const Rect2D &irRectBar)
virtual void LoadProperties()
Load default bar graph related properties from ChartContext.
virtual void hGetRiserStartPosAndSize(const RiserInfo &irRiserInfo, Int32 &orStart, Int32 &orSize)
Get the riser&#39;s start position and size.
void AddObjectsToDLManagerForAxisOrigin(DataLabelManager::Ptr iDataLabelManagerPtr)
bool hGetSamplePoint(const RiserInfo &irRiserInfo, Point< double > &orSample)
Get the sample point of trendline one riser.
Definition: BarSeriesRenderer.h:202
Int32 hGetNumberOfVA() const
Get the number of value axis that assigned.
BarOptions()
Definition: BarSeriesRenderer.h:49
void hGetSingleShapeCenter(Point2D &iCenter, const Rect2D &iRectBar, bool iAboveZero)
bool hUpdateSpecificColor(const TripleId &irId, GraphObject::Ptr lPtr)
virtual Int32 GetGroupIndex()
Definition: BarSeriesRenderer.h:99
Int32 mBarColumns
How many columns within one group.
Definition: BarSeriesRenderer.h:437
Int32 hGetGroupIndex(const RiserInfo &irRiserInfo)
Get group index for a tripleId.
bool hUpdateBarRectSizeToTickMode(const RiserInfo &irRiserInfo, Rect2D &iorRect, bool iIsDataPointAboveZero, double iDataValue)
EnumBarRenderType
Enumeration of Bar Rendering type, corresponding to 4 layout type.
Definition: BarSeriesRenderer.h:199
virtual bool GetDataPoint(Int32 iSeriesId, Int32 iGroupId, Point2D &orDataPoint)
Provide position information for tooltip display on iPad.
~SeriesLineInfo()
Definition: BarSeriesRenderer.h:151
Definition: GraphCollectionObject.h:19
BarOptions mBarOptions
Internal bar options.
Definition: BarSeriesRenderer.h:440
void hRenderOneItem(const RiserInfo &irRiserInfo, std::vector< std::pair< Int32, TextObject::Ptr > > &orTextForGroup, BOOL iIsForReserveArea)
double mSpaceBetweenGroup
Definition: BarSeriesRenderer.h:436
Int32 mBarClusters
Definition: BarSeriesRenderer.h:439
EnumValueAxis
Definition: Plot.h:54
void hCalSeriesOrderForOneGroup(Int32 iGroupIndex, std::vector< Int32 > &orSeries, EnumValueAxis iVA)
For one group, calculate the series order.
bool hIsFitPaddingToBorder(const Rect2D &irDLRect, const Int32 &irPadding)
Definition: BarSeriesRenderer.h:110
std::map< Int32, Rect2D > mMapTotalRect[2]
Holds information for total labels, one for each Axis.
Definition: BarSeriesRenderer.h:430
PointInfo * mpPointInfo
Definition: BarSeriesRenderer.h:192
void hPrepareAnimationForOneBar(const RiserInfo &irRiserInfo, const Rect2D &irRectBar, GraphObject::Ptr iObjectPtr)
SeriesLineInfo * mpSeriesLineInfo
HOLDS information for series line information.
Definition: BarSeriesRenderer.h:428
bool GetPoint(Int32 iGroupID, Int32 iSeriesID, Point2D &orPoint, bool iFront)
Definition: BarSeriesRenderer.h:170
double hGetBarRiserWidth(const RiserInfo &irRiserInfo)
Get Bar Riser width according to different scenario. (Normal, GraphMatrix<and sub size mode>) ...
BarSeriesRenderer(const TripleId &irTripleId, GraphObjectManager *ipManager, Dataset::Ptr iDatasetPtr, Legend::Ptr iLegendPtr)
Point2D * mpBack
Definition: BarSeriesRenderer.h:141
GMDataLabelVecs mDataLabes
Definition: BarSeriesRenderer.h:299
Definition: Dataset.h:198
RiserInfoWithIndex(Int32 iGroupID, Int32 iSeriesInfoID)
Definition: BarSeriesRenderer.h:80
bool mColorBySeries
Color mode: by series or by category.
Definition: BarSeriesRenderer.h:60
Int32 mSeriesCount
Definition: BarSeriesRenderer.h:195
~PointInfo()
Definition: BarSeriesRenderer.h:116
bool hReserveAreaForDataLabel(Rect2D &iorRect, TextObject *ipTextObject)
virtual void GetOptions(Int32 iSeriesId, Int32 iPropertyId, CComVariant *opValue) const
void Clear(SERIES_LINEINFO_CLEARTYPE iType)
Definition: BarSeriesRenderer.h:121
bool hIsLegendMarkerAddedToCollection(Int32 iSeriesID)
Definition: BarSeriesRenderer.h:77
#define Int32
Definition: BasicTypes.h:20
void ReserveAreaForDataLabels(Rect2D &iorRect)
SERIES_LINEINFO_CLEARTYPE
SeriesLine Info.
Definition: BarSeriesRenderer.h:103
void hPostProcessOneBar(const RiserInfo &irRiserInfo, GraphObject::Ptr iObjectPtr)
void hAdjustSeriesOrderForNegativeValue(Int32 iGroupIndex, std::vector< Int32 > &iorVecSeries)
Adjust the drawing order for considering Negative value.
Point2D * mpFront
Definition: BarSeriesRenderer.h:140
void hSmartLabelForCluster(EnumValueAxis iVA, std::vector< TextObject::Ptr > &irTextForGroup)
Definition: TextObject.h:181
void hPrepareGMRiserLabel(const TripleId &ID, const RiserInfo &irRiserInfo, const Rect2D &irRectBar, const Rect2D &irOldRectBar, double iDataValue)
void hGenerateTrendLine()
Add the trend line to orTrendLineObjects, called by ABLPlot.
Definition: BarSeriesRenderer.h:106
std::map< Int32, std::vector< Point< double > > > mSGMapTrend
map which holds Series/GroupID -> sample points
Definition: BarSeriesRenderer.h:426
bool mHasMiddleValue
Flag indicates whether to draw middle value in Error Bar graph.
Definition: BarSeriesRenderer.h:57
EnumBarRenderType mBarRenderType
Bar Rendering Type.
Definition: BarSeriesRenderer.h:432
void hGetSeriesByVA(std::vector< Int32 > &irSeries, EnumValueAxis iVA)
Get the series info ID for the specified ValueAxis index.
bool hIsTwoRectFitPadding(const Rect2D &irDLRect, const Rect2D &irRect, const Int32 &irPadding)
bool hCheckBarRect(const Int32 iSeriesIndex, const Rect2D &irRect)
void SetDeviceDataArea(const Rect2D &irDeviceDataArea)
Definition: BarSeriesRenderer.h:201
Int32 mGroupID
Definition: BarSeriesRenderer.h:69
virtual Int32 GetGroupIndex()
Definition: BarSeriesRenderer.h:75
virtual void hCalBarWidth()
Calculate the bar width.
bool mReformedCombo
Definition: BarSeriesRenderer.h:445
double mBarWidth
Bar&#39;s width.
Definition: BarSeriesRenderer.h:433
GraphObject::Ptr hprepareSingleShape(const TripleId &irTripleId, const Point2D &irPoint, bool iIsLineAsDots)
TextObject::Ptr hCreateRiserLabel(const RiserInfo &irRiserInfo, const Rect2D &irRefRect, GraphCollectionObject::Ptr iColPtr)
Create the label for one riser.
virtual void hRenderItems(EnumValueAxis iVA, BOOL iIsOnlyForDataLabels)
Int32 mLastSeenWidth
used in cluster bar in GraphMatrix to record the last seen size of the bar, usually the 1st bar...
Definition: BarSeriesRenderer.h:443
std::map< Int32, bool > mAddedLegendMarkerSet
which legend Marker has been added to collection
Definition: BarSeriesRenderer.h:442
Int32 mSeriesInfoID
Definition: BarSeriesRenderer.h:70
Int32 mOverlap
Overlap value.
Definition: BarSeriesRenderer.h:53
virtual void GenerateMapAndList()
Definition: BarSeriesRenderer.h:105
bool mShowErrorBar
Flag indicates whether to show Error Bar or not.
Definition: BarSeriesRenderer.h:56
virtual void AddTextToMapAndList(std::map< TripleId, GraphObject::Ptr > &irGraphObjectMap, std::vector< GraphObject::Ptr > &irGraphObjectList)
Add the trend line to orTrendLineObjects, called by ABLPlot.
void hGetVAOrder(EnumValueAxis &orFirst, EnumValueAxis &orSecond)
Calcuated the drawing order for Value Axis.
MSynch::SmartPtr< BarSeriesRenderer > Ptr
Type definition.
Definition: BarSeriesRenderer.h:214
Definition: ABLPlot.h:21
void hPutOneDataLabel(const Rect2D &irBarRect, TextObject::Ptr irDLText, double irValue, bool iIsForJudgeRotate=false, bool iIsRotated=false)
RiserInfoWithIndex(Int32 iGroupID, Int32 iSeriesInfoID, Int32 iGroupIndex)
Definition: BarSeriesRenderer.h:87
std::map< Int32, GraphCollectionObject::Ptr > mSGMapLabel
map which holds Series/GroupID -> Collection object pointer
Definition: BarSeriesRenderer.h:424
void hGenerateSeriesLine(EnumValueAxis iValueAxis)
Generate series line for specified value axis - usually it&#39;s VA_Y1.
void hGetLogicalMiddlePosition(Int32 iSeriesIndex, Int32 iGroupId, double &orPosition) const
void hGenerateByValueAxis(EnumValueAxis iValueAxis, BOOL iIsOnlyForDataLabels)
RiserInfo — SeriesInfoIndex and GroupID pair.
Definition: BarSeriesRenderer.h:64
unsigned char mRiserShape
Riser&#39;s shape, only "Rectangle".
Definition: BarSeriesRenderer.h:55
void hCheckLabelForClipping(const RiserInfo &irRiserInfo, TextObject::Ptr iTextObjectPtr, const Point2D &irMax, const Point2D &irMin)
Move label further in case they go beyond the chart area.
GraphObject::Ptr hPrepareRectangleObject(const RiserInfo &irRiserInfo, const Rect2D &irRectBar, bool iAboveZero)
Int32 mGroupCount
Definition: BarSeriesRenderer.h:194
Rect2D hPrepareRect(const RiserInfo &irRiserInfo, double iDataValue, bool &orAboveZero)
void hCreateDataLabels(std::vector< Rect2D > &iorBarsRect, std::vector< Rect2D > &iorDLRect, bool iIsRotated, bool iIsOnlyForRect=false)
Definition: BarSeriesRenderer.h:107
bool hShouldRotateDataLabel()
----------—Data Label Methods---------—///
EnumDssGraphMatrixDataLabelPosition
Definition: Common.h:131
void AddObjectsToDataLabelManager(DataLabelManager::Ptr iDataLabelManagerPtr)
RiserInfo(Int32 iGroupID, Int32 iSeriesInfoID)
Definition: BarSeriesRenderer.h:66
Definition: BarSeriesRenderer.h:203
void hGetSeriesLinePoint(const RiserInfo &irRiserInfo, const Rect2D &irRefRect, Point2D &orFront, Point2D &orBack)
Get series line point.
bool hPrepareData(const RiserInfo &irRiserInfo, double &orValue)
virtual ~BarSeriesRenderer()
Definition: BarSeriesRenderer.h:222
Definition: Msi_ccomvariant.h:24
GraphCollectionObject * hFindRiserCollectionOrInsert(const RiserInfo &irInfo)
Find the riser collection.
virtual Int32 hGetIndexInColumn(const RiserInfo &irRiserInfo)
Get the index along the Category Axis for each riser.
std::vector< GMDataLabelInfo > GMDataLabelVecs
Definition: DataLabelManager.h:93
virtual bool hIsLabelShown()
bool mShowSeriesLines
Whether to show series lines.
Definition: BarSeriesRenderer.h:59
void hGetRenderingType()
Data Label~.
virtual void GenerateByValueAxis(EnumValueAxis iValueAxis, std::vector< GraphObject::Ptr > &iorGraphObjectList)
std::map< Int32, Int32 > mBarSeriesInfoToIndex
Definition: BarSeriesRenderer.h:444
#define NULL
Definition: Null.h:10
Definition: GraphObjectManager.h:37
Int32 hGetDataLabelNumber(bool iIsRotated)
Definition: BarSeriesRenderer.h:112
void SetPoint(Int32 iGroupID, Int32 iSeriesID, const Point2D &irPoint, bool iFront)
Definition: BarSeriesRenderer.h:156
void hCreateOneDataLabelItem(const RiserInfo &irRiserInfo, std::vector< Rect2D > &iorBarsRect, std::vector< Rect2D > &iorDLRect, bool iIsRoteated, bool iIsOnlyForRect=true)
bool hIsTickShapeForGMObject(const TripleId &iID)
SeriesLineInfo(Int32 iGroupCount, Int32 iSeriesCount)
Definition: BarSeriesRenderer.h:144
Use four Int32 values to represent a 2D rectangle.
Definition: Rect2D.h:25
Options related to Bar graph.
Definition: BarSeriesRenderer.h:47
Definition: BarSeriesRenderer.h:210
double mSpaceBetweenRiser
Definition: BarSeriesRenderer.h:435
PointInfo()
Definition: BarSeriesRenderer.h:114
Definition: Common.h:397
Definition: SeriesRenderer.h:52