/*
* Copyright (c) 2002-2006 Samit Basu
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*
*/
#ifndef __HandleProperty_hpp__
#define __HandleProperty_hpp__
#include "Array.hpp"
#include <string>
#include <vector>
class HandleProperty {
bool modified;
public:
HandleProperty() {modified = false;}
virtual ~HandleProperty() {}
virtual Array Get() = 0;
virtual void Set(Array) {modified = true;}
void ClearModified() {modified = false;}
bool isModified() {return modified;}
};
class HPArray : public HandleProperty {
protected:
Array data;
public:
HPArray() : data(Array::emptyConstructor()) {}
virtual ~HPArray() {}
virtual Array Get() {return data;}
virtual void Set(Array m) {HandleProperty::Set(m); data = m;}
Array Data() {return data;}
void Data(Array m) {data = m;}
};
class HPHandles : public HandleProperty {
protected:
std::vector<unsigned> data;
public:
HPHandles();
virtual ~HPHandles() {}
virtual Array Get();
virtual void Set(Array);
std::vector<unsigned> Data() {return data;}
void Data(std::vector<unsigned> m) {data = m;}
};
class HPVector : public HandleProperty {
protected:
std::vector<double> data;
public:
HPVector() {}
virtual ~HPVector() {}
virtual Array Get();
virtual void Set(Array);
std::vector<double> Data() {return data;}
void Data(std::vector<double> m) {data = m;}
void Data(double m) {std::vector<double> n; n.push_back(m); data = n;}
double& operator[](int ndx);
double& At(int ndx);
};
class HPFixedVector : public HPVector {
protected:
unsigned m_len;
public:
HPFixedVector(unsigned len) : m_len(len) {for (int i=0;i<len;i++) data.push_back(0);}
virtual ~HPFixedVector() {}
virtual void Set(Array);
};
class HPString : public HandleProperty {
protected:
std::string data;
public:
HPString() {}
virtual ~HPString() {}
virtual Array Get();
virtual void Set(Array);
std::string Data() {return data;}
void Data(std::string m) {data = m;}
void Value(std::string m) {data = m;}
bool Is(std::string m) {return (data == m);}
};
class HPStringSet : public HandleProperty {
protected:
std::vector<std::string> data;
public:
HPStringSet() {}
virtual ~HPStringSet() {}
virtual Array Get();
virtual void Set(Array);
std::vector<std::string> Data() {return data;}
void Data(std::vector<std::string> m) {data = m;}
};
class HPConstrainedString : public HPString {
protected:
std::vector<std::string> m_dictionary;
public:
HPConstrainedString(std::vector<std::string> dict) : m_dictionary(dict) {
data = dict[0];
}
HPConstrainedString(const char **dict) {
while (*dict) {
m_dictionary.push_back(*dict);
dict++;
}
}
virtual void Set(Array);
};
class HPConstrainedStringSet : public HPStringSet {
std::vector<std::string> m_dictionary;
public:
HPConstrainedStringSet(const char **dict) {
while (*dict) {
m_dictionary.push_back(*dict);
dict++;
}
}
virtual ~HPConstrainedStringSet() {}
virtual void Set(Array);
};
class HPTwoVector : public HPFixedVector {
public:
HPTwoVector() : HPFixedVector(2) {}
virtual ~HPTwoVector() {}
void Value(double x, double y) {At(0) = x; At(1) = y;}
};
class HPThreeVector : public HPFixedVector {
public:
HPThreeVector() : HPFixedVector(3) {}
virtual ~HPThreeVector() {}
void Value(double x, double y, double z) {At(0) = x; At(1) = y; At(2) = z;}
};
class HPFourVector : public HPFixedVector {
public:
HPFourVector() : HPFixedVector(4) {}
virtual ~HPFourVector() {}
void Value(double x, double y, double z, double w) {At(0) = x; At(1) = y; At(2) = z; At(3) = w;}
};
class HPSixVector : public HPFixedVector {
public:
HPSixVector() : HPFixedVector(6) {}
virtual ~HPSixVector() {}
void Value(double x1, double x2,
double y1, double y2,
double z1, double z2) {
At(0) = x1; At(1) = x2;
At(2) = y1; At(3) = y2;
At(4) = z1; At(5) = z2;}
};
class HPAutoManual : public HPConstrainedString {
public:
HPAutoManual();
virtual ~HPAutoManual() {}
};
class HPColor : public HPFixedVector {
public:
HPColor() : HPFixedVector(3) {}
virtual ~HPColor() {}
virtual void Set(Array);
Array Get();
bool IsNone() {return (data[0]<0);}
};
class HPColorVector : public HPVector {
public:
HPColorVector() : HPVector() {}
virtual ~HPColorVector() {}
virtual void Set(Array);
Array Get();
};
class HPOnOff : public HPConstrainedString {
public:
HPOnOff();
virtual ~HPOnOff() {}
bool AsBool() {return Is("on");}
};
class HPScalar : public HPFixedVector {
public:
HPScalar() : HPFixedVector(1) {}
virtual ~HPScalar() {}
void Value(double x);
};
class HPFontAngle : public HPConstrainedString {
public:
HPFontAngle();
virtual ~HPFontAngle() {}
};
class HPFontUnits : public HPConstrainedString {
public:
HPFontUnits();
virtual ~HPFontUnits() {}
};
class HPFontWeight : public HPConstrainedString {
public:
HPFontWeight();
virtual ~HPFontWeight() {}
};
class HPLineStyle : public HPConstrainedString {
public:
HPLineStyle();
virtual ~HPLineStyle() {}
};
class HPTopBottom : public HPConstrainedString {
public:
HPTopBottom();
virtual ~HPTopBottom() {}
};
class HPLeftRight : public HPConstrainedString {
public:
HPLeftRight();
virtual ~HPLeftRight() {}
};
class HPNormalReverse : public HPConstrainedString {
public:
HPNormalReverse();
virtual ~HPNormalReverse() {}
};
class HPLinearLog : public HPConstrainedString {
public:
HPLinearLog();
virtual ~HPLinearLog() {}
};
class HPNextPlotMode : public HPConstrainedString {
public:
HPNextPlotMode();
virtual ~HPNextPlotMode() {}
};
class HPProjectionMode : public HPConstrainedString {
public:
HPProjectionMode();
virtual ~HPProjectionMode() {}
};
class HPInOut : public HPConstrainedString {
public:
HPInOut();
virtual ~HPInOut() {}
};
class HPUnits : public HPConstrainedString {
public:
HPUnits();
virtual ~HPUnits() {}
};
class HPPosition : public HPConstrainedString {
public:
HPPosition();
virtual ~HPPosition() {}
};
class HPAlignHoriz : public HPConstrainedString {
public:
HPAlignHoriz();
virtual ~HPAlignHoriz() {}
};
class HPAlignVert : public HPConstrainedString {
public:
HPAlignVert();
virtual ~HPAlignVert() {}
};
class HPSymbol : public HPConstrainedString {
public:
HPSymbol();
virtual ~HPSymbol() {}
};
class HPLineStyleOrder : public HPConstrainedStringSet {
public:
HPLineStyleOrder();
virtual ~HPLineStyleOrder() {}
};
class HPMappingMode : public HPConstrainedString {
public:
HPMappingMode();
virtual ~HPMappingMode() {}
};
class HPDataMappingMode : public HPConstrainedString {
public:
HPDataMappingMode();
virtual ~HPDataMappingMode() {}
};
class HPOnOffInactive : public HPConstrainedString {
public:
HPOnOffInactive();
virtual ~HPOnOffInactive() {}
};
class HPRowColumns : public HPConstrainedString {
public:
HPRowColumns();
virtual ~HPRowColumns() {}
};
class HPLightingMode : public HPConstrainedString {
public:
HPLightingMode();
virtual ~HPLightingMode() {}
};
class HPRenderMode : public HPConstrainedString {
public:
HPRenderMode();
virtual ~HPRenderMode() {}
};
class HPConstrainedStringScalar : public HPConstrainedString {
double scalar;
public:
HPConstrainedStringScalar(const char **dict) :
HPConstrainedString(dict) {}
virtual ~HPConstrainedStringScalar() {}
virtual void Set(Array);
Array Get();
double Scalar();
void Scalar(double val);
};
class HPConstrainedStringColor : public HPConstrainedString {
std::vector<double> colorspec;
public:
HPConstrainedStringColor(const char **dict) :
HPConstrainedString(dict) {}
virtual ~HPConstrainedStringColor() {}
virtual void Set(Array);
Array Get();
std::vector<double> ColorSpec();
void ColorSpec(std::vector<double> col);
void ColorSpec(double r, double g, double b);
};
class HPAutoColor : public HPConstrainedStringColor {
public:
HPAutoColor();
virtual ~HPAutoColor() {}
};
class HPAutoFlatColor : public HPConstrainedStringColor {
public:
HPAutoFlatColor();
virtual ~HPAutoFlatColor() {}
};
class HPColorInterp : public HPConstrainedStringColor {
public:
HPColorInterp();
virtual ~HPColorInterp() {}
};
class HPWidgetString : public HPConstrainedString {
public:
HPWidgetString();
virtual ~HPWidgetString() {}
};
class HPFaceAlpha : public HPConstrainedStringScalar {
public:
HPFaceAlpha();
virtual ~HPFaceAlpha() {}
};
class HPBackFaceLighting : public HPConstrainedString {
public:
HPBackFaceLighting();
virtual ~HPBackFaceLighting() {}
};
class HPEdgeAlpha : public HPConstrainedStringScalar {
public:
HPEdgeAlpha();
virtual ~HPEdgeAlpha() {}
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1