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.
nmWATI/Include/iPlot/iPlotCurveT/ZxSubColorTable.h

140 lines
2.8 KiB
C

#pragma once
#include <QPen>
#include <QDir>
#include <QColor>
#include <qDebug>
#include <QVector>
#include <QDomDocument>
#include "Defines.h"
#include <ZxRenderItem.h>
#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<QColor> m_vecColors;
QVector<float> 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<QString> &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<QRgb> 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<ColorNode*> m_vecColorNodes;
QVector<ColorScheme *> m_vecColorSchemes;
};