|
rllib
1
|
#include <rlsvgcat.h>
Public Member Functions | |
| rlSvgCat () | |
| virtual | ~rlSvgCat () |
| int | open (const char *infile, const char *outfile=0) |
| int | reopenSocket (const char *infile, int s) |
| void | cat () |
| void | close () |
Private Member Functions | |
| int | outUntil (int i, const char *tag) |
| int | outUntilEnd (int i) |
| int | outValue (int i) |
| void | catline () |
Private Attributes | |
| void * | fin |
| void * | fout |
| int | s |
| char | line [256 *256] |
This class will normalize SVG XML files so that
Definition at line 26 of file rlsvgcat.h.
| rlSvgCat::rlSvgCat | ( | ) |
Definition at line 21 of file rlsvgcat.cpp.
| rlSvgCat::~rlSvgCat | ( | ) | [virtual] |
Definition at line 27 of file rlsvgcat.cpp.
{
close();
}
| void rlSvgCat::cat | ( | ) |
| void rlSvgCat::catline | ( | ) | [private] |
Definition at line 182 of file rlsvgcat.cpp.
{
int i = 0;
FILE *out = (FILE *) fout;
while(line[i] != '\0' && line[i] != '\n')
{
while(line[i] == ' ' || line[i] == '\t' ) i++; // eliminate leading spaces
// compare tags
if (strncmp(&line[i],"<?",2) == 0)
{
fputc(line[i++],out);
fputc(line[i++],out);
i = outUntil(i,"?>");
fputc('\n',out);
}
else if(strncmp(&line[i],"<!",2) == 0) // comment
{
fprintf(out,"%s",&line[i]);
if(strstr(&line[i],">") != NULL) return;
while(fgets(line,sizeof(line)-1,(FILE *) fin) != 0)
{
fprintf(out,"%s",line);
if(strstr(line,">") != NULL) return;
}
return;
}
else if(strncmp(&line[i],"<desc",5) == 0)
{
fprintf(out,"%s",&line[i]);
return;
}
else if(strncmp(&line[i],"</",2) == 0)
{
if(strncmp(&line[i],"</svg>",6) == 0)
{
fprintf(out,"</svg>");
return;
}
if(strncmp(&line[i],"</SVG>",6) == 0)
{
fprintf(out,"</SVG>");
return;
}
fputc(line[i++],out);
fputc(line[i++],out);
i = outUntil(i,">");
fputc('\n',out);
}
else if(strncmp(&line[i],"<",1) == 0)
{
fputc(line[i++],out);
i = outUntilEnd(i);
}
else if(strncmp(&line[i],"/>",2) == 0)
{
fputc(line[i++],out);
fputc(line[i++],out);
fputc('\n',out);
}
else if(strncmp(&line[i],">",1) == 0)
{
fputc(line[i++],out);
fputc('\n',out);
}
else
{
i = outValue(i);
fputc('\n',out);
}
i++;
}
}
| void rlSvgCat::close | ( | ) |
| int rlSvgCat::open | ( | const char * | infile, |
| const char * | outfile = 0 |
||
| ) |
Definition at line 46 of file rlsvgcat.cpp.
| int rlSvgCat::outUntil | ( | int | i, |
| const char * | tag | ||
| ) | [private] |
Definition at line 103 of file rlsvgcat.cpp.
| int rlSvgCat::outUntilEnd | ( | int | i | ) | [private] |
Definition at line 126 of file rlsvgcat.cpp.
| int rlSvgCat::outValue | ( | int | i | ) | [private] |
Definition at line 150 of file rlsvgcat.cpp.
{
//printf("outValue=%s",&line[i]);
FILE *out = (FILE *) fout;
while(line[i] != '\0' && line[i] != '\n')
{
if(line[i] == '<')
{
i--;
break;
}
else if(line[i] == '>')
{
fputc('\n',out);
fputc(line[i],out);
break;
}
else if(line[i] == '/' && line[i+1] == '>')
{
fputc('\n',out);
fputc(line[i++],out);
fputc(line[i],out);
break;
}
else
{
fputc(line[i++],out);
}
}
return i;
}
| int rlSvgCat::reopenSocket | ( | const char * | infile, |
| int | s | ||
| ) |
void* rlSvgCat::fin [private] |
Definition at line 40 of file rlsvgcat.h.
void * rlSvgCat::fout [private] |
Definition at line 40 of file rlsvgcat.h.
char rlSvgCat::line[256 *256] [private] |
Definition at line 42 of file rlsvgcat.h.
int rlSvgCat::s [private] |
Definition at line 41 of file rlsvgcat.h.
1.7.5.1