You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

74 lines
2.5 KiB
C++

//////////////////////////////////////////////////////////////////////////////////////
//Segment.h
#pragma once
#include "PointSegment.h"
#include "BezierPointSegment.h"
class CPointSeries;
class CPointSeriesManager;
class CGDFObject;
class CGDFSegment
{
public:
CGDFSegment(CPointSeriesManager* pSeriesManager,CPointSeries* pSeries=NULL,int index0=-1,int index1=-1,FACIESSEGMENTDIRECTION direction=segmentforward);
CGDFSegment(CPointSeriesManager* pSeriesManager,POINTSERIESID id,int index0=-1,int index1=-1,FACIESSEGMENTDIRECTION direction=segmentforward);
CGDFSegment();
~CGDFSegment();
//Attribute
private:
CPointSeriesManager* m_pSeriesManager;
CPointSeries* m_pSeries;
POINTSERIESID m_id;
int m_index0;
int m_index1;
FACIESSEGMENTDIRECTION m_direction;//0--forward 1--backward
int m_pointcount;
BOOL m_bRelationWithPointSeries;
CGDFObject* m_pObject;
//Operations
public:
void Clear();
int ConvertLocalIndexToSeriesIndex(int localindex);
void SetDirection(FACIESSEGMENTDIRECTION direction);
FACIESSEGMENTDIRECTION GetDirection();
void SetIndex0(int index);
int GetIndex0();
void SetIndex1(int index);
int GetIndex1();
void GetPointArray(CArray<FACIESPOINT,FACIESPOINT>& pointarray);
void GetIndexArray(CArray<POINTINDEX,POINTINDEX>& indexarray);
void GetMapPointSegmentArray(CBezierStyleMapPointSegmentArray& segmentarray);
BYTE GetPointAttribute(int localindex,BYTE byteMask);
int GetPointCount();
CPointSeriesManager* GetSeriesManager();
CPointSeries* GetSeries();
void Initialize(CPointSeriesManager* pSeriesManager,CPoint2D point,BYTE smooth);
void Initialize(CPointSeriesManager* pSeriesManager,FACIESPOINT* pointarray,int count);
BOOL InsertPoint(int localindex,CPoint2D point,BYTE smooth);
BOOL IsWholePointSeries();
void SmoothPoint(int localindex);
void NoSmoothPoint(int localindex);
void SmoothPoint(int localindex,int count);
BOOL OnInitialized();
BOOL OnInsertPoint(int index0,int index1);
BOOL OnMovePoint(int index0,int index1);
void operator=(CGDFSegment& segment);
void ReverseDirection();
void SetObject(CGDFObject* pObject);
CGDFObject* GetObjectG();
void SetParameter(CPointSeriesManager* pSeriesManager,CPointSeries* pSeries=NULL,int index0=-1,int index1=-1,FACIESSEGMENTDIRECTION direction= segmentforward);
void SetParameter(CPointSeriesManager* pSeriesManager,POINTSERIESID id,int index0=-1,int index1=-1,FACIESSEGMENTDIRECTION direction= segmentforward);
void SetParameter(int index0,int index1,FACIESSEGMENTDIRECTION direction);
private:
int CalculatePointCount();
};