00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #pragma once
00011 #include "ippdme/Command/ippCommand.h"
00012 #include "ippdme/ippTargetVector.h"
00013
00014
00018 typedef std::vector<double> ippScanOnCurvePoint;
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030 class IPPDME_EXT_CLASS ippScanOnCurveCommand : public ippCommand {
00031
00032 public:
00033 enum FormatType
00034 {
00035 Type1 = 1,
00036 Type2 = 2,
00037 Type3 = 3,
00038 };
00039 private:
00040 FormatType _type;
00041 bool _closed;
00042 std::vector<ippScanOnCurvePoint> _points;
00043
00044 public:
00045 ippScanOnCurveCommand(
00046 unsigned int tgNum,
00047 bool inClose,
00048 FormatType inType
00049 );
00050
00051 virtual ~ippScanOnCurveCommand();
00052
00053 FormatType getFormatType() const { return _type; }
00054
00055
00056 bool getClosed() const { return _closed; }
00057
00058 int getCount() const { return (int)_points.size(); }
00059
00060 const ippScanOnCurvePoint& getPoint(int i) const{ return _points[i];}
00061
00062 void addPoint(
00063 double x,double y,double z,
00064 double i,double j,double k,
00065 int tag
00066 );
00067
00068 void addPoint(
00069 double x,double y,double z,
00070 double i,double j,double k,
00071 int tag,
00072 double pi,double pj,double pk
00073 );
00074
00075 void addPoint(
00076 double x,double y,double z,
00077 double i,double j,double k,
00078 int tag,
00079 double pi,double pj,double pk,
00080 double si,double sj,double sk
00081 );
00082
00083 virtual std::string getCommandString() const;
00084
00085 static const char* getFormatString(FormatType f);
00086
00087 private:
00088 void addPoint(const ippScanOnCurvePoint&);
00089
00090
00091 ippScanOnCurveCommand(const ippScanOnCurveCommand&);
00092 void operator=(const ippScanOnCurveCommand&);
00093 };
00094 IPP_DECLARE_SMARTPOINTER(ippScanOnCurveCommand);