Mobile API Reference  MicroStrategy 2019
ChartContext.h
Go to the documentation of this file.
1 //==============================================================================================
2 // FILENAME : ChartContext.h
3 // AUTHOR : Liang Liu
4 // CREATION : 2008-06-13
5 // Copyright (C) MicroStrategy Incorporated 2008
6 // All Rights Reserved
7 //==============================================================================================
8 #ifndef MsiChart_ChartContext_h
9 #define MsiChart_ChartContext_h
10 
11 #include "FormatLine.h"
12 #include "FormatFill.h"
13 #include "FormatFont.h"
14 #include "../Common.h"
15 #include "CEModuleMain.h"
16 #include "ChartCanvas.h"
17 #include "../Dataset.h"
18 #include "Point2D.h"
19 #include "Vector2D.h"
20 
21 #include "PDCHeader/PDCfstream"
22 #include "PDCHeader/PDCmap"
23 //struct tagVARIANT;
24 //typedef struct tagVARIANT VARIANT;
25 #include "FormatManager.h"
26 #include "ChartContextHelper.h"
27 
28 #ifndef _VE_CE
29 #import "CGCanvas.h"
30 #endif
31 
32 
33 namespace MsiChart
34 {
35 #ifndef DPI
36 #define DPI 96 // Usually 96DPI on Windows
37 #endif
38 
39 #define POINTSOFONEINCH 72 // 1pt = 1/72 inch
40 
41 #define TDGVirtualXMIN (-16383)
42 #define TDGVirtualXMAX 16383
43 #define TDGVirtualYMIN (-16383)
44 #define TDGVirtualYMAX 16383
45 
46  extern const Rect2D gDefaultTitlePosition;
47  extern const Rect2D gDefaultSubtitlePosition;
48  extern const Rect2D gDefaultFootnotePosition;
49  extern const TripleId gNullTripleId;
50 
51  const Int32 gMaxTextLength = 255;
53 
55 
56  struct ChartAdvFormat;
57  class Chart;
58 
65  {
67 
68  // General collection types
72 
73  // The following 6 collection types are only used by ABL chart for convenience to apply enhanced series effect.
79 
82  };
83 
88  {
89  CC_STATIC = 1,
91  CC_ALL = 3, //the default
92  };
93 
94  // enum EnumLineJoinType
95  // {
96  // LJT_MITER = 0,
97  // LJT_BEVEL = 1,
98  // LJT_ROUND = 2,
99  // };
100 
102  {
106  };
107 
109  {
121  };
122 
123  typedef enum
124  {
133 
134  typedef enum
135  {
146 
147  typedef enum {
148  _COMBINED = -2,
163  _DEFAULT = 100
164  } EnumShapeType;
165 
166  typedef enum {
171  } EnumAxis;
172 
173  struct PropertyKey
174  {
178 
179  PropertyKey(Int32 iPropertyId = -1, Int32 iObjectId = gNullObjectId, Int32 iSeriesId = gNullSeriesId)
180  : mPropertyId(iPropertyId), mObjectId(iObjectId), mSeriesId(iSeriesId)
181  {
182  }
183 
184  bool operator < (const PropertyKey& iKey) const
185  {
186  if (mPropertyId < iKey.mPropertyId)
187  return true;
188  if (mPropertyId > iKey.mPropertyId)
189  return false;
190 
191  if (mObjectId < iKey.mObjectId)
192  return true;
193  if (mObjectId > iKey.mObjectId)
194  return false;
195 
196  return (mSeriesId < iKey.mSeriesId);
197  }
198  };
199 
201  {
206  ThresholdCache();
207  void Reset();
208  };
209 
214  {
215  bool mValid;
217 
219  };
220 
223  {
224  bool mIsSliced;
228  DatasetState();
229  void Reset();
230  };
231 
233  struct AxesState
234  {
243  Int32 mSuggestedDataAreaStartX; //Used in zooming state for time series
247  double mY1LogicalMin;
248  double mY1LogicalMax;
249  double mO1LogicalMin;
250  double mO1LogicalMax;
257  std::vector<MBase::String> mScrollViewLabels;
258  std::vector<Int32> mScrollViewLabelIds;
259  std::vector<Rect2D> mScrollViewLabelRects;
261  AxesState();
262  void Reset();
263  };
264 
267  {
274  double mMinValue;
275  double mMaxValue;
276  double mXMinValue;
277  double mXMaxValue;
278  double mZMinValue;
279  double mZMaxValue;
282  //Get the PrimaryMetricIndex from widget
286 
289 
290  double mY2MinValue;
291  double mY2MaxValue;
292  double mX2MinValue;
293  double mX2MaxValue;
294 
299 
300  std::vector<Int32> mAxisHostMetricSet[4];
301 
302  // Metric Valid
303  bool mIsXValid;
304  bool mIsYValid;
305  bool mIsZValid;
309 
311  };
312 
314  {
315  const static Int32 sVisualElementBound = 1;
316 
317  Int32 mDataGroup; //< Data groups for one series.
318 
319  EnumDssGraphMatrixSizeMode mSizeMode; //How the size should be computed.
320  double mMaxSizeVal;
321  double mMinSizeVal;
322  Int32 mSizeIndex; //Size index for non-bubble chart.
323 
326  double mMaxElementSize; //used in size = specific
327  double mMinElementSize; //used in size = proprotional
328  bool mIsMinElementSizeAsRatioToMax; //whether min size is a ratio to max element size.
331 
332  // Use fixed Marker size for GridChart in special case
334 
335  EnumDssGraphMatrixColorMode mColorMode; //How the marker should be colored
336  Int32 mColorArity; //Used in ByX or ByY
337  double mMaxColorVal;
338  double mMinColorVal;
339  std::vector<Int32> mColors;
341 
345  double mLineSizeInput;
346 
349  std::vector<Int32> mVecXValueAxisLowPaddingSet;
350  std::vector<Int32> mVecXValueAxisHighPaddingSet;
351  std::vector<Int32> mVecYValueAxisLowPaddingSet; //< The lowPadding for y axis
352  std::vector<Int32> mVecYValueAxisHighPaddingSet; //< The highPadding for y axis
353  std::vector<Int32> mExtraPaddings; //< Extra paddings for axis.
354 
362 
364 
365  //Data Label Support
366  bool mIsNeedRotateDataLabel; //cached rotate state for Data Label in vertical Bar Chart
370 
371  //Custom Min/Max Support, only used in ABL chart.
373 
374  std::vector<Int32> mRowColorByUnits;
375  std::vector<Int32> mColColorByUnits;
376  std::vector<Int32> mBubbleSizeByIndexSet;
377  std::set<double> mShownValueTickSet[2];
378  std::set<Int32> mCondesedMetricsSet;
381 
384 
387 
388  //Combination Graph Support
390  //Dual Axis Graph
392 
394 
395  //pie chart specific
396  bool mIsPieSliced; //< If there is any unit in the slice drop zone.
397  bool mIsPieMetricSliced; //< If metrics object is in the slice drop zone.
398  bool mIsSliceDropzoneHasTemplateMetric; //< If template-metrics is in the slice drop zone.
399  bool mIsColorbyDropzoneHasTemplateMetric; //< If template-metrics is in the colorby drop zone.
400  bool mIsXDropzoneHasTemplateMetric; //< If template-metrics is in the X drop zone.
401  bool mIsYDropzoneHasTemplateMetric; //< If template-metrics is in the Y drop zone.
402  bool mIsBreakbyDropzoneHasTemplateMetric; //< If template-metric is in the Breakby dropzone.
403  bool mIsRowOrColDropzoneHasTemplateMetric; //< If template-metrics is in the Row or Col drop zone.
404  bool mIsEmptyXAxisDropWithTemplateMetric; //< If X-Dropzone empty and has TemplateMetric.
405  bool mIsEmptyYAxisDropWithTemplateMetric; //< If Y-Dropzone empty and has TemplateMetric.
414  void SetCurrentPieSlice(Int32 iPieSliceIndex);
416  void SetCurrentAngleIndex(Int32 iAngleIndex);
417 
418  //Refactor ColorBy Mode for GraphMatrix
419  std::vector<std::pair<Int32, Int32> > *mColorByKeyUnitsPair;
420  std::map<std::string, Int32> *mColorByMap;
421  std::map<int, bool> *mHasAreaBarInAxis;
422 
423  std::vector<std::pair<double, double> > mBubbleSizeRangeSet;
424  std::set<TripleId> mIsolaetdDotsInNormalLineChart; //<< The <Sid, Gid> pair to record the isolated dots in a normal line graph
425  std::map<Int32, double> mValueAxisZoomScales;
426 
427  bool IsColorValid() {return mColors.size() == mColorArity;}
429 
439  double ToRatio(double iVal, bool iIsUseZeroAsBoundaryValue = false);
440  double ToRatioEX(double iVal, bool iIsUseAbsValue = false);
441 
442  double GetSizebyPieRadius(double iVal, double iMax, double iMin, double maxRadius);
443 
451  static double ToRatio(double iVal, double iMax, double iMin, bool iIsUseZeroAsBoundaryValue);
452 
453  Int32 GetSizeByIndex(Int32 iIndex, bool iIsBubbleChart = false);
454 
462  Int32 GetMaxMarkerSize(EnumGraphMatrixMarkerInChartType iChartType, bool iIsVertical, Int32 iUnitCount, bool iIsBubbleChart = false);
463 
469  Int32 GetMaxElementSizeInLineChart(bool iIsVertical, Int32 iGroupCount, bool iIsIsolatedDotInLine = false, bool iIsLineShapeInCombinationChart = false);
470 
471  /*This function handles the size-by logic by considering the min value depends on different cases.
472  @param iDataVal, the corresponding data value from dataset.
473  @param iRatio, the iRatio val/max_val
474  @param iMaxSize, the max size one element can acchieve.
475  @return the scaled result.
476  */
477  double GetScaledSize(double iDataVal, double iMaxSize);
478  double GetScaledSizeWithRatio(double iRatio, double iMaxSize);
479 
482  Int32 GetValueAxisPadding(bool iIsXAxis, bool iIsHighPadding, Int32 iRequiredPadding = 0, Int32 iPaddingIndex = 0);
483  void UpdateValueAxisPadding(bool iIsXAxis, bool iIsHighPadding, Int32 iPaddingValue);
484 
487  bool IsIsolatedDot(const TripleId& irId);
488  bool IsIsolatedDotInLine(const TripleId& irId);
489  void AddToIsolatedDotList(const TripleId& irTripleId);
490 
493  Int32 GetCondensedTextLimit(Int32 iFormatType);
494 
497  FormatFill::Ptr GetBaseGradientFillForGM(unsigned char iAlpha = 255);
498 
502  FormatFill::Ptr UpdateGradientEffectForGM(const TripleId& irLineId, FormatFill::Ptr iFillPtr, Dataset::Ptr iDataset, double iAngle, unsigned char iAlpha = 255);
503 
504  FormatFill::Ptr UpdateStepGradientEffectForGM(const TripleId& irLineId, FormatFill::Ptr iFillPtr, Dataset::Ptr iDataset, Int32 iGroupInterval , unsigned char iAlpha = 255);
505 
506  /* To make the line/shape a bit thicker to fit PM's requirement.
507  @param iOriginValue, the value to be adjusted.
508  @return the result that is adjusted.
509  */
510  Int32 GetAdjustThicknessValue(Int32 iOriginValue);
511 
515  //After dataset refactor, we add angleindex and sliceindex for pie slice objec, so we don't need to change the group and series id for pie slice in different subgroup.
516  //TripleId GetLogicalTripleId(const TripleId& irRealId);
517  //TripleId GetRealTripleId(Int32 iGroupSubIndex, Int32 iSeriesSubIndex, const TripleId& iBaseId);
518 
523  double GetValueAxisZoomScale(Int32 iValueAxisId);
524 
525  protected:
526  Int32 hGetLogicalId(Int32 iInputId);
527  double hGetMaxRadiusRatio(Int32 chartType);
528 
529  };
530 
531  class ValueAxis;
532  class GraphObject;
533  class LayerObject;
535  class Transformer;
543  {
544  public:
547  typedef ChartContext* Ptr;
548  //typedef MSynch::SmartPtr<ChartContext> Ptr;
549 
550  ChartContext(Dataset::Ptr iDatasetPtr);
551  virtual ~ChartContext();
552 
554 
555  void SetChartOffset(Int32 iXOffset, Int32 iYOffset);
556 
564  // void GetStringExtent(const MBase::String& irString, FormatFont::Ptr iFormatFontPtr, Int32& orWidth,Int32& orHeight);
565 
570  // void ApplyFontFormat(FormatFont::Ptr iFormatFontPtr);
571 
572  // Transformation between Device and Virtual world
578  Rect2D DVRect(const Rect2D& irImageRect) const;
584  Rect2D VDRect(const Rect2D& irVirtualRect) const;
585 
591  Point2D DVPoint(const Point2D& irImagePoint) const;
597  Point2D VDPoint(const Point2D& irVirtualPoint) const;
603  Int32 VDWidth(Int32 iVirtualWidth) const;
609  Int32 VDHeight(Int32 iVirtualHeight) const;
615  Int32 DVWidth(Int32 iImageWidth) const;
621  Int32 DVHeight(Int32 iImageHeight) const;
622 
623  // Transformation of Radius
629  Int32 VDRadius(Int32 iVirtualRadius) const;
630 
631  // Transformation between 3DG Virtual and MSTR Virtual
638  void TDGToMSTRPoint(Int32 iX, Int32 iY, Point2D& orPoint) const;
645  void MSTRToTDGPoint(const Point2D& irPoint, Int32& orX, Int32& orY) const;
654  void TDGToMSTRRect(Int32 iTop, Int32 iLeft, Int32 iBottom, Int32 iRight, Rect2D& orRect) const;
663  void MSTRToTDGRect(const Rect2D& irRect, Int32& orTop, Int32& orLeft, Int32& orBottom, Int32& orRight) const;
669  void TDGToMSTRHeight(Int32 iTDGHeight, Int32& orMSTRHeight) const;
670 
671  //Access
677  void SetGraphSize(Int32 iGraphWidth, Int32 iGraphHeight);
682  Int32 GetGraphWidth() const;
687  Int32 GetGraphHeight() const;
692  void SetProjectionArea(const Rect2D& irProjectionArea);
697  void SetManualLayout(bool iManualLayout);
702  bool IsManualLayout() const;
707  void SetRecalculateFrame(bool iRecalculate);
712  bool IsRecalculateFrame() const;
717  void SetLineWidthOdd(bool iIsLineWidthOdd);
724  bool NeedAdjustedLinePath() const;
729  void SetAbsoluteFontLineSize(bool iAbsolute);
734  bool IsAbsoluteFontLineSize() const;
738  void SetAdvancedChartTypeSupport(bool iAdvancedChartTypeSupport);
742  bool HasAdvancedChartTypeSupport() const;
746  bool IsAdvancedChartType() const;
747 
751  void SetDataset(Dataset::Ptr iDatasetPtr);
756 
760  double GetZoomScale(bool iIsHonest = true);
761 
766  void VDFontSize(Int32& iorSize) const;
771  void DVFontSize(Int32& iorSize) const;
776  void VDLineWidth(Int32& iorSize) const;
777 
778  //Factory methods for FormatLine/FormatFill/FormatFont
785  virtual FormatLine::Ptr GetFormatLine(const TripleId& irTripleId, Int32 iCollectionType, EnumShapeType iShape = _GENERIC) const = 0;
792  virtual FormatFill::Ptr GetFormatFill(const TripleId& irTripleId, Int32 iCollectionType, EnumShapeType iShape = _GENERIC) const = 0;
802  virtual FormatFill::Ptr GetMetricFormatFill(const TripleId& irTripleId);
808  virtual FormatFont::Ptr GetFormatFont(const TripleId& irTripleId) const = 0;
816  virtual bool GetProperty(Int32 iPropertyId, const TripleId& irTripleId, CComVariant* opValue) const;
823  virtual void PutProperty(Int32 iPropertyId, const TripleId& irTripleId, CComVariant* ipValue);
824 
833  bool GetLocation(Int32 iPropertyId, Int32* opTop, Int32* opLeft, Int32* opBottom, Int32* opRight);
834 
840  bool GetLocation(Int32 iPropertyId, Rect2D* opRect);
841 
850  void PutLocation(Int32 iPropertyId, Int32 iTop, Int32 iLeft, Int32 iBottom, Int32 iRight);
851 
857  void PutLocation(Int32 iPropertyId, const Rect2D& iRect);
858 
863  virtual void PutChartEngine(Chart* ipChart);
864 
871  FormatFill::Ptr GetThresholdFillColor(Int32 iSeriesId, Int32 iGroupId);//, CComVariant* opValue);
872 
873  void UpdateLineColorWithThreshold(const TripleId& irTripleId, FormatLine* iopFormatLine, Int32 iCollectionType);
879  void ParseValueToFormat(VARIANT& irValue, ChartAdvFormat& orFormat);
880 
881 
882  //1. Transform Primitives
883  //1.1 SaveState
887  void SaveState();
888  //1.2 Rotate
894  void Rotate(const Point2D& irAnchor, double iRadian);
895  //1.3 Scale
901  void Scale(const double iX, const double iY);
902  //1.3 Restore state
906  void RestoreState();
907 
908  //1.4 Clip
912  void Clip();
913 
914  //2. Draw Primitives
915  //2.1 Polgyon
921  template<class T>
922  void DrawPolygon(const std::vector< Point<T> >& irPoints, bool iIsLinePath = true, bool iIsCurveAnimation = false, FPoint2D* iBasePoint = NULL, unsigned char iLineStyle = LS_SOLID);
923  //2.2 Straight line
929  template<class T>
930  void DrawStraightLine(const Point<T>& irStartPoint, const Point<T>& irEndPoint);
931  //2.3 Poly line
937  template<class T>
938  void DrawPolyLine(const std::vector< Point<T> >& irPoints, bool iIsLinePath = true, bool iIsCurveAnimation = false, FPoint2D* iBasePoint = NULL, unsigned char iLineStyle = LS_SOLID);
939  //2.4 Rectangle
945  void DrawRectangle(const Rect2D& irRect, bool iIsLinePath);
946  //2.5 Arc
954  void DrawArc(const FPoint2D& irCenter, const float iRadius, const float iStartAngle, const float iEndAngle, bool iNewPath = true);
962  void DrawArcNegative(const FPoint2D& irCenter, const float iRadius, const float iEndAngle, const float iStartAngle, bool iNewPath = true);
963  //2.6 Sector
971  void DrawSector(const FPoint2D& irCenter, const float iRadius, const float iStartAngle, const float iEndAngle);
972 
973  /*
974 
975  */
976  void DrawSectorStroke(const FPoint2D& irCenter, const float iRadius, const float iStartAngle, const float iEndAngle);
985  void DrawRingSector(const FPoint2D& irCenter, const float iOutRadius, const float iInRadius, const float iStartAngle, const float iEndAngle);
986  //2.7 Cylinder (for pie)
995  void DrawCylinder(const FPoint2D& irCenter, const float iRadius, const float iStartAngle, const float iEndAngle, const float iDepth);
996  // /**
997  // Draw a string using Cairo.
998  // @param irPoint The anchor point of the string.
999  // @param ipString The string to be drawn.
1000  // */
1001  // void DrawString(const Point2D& irPoint, const char* ipString);
1002  //2.8 Bevel effect
1010  template<class T>
1011  void ApplyDonutToRing(const Point<T>& irCenter, T iOuterRadius, T iInnerRadius, const FormatFill::Ptr iFormatFillPtr, EnumRadientGradientUsage iUsage = RG_RING, bool iHasExtraPara = false, int iExtraDepth = 0, int iExtraIntensity = 0);
1021  void ApplyBeveledFrameToRectangle(const Rect2D& irRect, double iRotationAngle, Int32 iBevelDepth, const RGBColor& irLTColor, Int32 iLTAlpha, const RGBColor& irRBColor, Int32 iRBAlpha);
1022 #ifdef _VE_CE
1023  //Draw gauge marker
1024  void DrawGaugeMarker(FPoint2D* iBasePoint, Int32& iMarkerSize, Int32& iMarkerShape, float iAngle, short iSize);
1025 
1029  template<class T>
1030  void DrawDashedLine(const Point<T>& irStartPoint, const Point<T>& irEndPoint, std::vector<double>& ipLinePattern);
1031 
1038  void ApplyDonutToRect(const Point<double>& irStartPoint, const Point<double>& irEndPoint, const FormatFill::Ptr iFormatFillPtr);
1039 #endif
1040 
1043  void NewPath();
1047  void ClosePath();
1048 
1053  void MoveTo(double iX, double iY, bool iIsCurveAnimation = false, FPoint2D* iBasePoint = NULL);
1054 
1059  void LineTo(double iX, double iY, bool iIsCurveAnimation = false, FPoint2D* iBasePoint = NULL);
1060 #ifdef _VE_CE
1061 
1070  void BezierCurveTo(double iCP1X, double iCP1Y, double iCP2X, double iCP2Y, double iX, double iY);
1071 #endif
1072 
1077  void SetRGBAFill(float iRed, float iGreen, float iBlue, float iAlpha);
1078 
1084  void SetRGBAStroke(float iRed, float iGreen, float iBlue, float iAlpha);
1085 
1089  void FillPath();
1090 
1094  void StrokePath();
1095 
1101  void SetLineDash(double* ipLinePattern, Int32 iDashNumber);
1102 
1107  void SetLineWidth(Int32 iLineWidth);
1108 
1113  void SetFontSize( Int32 iFontSize);
1118  void SetFontScale(double iRatio = 1.0);
1123  double GetFontScale() const;
1124 
1125 
1130  void SetLineJoin(EnumLineJoinType iLineJoinType);
1131 
1136 
1144  bool SaveSurfaceToFile(Int32 iFormat, FILE* ipOutFile);
1153  bool SaveSurfaceToMemory(Int32 iFormat, char*& oprMemory, unsigned Int32& orSize);
1154 
1155 #ifdef _VE_CE
1156  bool SaveSurfaceToString(std::string& orGraphDesc);
1157  bool SaveSurfaceToVEObjects(std::vector<MVE::VEFormatList>& ioFormatList, std::vector<MVE::VEUnitList>& ioUnitList);
1158 #endif
1159 
1169  void CalculateDepthOffset(Int32 iDepth, Int32 iAngle, Int32& orOffsetX, Int32& orOffsetY, bool iAbsoluteDepth = false) const;
1181  Int32 NormalDirection(const TVector2D<Int32>& iSideDirection, Int32 iDepthDirection);
1182 
1188  double Square(double iNumber) const;
1189 
1194  Int32 GetGraphType() const;
1195 
1200  bool IsVertical() const;
1201 
1206  bool IsDualAxis() const;
1207 
1212  Int32 DialogSizeToPixelSize(Int32 iDialogSize) const;
1213 
1222  void SplitRect(const Rect2D& irRect, bool iIsVertical, Int32 iPercentage, Rect2D& orRectTopRight, Rect2D& orRectBottomLeft) const;
1223 
1228  void GetAxisAutoNumberFormat(ChartAdvFormat& orFormat);
1229  void GetAxisAutoNumberFormat(ChartAdvFormat& orFormat, const std::vector<Int32>& irMetricSet);
1230 
1234  void GetAxisAutoNumberFormat(ChartAdvFormat& orFormat, const TripleId& irTripleId);
1235 
1239  Int32 GetGraphMajorType() const;
1240 
1246  Int32 PtSizeToPixelSize(Int32 iPtSize) const;
1252  Int32 PixelSizeToPtSize(Int32 iPixelSize) const;
1253 
1260  bool IsReverseSeriesOrder(ValueAxis* ipValueAxis, bool iIsVertical, Int32 iDepthDirection) const;
1261 
1267  bool IsReverseGroupOrder(bool iIsVertical, Int32 iDepthDirection) const;
1268 
1274 
1280 
1288  Point2D GetPointByAngleRadiusCenter(double iAngle, double iRadius, const Point2D& irCenter) const;
1296  bool RectangleIntersection(const Rect2D& irRectA, const Rect2D& irRectB, Rect2D& orRect) const;
1297 
1304  void RectangleUnion(const Rect2D& irRectA, const Rect2D& irRectB, Rect2D& orRect) const;
1305 
1311 #ifndef _VE_CE
1312 
1315  void SetCGContext(CGContext* ipCGContext);
1316 #endif
1318  void SetIsCategoryXAxisForPartialRendering(bool isForPartialRendering);
1319 
1324  bool IsParetoChart() const;
1325 
1330  bool IsStackedChart() const;
1331 
1337  double VectorToAngle(const DVector2D& irVector) const;
1338 
1343  void SetImageFormat(Int32 iFormat);
1344 
1349  Int32 GetImageFormat() const;
1350 
1354  void SetPushGroup(bool iPushGroupFlag);
1355 
1359  bool GetPushGroup() const;
1360 
1366  bool CheckRiserCountLimit(const TripleId& irTripleId) const;
1367 
1373  double DoubleToFixedPointNumber(double iValue) const;
1374 
1379  bool IsVectorGraph() const;
1380 
1385  virtual bool IsGenericContext() const = 0;
1386 
1390  void SetChartComponent(EnumChartComponent iChartComponent);
1391 
1393 
1403  void RestoreZoomState(Dataset* ipDataset);
1404 
1409  void SaveDatasetState(Dataset* ipDataset);
1415  void RestoreDataset(Dataset* ipDataset);
1416 
1420  void SetValueAxisShown(bool iIsValueAxisShown);
1421 
1425  bool IsValueAxisShown() const;
1426 
1430  void EnableAnimation(bool iUseAnimation);
1431 
1435  bool IsAnimationEnabled() const;
1436 
1437  bool IsUseAnimation() const;
1438 
1442  void SetAnimationDuration(double iSeconds);
1443 
1447  double GetAnimationDuration() const;
1448 
1449  // lasso selections
1450  void EnterGrayoutMode();
1451  void ExitGrayoutMode();
1452  bool IsGrayoutMode() const;
1453  void EnterDuplicateMode();
1454  void ExitDuplicateMode();
1455  bool IsDuplicateMode() const;
1456 
1461  void SetTemplateNodeKey(const std::string& irKey);
1466  std::string GetTemplateNodeKey() const;
1467 
1471  void SetTimeSeriesChart(bool iIsTimeSeries);
1475  bool IsTimeSeriesChart() const;
1476 
1481  void SetIntegrity(Int32 iIntegrity);
1486  Int32 GetIntegrity();
1487 
1491  void HideAxisElements(bool iHide);
1495  bool IsHidingAxisElements() const;
1496 
1501  void EnableMicroChart(bool iIsMicroChart);
1505  bool IsMicroChart() const;
1506 
1511  void EnableGraphMatrix(bool iIsGraphMatrix);
1512 
1516  bool IsGraphMatrix() const;
1517 
1519 
1520  void EnableVIDocument(bool iIsVIDocument);
1521 
1522  bool IsVIDocument() const;
1523 
1528  void EnableVoiceOver(bool iIsVoiceOverMode);
1529 
1533  bool IsVoiceOver() const;
1534 
1538  bool IsLegendByGroup() const;
1539 
1540 
1544  //bool IsGridChartWithVariousColoring() const;
1545 
1550  void EnableUniformAxis(bool iUseUniformAxis);
1554  bool IsUniformAxisMode() const;
1558  bool IsUADataAreaOutput();
1559 
1564  void SetEntireness(bool iIsEntireChart);
1568  bool IsEntireChart() const;
1569 
1574  void SetImageUsage(Int32 iImageUsage);
1579  Int32 GetImageUsage() const;
1580 
1585  void SetFormatManager(FormatManager::Ptr iFormatManagerPtr);
1586 
1592 
1598 
1604 
1605  Int32 GetChartXOffset() const;
1606  Int32 GetChartYOffset() const;
1607 #ifndef _VE_CE
1608 
1612  CGContext* GetPrivateCGContext();
1613 #endif
1614 
1618  void SetFontAntiAlias(bool iFontAntiAlias);
1619 
1624  bool IsFontAntiAlias() const;
1625 
1630  void SetBackgroundOpaque(bool iBackgroundOpaque);
1631 
1636  bool IsBackgroundOpaque() const;
1637 
1638  // Get current Frame of Graph, used for GM Partial rendering
1639  bool GetCurrentGraphFrame(Rect2D& iorRect) const;
1640  void SetCurrentGraphFrame(Int32 iX, Int32 iY, Int32 iWidth, Int32 iHeight);
1641 
1645  void SetApplyMetricFormatting(bool iApplyMetricFormatting);
1646 
1650  bool GetApplyMetricFormatting() const;
1651 
1658  bool IsBackgroundBright(bool iIsRecursive = true) const;
1659 
1665  void RemoveZeroEdgeInPolygon(std::vector<Point2D>& iorPolygon) const;
1666 
1667  void Reset();
1668 
1672  void AnimationDidFinished();
1673 
1678  void DisableAnimationForZoom(bool iDisableAnimation);
1679 
1684 
1688  bool IsDataLabels(const TripleId& irId) const;
1689 
1690  void SetHighlightSelectedObjects(LayerObjectPtr iHighlightLayerObjectPtr);
1691  void GetHighLightSelectedObjects(LayerObjectPtr &orHighlightLayerObjectPtr);
1692  void ResetHighlightObjectList(std::vector<TripleId>* ipInputList);
1693  void GetHighLightObjectList(std::vector<TripleId>& iorCurrentList);
1694  bool isBarAreaInAxis(const TripleId& irId);
1695 
1696 #ifdef _VE_CE
1697  void AddNeedle(char iNeedleStyle, Point2D iBasePoint, short iAngle, float iSize);
1698  void FillSimple(const FormatFill* ipFill, float iDarkerFactor, RGBColor* iColor = NULL, bool iHasExtraPara = false);
1699  void FillPattern(const FormatFill* ipFill);
1700  void FillGradient(const FormatFill* ipFill, const Rect2D& irBoundingRect, float iDarkerFactor);
1701  void FillEdgeType(const FormatFill* ipFill, const std::vector<Point2D>& irPolygon);
1702  void FillDonutOrSphere(const FormatFill* ipFill, const Rect2D& irBoundingRect, bool iIsCircularShape);
1703  void FillBorderMetallic(const FormatFill* ipFill, short iBorderUse, double iCPX, double iCPY, double iRadius, double iThickness);
1704  void FillRadientGradient(const FormatFill* ipFill, EnumRadientGradientUsage iRGUsage, double iCPX, double iCPY, double iInnerRadius, double iOuterRadius, bool iHasExtraPara = false, int iExtraDepth = 0, int iExtraIntensity = 0);
1705  void MakeDarker(const FormatFill* ipFill, float iFactor);
1706  void RestoreColor(const FormatFill* ipFill);
1707  void ApplyLineFormat(const FormatLine* ipLine);
1708  void AddFormatedText(const FormatFont* ipFont, const Point2D& irStartPoint, const std::string& irString);
1709  void BeginFirstFrame();
1710  void BeginLastFrame();
1711  void EndFrame();
1712  void EndUnit();
1713 #else
1714 
1719  CGContext* mpCGContext;
1720 
1722  CGPath* mpCGPath;
1723 
1724 #endif
1726 
1728 
1730 
1734 
1737 
1739 
1740  void* mpGMCEContext; //This is the GMCEContext from Widget
1741 
1745 
1751  RGBColor GetSeriesColorFromPalette(Int32 iSeriesId) const;
1752 
1753  RGBColor* GetDefaultContrastColor(Int32 iColorUsage = -1) const;
1754 
1756  void SetHasCurvePolygon(bool iHasCurvePolygon);
1757  bool HasCurvePolygon() const;
1758 
1759  bool IsIsolatedDot(const TripleId& irId);
1760  bool IsIsolatedDotInLine(const TripleId& irId);
1761 
1763  void UpdateZoomScale(void* ipView);
1764 
1766  void UpdateHighScaleFactorToViews(void* ipView);
1768 
1770  bool IsAnimationPossible(double iZoomScale);
1771 
1772 
1774  bool IsSubView(void* ipChildView, void* ipBaseView, bool iIsRecursive);
1775  bool IsBarChart() const;
1776  bool IsBulletChart() const;
1777  bool IsLineChart() const;
1778  bool IsAreaChart() const;
1779  bool IsPercentChart() const;
1780  bool IsPieChart() const;
1781  bool IsCategoryPie() const;
1783 
1784  void SetNeedColorColOffset(bool iIsNeedColorColOffset);
1785 
1786  bool IsBudgeting() const;
1787 
1789  ThemeType GetGraphThemes() const;
1790 
1791  void SetHover(const TripleId &iTripleId, bool iIsHover);
1792  bool GetHover(const TripleId &iTripleId) const;
1793 
1797  virtual float GetMemoryUsageEstimation() const;
1798 
1799  bool IsAxesStateNULL() const;
1800  void SetCanvas(ChartCanvas *ipCanvas);
1803  RGBColor GetColorById(const TripleId& irTripleId, float& orAlpha) const;
1804  protected:
1810  void UpdateFormatLine(const TripleId& irTripleId, FormatLine* iopFormatLine) const;
1818  void UpdateFormatFill(const TripleId& irTripleId, FormatFill* iopFormatFill, Int32 iCollectionType) const;
1824  void UpdateFormatFont(const TripleId& irTripleId, FormatFont* iopFormatFont) const;
1825 
1831  Int32 MapObject(Int32 iObjectId) const;
1832 
1837  bool IsVerticalBar() const;
1844  std::map<PropertyKey, CComVariant> mPropertyMap;
1845 
1851  bool NoAdjustOfFontSize(const TripleId& irTripleId) const;
1852  bool NoAdjustOfLineWidth(const TripleId& irTripleId) const;
1853 
1860 
1861 
1863 
1867 
1896 
1900 
1903 
1908 
1909  // Very Large chart, we draw a small view cover current screen, this offset is current screen view to origin chart.
1912 
1913  // Used in time series chart, indicating which part of chart will be rendered.
1915 
1917  std::map<std::vector<Int32>, ChartAdvFormat*> mGMAxisAutoNumberFormatSet;
1918  std::map<TripleId, ChartAdvFormat*> mAxisAutoNumberFormatSet;
1919 
1921 
1922  std::vector<MetricFormatFillCache> mMetricFormatFillCache;
1923 
1924  std::string mTemplateNodeKey;
1925 
1927 
1929 
1931 
1932  private:
1938  void hApplyEnhancedSeriesEffect(FormatFill* iopFormatFill, Int32 iCollectionType) const;
1939 
1945  void hMoveTo(double iX, double iY, bool iIsLinePath, bool iIsCurveAnimation = false, FPoint2D* iBasePoint = NULL);
1951  void hLineTo(double iX, double iY, bool iIsLinePath, bool iIsCurveAnimation = false, FPoint2D* iBasePoint = NULL);
1952 
1954  void hReleaseStreamBuffer();
1955 
1956  void hParseValueContent(std::wfstream& irFile, const CComVariant& irValue);
1957 
1958  void hParseParrayContent(std::wfstream& irFile, const CComVariant& irValue);
1959 
1960  void hFinalizeVectorGraphSurface();
1961  Int32 hParseValueToFormat(const MBase::String& irFormatString, ChartAdvFormat& orFormat);
1962 
1963 #ifndef _VE_CE
1964  CGContext* mpPrivateCGContext;
1966 
1967  // FontKey mPublicFontKey; ///< Maintains current font key(mpCGContext). This is used by GetStringExtent() method.
1968  // FontKey mPrivateFontKey; ///< Maintains current font key(mpPrivateCairo). This is used by GetStringExtent() method.
1969 #endif
1970  LayerObjectPtr mpHighlightLayerObjectPtr;
1971 
1972  //Keep a record of the current highlighted graph objects.
1973  std::vector<TripleId> mHighLightedObjectList;
1974 
1975  std::map<TripleId, bool> mTripleIdHoverMap;
1976 
1977  Rect2D mGraphFrame;
1978 
1979  ChartContextHelper *mpChartContextHelper;
1980  };
1981 
1983  {
1984  return mGraphFrame;
1985  }
1986  inline Int32 ChartContext::VDWidth(Int32 iVirtualWidth) const
1987  {
1988  return static_cast<Int32>(static_cast<double>(iVirtualWidth * mGraphWidth) / gVirtualCoordinateWidth + 0.5);
1989  }
1990 
1991  inline Int32 ChartContext::VDHeight(Int32 iVirtualHeight) const
1992  {
1993  Int32 lGraphHeight = mGraphHeight;
1995  {
1997  lGraphHeight = mpUniformAxisContext->mGraphHeight;
1998  }
1999  return static_cast<Int32>(static_cast<double>(iVirtualHeight * lGraphHeight) / gVirtualCoordinateHeight + 0.5);
2000  }
2001 
2002  inline Int32 ChartContext::DVWidth(Int32 iImageWidth) const
2003  {
2004  return static_cast<Int32>(static_cast<double>(iImageWidth * gVirtualCoordinateWidth) / mGraphWidth + 0.5);
2005  }
2006 
2007  inline Int32 ChartContext::DVHeight(Int32 iImageHeight) const
2008  {
2009  return static_cast<Int32>(static_cast<double>(iImageHeight * gVirtualCoordinateHeight) / mGraphHeight + 0.5);
2010  }
2011 
2012  inline void ChartContext::SetLineWidthOdd(bool iIsLineWidthOdd)
2013  {
2014  mIsLineWidthOdd = iIsLineWidthOdd;
2015  }
2017  {
2018  return mIsLineWidthOdd && (mImageFormat != PFT_PDF) && (mImageFormat != PFT_SVG);
2019  }
2020 
2021  inline bool ChartContext::IsVectorGraph() const
2022  {
2023  return (mImageFormat == PFT_PDF) || (mImageFormat == PFT_SVG);
2024  }
2025 
2026  inline void ChartContext::SetGraphSize(Int32 iGraphWidth, Int32 iGraphHeight)
2027  {
2028  mGraphWidth = iGraphWidth;
2029  mGraphHeight = iGraphHeight;
2030 
2031  //Init graph frame if not initilized, temp solution
2032  if (mGraphFrame.height == -1 && mGraphFrame.width == -1) {
2033  mGraphFrame.x = mGraphFrame.y = 0;
2034  mGraphFrame.height = iGraphHeight;
2035  mGraphFrame.width = iGraphWidth;
2036  }
2037  }
2038 
2040  {
2041  return mGraphWidth;
2042  }
2043 
2045  {
2046  return mGraphHeight;
2047  }
2048 
2049  inline void ChartContext::SetManualLayout(bool iManualLayout)
2050  {
2051  mManualLayoutMode = iManualLayout;
2052  }
2053 
2054  inline bool ChartContext::IsManualLayout() const
2055  {
2056  return mManualLayoutMode;
2057  }
2058 
2059  inline void ChartContext::SetRecalculateFrame(bool iRecalculate)
2060  {
2061  mRecalculateFrame = iRecalculate;
2062  }
2063 
2065  {
2066  return mRecalculateFrame;
2067  }
2068 
2069  inline void ChartContext::SetAbsoluteFontLineSize(bool iAbsolute)
2070  {
2071  mAbsoluteFontLineSize = iAbsolute;
2072  }
2073 
2075  {
2076  return mAbsoluteFontLineSize;
2077  }
2078 
2079  inline double ChartContext::Square(double iNumber) const
2080  {
2081  return iNumber * iNumber;
2082  }
2084  {
2085  return mGraphType;
2086  }
2087 
2089  {
2090  return iDialogSize * std::min(mGraphWidth, mGraphHeight) / 2000;
2091  }
2092  inline void ChartContext::SetDataset(Dataset::Ptr iDatasetPtr)
2093  {
2094  mDatasetPtr = iDatasetPtr;
2095  }
2097  {
2098  return mDatasetPtr;
2099  }
2100 
2101 
2103  {
2104  mChartComponent = iChartComponent;
2105  }
2106 
2108  {
2109  return mChartComponent;
2110  }
2111 
2112  template<class T>
2113  void ChartContext::DrawPolygon(const std::vector< Point<T> >& irPoints, bool iIsLinePath, bool iIsCurveAnimation, FPoint2D* iBasePoint, unsigned char iLineStyle)
2114  {
2115  Int32 lNumberOfPoints = (Int32)irPoints.size();
2116  if(lNumberOfPoints < 3)
2117  return;
2118 
2119  NewPath();
2120  if (iIsLinePath && NeedAdjustedLinePath())
2121  {
2122  std::vector<FPoint2D> lAdjustedPoints;
2123  for(Int32 i = 0; i < lNumberOfPoints; ++i)
2124  {
2125  lAdjustedPoints.push_back(irPoints[i]);
2126  }
2127 
2128  Int32 lPreviousIndex = lNumberOfPoints - 1;
2129  for(Int32 i = 0; i < lNumberOfPoints; ++i)
2130  {
2131  Int32 lNextIndex = (i + 1 == lNumberOfPoints) ? 0 : i + 1;
2132  if (irPoints[i].x == irPoints[lPreviousIndex].x || irPoints[i].x == irPoints[lNextIndex].x)
2133  {
2134  lAdjustedPoints[i].x += 0.5f;
2135  }
2136  if (irPoints[i].y == irPoints[lPreviousIndex].y || irPoints[i].y == irPoints[lNextIndex].y)
2137  {
2138  lAdjustedPoints[i].y += 0.5f;
2139  }
2140  lPreviousIndex = i;
2141  }
2142  DrawPolyLine(lAdjustedPoints, false, iIsCurveAnimation, iBasePoint, iLineStyle);
2143  }
2144  else
2145  {
2146  DrawPolyLine(irPoints, false, iIsCurveAnimation, iBasePoint, iLineStyle);
2147  }
2148  ClosePath();
2149  }
2150 
2151  template<class T>
2152  void ChartContext::DrawStraightLine(const Point<T>& irStartPoint, const Point<T>& irEndPoint)
2153  {
2154  NewPath();
2155  hMoveTo(irStartPoint.x, irStartPoint.y, true);
2156  hLineTo(irEndPoint.x, irEndPoint.y, true);
2157  }
2158 
2159  template<class T>
2160  void ChartContext::DrawPolyLine(const std::vector< Point<T> >& irPoints, bool iIsLinePath, bool iIsCurveAnimation, FPoint2D* iBasePoint, unsigned char iLineStyle)
2161  {
2162  Int32 lNumberOfPoints = (Int32)irPoints.size();
2163  if(lNumberOfPoints<=0)
2164  return;
2165  NewPath();
2166  hMoveTo(irPoints[0].x, irPoints[0].y, iIsLinePath, iIsCurveAnimation, iBasePoint);
2167  Int32 lPreviousIndex = 0;
2168  for(Int32 i = 1; i < lNumberOfPoints; ++i)
2169  {
2170  // If the current point is not the last point and is on a vertical or horizontal segement formed by the prevous and the next point,
2171  // do not put it into the path.
2172  if ((i + 1 == lNumberOfPoints) || irPoints[i].IsOnVerOrHorSegment(irPoints[lPreviousIndex], irPoints[i + 1]) == false)
2173  {
2174  hLineTo(irPoints[i].x, irPoints[i].y, iIsLinePath, iIsCurveAnimation, iBasePoint);
2175  lPreviousIndex = i;
2176  }
2177  }
2178 #ifdef _VE_CE
2179  if(!iIsLinePath)
2180  {
2181  if(irPoints[0].IsOnVerOrHorSegment(irPoints[lPreviousIndex], irPoints[1]) == false)
2182  {
2183  hLineTo(irPoints[0].x, irPoints[0].y, iIsLinePath, iIsCurveAnimation, iBasePoint);
2184  }
2185  }
2186 #endif
2187  }
2188 
2189  template<class T>
2190  void ChartContext::ApplyDonutToRing(const Point<T>& irCenter, T iOuterRadius, T iInnerRadius, const FormatFill::Ptr iFormatFillPtr, EnumRadientGradientUsage iUsage, bool iHasExtraPara, int iExtraDepth, int iExtraIntensity)
2191  {
2192 #ifdef _VE_CE
2193  double lCX = irCenter.x;
2194  double lCY = irCenter.y;
2195 
2196  double lMiddleRadius = iInnerRadius + (1.0 - (1.0 - iFormatFillPtr->mFillBevel.mDepth * 0.01)) * (iOuterRadius - iInnerRadius);
2197 
2198  SaveState();
2199  Clip();
2200 
2201  const short lMargin = 1;
2202  if (iUsage != RG_BORDERRING)
2203  {
2204  FillRadientGradient(iFormatFillPtr.Get(), RG_RING, lCX, lCY, iInnerRadius > lMargin ? iInnerRadius - lMargin : 0, lMiddleRadius);
2205  FillRadientGradient(iFormatFillPtr.Get(), RG_RING, lCX, lCY, iOuterRadius + lMargin, lMiddleRadius);
2206  }
2207  else
2208  {
2209  FillRadientGradient(iFormatFillPtr.Get(), RG_BORDERRING, lCX, lCY, iInnerRadius > lMargin ? iInnerRadius - lMargin : 0, iOuterRadius + lMargin, iHasExtraPara, iExtraDepth, iExtraIntensity);
2210  }
2211 
2212  RestoreState();
2213 #else
2214  // CGColorSpaceRef lColorspace = CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB);
2215  CGColorSpaceRef lColorspace = CGColorSpaceCreateDeviceRGB();
2216  double lMiddleRadius = iInnerRadius + (1.0 - (1.0 - iFormatFillPtr->mFillBevel.mDepth * 0.01)) * (iOuterRadius - iInnerRadius);
2217 
2218  size_t lNumOfLocations = 2;
2219  CGFloat lLocations[2] = { 0.0, 1.0 };
2220  float lTransparency = iFormatFillPtr->mFillBevel.mIntensity * 0.01f * iFormatFillPtr->mAlpha / 255.0f;
2221  CGFloat lComponents[8] = { 0.0, 0.0, 0.0, lTransparency,
2222  1.0, 1.0, 1.0, lTransparency
2223  };
2224  CGGradientRef lGradient = CGGradientCreateWithColorComponents (lColorspace, lComponents, lLocations, lNumOfLocations);
2225 
2226  CGPoint lCenter = CGPointMake(irCenter.x, irCenter.y);
2227 
2228  SaveState();
2229  Clip();
2230 
2231  // 429813 Add some margin at boundary to make the boundary look smoother.
2232  const Int32 lMargin = 1;
2233  CGContextDrawRadialGradient(mpCGContext, lGradient, lCenter,
2234  iInnerRadius > lMargin ? iInnerRadius - lMargin : 0,
2235  lCenter, lMiddleRadius, 0);
2236  CGContextDrawRadialGradient(mpCGContext, lGradient, lCenter,
2237  iOuterRadius + lMargin,
2238  lCenter, lMiddleRadius, 0);
2239  RestoreState();
2240 
2241  CGGradientRelease(lGradient);
2242  CGColorSpaceRelease(lColorspace);
2243 #endif
2244  }
2245  inline bool ChartContext::IsParetoChart() const
2246  {
2248  }
2250  {
2251  mImageFormat = iFormat;
2252  }
2254  {
2255  return mImageFormat;
2256  }
2257  inline void ChartContext::SetPushGroup(bool iPushGroupFlag)
2258  {
2259  mPushGroupFlag = iPushGroupFlag;
2260  }
2261  inline bool ChartContext::GetPushGroup() const
2262  {
2263  return mPushGroupFlag;
2264  }
2265  inline void ChartContext::SetValueAxisShown(bool iIsValueAxisShown)
2266  {
2267  mIsValueAxisShown = iIsValueAxisShown;
2268  }
2270  {
2271  return mIsValueAxisShown;
2272  }
2273 
2274  inline void ChartContext::EnableAnimation(bool iUseAnimation)
2275  {
2276  mUseAnimation = iUseAnimation;
2277  }
2278 
2279  inline void ChartContext::DisableAnimationForZoom(bool iDisableAnimation)
2280  {
2281  mUseAnimationForZoom = !iDisableAnimation;
2282  }
2283  inline bool ChartContext::IsUseAnimation() const
2284  {
2285  return mUseAnimation;
2286  }
2288  {
2289  return !mUseAnimationForZoom;
2290  }
2291 
2292  inline void ChartContext::SetAnimationDuration(double iSeconds)
2293  {
2294  mAnimationDuration = iSeconds;
2295  }
2297  {
2298  return mAnimationDuration;
2299  }
2301  {
2302  mIsGrayoutMode = true;
2303  }
2305  {
2306  mIsGrayoutMode = false;
2307  }
2308  inline bool ChartContext::IsGrayoutMode() const
2309  {
2310  return mIsGrayoutMode;
2311  }
2313  {
2314  mIsDuplicated = true;
2315  }
2317  {
2318  mIsDuplicated = false;
2319  }
2320  inline bool ChartContext::IsDuplicateMode() const
2321  {
2322  return mIsDuplicated;
2323  }
2324  inline std::string ChartContext::GetTemplateNodeKey() const
2325  {
2326  return mTemplateNodeKey;
2327  }
2328 
2330  {
2331  mFormatManagerPtr = iFormatManagerPtr;
2332  }
2334  {
2335  return mFormatManagerPtr;
2336  }
2337 
2338  inline void ChartContext::SetIntegrity(Int32 iIntegrity)
2339  {
2340  mChartIntegrity = iIntegrity;
2341  }
2343  {
2344  return mChartIntegrity;
2345  }
2346 
2347  inline void ChartContext::SetTimeSeriesChart(bool iIsTimeSeries)
2348  {
2349  mIsTimeSeriesChart = iIsTimeSeries;
2350  if (mIsTimeSeriesChart)
2351  {
2353  }
2354  }
2356  {
2357  return mIsTimeSeriesChart;
2358  }
2359 
2360  inline void ChartContext::EnableMicroChart(bool iIsMicroChart)
2361  {
2362  mIsMicroChart = iIsMicroChart;
2363  }
2364  inline bool ChartContext::IsMicroChart() const
2365  {
2366  return mIsMicroChart;
2367  }
2368 
2369  inline void ChartContext::EnableVoiceOver(bool iIsVoiceOverMode)
2370  {
2371  mIsVoiceOver = iIsVoiceOverMode;
2372  }
2373 
2374  inline bool ChartContext::IsVoiceOver() const
2375  {
2376  return mIsVoiceOver;
2377  }
2378 
2379  inline void ChartContext::EnableGraphMatrix(bool iIsGraphMatrix)
2380  {
2381  mIsGraphMatrix = iIsGraphMatrix;
2382  }
2383 
2384  inline bool ChartContext::IsGraphMatrix() const
2385  {
2386  return mIsGraphMatrix;
2387  }
2388 
2389  inline void ChartContext::EnableVIDocument(bool iIsVIDocument)
2390  {
2391  mIsVIDocument = iIsVIDocument;
2392  }
2393 
2394  inline bool ChartContext::IsVIDocument() const
2395  {
2396  return mIsVIDocument;
2397  }
2398 
2399  inline void ChartContext::SetNeedColorColOffset(bool iIsNeedColorColOffset)
2400  {
2401  mIsNeedColorColOffset = iIsNeedColorColOffset;
2402  }
2403 
2404  inline void ChartContext::SetImageUsage(Int32 iImageUsage)
2405  {
2406  mImageUsage = iImageUsage;
2407  }
2409  {
2410  return mImageUsage;
2411  }
2412  inline void ChartContext::EnableUniformAxis(bool iUseUniformAxis)
2413  {
2414  mIsUniformAxisMode = iUseUniformAxis;
2415  }
2417  {
2418  return mIsUniformAxisMode;
2419  }
2420  inline void ChartContext::SetEntireness(bool iIsEntireChart)
2421  {
2422  mIsEntireChart = iIsEntireChart;
2423  }
2424  inline bool ChartContext::IsEntireChart() const
2425  {
2426  return mIsEntireChart;
2427  }
2428  inline bool ChartContext::IsFontAntiAlias() const
2429  {
2430  return mIsFontAntiAlias;
2431  }
2432  inline void ChartContext::SetAdvancedChartTypeSupport(bool iAdvancedChartTypeSupport)
2433  {
2434  mAdvancedChartTypeSupport = iAdvancedChartTypeSupport;
2435  }
2437  {
2439  }
2440 #ifndef _VE_CE
2441  inline void ChartContext::SetLineJoin(EnumLineJoinType iLineJoinType)
2442  {
2443  mLineJoinType = iLineJoinType;
2444  switch (mLineJoinType) {
2445  case LJT_MITER:
2446  CGContextSetLineJoin(mpCGContext, kCGLineJoinMiter);
2447  break;
2448  case LJT_BEVEL:
2449  CGContextSetLineJoin(mpCGContext, kCGLineJoinBevel);
2450  break;
2451  case LJT_ROUND:
2452  CGContextSetLineJoin(mpCGContext, kCGLineJoinRound);
2453  break;
2454  default:
2455  _ASSERTE(false);
2456  break;
2457  }
2458  }
2459 #endif
2461  {
2462  return mLineJoinType;
2463  }
2464  inline void ChartContext::SetFontScale(double iRatio)
2465  {
2466  _ASSERTE(iRatio > 0);
2467  mFontScaleRatio = iRatio;
2468  }
2469  inline double ChartContext::GetFontScale() const
2470  {
2472  return mFontScaleRatio; //#468456
2473  else
2474  return 1.0; //#476838
2475  }
2476 
2477  inline void ChartContext::SetHasCurvePolygon(bool iHasCurvePolygon)
2478  {
2479  mHasCurvePolygon= iHasCurvePolygon;
2480  }
2481  inline bool ChartContext::HasCurvePolygon() const
2482  {
2483  return mHasCurvePolygon;
2484  }
2485 
2486  inline void ChartContext::ResetHighlightObjectList(std::vector<TripleId>* ipInputList)
2487  {
2488  mHighLightedObjectList.clear();
2489  if (ipInputList)
2490  {
2491  mHighLightedObjectList = *ipInputList;
2492  }
2493  }
2494  inline void ChartContext::GetHighLightObjectList(std::vector<TripleId>& iorCurrentList)
2495  {
2496  iorCurrentList = mHighLightedObjectList;
2497  }
2498 
2499  inline void ChartContext::SetBackgroundOpaque(bool iBackgroundOpaque)
2500  {
2501  mIsBackgroundOpaque = iBackgroundOpaque;
2502  }
2504  {
2505  return mIsBackgroundOpaque;
2506  }
2507 
2508  inline void ChartContext::HideAxisElements(bool iHide)
2509  {
2510  mShouldHideAxisElements = iHide;
2511  }
2513  {
2514  return mShouldHideAxisElements;
2515  }
2516  inline void ChartContext::SetApplyMetricFormatting(bool iApplyMetricFormatting)
2517  {
2518  mApplyMetricFormatting = iApplyMetricFormatting;
2519  }
2521  {
2522  return mApplyMetricFormatting;
2523  }
2524  inline bool ChartContext::IsAxesStateNULL() const
2525  {
2526  if (mpAxesState) {
2527  return false;
2528  }
2529  else
2530  return true;
2531  }
2532  inline void ChartContext::SetCanvas(ChartCanvas *ipCanvas)
2533  {
2534  if(mpCanvas != NULL)
2535  {
2536  delete mpCanvas;
2537  mpCanvas = NULL;
2538  }
2539  mpCanvas = ipCanvas;
2540  }
2542  {
2543  return mpCanvas;
2544  }
2545 }
2546 #endif
double GetZoomScale(bool iIsHonest=true)
void LineTo(double iX, double iY, bool iIsCurveAnimation=false, FPoint2D *iBasePoint=NULL)
Definition: ChartContext.h:169
void SetCurrentAngleIndex(Int32 iAngleIndex)
double mAxisAdjustedValue
Definition: ChartContext.h:368
bool mIsColorbyDropzoneHasTemplateMetric
Definition: ChartContext.h:399
bool IsAnimationPossible(double iZoomScale)
Whether animation is possible.
Definition: Vector2D.h:21
EnumGraphMatrixMarkerInChartType
Definition: ChartContext.h:108
Definition: ChartContext.h:162
void SetImageFormat(Int32 iFormat)
Definition: ChartContext.h:2249
EnumDssGraphMatrixSizeMode
Definition: Common.h:83
FormatManager::Ptr GetFormatManager() const
Definition: ChartContext.h:2333
Int32 mPieGroupSectionCount
Definition: ChartContext.h:409
void * mpChartManager
Definition: ChartContext.h:1738
EnumLineJoinType mLineJoinType
Definition: ChartContext.h:1928
RGBColor GetSeriesColorFromPalette(Int32 iSeriesId) const
EnumGraphMatrixLayoutType mLayoutMode
Layout mode.
Definition: ChartContext.h:360
EnumWidgetType GetWidgetType()
Int32 mCondenseMode
The condense mode.
Definition: ChartContext.h:379
bool mValid
Indicate wheather this cache is valid.
Definition: ChartContext.h:215
Int32 mBubbleBourndaryPadding
The padding between bubble and chart boundary.
Definition: ChartContext.h:347
Definition: ChartContext.h:131
CGContext * GetPrivateCGContext()
double hGetMaxRadiusRatio(Int32 chartType)
Definition: LayerObject.h:21
Definition: DSSIPhoneEnums.h:2530
std::vector< Int32 > mColColorByUnits
Definition: ChartContext.h:375
bool HasCurvePolygon() const
Definition: ChartContext.h:2481
void SetApplyMetricFormatting(bool iApplyMetricFormatting)
Definition: ChartContext.h:2516
bool GetPushGroup() const
Definition: ChartContext.h:2261
double mO1InitLogicalMin
Definition: ChartContext.h:255
bool mIsSizebyCustomMinMaxEnabled
Definition: ChartContext.h:372
Int32 MapObject(Int32 iObjectId) const
bool IsVerticalBar() const
bool mIsY1RangeBeforeZoomReady
Definition: ChartContext.h:238
EnumGraphMatrixMajorGraphType
Definition: ChartContext.h:134
bool mIsVIDocument
Definition: ChartContext.h:1889
Definition: ChartContext.h:138
bool mIsO1SwipedOutOfZoom
Indicates whether the range of O1 axis has been swiped;.
Definition: ChartContext.h:237
bool IsAnimationDisabledForZoom()
Definition: ChartContext.h:2287
void DVFontSize(Int32 &iorSize) const
void SetTemplateNodeKey(const std::string &irKey)
Int32 mTopMargin
Definition: ChartContext.h:244
Definition: ChartContext.h:143
Definition: FormatFill.h:160
bool mIsGrayoutMode
specify whether the graph is in gray out mode
Definition: ChartContext.h:1901
void SetAbsoluteFontLineSize(bool iAbsolute)
Definition: ChartContext.h:2069
bool mIsO1RangeBeforeZoomReady
Definition: ChartContext.h:239
bool mIsEmptyXAxisDropZone
Definition: ChartContext.h:406
Int32 mObjectId
Definition: ChartContext.h:176
bool mIsVoiceOver
Indicates whether currenct chart is in voice over mode.
Definition: ChartContext.h:1892
bool mIsYValid
Definition: ChartContext.h:304
void SetCanvas(ChartCanvas *ipCanvas)
Definition: ChartContext.h:2532
UniformAxisContext * mpUniformAxisContext
Definition: ChartContext.h:1906
CGContext * mpCGContext
Definition: ChartContext.h:1719
Definition: ChartContext.h:155
void SetIntegrity(Int32 iIntegrity)
Definition: ChartContext.h:2338
void RestoreZoomState(Dataset *ipDataset)
bool mIsEmptyYAxisDropZone
Definition: ChartContext.h:407
void SetFontAntiAlias(bool iFontAntiAlias)
void DrawPolygon(const std::vector< Point< T > > &irPoints, bool iIsLinePath=true, bool iIsCurveAnimation=false, FPoint2D *iBasePoint=NULL, unsigned char iLineStyle=LS_SOLID)
Definition: ChartContext.h:2113
EnumWidgetType
Definition: CEModuleMain.h:38
LayerObject * mpTopRendererLayer
Maintains the address of top rendering layer.
Definition: ChartContext.h:1727
void DrawCylinder(const FPoint2D &irCenter, const float iRadius, const float iStartAngle, const float iEndAngle, const float iDepth)
GraphMatrixContext * GetGraphMatrixContext()
bool IsBulletChart() const
Point2D VDPoint(const Point2D &irVirtualPoint) const
bool IsIsolatedDotInLine(const TripleId &irId)
Definition: Common.h:266
bool IsBackgroundBright(bool iIsRecursive=true) const
double GetFontScale() const
Definition: ChartContext.h:2469
Int32 mSwipeOffsetOutOfZoom
Definition: ChartContext.h:246
void UpdateFormatFont(const TripleId &irTripleId, FormatFont *iopFormatFont) const
Definition: ChartContext.h:137
float mGMWidthScaseRatio
Definition: ChartContext.h:1743
bool IsAreaChart() const
Definition: ChartContext.h:70
bool mIsDataLabelEnabled
Definition: ChartContext.h:369
bool mIsYDropZoneEmpty
Definition: ChartContext.h:356
std::set< Int32 > mCondesedMetricsSet
The metrics which will condese the value labels whose number is under it.
Definition: ChartContext.h:378
const Int32 gVirtualCoordinateWidth
Definition: Common.h:227
FormatFill::Ptr GetBaseGradientFillForGM(unsigned char iAlpha=255)
Definition: ChartContext.h:154
Definition: Transformer.h:52
bool CheckRiserCountLimit(const TripleId &irTripleId) const
Int32 GetIntegrity()
Definition: ChartContext.h:2342
std::vector< std::pair< double, double > > mBubbleSizeRangeSet
Definition: ChartContext.h:423
double min(double x, double y)
Definition: ReportServiceCore/Classes/CalculationEngine/statistic.h:29
Point2D DVPoint(const Point2D &irImagePoint) const
double mY2MinValue
Indicates the minimum value in Y2 axis.
Definition: ChartContext.h:290
bool mIsSliceDropzoneHasTemplateMetric
Definition: ChartContext.h:398
DatasetState * mpDatasetState
Definition: ChartContext.h:1905
Definition: ChartContext.h:156
void ExitGrayoutMode()
Definition: ChartContext.h:2304
Int32 mCurrentPieSliceIndex
Definition: ChartContext.h:411
Int32 GetGraphHeight() const
Definition: ChartContext.h:2044
Definition: ChartContext.h:120
void EnableMicroChart(bool iIsMicroChart)
Definition: ChartContext.h:2360
Rect2D DVRect(const Rect2D &irImageRect) const
bool mUseManualGroupRange
Definition: ChartContext.h:240
void SetRGBAStroke(float iRed, float iGreen, float iBlue, float iAlpha)
void SetIsCategoryXAxisForPartialRendering(bool isForPartialRendering)
Definition: ChartContext.h:118
Definition: ChartContext.h:158
Definition: ChartContext.h:126
double ToRatio(double iVal, bool iIsUseZeroAsBoundaryValue=false)
void SetFormatManager(FormatManager::Ptr iFormatManagerPtr)
Definition: ChartContext.h:2329
double mO1LogicalMaxBeforeZoom
Indicates the maximum logical coordinate of O1 axis before zooming.
Definition: ChartContext.h:254
Definition: ChartContext.h:160
bool IsValueAxisShown() const
Definition: ChartContext.h:2269
Int32 mChartYOffset
Definition: ChartContext.h:1911
bool IsColorValid()
Definition: ChartContext.h:427
bool IsVoiceOver() const
Definition: ChartContext.h:2374
Definition: ChartContext.h:149
cairo_surface_t * CreateSVGSurfaceForStream()
Definition: FormatLine.h:28
Int32 GetChartYOffset() const
ChartContext * Ptr
Definition: ChartContext.h:547
Int32 mDataGroup
Definition: ChartContext.h:317
Definition: ChartContext.h:150
Int32 mSecondaryDataAreaRightMargin
Indicates the margin at right of data area.
Definition: ChartContext.h:296
bool IsGrayoutMode() const
Definition: ChartContext.h:2308
Int32 mDataAreaBottomMargin
Indicates the margin between X axis line and X axis labels.
Definition: ChartContext.h:271
bool mHasChartWithOnlyDataMarkers
Definition: ChartContext.h:363
Int32 mPieSeriesSectionCount
Definition: ChartContext.h:410
bool IsDataLabels(const TripleId &irId) const
Definition: ChartContext.h:153
std::map< int, bool > * mHasAreaBarInAxis
Definition: ChartContext.h:421
void DrawSectorStroke(const FPoint2D &irCenter, const float iRadius, const float iStartAngle, const float iEndAngle)
bool mShouldHideAxisElements
Whether axis elements should be hidden.
Definition: ChartContext.h:1898
const TripleId gNullTripleId
This struct is from ChartCtrl.h.
Definition: NumberObject.h:38
Point2D GetPointByAngleRadiusCenter(double iAngle, double iRadius, const Point2D &irCenter) const
ChartContext * mpChartContext
The parental chart context.
Definition: ChartContext.h:383
void DisableAnimationForZoom(bool iDisableAnimation)
Definition: ChartContext.h:2279
void RestoreDataset(Dataset *ipDataset)
bool mIsSliceEnabled
Definition: ChartContext.h:225
void SetHasCurvePolygon(bool iHasCurvePolygon)
471270 When there&#39;s curve polygon, need to draw legend and category labels on top layer...
Definition: ChartContext.h:2477
std::vector< Int32 > mRowColorByUnits
Definition: ChartContext.h:374
double mX2MinValue
Indicates the minimum value in X2 axis.
Definition: ChartContext.h:292
bool IsIsolatedDot(const TripleId &irId)
bool IsCategoryPie() const
bool IsIsolatedDot(const TripleId &irId)
RGBColor * GetDefaultContrastColor(Int32 iColorUsage=-1) const
Definition: ChartContext.h:77
void SetFontScale(double iRatio=1.0)
Definition: ChartContext.h:2464
Int32 mSeriesId
Definition: ChartContext.h:202
void TDGToMSTRHeight(Int32 iTDGHeight, Int32 &orMSTRHeight) const
bool mApplyMetricFormatting
Indicates whether to apply FormatFill from Metric definition or not.
Definition: ChartContext.h:1899
Int32 DVHeight(Int32 iImageHeight) const
Definition: ChartContext.h:2007
Only used in time series chart.
Definition: ChartContext.h:222
bool mIsTimeSeriesChart
Indicates whether current chart is a time series chart or not.
Definition: ChartContext.h:1884
Int32 GetImageFormat() const
Definition: ChartContext.h:2253
#define _ASSERTE(x)
Definition: Asserte.h:40
double mY1LogicalMaxBeforeZoom
Indicates the maximum logical coordinate of Y1 axis before zooming.
Definition: ChartContext.h:252
Int32 mCurrentPieAngleIndex
Definition: ChartContext.h:412
virtual void PutChartEngine(Chart *ipChart)
void ExitDuplicateMode()
Definition: ChartContext.h:2316
double mZMaxValue
Indicates the maximum value in X axis for Bubble chart.
Definition: ChartContext.h:279
EnumChartComponent
Definition: ChartContext.h:87
void GetHighLightObjectList(std::vector< TripleId > &iorCurrentList)
Definition: ChartContext.h:2494
void EnterGrayoutMode()
Definition: ChartContext.h:2300
void DrawStraightLine(const Point< T > &irStartPoint, const Point< T > &irEndPoint)
Definition: ChartContext.h:2152
Int32 mPropertyId
Definition: ChartContext.h:175
const Rect2D gDefaultSubtitlePosition
bool mIsLineWidthOdd
Definition: ChartContext.h:1872
void SetLineDash(double *ipLinePattern, Int32 iDashNumber)
void MoveTo(double iX, double iY, bool iIsCurveAnimation=false, FPoint2D *iBasePoint=NULL)
bool NeedAdjustedLinePath() const
Definition: ChartContext.h:2016
bool mIsNeedRotateDataLabel
Definition: ChartContext.h:366
std::vector< Int32 > mScrollViewLabelIds
Definition: ChartContext.h:258
Definition: ChartContext.h:66
void HideAxisElements(bool iHide)
Definition: ChartContext.h:2508
void SetPushGroup(bool iPushGroupFlag)
Definition: ChartContext.h:2257
Int32 GetValueAxisPadding(bool iIsXAxis, bool iIsHighPadding, Int32 iRequiredPadding=0, Int32 iPaddingIndex=0)
void DrawRectangle(const Rect2D &irRect, bool iIsLinePath)
bool mIsFontAntiAlias
Definition: ChartContext.h:1880
Definition: ChartContext.h:173
double ToRatioEX(double iVal, bool iIsUseAbsValue=false)
Int32 mSecondaryDataAreaBottomMargin
Indicates the margin between X axis line and X axis labels.
Definition: ChartContext.h:298
bool IsDuplicateMode() const
Definition: ChartContext.h:2320
bool mIsO1InZoomState
Indicates whether O1 axis is in zoom state;.
Definition: ChartContext.h:236
void ResetHighlightObjectList(std::vector< TripleId > *ipInputList)
Definition: ChartContext.h:2486
void DrawArcNegative(const FPoint2D &irCenter, const float iRadius, const float iEndAngle, const float iStartAngle, bool iNewPath=true)
EnumShapeType
Definition: ChartContext.h:147
virtual bool GetProperty(Int32 iPropertyId, const TripleId &irTripleId, CComVariant *opValue) const
double GetAnimationDuration() const
Definition: ChartContext.h:2296
Int32 mYMetrixIndex
Definition: ChartContext.h:284
Int32 mX2MetrixIndex
Definition: ChartContext.h:287
double Square(double iNumber) const
Definition: ChartContext.h:2079
EnumLineJoinType
Definition: ChartCanvas.h:22
Definition: ChartContext.h:200
void SetDataset(Dataset::Ptr iDatasetPtr)
Definition: ChartContext.h:2092
Definition: FormatLine.h:59
Definition: ChartContext.h:76
LayerObject * mpBaseLayerObject
Definition: ChartContext.h:1725
std::string GetTemplateNodeKey() const
Definition: ChartContext.h:2324
bool IsAbsoluteFontLineSize() const
Definition: ChartContext.h:2074
Definition: ChartContext.h:125
Definition: ValueAxis.h:85
void SetRecalculateFrame(bool iRecalculate)
Definition: ChartContext.h:2059
double mO1InitLogicalMax
Definition: ChartContext.h:256
Definition: Dataset.h:198
Transformer * mpTransformer
Definition: ChartContext.h:1731
FormatFill::Ptr UpdateStepGradientEffectForGM(const TripleId &irLineId, FormatFill::Ptr iFillPtr, Dataset::Ptr iDataset, Int32 iGroupInterval, unsigned char iAlpha=255)
void SetProjectionArea(const Rect2D &irProjectionArea)
void SetCurrentPieSlice(Int32 iPieSliceIndex)
virtual FormatLine::Ptr GetFormatLine(const TripleId &irTripleId, Int32 iCollectionType, EnumShapeType iShape=_GENERIC) const =0
bool IsPieChart() const
void SetGraphSize(Int32 iGraphWidth, Int32 iGraphHeight)
Definition: ChartContext.h:2026
Definition: ChartContext.h:119
Definition: ChartContext.h:167
Int32 GetGraphType() const
Definition: ChartContext.h:2083
Definition: ChartContext.h:170
Int32 VDHeight(Int32 iVirtualHeight) const
Definition: ChartContext.h:1991
double VectorToAngle(const DVector2D &irVector) const
bool mIsNeedColorColOffset
Definition: ChartContext.h:1897
std::vector< Int32 > mVecYValueAxisLowPaddingSet
Definition: ChartContext.h:351
Definition: ChartContext.h:142
Int32 mSecondaryDataAreaLeftMargin
Indicates the margin between Y axis line and Y axis labels.
Definition: ChartContext.h:295
bool IsUseAnimation() const
Definition: ChartContext.h:2283
Definition: ChartContext.h:71
bool mIsCombinationGraph
Definition: ChartContext.h:389
T y
Y-coordinate of current point.
Definition: Point2D.h:175
void VDFontSize(Int32 &iorSize) const
bool mIsValueAxisShown
Indicates whether to show value axis part or not.
Definition: ChartContext.h:1879
bool mUseAnimationForZoom
Indicates whether animation should be supported for the charts genrated due to zoom.
Definition: ChartContext.h:1882
Definition: ChartContext.h:148
bool mIsTextAsShape
Definition: ChartContext.h:1744
double mX2MaxValue
Indicates the maximum value in X2 axis.
Definition: ChartContext.h:293
void TDGToMSTRPoint(Int32 iX, Int32 iY, Point2D &orPoint) const
ThresholdCache mThresholdCache
Definition: ChartContext.h:1920
Definition: ChartContext.h:103
void SetLineWidth(Int32 iLineWidth)
bool IsParetoChart() const
Definition: ChartContext.h:2245
void DrawRingSector(const FPoint2D &irCenter, const float iOutRadius, const float iInRadius, const float iStartAngle, const float iEndAngle)
Do not share format.
Definition: ChartContext.h:81
void UpdateLineColorWithThreshold(const TripleId &irTripleId, FormatLine *iopFormatLine, Int32 iCollectionType)
Int32 PixelSizeToPtSize(Int32 iPixelSize) const
Int32 mUniformAxisLeftMargin
only used by uniform axis. Indicates the margin between Y axis line and Y axis labels.
Definition: ChartContext.h:1857
Int32 DialogSizeToPixelSize(Int32 iDialogSize) const
Definition: ChartContext.h:2088
bool SaveSurfaceToMemory(Int32 iFormat, char *&oprMemory, unsigned Int32 &orSize)
bool mIsCategoryXAxisNeedPartialRendering
Definition: ChartContext.h:1729
bool GetCurrentGraphFrame(Rect2D &iorRect) const
Int32 mImageFormat
Keeps the current image format.
Definition: ChartContext.h:1856
bool mIsNeedAdjustAxis
Definition: ChartContext.h:367
void SetNeedColorColOffset(bool iIsNeedColorColOffset)
Definition: ChartContext.h:2399
Definition: ChartContext.h:151
Definition: ChartContext.h:74
FormatManager::Ptr mFormatManagerPtr
Definition: ChartContext.h:1926
Int32 mLastGroupID
Indicates the last group ID which is shown in current graph.
Definition: ChartContext.h:241
Int32 mValueAxisAreaWidth
Definition: ChartContext.h:242
void * mpGMCEContext
Definition: ChartContext.h:1740
bool mManualLayoutMode
Indicates whether the layout is manual or automatic.
Definition: ChartContext.h:1876
double mEstGraphHeight
Definition: ChartContext.h:330
void SetAdvancedChartTypeSupport(bool iAdvancedChartTypeSupport)
Definition: ChartContext.h:2432
bool mPushGroupFlag
Indicates whether cairo_push_group() has been called or not.
Definition: ChartContext.h:1878
bool mIsXDropzoneHasTemplateMetric
Definition: ChartContext.h:400
Definition: ChartCanvas.h:24
ChartCanvas * GetCanvas()
Definition: ChartContext.h:2541
EnumDssGraphMatrixElementSizeMode mMinElementSizeMode
Definition: ChartContext.h:325
EnumDssGraphMatrixMetricCategory
Definition: Common.h:123
Int32 mXMetrixIndex
Definition: ChartContext.h:283
Int32 mMarkerShape
Definition: ChartContext.h:342
Definition: ChartContext.h:213
EnumAxis
Definition: ChartContext.h:166
std::vector< Int32 > mVecYValueAxisHighPaddingSet
Definition: ChartContext.h:352
cairo_surface_t * CreatePDFSurfaceForStream()
double mO1LogicalMinBeforeZoom
Indicates the minimum logical coordinate of O1 axis before zooming.
Definition: ChartContext.h:253
void EnableVIDocument(bool iIsVIDocument)
Definition: ChartContext.h:2389
Int32 width
Width of current rectangle.
Definition: Rect2D.h:124
double mMinSizeVal
Definition: ChartContext.h:321
void PutLocation(Int32 iPropertyId, Int32 iTop, Int32 iLeft, Int32 iBottom, Int32 iRight)
Int32 mTickSizeInFD
Tick shape size in the fixed dimension.
Definition: ChartContext.h:348
void SetChartComponent(EnumChartComponent iChartComponent)
Definition: ChartContext.h:2102
void UpdateFormatFill(const TripleId &irTripleId, FormatFill *iopFormatFill, Int32 iCollectionType) const
void SetValueAxisShown(bool iIsValueAxisShown)
Definition: ChartContext.h:2265
bool IsVectorGraph() const
Definition: ChartContext.h:2021
Rect2D VDRect(const Rect2D &irVirtualRect) const
bool mIsPieMetricSliced
Definition: ChartContext.h:397
bool mIsDuplicated
specify whether last selected data point is duplicated
Definition: ChartContext.h:1902
bool mIsDualAxisGraph
Definition: ChartContext.h:391
virtual float GetMemoryUsageEstimation() const
CGPath * mpCGPath
Maintains the current path.
Definition: ChartContext.h:1722
bool IsReverseSeriesOrder(ValueAxis *ipValueAxis, bool iIsVertical, Int32 iDepthDirection) const
bool mIsPieSliced
Definition: ChartContext.h:396
#define Int32
Definition: BasicTypes.h:20
double mXMaxValue
Indicates the maximum value in X axis for Scatter/Bubble chart.
Definition: ChartContext.h:277
double mFontScaleRatio
Specify the font scale ratio, default is one.
Definition: ChartContext.h:1895
bool mHasCurvePolygon
Indicates whether there&#39;s curve polygon in current graph.
Definition: ChartContext.h:1891
bool IsLineChart() const
Int32 mZMetrixIndex
Definition: ChartContext.h:285
bool mRecalculateFrame
Indicates whether the frame need to be recalculate or not.
Definition: ChartContext.h:1877
Definition: ChartContext.h:91
ThemeType GetGraphThemes() const
Get the information about the graph themes.
const Int32 gVirtualMarkerSize
Definition: ChartContext.h:54
bool mIsEmptyYAxisDropWithTemplateMetric
Definition: ChartContext.h:405
bool mIsY1InZoomState
Indicates whether Y1 axis is in zoom state;.
Definition: ChartContext.h:235
Definition: ChartContext.h:111
double mMaxSizeVal
Definition: ChartContext.h:320
Definition: ChartContext.h:140
Definition: ChartContext.h:144
bool mIsGraphMatrix
Indicates whether current chart is a graph matrix or not.
Definition: ChartContext.h:1888
T x
X-coordinate of current point.
Definition: Point2D.h:174
bool IsPercentChart() const
bool IsManualLayout() const
Definition: ChartContext.h:2054
Definition: ChartContext.h:78
void UpdateValueAxisPadding(bool iIsXAxis, bool iIsHighPadding, Int32 iPaddingValue)
double mEstGraphWidth
Definition: ChartContext.h:329
Definition: ChartContext.h:128
Definition: ChartContext.h:110
std::set< TripleId > mIsolaetdDotsInNormalLineChart
Definition: ChartContext.h:424
void TDGToMSTRRect(Int32 iTop, Int32 iLeft, Int32 iBottom, Int32 iRight, Rect2D &orRect) const
bool IsFontAntiAlias() const
Definition: ChartContext.h:2428
std::set< double > mShownValueTickSet[2]
The shown ticks for uniform x-axis, y-axis.
Definition: ChartContext.h:377
Definition: ChartContext.h:127
bool mIsSliced
Definition: ChartContext.h:224
std::map< Int32, double > mValueAxisZoomScales
The value axis id to its zoom scale.
Definition: ChartContext.h:425
void SetChartOffset(Int32 iXOffset, Int32 iYOffset)
bool mIsYDropzoneHasTemplateMetric
Definition: ChartContext.h:401
DatasetState mInitDatasetState
Definition: ChartContext.h:260
std::map< std::vector< Int32 >, ChartAdvFormat * > mGMAxisAutoNumberFormatSet
Maintains the automatic number format of value axis in graph matrix.
Definition: ChartContext.h:1917
MetricFormatFillCache()
Definition: ChartContext.h:218
double mMaxColorVal
Definition: ChartContext.h:337
void * mpGridGraphViewer
Maintains a pointer to GridGraphViewer. Need to cast it to UIView* before using it.
Definition: ChartContext.h:1733
void DrawPolyLine(const std::vector< Point< T > > &irPoints, bool iIsLinePath=true, bool iIsCurveAnimation=false, FPoint2D *iBasePoint=NULL, unsigned char iLineStyle=LS_SOLID)
Definition: ChartContext.h:2160
EnumChartComponent GetChartComponent() const
Definition: ChartContext.h:2107
Int32 GetImageUsage() const
Definition: ChartContext.h:2408
bool IsReverseGroupOrder(bool iIsVertical, Int32 iDepthDirection) const
Int32 mY2MetrixIndex
Definition: ChartContext.h:288
FormatFill::Ptr mFormatFillPtr
cache.
Definition: ChartContext.h:216
double mLineSizeInput
The inputed line width by user.
Definition: ChartContext.h:345
bool GetHover(const TripleId &iTripleId) const
only used by uniform axis in graph matrix.
Definition: ChartContext.h:266
Int32 mGroupId
Definition: ChartContext.h:203
void EnableUniformAxis(bool iUseUniformAxis)
Definition: ChartContext.h:2412
bool mIsAxisTitleAndLabelRequired
Indicate whether axis title and labels are required.
Definition: ChartContext.h:273
bool IsDualAxis() const
bool mIsXValid
Definition: ChartContext.h:303
bool mUseAnimation
Indicates whether animation is needed or not.
Definition: ChartContext.h:1881
Int32 GetChartXOffset() const
void SetEntireness(bool iIsEntireChart)
Definition: ChartContext.h:2420
Definition: ChartContext.h:105
double mMaxValue
Indicates the maximum value in value axis.
Definition: ChartContext.h:275
Int32 mGraphType
Graph type.
Definition: ChartContext.h:1864
void DrawArc(const FPoint2D &irCenter, const float iRadius, const float iStartAngle, const float iEndAngle, bool iNewPath=true)
std::string mTemplateNodeKey
Definition: ChartContext.h:1924
void GetAxisAutoNumberFormat(ChartAdvFormat &orFormat)
int x
X-coordinate of left edge.
Definition: Rect2D.h:122
void SetRGBAFill(float iRed, float iGreen, float iBlue, float iAlpha)
Definition: GraphObject.h:38
double mY2MaxValue
Indicates the maximum value in Y2 axis.
Definition: ChartContext.h:291
Int32 mChartXOffset
Definition: ChartContext.h:1910
Definition: ChartContext.h:116
double mY1LogicalMinBeforeZoom
Indicates the minimum logical coordinate of Y1 axis before zooming.
Definition: ChartContext.h:251
GraphMatrixContext * mpGraphMatrixContext
Definition: ChartContext.h:1907
Int32 GetMaxMarkerSize(EnumGraphMatrixMarkerInChartType iChartType, bool iIsVertical, Int32 iUnitCount, bool iIsBubbleChart=false)
std::vector< Int32 > mBubbleSizeByIndexSet
Definition: ChartContext.h:376
Definition: ChartContext.h:113
double mXMinValue
Indicates the minimum value in X axis for Scatter/Bubble chart.
Definition: ChartContext.h:276
void SetCurrentGraphFrame(Int32 iX, Int32 iY, Int32 iWidth, Int32 iHeight)
bool HasAdvancedChartTypeSupport() const
Definition: ChartContext.h:2436
bool IsTimeSeriesChart() const
Definition: ChartContext.h:2355
Int32 GetGraphWidth() const
Definition: ChartContext.h:2039
void SetLineJoin(EnumLineJoinType iLineJoinType)
Definition: ChartContext.h:2441
Int32 mDataAreaRightMargin
Indicates the margin at right of data area.
Definition: ChartContext.h:269
struct _cairo_surface cairo_surface_t
Definition: FormatFill.h:23
double mY1LogicalMin
Indicates the minimum logical coordinate of Y1 axis. Used in zoom state.
Definition: ChartContext.h:247
void VDLineWidth(Int32 &iorSize) const
void Rotate(const Point2D &irAnchor, double iRadian)
bool mIsBackgroundOpaque
Indicates whether the background of current chart is opaque.
Definition: ChartContext.h:1893
void EnableAnimation(bool iUseAnimation)
Definition: ChartContext.h:2274
Int32 mColorArity
Definition: ChartContext.h:336
Int32 mGraphHeight
Indicates an estimated graph height for font size calculation.
Definition: ChartContext.h:272
Definition: ChartContextHelper.h:10
double DoubleToFixedPointNumber(double iValue) const
Definition: ChartContext.h:542
Definition: ChartCanvas.h:25
bool mIsEmptyXAxisDropWithTemplateMetric
Definition: ChartContext.h:404
double GetScaledSize(double iDataVal, double iMaxSize)
double mZMinValue
Indicates the minimum value in X axis for Bubble chart.
Definition: ChartContext.h:278
Int32 mLabelWidthLimitY
Indicates the maximum allowed lenght for the Y axis labels(only for category axis).
Definition: ChartContext.h:280
EnumDssGraphMatrixSizeMode mSizeMode
Definition: ChartContext.h:319
void CalculateDepthOffset(Int32 iDepth, Int32 iAngle, Int32 &orOffsetX, Int32 &orOffsetY, bool iAbsoluteDepth=false) const
Int32 mUniformAxisTopMargin
only used by uniform axis. Indicates the margin at top of data area.
Definition: ChartContext.h:1858
T Get() const
Definition: SmartBase.h:25
bool mUseThreshold
Definition: ChartContext.h:204
bool GetLocation(Int32 iPropertyId, Int32 *opTop, Int32 *opLeft, Int32 *opBottom, Int32 *opRight)
std::vector< std::pair< Int32, Int32 > > * mColorByKeyUnitsPair
Definition: ChartContext.h:419
double mY1LogicalMax
Indicates the maximum logical coordinate of Y1 axis. Used in zoom state.
Definition: ChartContext.h:248
bool IsLegendByGroup() const
std::basic_string< WCHAR, std::char_traits< WCHAR >, Allocator< WCHAR > > String
Definition: BaseString.h:26
Int32 mBeginGroup
Definition: ChartContext.h:226
bool IsIsolatedDotInLine(const TripleId &irId)
const Int32 gDefaultUniformAxisMargin
Definition: ChartContext.h:52
void EnterDuplicateMode()
Definition: ChartContext.h:2312
bool mIsY2Valid
Definition: ChartContext.h:307
void EnableGraphMatrix(bool iIsGraphMatrix)
Definition: ChartContext.h:2379
void MSTRToTDGPoint(const Point2D &irPoint, Int32 &orX, Int32 &orY) const
void UpdateZoomScale(void *ipView)
Update zoom scale.
virtual FormatFill::Ptr GetMetricFormatFill(const TripleId &irTripleId)
bool IsMicroChart() const
Definition: ChartContext.h:2364
bool IsEntireChart() const
Definition: ChartContext.h:2424
bool IsBackgroundOpaque() const
Definition: ChartContext.h:2503
std::vector< Int32 > mColors
Definition: ChartContext.h:339
Definition: Chart.h:157
void UpdateHighScaleFactorToViews()
void SetBackgroundOpaque(bool iBackgroundOpaque)
Definition: ChartContext.h:2499
Definition: ChartContext.h:129
bool mMarkerShown
Definition: ChartContext.h:408
void AddToIsolatedDotList(const TripleId &irTripleId)
Int32 mCondenseLimit
lower bound for label condense.
Definition: ChartContext.h:380
Definition: ABLPlot.h:21
Int32 DVWidth(Int32 iImageWidth) const
Definition: ChartContext.h:2002
Int32 height
Height of current rectangle.
Definition: Rect2D.h:125
Definition: ChartContext.h:168
Int32 mLabelStaggerEnd
Definition: ChartContext.h:386
std::vector< MBase::String > mScrollViewLabels
Definition: ChartContext.h:257
Dataset::Ptr GetDataset()
Definition: ChartContext.h:2096
EnumDssGraphMatrixElementSizeMode mMaxElementSizeMode
Definition: ChartContext.h:324
virtual void PutProperty(Int32 iPropertyId, const TripleId &irTripleId, CComVariant *ipValue)
bool IsVIDocument() const
Definition: ChartContext.h:2394
const Rect2D gDefaultFootnotePosition
EnumDssGraphMatrixElementSizeMode
Definition: Common.h:89
EnumDssGraphMatrixColorMode mColorMode
Definition: ChartContext.h:335
Transformer * GetTransformer()
EnumDssGraphMatrixColorMode
Definition: Common.h:68
EnumGraphMatrixAxisLayoutType mAxisLayout
How the axis is assigned.
Definition: ChartContext.h:382
Definition: ChartContext.h:141
Int32 GetAdjustThicknessValue(Int32 iOriginValue)
Definition: ChartContext.h:159
bool IsAnimationEnabled() const
Int32 NormalDirection(const TVector2D< Int32 > &iSideDirection, Int32 iDepthDirection)
EnumDssGraphMatrixXAxisLabelRotation mXAxisLabelRotation
Definition: ChartContext.h:393
bool mHasAnimatedObject
Definition: ChartContext.h:1883
Definition: ChartContext.h:130
FormatFill::Ptr mFormatFillPtr
Definition: ChartContext.h:205
bool GetApplyMetricFormatting() const
Definition: ChartContext.h:2520
bool mIsX2Valid
Definition: ChartContext.h:306
bool IsSubView(void *ipChildView, void *ipBaseView, bool iIsRecursive)
Is view A sub view to B.
Int32 mLabelWidthLimitX
Indicates the maximum allowed lenght for the X axis labels(only for category axis).
Definition: ChartContext.h:281
void RemoveZeroEdgeInPolygon(std::vector< Point2D > &iorPolygon) const
Only used in time series chart.
Definition: ChartContext.h:233
bool GetIsCategoryXAxisForPartialRendering()
std::vector< Int32 > mExtraPaddings
Definition: ChartContext.h:353
EnumDssGraphMatrixXAxisLabelRotation
Definition: Common.h:77
Definition: Msi_variant.h:147
const Int32 gNullObjectId
Definition: Common.h:229
EnumDssGraphMatrixMetricCategory mAddedMetricToTooltip
which metric should be added to tooltip
Definition: ChartContext.h:359
Definition: ChartContext.h:152
Rect2D GetGraphFrame()
Definition: ChartContext.h:1982
Int32 PtSizeToPixelSize(Int32 iPtSize) const
bool IsAxesStateNULL() const
Definition: ChartContext.h:2524
UniformAxisContext * GetUniformAxisContext()
Int32 mSeriesId
Definition: ChartContext.h:177
AxesState * mpAxesState
Definition: ChartContext.h:1904
Dataset::Ptr mDatasetPtr
Points to a Dataset object.
Definition: ChartContext.h:1866
std::map< std::string, Int32 > * mColorByMap
Definition: ChartContext.h:420
void SetManualLayout(bool iManualLayout)
Definition: ChartContext.h:2049
void SetHover(const TripleId &iTripleId, bool iIsHover)
bool RectangleIntersection(const Rect2D &irRectA, const Rect2D &irRectB, Rect2D &orRect) const
void SetLineWidthOdd(bool iIsLineWidthOdd)
Definition: ChartContext.h:2012
double GetScaledSizeWithRatio(double iRatio, double iMaxSize)
void * mpOldChartManager
Maintains a pointer to old ChartManager for animation support.
Definition: ChartContext.h:1736
std::map< TripleId, ChartAdvFormat * > mAxisAutoNumberFormatSet
Definition: ChartContext.h:1918
Definition: ChartContext.h:161
Definition: ChartContext.h:90
FormatFill::Ptr UpdateGradientEffectForGM(const TripleId &irLineId, FormatFill::Ptr iFillPtr, Dataset::Ptr iDataset, double iAngle, unsigned char iAlpha=255)
Definition: ChartContext.h:75
void SetImageUsage(Int32 iImageUsage)
Definition: ChartContext.h:2404
Int32 mDataAreaTopMargin
Indicates the margin at top of data area.
Definition: ChartContext.h:270
bool NoAdjustOfLineWidth(const TripleId &irTripleId) const
Definition: DSSIPhoneEnums.h:2531
double mMinColorVal
Definition: ChartContext.h:338
Definition: ChartContext.h:163
ChartContext(Dataset::Ptr iDatasetPtr)
Int32 VDRadius(Int32 iVirtualRadius) const
std::vector< Int32 > mVecXValueAxisHighPaddingSet
The highPadding for y axis.
Definition: ChartContext.h:350
Definition: ChartContext.h:117
void RectangleUnion(const Rect2D &irRectA, const Rect2D &irRectB, Rect2D &orRect) const
void SetAnimationDuration(double iSeconds)
Definition: ChartContext.h:2292
const Int32 gNullSeriesId
Definition: Common.h:230
Int32 mLabelStaggerStart
Definition: ChartContext.h:385
static const Int32 sVisualElementBound
Definition: ChartContext.h:315
EnumRadientGradientUsage
Enumeration for radient gradient usage.
Definition: FormatFill.h:34
EnumCollectionType
Definition: ChartContext.h:64
std::vector< Rect2D > mScrollViewLabelRects
Definition: ChartContext.h:259
bool IsStackedChart() const
bool mShouldXAxisLabelRotate
Definition: ChartContext.h:358
bool SaveSurfaceToFile(Int32 iFormat, FILE *ipOutFile)
Definition: Msi_ccomvariant.h:24
RGBColor GetColorById(const TripleId &irTripleId, float &orAlpha) const
void SetHighlightSelectedObjects(LayerObjectPtr iHighlightLayerObjectPtr)
bool mIsRowOrColDropzoneHasTemplateMetric
Definition: ChartContext.h:403
Int32 mFixMarkerSizeFromWidget
Definition: ChartContext.h:333
void Scale(const double iX, const double iY)
Definition: ChartCanvas.h:39
Int32 mGraphHeight
Graph height.
Definition: ChartContext.h:1855
virtual FormatFont::Ptr GetFormatFont(const TripleId &irTripleId) const =0
bool mIsSeriesUniformInColor
Is the each section of the line chart shares the same color.
Definition: ChartContext.h:357
Int32 VDWidth(Int32 iVirtualWidth) const
Definition: ChartContext.h:1986
Int32 mO1LabelLevel
Definition: ChartContext.h:245
std::vector< MetricFormatFillCache > mMetricFormatFillCache
Metric index -> MetricFormatFillCache.
Definition: ChartContext.h:1922
bool IsAdvancedChartType() const
Int32 mMaxAutoBarWidth
Indicates the maximum bar width, used in "Automatic" mode.
Definition: ChartContext.h:343
double mO1LogicalMax
Indicates the maximum logical coordinate of O1 axis. Used in zoom state.
Definition: ChartContext.h:250
Int32 mUniformAxisBottomMargin
only used by uniform axis. Indicates the margin between X axis line and X axis labels.
Definition: ChartContext.h:1859
double mAnimationDuration
Specifies the duration of animation in seconds;.
Definition: ChartContext.h:1894
Int32 mCategoryAxisLableInteval
Definition: ChartContext.h:430
double mMinElementSize
Definition: ChartContext.h:327
Int32 GetMaxElementSizeInLineChart(bool iIsVertical, Int32 iGroupCount, bool iIsIsolatedDotInLine=false, bool iIsLineShapeInCombinationChart=false)
bool mIsEntireChart
Indicates whether entire chart is needed.
Definition: ChartContext.h:1887
bool NoAdjustOfFontSize(const TripleId &irTripleId) const
Definition: ChartContext.h:157
Definition: ChartContext.h:115
virtual bool IsGenericContext() const =0
bool IsBarChart() const
void ApplyBeveledFrameToRectangle(const Rect2D &irRect, double iRotationAngle, Int32 iBevelDepth, const RGBColor &irLTColor, Int32 iLTAlpha, const RGBColor &irRBColor, Int32 iRBAlpha)
void ApplyDonutToRing(const Point< T > &irCenter, T iOuterRadius, T iInnerRadius, const FormatFill::Ptr iFormatFillPtr, EnumRadientGradientUsage iUsage=RG_RING, bool iHasExtraPara=false, int iExtraDepth=0, int iExtraIntensity=0)
Definition: ChartContext.h:2190
bool mIsZValid
Definition: ChartContext.h:305
std::map< PropertyKey, CComVariant > mPropertyMap
Definition: ChartContext.h:1844
const Int32 gVirtualCoordinateHeight
Definition: Common.h:228
double mMinValue
Indicates the minimum value in value axis.
Definition: ChartContext.h:274
double mMaxElementSize
Definition: ChartContext.h:326
bool IsGraphMatrix() const
Definition: ChartContext.h:2384
EnumGraphMatrixLayoutType
Definition: ChartContext.h:101
Int32 mImageUsage
Indicates the usage of current chart.
Definition: ChartContext.h:1865
Definition: ChartContext.h:114
enum _ThemeType ThemeType
MSynch::SmartPtr< LayerObject > LayerObjectPtr
Definition: ChartContext.h:533
void UpdateFormatLine(const TripleId &irTripleId, FormatLine *iopFormatLine) const
Int32 hGetLogicalId(Int32 iInputId)
bool mIsMinElementSizeAsRatioToMax
Definition: ChartContext.h:328
bool mIsMicroChart
Indicates whether current chart is a micro chart or not.
Definition: ChartContext.h:1885
float mGMHeightScaleRatio
Definition: ChartContext.h:1742
FormatFill::Ptr GetThresholdFillColor(Int32 iSeriesId, Int32 iGroupId)
Int32 mCachedMaxElementSize
Definition: ChartContext.h:361
Int32 mColorIndex
Definition: ChartContext.h:340
Definition: RGBColor.h:21
bool mIsZ2Valid
Definition: ChartContext.h:308
int y
Y-coordinate of left edge.
Definition: Rect2D.h:123
double GetValueAxisZoomScale(Int32 iValueAxisId)
Int32 mEndGroup
Definition: ChartContext.h:227
Definition: ChartContext.h:313
#define NULL
Definition: Null.h:10
bool mIsXDropZoneEmpty
Definition: ChartContext.h:355
Definition: ChartContext.h:69
bool IsRecalculateFrame() const
Definition: ChartContext.h:2064
const Rect2D gDefaultTitlePosition
ChartCanvas * mpCanvas
Definition: ChartContext.h:1930
Int32 mSizeIndex
Definition: ChartContext.h:322
bool mIsUniformAxisMode
Indicates whether uniform axis is enabled.
Definition: ChartContext.h:1886
void SetFontSize(Int32 iFontSize)
AxesState * GetAxesState()
double GetSizebyPieRadius(double iVal, double iMax, double iMin, double maxRadius)
Definition: ChartContext.h:89
void SaveDatasetState(Dataset *ipDataset)
std::vector< Int32 > mVecXValueAxisLowPaddingSet
The lowPadding for x axis.
Definition: ChartContext.h:349
bool operator<(const PropertyKey &iKey) const
Definition: ChartContext.h:184
void MSTRToTDGRect(const Rect2D &irRect, Int32 &orTop, Int32 &orLeft, Int32 &orBottom, Int32 &orRight) const
std::vector< Int32 > mAxisHostMetricSet[4]
Hosted metric on X1/X2/Y1/Y2 axis.
Definition: ChartContext.h:300
PropertyKey(Int32 iPropertyId=-1, Int32 iObjectId=gNullObjectId, Int32 iSeriesId=gNullSeriesId)
Definition: ChartContext.h:179
EnumGraphMatrixMajorGraphType GetGraphMatrixGraphMajorType() const
void ParseValueToFormat(VARIANT &irValue, ChartAdvFormat &orFormat)
Use four Int32 values to represent a 2D rectangle.
Definition: Rect2D.h:25
void GetHighLightSelectedObjects(LayerObjectPtr &orHighlightLayerObjectPtr)
Int32 mDataAreaLeftMargin
Indicates the margin between Y axis line and Y axis labels.
Definition: ChartContext.h:268
Definition: DSSIPhoneEnums.h:2462
const Int32 gMaxTextLength
Definition: ChartContext.h:51
Definition: FormatFill.h:37
EnumGraphMatrixAxisLayoutType
Definition: ChartContext.h:123
bool mAbsoluteFontLineSize
Definition: ChartContext.h:1875
void SetTimeSeriesChart(bool iIsTimeSeries)
Definition: ChartContext.h:2347
Int32 mGraphWidth
Graph width.
Definition: ChartContext.h:1854
bool IsUniformAxisMode() const
Definition: ChartContext.h:2416
bool isBarAreaInAxis(const TripleId &irId)
Int32 mSecondaryDataAreaTopMargin
Indicates the margin at top of data area.
Definition: ChartContext.h:297
Int32 GetCondensedTextLimit(Int32 iFormatType)
Definition: ChartContext.h:104
Int32 GetGraphMajorType() const
void DrawSector(const FPoint2D &irCenter, const float iRadius, const float iStartAngle, const float iEndAngle)
Definition: FormatFill.h:38
bool mAdvancedChartTypeSupport
Definition: ChartContext.h:1890
ChartAdvFormat * mpAxisAutoNumberFormat
Maintains the automatic number format of value axis.
Definition: ChartContext.h:1916
EnumLineJoinType GetLineJoin()
Definition: ChartContext.h:2460
Int32 mChartIntegrity
Definition: ChartContext.h:1914
bool IsBudgeting() const
Int32 mSuggestedDataAreaStartX
Definition: ChartContext.h:243
Int32 GetSizeByIndex(Int32 iIndex, bool iIsBubbleChart=false)
void SplitRect(const Rect2D &irRect, bool iIsVertical, Int32 iPercentage, Rect2D &orRectTopRight, Rect2D &orRectBottomLeft) const
Definition: ChartCanvas.h:26
virtual FormatFill::Ptr GetFormatFill(const TripleId &irTripleId, Int32 iCollectionType, EnumShapeType iShape=_GENERIC) const =0
bool mIsBreakbyDropzoneHasTemplateMetric
Definition: ChartContext.h:402
Definition: Common.h:397
Definition: ChartContext.h:139
bool IsHidingAxisElements() const
Definition: ChartContext.h:2512
Definition: Common.h:267
EnumChartComponent mChartComponent
Definition: ChartContext.h:1862
void EnableVoiceOver(bool iIsVoiceOverMode)
Definition: ChartContext.h:2369
double mO1LogicalMin
Indicates the minimum logical coordinate of O1 axis. Used in zoom state.
Definition: ChartContext.h:249
double mRatioToMaxRadius
Indicates the ratio in the bubble max radius computation.
Definition: ChartContext.h:344
void SetCGContext(CGContext *ipCGContext)
Definition: FormatFont.h:86
Definition: ChartContext.h:136
Definition: FormatManager.h:157
bool IsVertical() const