#include "StdAfx.h" #include "ObjChar.h" #include "ObjPline.h" #include "DataPoint.h" #include "FontTypeMgr.h" #include "LogMgr.h" #include "GlobalFunction.h" CObjChar::CObjChar(char *p) { m_pChar = p; } CObjChar::~CObjChar(void) { } CString CObjChar::GetStr() { CString str = "字符"; return str; } void CObjChar::Creat() { CFontTypeMgr &pFontTypeMgr = CFontTypeMgr::Instance(); //先读取到m_PonitVec 中 vector m_PonitVec; //用当前字体来创建字符数据 pFontTypeMgr.CreatCharVec(m_pChar,m_PonitVec); //再转换为obj CreatObjData(m_PonitVec); } //获取obj 的数据 void CObjChar::CreatObjData(vector &m_PonitVec) { if(m_PonitVec.size() <= 1)//没有取到数据则创建一个矩形 { CObjPline *pPline = new CObjPline; DbRect rect(0,100,100,0); pPline->CreatRect(rect); m_ObjContainer.AddObject(pPline); } else { int size = m_PonitVec.size(); //去掉末尾不要的偏移----------------------------------- if(m_PonitVec[size-1].second == TRUE) { m_PonitVec.pop_back(); size--; } //用m_PonitVec 的数据来创建obj CObjPline *pPline = NULL; for(int i=0;iAddDataPoint(DataPoint); } } } //删除空线段 m_ObjContainer.DelNullLine(); } void CObjChar::Operate(SObjOperatePar &par) { if(par.OpType == _OP_SCALE) { DbRect rect = m_ObjContainer.GetObjRect(false); DbSize s = rect.GetSize(); SObjOperatePar parX; { parX.OpType = _OP_STRETCH; parX.BasePt = rect.GetCenterPt(); parX.OldSize = s.w; parX.NewSize = s.w*par.Scale; parX.Diff = parX.NewSize-parX.OldSize; parX.xy = _X; } SObjOperatePar parY; { parY.OpType = _OP_STRETCH; parX.BasePt = rect.GetCenterPt(); parY.OldSize = s.h; parY.NewSize = s.h*par.Scale; parY.Diff = parY.NewSize-parY.OldSize; parY.xy = _Y; } int size = m_ObjContainer.GetSize(); for(int i=0;i