|
|
|
|
#pragma once
|
|
|
|
|
#include <sstream>
|
|
|
|
|
#include <fstream>
|
|
|
|
|
#include <vector>
|
|
|
|
|
#include <map>
|
|
|
|
|
#define RGB_WHITE RGB(255, 255, 255) // <20><><EFBFBD><EFBFBD> WHITE <20><>ɫ
|
|
|
|
|
// <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD>
|
|
|
|
|
#define RGB_RED RGB(255, 0, 0)
|
|
|
|
|
#define RGB_ORANGE RGB(255, 165, 0)
|
|
|
|
|
#define RGB_YELLOW RGB(255, 255, 0)
|
|
|
|
|
#define RGB_GREEN RGB(0, 255, 0)
|
|
|
|
|
#define RGB_CYAN RGB(0, 255, 255)
|
|
|
|
|
#define RGB_BLUE RGB(0, 0, 255)
|
|
|
|
|
#define RGB_PURPLE RGB(128, 0, 128)
|
|
|
|
|
#define RGB_GREY RGB(169, 169, 169)
|
|
|
|
|
#define RGB_PINK RGB(255, 192, 203)
|
|
|
|
|
#define RGB_BLACK RGB(0, 0, 0)
|
|
|
|
|
#define RGB_WHITE RGB(255, 255, 255)
|
|
|
|
|
#define RGB_BROWN RGB(165, 42, 42)
|
|
|
|
|
using namespace std;
|
|
|
|
|
|
|
|
|
|
extern std::map<const int, int> m_proportionEnergy;
|
|
|
|
|
// <20><>ɫ<EFBFBD><C9AB>Χ<EFBFBD>ṹ<EFBFBD><E1B9B9>
|
|
|
|
|
struct ColorRange
|
|
|
|
|
{
|
|
|
|
|
float minEnergy=0;
|
|
|
|
|
float maxEnergy=0;
|
|
|
|
|
COLORREF color;
|
|
|
|
|
const int proportionEnergy=0;
|
|
|
|
|
ColorRange(float minE, float maxE, COLORREF col, const int proportionE)
|
|
|
|
|
: minEnergy(minE), maxEnergy(maxE), color(col), proportionEnergy(proportionE) {}
|
|
|
|
|
|
|
|
|
|
int Cnt = 0;
|
|
|
|
|
static int AllCnt ;
|
|
|
|
|
float dPercent = 0;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
class ColorScheme {
|
|
|
|
|
public:
|
|
|
|
|
std::string name; // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
std::vector<ColorRange> ranges; // <20>洢<EFBFBD><E6B4A2><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ<EFBFBD>Ͷ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ɫ
|
|
|
|
|
|
|
|
|
|
// Ĭ<>Ϲ<EFBFBD><CFB9>캯<EFBFBD><ECBAAF>
|
|
|
|
|
ColorScheme() : name("") {}
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>캯<EFBFBD><ECBAAF>
|
|
|
|
|
ColorScheme(std::string schemeName) : name(schemeName) {}
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
|
|
|
|
|
void addRange(float minEnergy, float maxEnergy, COLORREF color, const int proportionEnergy)
|
|
|
|
|
{
|
|
|
|
|
ranges.emplace_back( minEnergy, maxEnergy, color ,proportionEnergy);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD>ض<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ɫ
|
|
|
|
|
COLORREF getColor(float energy)
|
|
|
|
|
{
|
|
|
|
|
for (auto& range : ranges) {
|
|
|
|
|
if (energy >= range.minEnergy && energy <= range.maxEnergy)
|
|
|
|
|
{
|
|
|
|
|
m_proportionEnergy[range.proportionEnergy]++;
|
|
|
|
|
range.Cnt++;
|
|
|
|
|
ColorRange::AllCnt++;
|
|
|
|
|
return range.color;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
ColorRange::AllCnt++;
|
|
|
|
|
return RGB_WHITE; // Ĭ<>Ϸ<EFBFBD><CFB7>ذ<EFBFBD>ɫ
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ResetRangeCnt()//<2F><><EFBFBD>ø<EFBFBD>Range<67><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
{
|
|
|
|
|
ColorRange::AllCnt = 0;
|
|
|
|
|
for (auto& range : ranges)
|
|
|
|
|
{
|
|
|
|
|
range.Cnt = 0;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
void CalRangesPercent()//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Range<67><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><D5BC>
|
|
|
|
|
{
|
|
|
|
|
for (auto& range : ranges)
|
|
|
|
|
{
|
|
|
|
|
range.dPercent = double(range.Cnt*100) / ColorRange::AllCnt;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
// <20><>ɫ<EFBFBD><C9AB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|
|
|
|
class ColorSchemeManager
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
std::map<std::string, ColorScheme> schemes;
|
|
|
|
|
ColorScheme* currentScheme;
|
|
|
|
|
|
|
|
|
|
ColorSchemeManager() : currentScheme(nullptr) {}
|
|
|
|
|
|
|
|
|
|
void addScheme(const std::string& name)
|
|
|
|
|
{
|
|
|
|
|
schemes[name] = ColorScheme(name);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void setCurrentScheme(const std::string& name)
|
|
|
|
|
{
|
|
|
|
|
currentScheme = &schemes[name];
|
|
|
|
|
}
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
class CCsvToImg
|
|
|
|
|
{
|
|
|
|
|
public:
|
|
|
|
|
CCsvToImg();
|
|
|
|
|
virtual ~CCsvToImg();
|
|
|
|
|
|
|
|
|
|
bool ReadCsv2Img(CString CsvPath);
|
|
|
|
|
bool ShowLastImg(CWnd * pSHowWnd);
|
|
|
|
|
bool SaveLastImg(const CString& savePath);
|
|
|
|
|
private:
|
|
|
|
|
float * GetCsvData(const char * path, int & Rows, int & Cols);
|
|
|
|
|
bool CreateImgFromData(float * pDataOrg, int Rows, int Cols, CImage & OutImg);
|
|
|
|
|
CCriticalSection m_Section;
|
|
|
|
|
public:
|
|
|
|
|
ColorSchemeManager m_colorSchemeManager;
|
|
|
|
|
CImage m_Img;
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
extern CCsvToImg * gCsvToImg;
|