Added an ASCII write mode for PRSFile

Originally committed to SVN as r290.
This commit is contained in:
Rodrigo Braz Monteiro 2006-04-02 15:18:38 +00:00
parent 8bb4896026
commit 021d6c28b2
2 changed files with 58 additions and 0 deletions

View File

@ -39,6 +39,7 @@
#include <stdio.h>
#include <vector>
#include <algorithm>
#include <fstream>
#include "prs_file.h"
#include "prs_entry.h"
#include "prs_image.h"
@ -322,3 +323,57 @@ PRSImage *PRSFile::GetImageByID(int id) {
return NULL;
}
//////////////////////
// Save as plain-text
void PRSFile::SaveText(std::string path) {
// Open file
std::ofstream file;
file.open(path.c_str(),std::fstream::out);
// Write version string
file << "PRS-ASCII v1" << std::endl;
// Write events
std::list<PRSEntry*>::iterator cur;
for (cur=entryList.begin();cur!=entryList.end();cur++) {
PRSImage *img;
PRSDisplay *display;
// Is image?
img = PRSEntry::GetImage(*cur);
if (img) {
// Get image filename
char idStr[64];
itoa(img->id,idStr,10);
std::string imgfile = path;
imgfile += ".id.";
imgfile += idStr;
imgfile += ".png";
// Copy to disk
FILE *fp = fopen(imgfile.c_str(),"wb");
if (fp) {
fwrite(img->data,1,img->dataLen,fp);
fclose(fp);
}
// Write text
file << "IMG: " << img->id << "," << img->imageType << "," << imgfile.c_str() << std::endl;
continue;
}
// Is display?
display = PRSEntry::GetDisplay(*cur);
if (display) {
// Write text
file << "DSP: " << display->startFrame << "," << display->endFrame << "," << display->start << "," << display->end;
file << display->id << "," << display->x << "," << display->y << "," << display->alpha << "," << display->blend;
file << std::endl;
continue;
}
}
// Close file
file.close();
}

View File

@ -67,6 +67,9 @@ public:
void Save(std::string path);
void Load(std::string path,bool reset=true);
void SaveText(std::string path);
void LoadText(std::string path,bool reset=true);
void GetDisplayBlocksAtFrame(int n,std::vector<PRSDisplay*> &blocks);
bool HasDataAtFrame(int n);
void DrawFrame(int n,PRSVideoFrame *frame);