Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
DraftTemplateLoader.cpp
Package: solidgraph_sources.zip [view]
Upload User: kairuinn
Upload Date: 2009-02-07
Package Size: 2922k
Code Size: 7k
Category:
Graph program
Development Platform:
Visual C++
- #include "stdafx.h"
- #include "DraftTemplateLoader.h"
- #include "..//Solidgraph.h"
- typedef struct
- {
- char szSign[16];
- int nVersion;
- }DRAFT_TEMPLATE_HEADER;
- typedef struct
- {
- int imageType;
- unsigned int imageSize;
- BYTE* imageBits;
- }THUMBNAIL_DESCRIPTOR;
- CxImage* CDraftTemplateLoader::GetThumbnailFromFile(const char* filePath)
- {
- CFile file;
- CFileException fe;
- if (!file.Open(filePath, CFile::modeRead, &fe))
- {
- ASSERT(0);
- return NULL;
- }
- DRAFT_TEMPLATE_HEADER main_header;
- memset(&main_header,0,sizeof(DRAFT_TEMPLATE_HEADER));
- if (file.Read(&main_header,sizeof(DRAFT_TEMPLATE_HEADER))!=sizeof(DRAFT_TEMPLATE_HEADER))
- {
- ASSERT(0);
- file.Close();
- return NULL;
- }
- if(strcmp(main_header.szSign,"DRAFT_TEMPL"))
- {
- ASSERT(0);
- file.Close();
- return NULL;
- }
- THUMBNAIL_DESCRIPTOR th_descr;
- memset(&th_descr,0,sizeof(THUMBNAIL_DESCRIPTOR));
- if (file.Read(&th_descr.imageType,sizeof(int))!=sizeof(int))
- {
- ASSERT(0);
- file.Close();
- return NULL;
- }
- if (file.Read(&th_descr.imageSize,sizeof(unsigned int))!=sizeof(unsigned int))
- {
- ASSERT(0);
- file.Close();
- return NULL;
- }
- try
- {
- th_descr.imageBits = new BYTE[th_descr.imageSize];
- }
- catch (std::bad_alloc)
- {
- AfxMessageBox("bad_alloc exception in GetThumbnailFromFile function");
- ASSERT(0);
- file.Close();
- return NULL;
- }
- if (file.Read(th_descr.imageBits,th_descr.imageSize*sizeof(BYTE))!=th_descr.imageSize*sizeof(BYTE))
- {
- delete[] th_descr.imageBits;
- ASSERT(0);
- file.Close();
- return NULL;
- }
- CxImage* img = new CxImage(th_descr.imageBits, th_descr.imageSize, th_descr.imageType);
- if (!img->IsValid())
- {
- AfxMessageBox(img->GetLastError());
- delete img;
- img = NULL;
- delete[] th_descr.imageBits;
- ASSERT(0);
- return NULL;
- }
- delete[] th_descr.imageBits;
- file.Close();
- return img;
- }
- typedef struct
- {
- int a_f;
- int b_f;
- int c_f;
- int d_f;
- int e_f;
- double A_f;
- double B_f;
- double C_f;
- double D_f;
- double E_f;
- } TEMPLATE_RESERVE_FIELDS;
- static TEMPLATE_RESERVE_FIELDS templ_reserve;
- bool CDraftTemplateLoader::SaveDraftTemplateInFile(const char* thumbnailFile,CDiagramEntityContainer* obj_container,
- const char* targetFile)
- {
- CFile f;
- if( !f.Open( targetFile, CFile::modeCreate | CFile::modeWrite ) )
- {
- return false;
- }
- CArchive ar( &f, CArchive::store);
- DRAFT_TEMPLATE_HEADER main_header;
- memset(&main_header,0,sizeof(DRAFT_TEMPLATE_HEADER));
- strcpy(main_header.szSign,_T("DRAFT_TEMPL"));
- main_header.nVersion = 1;
- ar.Write(&main_header,sizeof(DRAFT_TEMPLATE_HEADER));
- // try to write image bits
- {
- THUMBNAIL_DESCRIPTOR th_descr;
- memset(&th_descr,0,sizeof(THUMBNAIL_DESCRIPTOR));
- CFile Picfile;
- CFileException fe;
- if (!Picfile.Open(thumbnailFile, CFile::modeRead, &fe))
- {
- ASSERT(0);
- ar.Close();
- return false;
- }
- th_descr.imageSize = (unsigned int)Picfile.GetLength();
- th_descr.imageType = CXIMAGE_FORMAT_JPG;
- try
- {
- th_descr.imageBits = new BYTE[th_descr.imageSize];
- }
- catch (std::bad_alloc)
- {
- AfxMessageBox("bad_alloc exception in AddNewTexture function");
- ASSERT(0);
- ar.Close();
- return false;
- }
- if (Picfile.Read(th_descr.imageBits,th_descr.imageSize*sizeof(BYTE))!=th_descr.imageSize*sizeof(BYTE))
- {
- delete[] th_descr.imageBits;
- ASSERT(0);
- ar.Close();
- return false;
- }
- ar.Write(&th_descr.imageType,sizeof(int));
- ar.Write(&th_descr.imageSize,sizeof(unsigned int));
- ar.Write(th_descr.imageBits,th_descr.imageSize*sizeof(BYTE));
- delete[] th_descr.imageBits;
- Picfile.Close();
- }
- memset(&templ_reserve,0,sizeof(TEMPLATE_RESERVE_FIELDS));
- ar.Write(&templ_reserve,sizeof(TEMPLATE_RESERVE_FIELDS));
- int tmpPrM = obj_container->GetPrinterMode();
- ar.Write(&tmpPrM,sizeof(int));// save page orient
- const CSize* pS = obj_container->GetPageSizes();
- ASSERT(pS->cx>0);
- ASSERT(pS->cy>0);
- ar.Write(&(pS->cx),sizeof(INT));
- ar.Write(&(pS->cy),sizeof(INT));
- // objects
- {
- int objCnt = obj_container->GetSize();
- for (int j=0;j<objCnt;j++)
- {
- CDiagramEntity* de = obj_container->GetAt(j);
- DIAGRAM_OBJECT_TYPE dot = de->GetEntityType();
- switch(dot)
- {
- case DIAGRAM_LINE:
- case DIAGRAM_RECT:
- case DIAGRAM_LABEL:
- case DIAGRAM_PICTURE:
- ar.Write(&dot,sizeof(int)); // save object type
- de->Serialize(ar);
- break;
- default:
- ASSERT(0);
- break;
- }
- }
- }
- ar.Close();
- return true;
- }
- #include "..//ReportEditor/ReportEntityLine.h"
- #include "..//ReportEditor/ReportEntityBox.h"
- #include "..//ReportEditor/ReportEntityLabel.h"
- #include "..//ReportEditor/ReportEntityPicture.h"
- CDiagramEntityContainer* CDraftTemplateLoader::LoadDraftTemplate(const char* filePath)
- {
- CFile f;
- if( !f.Open( filePath, CFile::modeRead ) )
- {
- return NULL;
- }
- CArchive ar( &f, CArchive::load);
- DRAFT_TEMPLATE_HEADER main_header;
- memset(&main_header,0,sizeof(DRAFT_TEMPLATE_HEADER));
- if (ar.Read(&main_header,sizeof(DRAFT_TEMPLATE_HEADER))!=sizeof(DRAFT_TEMPLATE_HEADER))
- {
- ASSERT(0);
- ar.Close();
- return NULL;
- }
- if(strcmp(main_header.szSign,"DRAFT_TEMPL"))
- {
- ASSERT(0);
- ar.Close();
- return NULL;
- }
- THUMBNAIL_DESCRIPTOR th_descr;
- memset(&th_descr,0,sizeof(THUMBNAIL_DESCRIPTOR));
- if (ar.Read(&th_descr.imageType,sizeof(int))!=sizeof(int))
- {
- ASSERT(0);
- ar.Close();
- return NULL;
- }
- if (ar.Read(&th_descr.imageSize,sizeof(unsigned int))!=sizeof(unsigned int))
- {
- ASSERT(0);
- ar.Close();
- return NULL;
- }
- try
- {
- th_descr.imageBits = new BYTE[th_descr.imageSize];
- }
- catch (std::bad_alloc)
- {
- AfxMessageBox("bad_alloc exception in GetThumbnailFromFile function");
- ASSERT(0);
- ar.Close();
- return NULL;
- }
- if (ar.Read(th_descr.imageBits,th_descr.imageSize*sizeof(BYTE))!=th_descr.imageSize*sizeof(BYTE))
- {
- delete[] th_descr.imageBits;
- ASSERT(0);
- ar.Close();
- return NULL;
- }
- delete[] th_descr.imageBits;
- ar.Read(&templ_reserve,sizeof(TEMPLATE_RESERVE_FIELDS));
- int tmpPrM;
- ar.Read(&tmpPrM,sizeof(int));// save page orient
- CSize nSz;
- ar.Read(&(nSz.cx),sizeof(INT));
- ar.Read(&(nSz.cy),sizeof(INT));
- ASSERT(nSz.cx>0);
- ASSERT(nSz.cy>0);
- CDiagramEntityContainer* newCont = new CDiagramEntityContainer(tmpPrM,&(nSz),&( theApp.m_clip ));
- int obj_t = 0;
- while (ar.Read(&obj_t,sizeof(int)))
- {
- switch(obj_t)
- {
- case DIAGRAM_LINE:
- {
- CReportEntityLine* nL = new CReportEntityLine;
- nL->Serialize(ar);
- newCont->Add(nL);
- }
- break;
- case DIAGRAM_RECT:
- {
- CReportEntityBox* bx = new CReportEntityBox;
- bx->Serialize(ar);
- newCont->Add(bx);
- }
- break;
- case DIAGRAM_LABEL:
- {
- CReportEntityLabel* lb = new CReportEntityLabel;
- lb->Serialize(ar);
- newCont->Add(lb);
- }
- break;
- case DIAGRAM_PICTURE:
- {
- CReportEntityPicture* pic = new CReportEntityPicture;
- pic->Serialize(ar);
- newCont->Add(pic);
- }
- break;
- default:
- ASSERT(0);
- ar.Close();
- return NULL;
- }
- }
- ar.Close();
- return newCont;
- }