00001
00002
00003
00004 char* curve_simple_cpp = "$Id: sxy_curve_simple.cpp,v 1.2 2003/01/06 22:06:48 clinio Exp $";
00005
00006
00007
00008 #include <float.h>
00009 #include "sxy_mask.h"
00010 #include "sxy_series.h"
00011 #include "sxy_curve_simple.h"
00012 #include "sxy_series_linear.h"
00013 #include "sxy_series_parabolic.h"
00014
00015
00016
00017
00018
00019 SXYSeries* SXYSimpleCurve::getOriginalSeries(void) {
00020 return original_series;
00021 }
00022
00023
00024
00025 unsigned int SXYSimpleCurve::getNumSeriesCallback(void) {
00026 return (unsigned int)(SIMPLE_CURVE_LAST_SERIES);
00027 }
00028
00029
00030
00031 unsigned int SXYSimpleCurve::getNumMasksCallback(void) {
00032 return (unsigned int)(SIMPLE_CURVE_LAST_MASK);
00033 }
00034
00035
00036
00037 XYCartesianMask* SXYSimpleCurve::createMaskCallback(unsigned int m) {
00038 switch(m) {
00039 case SIMPLE_CURVE_MARK_MASK:
00040 return SXYMask::createMarkMask(SXYMask::PLUS_MARK,8);
00041
00042 case SIMPLE_CURVE_LINE_MASK:
00043 return SXYMask::createLineMask(SXYMask::CONTINOUS_LINE,1);
00044
00045 case SIMPLE_CURVE_LINEAR_MASK:
00046 case SIMPLE_CURVE_PARABOLIC_MASK:
00047 return SXYMask::createLineMask(SXYMask::DASH_DOT_LINE,2);
00048 }
00049 return NULL;
00050 }
00051
00052
00053
00054 void SXYSimpleCurve::destroyMaskCallback(unsigned int m,
00055 XYCartesianMask* msk) {
00056 assert(msk);
00057 if (msk != NULL) delete(msk);
00058 }
00059
00060
00061
00062 void SXYSimpleCurve::destroySeriesCallback(unsigned int s, SXYSeries* srs) {
00063 assert(srs);
00064 if (s == (unsigned int)SIMPLE_CURVE_ORIGINAL_SERIES) return;
00065 if (srs != NULL) delete srs;
00066 }
00067
00068
00069
00070 SXYSeries* SXYSimpleCurve::createSeriesCallback(unsigned int s) {
00071 switch(s) {
00072 case SIMPLE_CURVE_ORIGINAL_SERIES:
00073 return original_series;
00074
00075 case SIMPLE_CURVE_LINEAR_SERIES:
00076 { SXYLinearSeries* srs = new SXYLinearSeries();
00077 srs->insertParameter( getSeries(0) );
00078 return srs;
00079 }
00080
00081 case SIMPLE_CURVE_PARABOLIC_SERIES:
00082 { SXYParabolicSeries* srs = new SXYParabolicSeries();
00083 srs->insertParameter( getSeries(0) );
00084 return srs;
00085 }
00086 }
00087 return NULL;
00088 }
00089
00090
00091
00092 unsigned int SXYSimpleCurve::mapMaskToSeriesCallback(unsigned int m) {
00093 switch(m) {
00094 case SIMPLE_CURVE_MARK_MASK:
00095 case SIMPLE_CURVE_LINE_MASK:
00096 return (unsigned int)SIMPLE_CURVE_ORIGINAL_SERIES;
00097
00098
00099 case SIMPLE_CURVE_LINEAR_MASK:
00100 return (unsigned int)SIMPLE_CURVE_LINEAR_SERIES;
00101 case SIMPLE_CURVE_PARABOLIC_MASK:
00102 return (unsigned int)SIMPLE_CURVE_PARABOLIC_SERIES;
00103 }
00104 assert(0);
00105 return 99999;
00106 }
00107
00108
00109
00110 unsigned int SXYSimpleCurve::tryPointEditionCallback(unsigned int m,
00111 unsigned int s, unsigned int n) {
00112 return (m == (unsigned int)SIMPLE_CURVE_MARK_MASK);
00113 }
00114
00115
00116
00117 void SXYSimpleCurve::movingPointCallback(unsigned int m, unsigned int s,
00118 unsigned int n, double x, double y) {
00119 assert(m == (unsigned int)SIMPLE_CURVE_MARK_MASK);
00120 double ox, oy;
00121 getPointFromSeries(s, n, ox, oy);
00122
00123 }
00124
00125
00126
00127 unsigned int SXYSimpleCurve::editedPointCallback(unsigned int m,
00128 unsigned int s, unsigned int n, double x, double y) {
00129 assert(m == (unsigned int)SIMPLE_CURVE_MARK_MASK);
00130 return 1;
00131 }
00132
00133
00134
00135 unsigned int SXYSimpleCurve::getCurveNumPoints() {
00136 if (original_series) return original_series->getNumPoints();
00137 return 0;
00138 }
00139
00140
00141
00142 unsigned int SXYSimpleCurve::getCurvePoint(unsigned int n,
00143 double& x, double& y) {
00144 if (original_series) return original_series->getPoint(n, x, y);
00145 return 0;
00146 }
00147
00148
00149
00150 SXYSimpleCurve::SXYSimpleCurve(SXYSeries* series) : SXYCurve() {
00151 assert(series);
00152 original_series = series;
00153 }
00154
00155
00156
00157 SXYSimpleCurve::~SXYSimpleCurve() {
00158 original_series = NULL;
00159 }
00160