#pragma once #include #include #include #include #include #include #include "Defines.h" #include #include "ZxDrawHelper.h" #include "iPlotCurveT_global.h" class ColorNode { public: ColorNode(float fPos,QColor clrColor) { m_fPos = fPos; m_clrColor = clrColor; } float m_fPos; QColor m_clrColor; }; class ColorScheme { public: ColorScheme() { m_strName = ""; m_fValMin = 0.0f; m_fValMax = 0.0f; m_vecColors.clear(); m_vecIntervals.clear(); } QString m_strName; float m_fValMin; float m_fValMax; QVector m_vecColors; QVector m_vecIntervals; }; class I_PLOTCURVE_T_EXPORT ZxSubColorTable : public ZxRenderItem { Q_OBJECT ZX_DECLARE_DYNAMIC public: enum COLOR_TYPE { STEP,GRADIENT,GRAY,ST_PROJECTION }; static const float COLOR_WIDTH; public: ZxSubColorTable(); ZxSubColorTable(const QString& name); ZxSubColorTable(const ZxSubColorTable & _r); ~ZxSubColorTable(); void init(); void initGradient(); virtual void paintBack(QPainter* painter, const ZxPaintParam& param); virtual void onSerialize(ZxSerializer* ser); virtual void onDeserialize(ZxSerializer* ser); virtual void fillPtyPano(IxPtyPano* sheet); void drawColorRect(QPainter* painter,QRectF rc); void initSystemPalette(); void getAllPalette(QString strPath, QVector &vecPlates); QStringList splitString(QString s); public: // 名称 QString getName() const; void setName(const QString& sName); // 别名 QString getAlias() const; void setAlias(QString name); // 颜色表的单位 void setUnit(const QString &strUnit); QString getUnit() const; // 数据最值 float getMinValue() const; void setMinValue(float fMin); float getMaxValue() const; void setMaxValue(float fMax); // 颜色表的类型,梯度,渐变,灰度 int getColorType() const; void setColorType(int nType); QString getColorTypeSTR() const; void setColorTypeSTR(QString strTypeName); // 根据值得到对应的颜色 bool getColorForValue(float fValue,QColor &clr); bool getValueForColor(QColor clr,float &fValue); // 根据值得到对应的颜色 bool getColor(float pos,QColor &clr); void setColorGrade(int nColorGrade); int getColorGrade() const ; QVector getColorTable(); protected: QString m_strName; QString m_strAlias; QString m_sUnit; float m_fMin; float m_fMax; int m_nColorType; QString m_strColorType; int m_nColorGrade; //颜色表大小,最大到65536个(真彩) QVector m_vecColorNodes; QVector m_vecColorSchemes; };