Commit b8c7c304 authored by Elen.Subbotina's avatar Elen.Subbotina Committed by Alexander Trofimov

XlsForamt - правка багов по результатам тестирвоания (автофильтры, усл...

XlsForamt - правка багов по результатам тестирвоания (автофильтры, усл форматирование) + рисование кастомных автофигур

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@68228 954022d7-b5bf-4e40-9824-e11837661b57
parent 049984b5
//
#include "AutoFilter.h"
//#include <algorithm>
//#include <functional>
namespace XLS
{
//static inline std::wstring &ltrim(std::wstring &s)
//{
// s.erase(s.begin(), std::find_if(s.begin(), s.end(), std::not1(std::ptr_fun<int, int>(isspace))));
// return s;
//}
//
//// trim from end
//static inline std::wstring &rtrim(std::wstring &s)
//{
// s.erase(std::find_if(s.rbegin(), s.rend(), std::not1(std::ptr_fun<int, int>(isspace))).base(), s.end());
// return s;
//}
// trim from both ends
static inline void/*std::wstring &*/trim(std::wstring &s)
{
int new_size = s.length();
for (int i = new_size - 1; i >=0; i--)
{
if (s[i] != 0) break;
else new_size--;
}
if (new_size < s.length())
s.erase(new_size);
//return ltrim(rtrim(s));
}
AutoFilter::AutoFilter()
{
......@@ -27,9 +56,6 @@ void AutoFilter::writeFields(CFRecord& record)
void AutoFilter::readFields(CFRecord& record)
{
//char* buffer = new char[record.getDataSize()];
//memcpy(buffer, record.getCurData<char>(), record.getDataSize());
m_bAutoFilter12 = false;
unsigned short flags;
......@@ -63,19 +89,21 @@ void AutoFilter::readFields(CFRecord& record)
if (doper1.vt == BIFF_BYTE(0x06))
{
XLUnicodeStringNoCch s;
s.setSize(doper1.vtValue.cch);
s.setSize(doper1.vtValueStr.cch);
record >> s;
str1 = s.value();
trim(str1);
}
if (doper2.vt == BIFF_BYTE(0x06))
{
XLUnicodeStringNoCch s;
s.setSize(doper2.vtValue.cch);
s.setSize(doper2.vtValueStr.cch);
record >> s;
str2 = s.value();
trim(str2);
}
if (record.getRdPtr() < record.getDataSize())
......
......@@ -37,11 +37,6 @@ public:
BIFF_DWORD idList;
BiffStructurePtrVector rgbAF12Criteries;
//-----------------------------
std::vector<BaseObjectPtr> m_arContinueFrt12;
};
} // namespace XLS
......
......@@ -28,10 +28,6 @@ void BkHim::writeFields(CFRecord& record)
void BkHim::readFields(CFRecord& record)
{
_UINT16 cf;
_UINT32 lcb;
record >> cf;
record.skipNunBytes(2);
record >> lcb;//imageBlob size
......@@ -46,10 +42,22 @@ void BkHim::readFields(CFRecord& record)
{
//native
}
if (lcb < 1) return;
//imageBlob
std::list<CFRecordPtr>& recs = continue_records[rt_Continue];
while (record.getRdPtr() + lcb > record.getDataSize() && !recs.empty())
{
record.appendRawData(recs.front());
recs.pop_front();
}
if (record.checkFitReadSafe(lcb))
{
pData = boost::shared_array<char>(new char[lcb]);
memcpy(pData.get(), record.getCurData<char>(), lcb);
record.skipNunBytes(lcb);
}
......
......@@ -22,10 +22,10 @@ public:
static const ElementType type = typeBkHim;
//-----------------------------
// BIFF_WORD userName;
_UINT16 cf;
_UINT32 lcb;
boost::shared_array<char> pData;
};
} // namespace XLS
......
......@@ -93,7 +93,7 @@ int CF::serialize(std::wostream & stream)
CP_XML_ATTR(L"dxfId", dxfId_);
std::wstring s1 = rgce1.getAssembledFormula();
std::wstring s2 = rgce1.getAssembledFormula();
std::wstring s2 = rgce2.getAssembledFormula();
CP_XML_NODE(L"formula")
{
if (!s1.empty())
......
......@@ -22,9 +22,6 @@ public:
static const ElementType type = typeFilterMode;
public:
//BO_ATTRIB_MARKUP_BEGIN
//BO_ATTRIB_MARKUP_END
};
} // namespace XLS
......
......@@ -33,9 +33,9 @@ void AF12Criteria::load(CFRecord& record)
if (doper.vt == BIFF_BYTE(0x06))
{
unsigned char _cch = doper.vtValue.cch;
unsigned char _cch = doper.vtValueStr.cch;
str.setSize(doper.vtValue.cch);
str.setSize(doper.vtValueStr.cch);
record >> str;
_str = str.getEscaped_ST_Xstring();
}
......
......@@ -13,7 +13,9 @@ BiffStructurePtr AFDOper::clone()
AFDOper::AFDOper()
{
m_bAutoFilter = true;
m_bAutoFilter = true;
vt = 0xff;
grbitSign = 0xff;
}
AFDOper::AFDOper(bool bAutoFilter)
......@@ -26,20 +28,6 @@ AFDOper::~AFDOper()
{
}
//void AFDOper::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// xml_tag->setAttribute(L"vt", vt);
// xml_tag->setAttribute(L"grbitSign", grbitSign);
// vtValue.toXML(xml_tag);
//}
//
//
//void AFDOper::getXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
//}
void AFDOper::store(CFRecord& record)
{
}
......@@ -49,15 +37,32 @@ void AFDOper::load(CFRecord& record)
{
record >> vt >> grbitSign;
unsigned char _vt = vt;
unsigned char _grbitSign = grbitSign;
if (vt == BIFF_BYTE(0))
record.skipNunBytes(8);
if (vt == BIFF_BYTE(0x06))
switch(vt)
{
vtValue.m_bAutoFilter = m_bAutoFilter;
record >> vtValue;
case 0x02:
{
record >> vtValueRk;
}break;
case 0x04:
{
record >> vtValueNum;
}break;
case 0x06:
{
vtValueStr.m_bAutoFilter = m_bAutoFilter;
record >> vtValueStr;
}break;
case 0x08:
{
record >> vtValueBool;
}break;
case 0x0C: //All blanks are matched.
case 0x0E: //All non-blanks are matched.
case 0x00:
default:
{
record.skipNunBytes(8);
}break;
}
}
......
......@@ -2,7 +2,11 @@
#include <Logic/Biff_records/BiffRecord.h>
#include <Logic/Biff_structures/BiffString.h>
#include "AFDOperStr.h"
#include "AFDOperRk.h"
#include "AFDOperBoolErr.h"
#include "AFDOperXNum.h"
namespace XLS
{
......@@ -22,9 +26,13 @@ public:
static const ElementType type = typeAFDOper;
BIFF_BYTE vt;
BIFF_BYTE grbitSign;
AFDOperStr vtValue;
unsigned char vt;
unsigned char grbitSign;
AFDOperStr vtValueStr;
AFDOperBoolErr vtValueBool;
AFDOperRk vtValueRk;
AFDOperXNum vtValueNum; //64-bit binary floating-point number
bool m_bAutoFilter;
};
......
#include "AFDOperBoolErr.h"
#include <Binary/CFRecord.h>
namespace XLS
{
BiffStructurePtr AFDOperBoolErr::clone()
{
return BiffStructurePtr(new AFDOperBoolErr(*this));
}
void AFDOperBoolErr::store(CFRecord& record)
{
}
void AFDOperBoolErr::load(CFRecord& record)
{
record >> bes;
record.skipNunBytes(2);
record.skipNunBytes(4);
}
} // namespace XLS
#pragma once
#include <Logic/Biff_records/BiffRecord.h>
namespace XLS
{
class AFDOperBoolErr: public BiffStructure
{
BASE_STRUCTURE_DEFINE_CLASS_NAME(AFDOperBoolErr)
public:
BiffStructurePtr clone();
virtual void load(CFRecord& record);
virtual void store(CFRecord& record);
static const ElementType type = typeAFDOperBoolErr;
BIFF_SHORT bes;
};
} // namespace XLS
\ No newline at end of file
......@@ -11,18 +11,6 @@ BiffStructurePtr AFDOperRk::clone()
return BiffStructurePtr(new AFDOperRk(*this));
}
//void AFDOperRk::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// xml_tag->setAttribute(L"rk", rk);
//}
//
//
//void AFDOperRk::getXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
//}
void AFDOperRk::store(CFRecord& record)
{
}
......@@ -35,8 +23,6 @@ void AFDOperRk::load(CFRecord& record)
record >> rk;
record.skipNunBytes(4);
_UINT32 _rk = rk;
}
......
#pragma once
#include <Logic/Biff_records/BiffRecord.h>
#include <Logic/Biff_structures/BiffString.h>
namespace XLS
{
......@@ -11,8 +10,6 @@ class AFDOperRk: public BiffStructure
BASE_STRUCTURE_DEFINE_CLASS_NAME(AFDOperRk)
public:
BiffStructurePtr clone();
virtual void load(CFRecord& record);
virtual void store(CFRecord& record);
......
......@@ -26,19 +26,6 @@ AFDOperStr::~AFDOperStr()
{
}
//
//void AFDOperStr::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// xml_tag->setAttribute(L"cch", cch);
// xml_tag->setAttribute(L"fCompare", fCompare);
//}
//
//
//void AFDOperStr::getXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
//}
void AFDOperStr::store(CFRecord& record)
{
}
......
......@@ -19,7 +19,6 @@ public:
static const ElementType type = typeAFDOperStr;
virtual void load(CFRecord& record);
virtual void store(CFRecord& record);
......
#include "AFDOperXNum.h"
#include <Binary/CFRecord.h>
namespace XLS
{
BiffStructurePtr AFDOperXNum::clone()
{
return BiffStructurePtr(new AFDOperXNum(*this));
}
void AFDOperXNum::store(CFRecord& record)
{
}
void AFDOperXNum::load(CFRecord& record)
{
_UINT32 v1, v2;
record >> v1 >> v2;
val = 0;
}
} // namespace XLS
#pragma once
#include <Logic/Biff_records/BiffRecord.h>
namespace XLS
{
class AFDOperXNum: public BiffStructure
{
BASE_STRUCTURE_DEFINE_CLASS_NAME(AFDOperXNum)
public:
BiffStructurePtr clone();
virtual void load(CFRecord& record);
virtual void store(CFRecord& record);
static const ElementType type = typeAFDOperXNum;
double val;
};
} // namespace XLS
\ No newline at end of file
......@@ -13,22 +13,6 @@ BiffStructurePtr Bes::clone()
return BiffStructurePtr(new Bes(*this));
}
//void Bes::setXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// xml_tag->setAttribute(L"fError", fError);
// xml_tag->setAttribute(L"bBoolErr", bBoolErr);
// xml_tag->setAttribute(L"value", toString().c_str());
//}
//
//
//void Bes::getXMLAttributes(MSXML2::IXMLDOMElementPtr xml_tag)
//{
// std::wstring val = getStructAttribute(xml_tag, L"value");
// fromString(static_cast<wchar_t*>(val));
//}
void Bes::store(CFRecord& record)
{
record << bBoolErr << fError;
......
......@@ -71,7 +71,6 @@ void serialize_one(std::wostream & stream, const std::wstring & name, unsigned c
{
switch(type)
{
case 0: CP_XML_ATTR(L"style", L"none"); break;
case 1: CP_XML_ATTR(L"style", L"thin"); break;
case 2: CP_XML_ATTR(L"style", L"medium"); break;
case 3: CP_XML_ATTR(L"style", L"dashed"); break;
......@@ -106,14 +105,14 @@ int DXFBdr::serialize(std::wostream & stream)
{
CP_XML_NODE(L"border")
{
if (!parent->glTopNinch)
serialize_one(CP_XML_STREAM(), L"top", dgTop, icvTop);
if (!parent->glBottomNinch)
serialize_one(CP_XML_STREAM(), L"bottom", dgBottom, icvBottom);
if (!parent->glLeftNinch)
serialize_one(CP_XML_STREAM(), L"left", dgLeft, icvLeft);
if (!parent->glRightNinch)
serialize_one(CP_XML_STREAM(), L"right", dgRight, icvRight);
if (!parent->glTopNinch)
serialize_one(CP_XML_STREAM(), L"top", dgTop, icvTop);
if (!parent->glBottomNinch)
serialize_one(CP_XML_STREAM(), L"bottom", dgBottom, icvBottom);
if (!parent->glDiagDownNinch || !parent->glDiagUpNinch)
serialize_one(CP_XML_STREAM(), L"diagonal", dgDiag, icvDiag);
......
......@@ -55,7 +55,8 @@ const std::wstring ParsedFormula::getAssembledFormula() const
}
if(1 != ptg_stack.size())
{
throw;// EXCEPT::LE::WrongAPIUsage("Wrong formula assembling.", __FUNCTION__);
return L"";
//throw; EXCEPT::LE::WrongAPIUsage("Wrong formula assembling.", __FUNCTION__);
}
return ptg_stack.top();
}
......
......@@ -157,7 +157,6 @@ static void serialize_border_prop(std::wostream & stream, const std::wstring & n
{
switch(border->dgBorder)
{
case 0: CP_XML_ATTR(L"style", L"none"); break;
case 1: CP_XML_ATTR(L"style", L"thin"); break;
case 2: CP_XML_ATTR(L"style", L"medium"); break;
case 3: CP_XML_ATTR(L"style", L"dashed"); break;
......
......@@ -37,15 +37,6 @@ public:
{
return false;
}
AutoFilter12 * af12 = dynamic_cast<AutoFilter12*>(elements_.back().get());
int count = proc.repeated<ContinueFrt12>(0, 0);
while(count > 0)
{
af12->m_arContinueFrt12.insert(af12->m_arContinueFrt12.begin(), elements_.back());
elements_.pop_back();
count--;
}
}
return true;
};
......
......@@ -26,14 +26,23 @@ BaseObjectPtr BACKGROUND::clone()
// BACKGROUND = BkHim *Continue
const bool BACKGROUND::loadContent(BinProcessor& proc)
{
pGlobalWorkbookInfoPtr = proc.getGlobalWorkbookInfo();
if(!proc.mandatory<BkHim>())
{
return false;
}
proc.repeated<Continue>(0, 0);
m_BkHim = elements_.back();
elements_.pop_back();
int count = proc.repeated<Continue>(0, 0);
return true;
}
int BACKGROUND::serialize(std::wostream & _stream)
{
return 0;
}
} // namespace XLS
......@@ -18,6 +18,11 @@ public:
virtual const bool loadContent(BinProcessor& proc);
int serialize (std::wostream & _stream);
GlobalWorkbookInfoPtr pGlobalWorkbookInfoPtr;
BaseObjectPtr m_BkHim;
};
} // namespace XLS
......
......@@ -48,7 +48,7 @@ const bool SORTANDFILTER::loadContent(BinProcessor& proc)
elements_.pop_back();
}
bool res4 = proc.optional<DropDownObjIds>();
if (res3)
if (res4)
{
m_DropDownObjIds = elements_.back();
elements_.pop_back();
......
......@@ -471,6 +471,8 @@ enum ElementType
typeAF12Criteria,
typeAFDOper,
typeAFDOperRk,
typeAFDOperBoolErr,
typeAFDOperXNum,
typeAFDOperStr,
typeBes,
typeBiffAttribute,
......
......@@ -471,110 +471,112 @@ namespace NSCustomVML
m_ePath = ePath;
m_bIsPathPresent = true;
}
//void LoadVertices(CProperty* pProperty)
//{
// CBinaryReader oReader(pProperty->m_pOptions, pProperty->m_lValue);
// m_arVertices.clear();
//
// WORD lCount = (WORD)(pProperty->m_lValue / 8);
// if (pProperty->m_bIsTruncated)
// {
// lCount = (WORD)(pProperty->m_lValue / 4);
// }
// if (lCount > 0)
// {
// m_bIsVerticesPresent = true;
// }
// for (WORD lIndex = 0; lIndex < lCount; ++lIndex)
// {
// Aggplus::POINT oPoint;
// if (pProperty->m_bIsTruncated)
// {
// oPoint.x = (short)oReader.ReadWORD();
// oPoint.y = (short)oReader.ReadWORD();
// }
// else
// {
// oPoint.x = oReader.ReadLONG();
// oPoint.y = oReader.ReadLONG();
// }
// LONG lMinF = (LONG)0x80000000;
// LONG lMaxF = (LONG)0x8000007F;
// if (lMinF <= (DWORD)oPoint.x)
// {
// int nGuideIndex = (DWORD)oPoint.x - 0x80000000;
// bool b = false;
// }
// if (lMinF <= (DWORD)oPoint.y)
// {
// int nGuideIndex = (DWORD)oPoint.y - 0x80000000;
// bool b = false;
// }
// m_arVertices.push_back(oPoint);
// }
//}
//void LoadAHs(CProperty* pProperty)
//{
//}
//void LoadSegments(CProperty* pProperty)
//{
// CBinaryReader oReader(pProperty->m_pOptions, pProperty->m_lValue);
// m_arSegments.clear();
// WORD lCount = (WORD)(pProperty->m_lValue / 2);
// if (lCount > 0)
// {
// m_bIsPathPresent = true;
// }
// for (WORD lIndex = 0; lIndex < lCount; ++lIndex)
// {
// CSegment oInfo;
// oInfo.Read(oReader);
// if (0 == oInfo.m_nCount)
// {
// if ((rtEnd != oInfo.m_eRuler) &&
// (rtNoFill != oInfo.m_eRuler) &&
// (rtNoStroke != oInfo.m_eRuler) &&
// (rtClose != oInfo.m_eRuler))
// {
// continue;
// }
// }
// //if (rtClose == oInfo.m_eRuler)
// //{
// // //
// // CSegment oInfo2(rtLineTo, 1);
// // m_arSegments.push_back(oInfo2);
// //}
// m_arSegments.push_back(oInfo);
// }
//}
//void LoadGuides(CProperty* pProperty)
//{
// CBinaryReader oReader(pProperty->m_pOptions, pProperty->m_lValue);
// WORD lCount = (WORD)(pProperty->m_lValue / 4);
// for (WORD lIndex = 0; lIndex < lCount; ++lIndex)
// {
// CGuide oInfo;
// oInfo.Read(oReader);
// m_arGuides.push_back(oInfo);
// }
//}
void LoadVertices(int val, unsigned char* buffer, int buffer_size)
{
CBinaryReader oReader(buffer, buffer_size);
m_arVertices.clear();
WORD lCount = (WORD)(val / 8);
//if (pProperty->m_bIsTruncated)todooo
{
lCount = (WORD)(val / 4);
}
if (lCount > 0)
{
m_bIsVerticesPresent = true;
}
for (WORD lIndex = 0; lIndex < lCount; ++lIndex)
{
Aggplus::POINT oPoint;
//if (pProperty->m_bIsTruncated)todooo
//{
// oPoint.x = (short)oReader.ReadWORD();
// oPoint.y = (short)oReader.ReadWORD();
//}
//else
{
oPoint.x = oReader.ReadLONG();
oPoint.y = oReader.ReadLONG();
}
LONG lMinF = (LONG)0x80000000;
LONG lMaxF = (LONG)0x8000007F;
if (lMinF <= (DWORD)oPoint.x)
{
int nGuideIndex = (DWORD)oPoint.x - 0x80000000;
bool b = false;
}
if (lMinF <= (DWORD)oPoint.y)
{
int nGuideIndex = (DWORD)oPoint.y - 0x80000000;
bool b = false;
}
m_arVertices.push_back(oPoint);
}
}
void LoadAHs(unsigned char* buffer, int buffer_size)
{
}
void LoadSegments(int val, unsigned char* buffer, int buffer_size)
{
CBinaryReader oReader(buffer, buffer_size);
m_arSegments.clear();
WORD lCount = (WORD)(val / 2);
if (lCount > 0)
{
m_bIsPathPresent = true;
}
for (WORD lIndex = 0; lIndex < lCount; ++lIndex)
{
CSegment oInfo;
oInfo.Read(oReader);
if (0 == oInfo.m_nCount)
{
if ((rtEnd != oInfo.m_eRuler) &&
(rtNoFill != oInfo.m_eRuler) &&
(rtNoStroke != oInfo.m_eRuler) &&
(rtClose != oInfo.m_eRuler))
{
continue;
}
}
//if (rtClose == oInfo.m_eRuler)
//{
// //
// CSegment oInfo2(rtLineTo, 1);
// m_arSegments.push_back(oInfo2);
//}
m_arSegments.push_back(oInfo);
}
}
void LoadGuides(int val, unsigned char* buffer, int buffer_size)
{
CBinaryReader oReader(buffer, buffer_size);
WORD lCount = (WORD)(val / 4);
for (WORD lIndex = 0; lIndex < lCount; ++lIndex)
{
CGuide oInfo;
oInfo.Read(oReader);
m_arGuides.push_back(oInfo);
}
}
void LoadAdjusts(LONG lIndex, LONG lValue)
{
if (NULL == m_pAdjustValues)
......
......@@ -269,7 +269,7 @@ private:
void FromString(std::wstring strFormula, long lShapeWidth = ShapeSizeVML, long lShapeHeight = ShapeSizeVML)
{
std::vector<std::wstring> oArrayParams;
NSStringUtils::ParseString(_T(" "), strFormula, &oArrayParams);
NSStringUtils::ParseString(_T(" "), strFormula, oArrayParams);
int nCount = oArrayParams.size();
if (0 >= nCount)
return;
......
#pragma once
#include <string>
#include <boost/algorithm/string.hpp>
#include "../../../../DesktopEditor/graphics/GraphicsPath.h"
//#include "../../Metric.h"
......@@ -520,27 +522,16 @@ namespace NSGuidesVML
// }
//}
void ParseString(std::wstring strDelimeters, std::wstring strSource,
std::vector<std::wstring>* pArrayResults, bool bIsCleared = true)
std::vector<std::wstring>& pArrayResults, bool bIsCleared = true)
{
if (NULL == pArrayResults)
return;
if (bIsCleared)
pArrayResults->clear();
pArrayResults.clear();
std::wstring resToken;
int curPos= 0;
int endPos = strSource.find(strDelimeters, curPos);
resToken = strSource.substr(curPos, (endPos == std::wstring::npos) ? std::wstring::npos : endPos - curPos);
boost::algorithm::split(pArrayResults, strSource, boost::algorithm::is_any_of(strDelimeters), boost::algorithm::token_compress_on);
while (resToken != L"")
{
pArrayResults->push_back(resToken);
int endPos = strSource.find(strDelimeters, curPos);
resToken = strSource.substr(curPos, (endPos == std::wstring::npos) ? std::wstring::npos : endPos - curPos);
};
}
void CheckLastPoint(IRenderer* pRenderer, CDoublePoint& pointCur)
......
#pragma once
enum ShapeType : unsigned short
{
sptMin = 0,
sptNotPrimitive = sptMin,
sptCRect = 1,
sptCRoundRect = 2,
sptCEllipse = 3,
sptCDiamond = 4,
sptCIsocelesTriangle = 5,//
sptCRtTriangle = 6,
sptCParallelogram = 7,
sptCTrapezoid = 8,
sptCHexagon = 9,
sptCOctagon = 10,
sptCPlus = 11,
sptCStar5 = 12,//
sptCRightArrow = 13,
sptCThickArrow = 14,//
sptCHomePlate = 15,
sptCCube = 16,
sptCBalloon = 17,//
sptCSeal = 18,//
sptCArc = 19,
sptCLine = 20,
sptCPlaque = 21,
sptCCan = 22,
sptCDonut = 23,
sptCTextSimple = 24,//
sptCTextOctagon = 25,//
sptCTextHexagon = 26,//
sptCTextCurve = 27,//
sptCTextWave = 28,//
sptCTextRing = 29,//
sptCTextOnCurve = 30,//
sptCTextOnRing = 31,//
sptCStraightConnector1 = 32,
sptCBentConnector2 = 33,
sptCBentConnector3 = 34,
sptCBentConnector4 = 35,
sptCBentConnector5 = 36,
sptCCurvedConnector2 = 37,
sptCCurvedConnector3 = 38,
sptCCurvedConnector4 = 39,
sptCCurvedConnector5 = 40,
sptCCallout1 = 41,
sptCCallout2 = 42,
sptCCallout3 = 43,
sptCAccentCallout1 = 44,
sptCAccentCallout2 = 45,
sptCAccentCallout3 = 46,
sptCBorderCallout1 = 47,
sptCBorderCallout2 = 48,
sptCBorderCallout3 = 49,
sptCAccentBorderCallout1 = 50,
sptCAccentBorderCallout2 = 51,
sptCAccentBorderCallout3 = 52,
sptCRibbon = 53,
sptCRibbon2 = 54,
sptCChevron = 55,
sptCPentagon = 56,
sptCNoSmoking = 57,
sptCStar8 = 58,//
sptCStar16 = 59,//
sptCStar32 = 60,//
sptCWedgeRectCallout = 61,
sptCWedgeRoundRectCallout = 62,
sptCWedgeEllipseCallout = 63,
sptCWave = 64,
sptCFoldedCorner = 65,
sptCLeftArrow = 66,
sptCDownArrow = 67,
sptCUpArrow = 68,//
sptCLeftRightArrow = 69,
sptCUpDownArrow = 70,
sptCIrregularSeal1 = 71,
sptCIrregularSeal2 = 72,
sptCLightningBolt = 73,
sptCHeart = 74,
sptCFrame = 75,
sptCQuadArrow = 76,
sptCLeftArrowCallout = 77,
sptCRightArrowCallout = 78,
sptCUpArrowCallout = 79,
sptCDownArrowCallout = 80,
sptCLeftRightArrowCallout = 81,
sptCUpDownArrowCallout = 82,
sptCQuadArrowCallout = 83,
sptCBevel = 84,
sptCLeftBracket = 85,
sptCRightBracket = 86,
sptCLeftBrace = 87,
sptCRightBrace = 88,
sptCLeftUpArrow = 89,
sptCBentUpArrow = 90,
sptCBentArrow = 91,
sptCStar24 = 92,//
sptCStripedRightArrow = 93,
sptCNotchedRightArrow = 94,
sptCBlockArc = 95,
sptCSmileyFace = 96,
sptCVerticalScroll = 97,
sptCHorizontalScroll = 98,
sptCCircularArrow = 99,
sptCNotchedCircularArrow = 100,//
sptCUturnArrow = 101,
sptCCurvedRightArrow = 102,
sptCCurvedLeftArrow = 103,
sptCCurvedUpArrow = 104,
sptCCurvedDownArrow = 105,
sptCCloudCallout = 106,
sptCEllipseRibbon = 107,
sptCEllipseRibbon2 = 108,
sptCFlowChartProcess = 109,
sptCFlowChartDecision = 110,
sptCFlowChartInputOutput = 111,
sptCFlowChartPredefinedProcess = 112,
sptCFlowChartInternalStorage = 113,
sptCFlowChartDocument = 114,
sptCFlowChartMultidocument = 115,
sptCFlowChartTerminator = 116,
sptCFlowChartPreparation = 117,
sptCFlowChartManualInput = 118,
sptCFlowChartManualOperation = 119,
sptCFlowChartConnector = 120,
sptCFlowChartPunchedCard = 121,
sptCFlowChartPunchedTape = 122,
sptCFlowChartSummingJunction = 123,
sptCFlowChartOr = 124,
sptCFlowChartCollate = 125,
sptCFlowChartSort = 126,
sptCFlowChartExtract = 127,
sptCFlowChartMerge = 128,
sptCFlowChartOfflineStorage = 129,
sptCFlowChartOnlineStorage = 130,
sptCFlowChartMagneticTape = 131,
sptCFlowChartMagneticDisk = 132,
sptCFlowChartMagneticDrum = 133,
sptCFlowChartDisplay = 134,
sptCFlowChartDelay = 135,
sptCTextPlain = 136,
sptCTextStop = 137,
sptCTextTriangle = 138,
sptCTextTriangleInverted = 139,
sptCTextChevron = 140,
sptCTextChevronInverted = 141,
sptCTextRingInside = 142,
sptCTextRingOutside = 143,
sptCTextArchUp = 144,
sptCTextArchDown = 145,
sptCTextCircle = 146,
sptCTextButton = 147,
sptCTextArchUpPour = 148,
sptCTextArchDownPour = 149,
sptCTextCirclePour = 150,
sptCTextButtonPour = 151,
sptCTextCurveUp = 152,
sptCTextCurveDown = 153,
sptCTextCascadeUp = 154,
sptCTextCascadeDown = 155,
sptCTextWave1 = 156,
sptCTextWave2 = 157,
sptCTextWave3 = 158,//
sptCTextWave4 = 159,
sptCTextInflate = 160,
sptCTextDeflate = 161,
sptCTextInflateBottom = 162,
sptCTextDeflateBottom = 163,
sptCTextInflateTop = 164,
sptCTextDeflateTop = 165,
sptCTextDeflateInflate = 166,
sptCTextDeflateInflateDeflate = 167,
sptCTextFadeRight = 168,
sptCTextFadeLeft = 169,
sptCTextFadeUp = 170,
sptCTextFadeDown = 171,
sptCTextSlantUp = 172,
sptCTextSlantDown = 173,
sptCTextCanUp = 174,
sptCTextCanDown = 175,
sptCFlowChartAlternateProcess = 176,
sptCFlowChartOffpageConnector = 177,
sptCCallout90 = 178,//
sptCAccentCallout90 = 179,//
sptCBorderCallout90 = 180,//
sptCAccentBorderCallout90 = 181,//
sptCLeftRightUpArrow = 182,
sptCSun = 183,
sptCMoon = 184,
sptCBracketPair = 185,
sptCBracePair = 186,
sptCStar4 = 187,//
sptCDoubleWave = 188,
sptCActionButtonBlank = 189,
sptCActionButtonHome = 190,
sptCActionButtonHelp = 191,
sptCActionButtonInformation = 192,
sptCActionButtonForwardNext = 193,
sptCActionButtonBackPrevious = 194,
sptCActionButtonEnd = 195,
sptCActionButtonBeginning = 196,
sptCActionButtonReturn = 197,
sptCActionButtonDocument = 198,
sptCActionButtonSound = 199,
sptCActionButtonMovie = 200,
sptCHostControl = 201,//
sptCTextBox = 202,//
//
sptCChartPlus = 203,
sptCChartStar,
sptCChartX,
sptCChord,
sptCCloud,
sptCCorner,
sptCCornerTabs,
sptCDecagon,
sptCDiagStripe,
sptCDodecagon,
sptCFunnel,
sptCGear6,
sptCGear9,
sptCHalfFrame,
sptCHeptagon,
sptCLeftCircularArrow,
sptCLeftRightCircularArrow,
sptCLeftRightRibbon,
sptCLineInv,
sptCMathDivide,
sptCMathEqual,
sptCMathMinus,
sptCMathMultiply,
sptCMathNotEqual,
sptCMathPlus,
sptCNonIsoscelesTrapezoid,
sptCPie,
sptCPieWedge,
sptCPlaqueTabs,
sptCRound1Rect,
sptCRound2DiagRect,
sptCRound2SameRect,
sptCSnip1Rect,
sptCSnip2DiagRect,
sptCSnip2SameRect,
sptCSnipRoundRect,
sptCSquareTabs,
sptCStar10,
sptCStar12,
//sptCStar16,
//sptCStar24,
//sptCStar32,
//sptCStar4,
//sptCStar5,
sptCStar6,
sptCStar7,
//sptCStar8,
sptCSwooshArrow,
sptCTeardrop,
sptCTextDoubleWave1,
sptCTriangle,
sptMax,
sptNil = 0x0FFF,
sptCustom = 0x1000
};
#pragma once
#include <string>
#include <algorithm>
#include <vector>
#include <boost/algorithm/string.hpp>
#if defined(_WIN32) || defined(_WIN64)
#include <atlbase.h>
#include <atlstr.h>
#include "../../../../Common/atldefine.h"
#else
#include "../../../../../Common/DocxFormat/Source/Base/ASCString.h"
#endif
//#if defined(_WIN32) || defined(_WIN64)
// #include <atlbase.h>
// #include <atlstr.h>
// #include "../../../../Common/atldefine.h"
//
//#else
// #include "../../../../../Common/DocxFormat/Source/Base/ASCString.h"
//#endif
#include "../../../../../Common/DocxFormat/Source/Base/Base.h"
#include "../../../../../DesktopEditor/graphics/GraphicsPath.h"
const double ShapeSize = 43200.0;
const LONG ShapeSizeVML = 21600;
const double RadKoef = M_PI/10800000.0;
......@@ -67,45 +71,27 @@ namespace NSStringUtils
}
static void ParseString(std::wstring strDelimeters, std::wstring strSource,
std::vector<std::wstring>* pArrayResults, bool bIsCleared = true)
std::vector<std::wstring>& pArrayResults, bool bIsCleared = true)
{
if (NULL == pArrayResults)
return;
if (bIsCleared)
pArrayResults->clear();
pArrayResults.clear();
std::wstring resToken;
int curPos= 0;
int endPos = strSource.find(strDelimeters, curPos);
resToken = strSource.substr(curPos, (endPos == std::wstring::npos) ? std::wstring::npos : endPos - curPos);
while (resToken != _T(""))
{
pArrayResults->push_back(resToken);
int endPos = strSource.find(strDelimeters, curPos);
resToken = strSource.substr(curPos, (endPos == std::wstring::npos) ? std::wstring::npos : endPos - curPos);
};
boost::algorithm::split(pArrayResults, strSource, boost::algorithm::is_any_of(strDelimeters), boost::algorithm::token_compress_on);
}
static void ParseString(std::vector<char>* pArrayDelimeters, std::wstring strSource,
std::vector<std::wstring>* pArrayResults, bool bIsCleared = true)
static void ParseString(std::vector<char>& pArrayDelimeters, std::wstring strSource,
std::vector<std::wstring> & pArrayResults, bool bIsCleared = true)
{
if (NULL == pArrayDelimeters)
return;
std::wstring strDelimeters = _T("");
for (int nIndex = 0; nIndex < pArrayDelimeters->size(); ++nIndex)
strDelimeters += (*pArrayDelimeters)[nIndex];
for (int nIndex = 0; nIndex < pArrayDelimeters.size(); ++nIndex)
strDelimeters += pArrayDelimeters[nIndex];
return ParseString(strDelimeters, strSource, pArrayResults, bIsCleared);
}
static void ParsePath(std::wstring strSource, std::vector<std::wstring>* pArrayResults, bool bIsCleared = true)
static void ParsePath(std::wstring strSource, std::vector<std::wstring> pArrayResults, bool bIsCleared = true)
{
if (NULL == pArrayResults)
return;
std::wstring strPath = strSource;
//strPath.Replace(_T(" "), _T(","));
for (int nIndex = 0; nIndex < strPath.length(); ++nIndex)
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 51
class CAccentBorderCallout2Type : public CPPTShape
class CAccentBorderCallout2Type : public CCustomShape
{
public:
CAccentBorderCallout2Type()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 44
class CAccentCallout1Type : public CPPTShape
class CAccentCallout1Type : public CCustomShape
{
public:
CAccentCallout1Type()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 45
class CAccentCallout2Type : public CPPTShape
class CAccentCallout2Type : public CCustomShape
{
public:
CAccentCallout2Type()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 46
class CAccentCallout3Type : public CPPTShape
class CAccentCallout3Type : public CCustomShape
{
public:
CAccentCallout3Type()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 179
class CAccentCallout90Type : public CPPTShape
class CAccentCallout90Type : public CCustomShape
{
public:
CAccentCallout90Type()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 194
class CActionButtonBackType : public CPPTShape
class CActionButtonBackType : public CCustomShape
{
public:
CActionButtonBackType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 196
class CActionButtonBeginType : public CPPTShape
class CActionButtonBeginType : public CCustomShape
{
public:
CActionButtonBeginType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 189
class CActionButtonBlankType : public CPPTShape
class CActionButtonBlankType : public CCustomShape
{
public:
CActionButtonBlankType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 198
class CActionButtonDocType : public CPPTShape
class CActionButtonDocType : public CCustomShape
{
public:
CActionButtonDocType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 195
class CActionButtonEndType : public CPPTShape
class CActionButtonEndType : public CCustomShape
{
public:
CActionButtonEndType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 191
class CActionButtonHelpType : public CPPTShape
class CActionButtonHelpType : public CCustomShape
{
public:
CActionButtonHelpType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 190
class CActionButtonHomeType : public CPPTShape
class CActionButtonHomeType : public CCustomShape
{
public:
CActionButtonHomeType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 192
class CActionButtonInfoType : public CPPTShape
class CActionButtonInfoType : public CCustomShape
{
public:
CActionButtonInfoType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 200
class CActionButtonMovieType : public CPPTShape
class CActionButtonMovieType : public CCustomShape
{
public:
CActionButtonMovieType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 193
class CActionButtonNextType : public CPPTShape
class CActionButtonNextType : public CCustomShape
{
public:
CActionButtonNextType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 197
class CActionButtonReturnType : public CPPTShape
class CActionButtonReturnType : public CCustomShape
{
public:
CActionButtonReturnType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 199
class CActionButtonSoundType : public CPPTShape
class CActionButtonSoundType : public CCustomShape
{
public:
CActionButtonSoundType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 91
class CBentArrowType : public CPPTShape
class CBentArrowType : public CCustomShape
{
public:
CBentArrowType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 34
class CBentConnectorType : public CPPTShape
class CBentConnectorType : public CCustomShape
{
public:
CBentConnectorType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 90
class CBentUpArrowType : public CPPTShape
class CBentUpArrowType : public CCustomShape
{
public:
CBentUpArrowType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 84
class CBevelType : public CPPTShape
class CBevelType : public CCustomShape
{
public:
CBevelType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 95
class CBlockArcType : public CPPTShape
class CBlockArcType : public CCustomShape
{
public:
CBlockArcType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 47
class CBorderCallout1Type : public CPPTShape
class CBorderCallout1Type : public CCustomShape
{
public:
CBorderCallout1Type()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 48
class CBorderCallout2Type : public CPPTShape
class CBorderCallout2Type : public CCustomShape
{
public:
CBorderCallout2Type()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 49
class CBorderCallout3Type : public CPPTShape
class CBorderCallout3Type : public CCustomShape
{
public:
CBorderCallout3Type()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 180
class CBorderCallout90Type : public CPPTShape
class CBorderCallout90Type : public CCustomShape
{
public:
CBorderCallout90Type()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 186
class CBracePairType : public CPPTShape
class CBracePairType : public CCustomShape
{
public:
CBracePairType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 185
class CBracketPairType : public CPPTShape
class CBracketPairType : public CCustomShape
{
public:
CBracketPairType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 41
class CCallout1Type : public CPPTShape
class CCallout1Type : public CCustomShape
{
public:
CCallout1Type()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 42
class CCallout2Type : public CPPTShape
class CCallout2Type : public CCustomShape
{
public:
CCallout2Type()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 43
class CCallout3Type : public CPPTShape
class CCallout3Type : public CCustomShape
{
public:
CCallout3Type()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 178
class CCallout90Type : public CPPTShape
class CCallout90Type : public CCustomShape
{
public:
CCallout90Type()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 22
class CCanType : public CPPTShape
class CCanType : public CCustomShape
{
public:
CCanType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 55
class CChevronType : public CPPTShape
class CChevronType : public CCustomShape
{
public:
CChevronType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 99
class CCircularArrowType : public CPPTShape
class CCircularArrowType : public CCustomShape
{
public:
CCircularArrowType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 106
class CCloudCalloutType : public CPPTShape
class CCloudCalloutType : public CCustomShape
{
public:
CCloudCalloutType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 16
class CCubeType : public CPPTShape
class CCubeType : public CCustomShape
{
public:
CCubeType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 38
class CCurvedConnectorType : public CPPTShape
class CCurvedConnectorType : public CCustomShape
{
public:
CCurvedConnectorType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 105
class CCurvedDownArrowType : public CPPTShape
class CCurvedDownArrowType : public CCustomShape
{
public:
CCurvedDownArrowType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 103
class CCurvedLeftArrowType : public CPPTShape
class CCurvedLeftArrowType : public CCustomShape
{
public:
CCurvedLeftArrowType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 102
class CCurvedRightArrowType : public CPPTShape
class CCurvedRightArrowType : public CCustomShape
{
public:
CCurvedRightArrowType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
//104
class CCurvedUpArrowType : public CPPTShape
class CCurvedUpArrowType : public CCustomShape
{
public:
CCurvedUpArrowType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 4
class CDiamondType : public CPPTShape
class CDiamondType : public CCustomShape
{
public:
CDiamondType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 23
class CDonutType : public CPPTShape
class CDonutType : public CCustomShape
{
public:
CDonutType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 80
class CDownArrowCalloutType : public CPPTShape
class CDownArrowCalloutType : public CCustomShape
{
public:
CDownArrowCalloutType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 67
class CDownArrowType : public CPPTShape
class CDownArrowType : public CCustomShape
{
public:
CDownArrowType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 108
class CEllipceRibbon2Type : public CPPTShape
class CEllipceRibbon2Type : public CCustomShape
{
public:
CEllipceRibbon2Type()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 107
class CEllipceRibbonType : public CPPTShape
class CEllipceRibbonType : public CCustomShape
{
public:
CEllipceRibbonType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 3
class CEllipseType : public CPPTShape
class CEllipseType : public CCustomShape
{
public:
CEllipseType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 176
class CFlowChartAlternateProcessType : public CPPTShape
class CFlowChartAlternateProcessType : public CCustomShape
{
public:
CFlowChartAlternateProcessType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 125
class CFlowChartCollateType : public CPPTShape
class CFlowChartCollateType : public CCustomShape
{
public:
CFlowChartCollateType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 120
class CFlowChartConnectorType : public CPPTShape
class CFlowChartConnectorType : public CCustomShape
{
public:
CFlowChartConnectorType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 110
class CFlowChartDecisionType : public CPPTShape
class CFlowChartDecisionType : public CCustomShape
{
public:
CFlowChartDecisionType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 135
class CFlowChartDelayType : public CPPTShape
class CFlowChartDelayType : public CCustomShape
{
public:
CFlowChartDelayType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 134
class CFlowChartDisplayType : public CPPTShape
class CFlowChartDisplayType : public CCustomShape
{
public:
CFlowChartDisplayType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
//114
class CFlowChartDocumentType : public CPPTShape
class CFlowChartDocumentType : public CCustomShape
{
public:
CFlowChartDocumentType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 127
class CFlowChartExtractType : public CPPTShape
class CFlowChartExtractType : public CCustomShape
{
public:
CFlowChartExtractType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 111
class CFlowChartInputOutputType : public CPPTShape
class CFlowChartInputOutputType : public CCustomShape
{
public:
CFlowChartInputOutputType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 113
class CFlowChartInternalStorageType : public CPPTShape
class CFlowChartInternalStorageType : public CCustomShape
{
public:
CFlowChartInternalStorageType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 132
class CFlowChartMagneticDiskType : public CPPTShape
class CFlowChartMagneticDiskType : public CCustomShape
{
public:
CFlowChartMagneticDiskType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 133
class CFlowChartMagneticDrumType : public CPPTShape
class CFlowChartMagneticDrumType : public CCustomShape
{
public:
CFlowChartMagneticDrumType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 131
class CFlowChartMagneticTapeType : public CPPTShape
class CFlowChartMagneticTapeType : public CCustomShape
{
public:
CFlowChartMagneticTapeType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 118
class CFlowChartManualInputType : public CPPTShape
class CFlowChartManualInputType : public CCustomShape
{
public:
CFlowChartManualInputType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 119
class CFlowChartManualOperationType : public CPPTShape
class CFlowChartManualOperationType : public CCustomShape
{
public:
CFlowChartManualOperationType()
......
#pragma once
#include "../PPTShape.h"
#include "../CustomShape.h"
// 128
class CFlowChartMergeType : public CPPTShape
class CFlowChartMergeType : public CCustomShape
{
public:
CFlowChartMergeType()
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment