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.
TwoLaserHead-PushJig/LaiPuLaser/MarkParMgr.cpp

183 lines
4.9 KiB
C++

#include "StdAfx.h"
#include "MarkParMgr.h"
#include "CStringFuc.h"
#include "GlobalDefine.h"
#include "FileMgr.h"
#include "WorkFileLable.h"
#include "WorkFileMgr.h"
#include "GlobalFunction.h"
#define PEN_CNT 100 //笔的数量
#define PEN_COLOR_0 RGB(10,10,10)
#define PEN_COLOR_1 RGB(0,0,255)
#define PEN_COLOR_2 RGB(255,0,0)
#define PEN_COLOR_3 RGB(0,255,0)
#define PEN_COLOR_4 RGB(255,0,255)
#define PEN_COLOR_5 RGB(255,255,0)
#define PEN_COLOR_6 RGB(255,125,125)
#define PEN_COLOR_7 RGB(125,0,0)
#define PEN_COLOR_8 RGB(125,0,125)
#define PEN_COLOR_9 RGB(0,125,125)
#define PEN_COLOR_10 RGB(255,255,255)
#define PEN_COLOR_11 RGB(185,122,87)
#define PEN_COLOR_12 RGB(255,201,14)
#define PEN_COLOR_13 RGB(181,230,29)
#define PEN_COLOR_14 RGB(153,217,234)
#define PEN_COLOR_15 RGB(112,146,190)
#define PEN_COLOR_16 RGB(200,191,231)
#define PEN_COLOR_17 RGB(63,72,204)
#define PEN_COLOR_18 RGB(163,73,164)
#define PEN_COLOR_19 RGB(34,177,76)
#define PEN_COLOR_20 RGB(127,127,127)
#define FILE_PATH _T("\\Parameter\\MarkPar\\MarkPar.par")
CMarkParMgr *gMarkParMgr = new CMarkParMgr;
CMarkParMgr::CMarkParMgr(void)
{
m_CurPen = 0;//当前的笔号
//初始化笔容器
IniParVec();
}
CMarkParMgr::~CMarkParMgr(void)
{
}
#if 1
void CMarkParMgr::WriteWorkFileExt(vector<CLab> &LabVec)
{
for(int i=0;i<PEN_CNT;i++)
{
LabVec.push_back(CLab(LAB_MARK_PAR_START));
m_ParVec[i].WriteWorkFile(LabVec);
LabVec.push_back(CLab(LAB_MARK_PAR_END));
}
}
void CMarkParMgr::ReadWorkFile(CLabVecRang &LabVecRang)
{
vector<CLabVecRang> LabVecRangVec;
CWorkFileMgr WorkFileMgr;
WorkFileMgr.SeparateStrVec(LabVecRang,LabVecRangVec,LAB_MARK_PAR_START,LAB_MARK_PAR_END);
//处理每个点
if(!LabVecRangVec.empty())
{
vector<CLabVecRang>::iterator iter = LabVecRangVec.begin();
vector<CLabVecRang>::iterator iter_end = LabVecRangVec.end();
for(int i=0;iter!=iter_end;iter++,i++)
{
m_ParVec[i].ReadWorkFile(*iter);
}
}
#ifdef __DLG_PANE_MARK_PAR__
GetFrame()->m_CDlgMarkPar.UpdatePar();
#endif
}
#endif
//初始化笔容器
void CMarkParMgr::IniParVec()
{
for(int i=0;i<PEN_CNT;i++)
{
CMarkPar MarkPar;
m_ParVec.push_back(MarkPar);
}
//设置默认笔的颜色
int idx = 0;
m_ParVec[idx++].SetColor(PEN_COLOR_1);
m_ParVec[idx++].SetColor(PEN_COLOR_2);
m_ParVec[idx++].SetColor(PEN_COLOR_3);
m_ParVec[idx++].SetColor(PEN_COLOR_4);
m_ParVec[idx++].SetColor(PEN_COLOR_5);
m_ParVec[idx++].SetColor(PEN_COLOR_6);
m_ParVec[idx++].SetColor(PEN_COLOR_7);
m_ParVec[idx++].SetColor(PEN_COLOR_8);
m_ParVec[idx++].SetColor(PEN_COLOR_9);
m_ParVec[idx++].SetColor(PEN_COLOR_11);
m_ParVec[idx++].SetColor(PEN_COLOR_12);
m_ParVec[idx++].SetColor(PEN_COLOR_13);
m_ParVec[idx++].SetColor(PEN_COLOR_14);
m_ParVec[idx++].SetColor(PEN_COLOR_15);
m_ParVec[idx++].SetColor(PEN_COLOR_16);
m_ParVec[idx++].SetColor(PEN_COLOR_17);
m_ParVec[idx++].SetColor(PEN_COLOR_18);
m_ParVec[idx++].SetColor(PEN_COLOR_19);
m_ParVec[idx++].SetColor(PEN_COLOR_20);
m_ParVec[idx++].SetColor(PEN_COLOR_0);
m_ParVec[idx++].SetColor(PEN_COLOR_10);
}
void CMarkParMgr::InsertToList(CListCtrl &List)
{
int size = m_ParVec.size();
for(int i=0;i<size;i++)
{
int idx = 0;
List.InsertItem(i," ");//插入一行
List.SetItemText(i,idx++,Int2CString(i));//笔号
}
}
//获取笔的颜色
COLORREF CMarkParMgr::GetPenColor(int pen)
{
return m_ParVec[pen].GetColor();
}
//保存当前笔的参数
void CMarkParMgr::SaveCurPen(int pen,CMarkPar CurPar)
{
m_ParVec[pen] = CurPar;
SaveOrLoad(true);
}
void CMarkParMgr::SaveCurPen(CMarkPar CurPar)
{
m_ParVec[m_CurPen] = CurPar;
SaveOrLoad(true);
}
void CMarkParMgr::SaveOrLoad(bool bSave)
{
CFileMgr FileMgr;
char filepath[1024];
FileMgr.GetFullFilePath(filepath,FILE_PATH);//获取完整路径
if(bSave)
{
CFile file(filepath,CFile::modeReadWrite|CFile::modeCreate);
CArchive ar(&file,CArchive::store);
SaveOrLoadExt(ar);
}
else
{
CFile file;
if(file.Open(filepath,CFile::modeRead))
{
CArchive ar(&file,CArchive::load);
SaveOrLoadExt(ar);
}
}
}
void CMarkParMgr::SaveOrLoadExt(CArchive &ar)
{
vector<CMarkPar>::iterator iter = m_ParVec.begin();
vector<CMarkPar>::iterator iter_end = m_ParVec.end();
for(;iter!=iter_end;iter++)
{
(*iter).Serialize(ar);
}
}
CMarkPar CMarkParMgr::GetPen(int pen)
{
return m_ParVec[pen];
}
double CMarkParMgr::GetFirstPenLaserPower()
{
return m_ParVec[0].laserpower;
}
void CMarkParMgr::SetFirstPenLaserPower(double Val)
{
if(Val>1 && Val<100)
{
m_ParVec[0].laserpower = Val;
}
}