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++

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#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;
};