home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
DOS/V Power Report 1997 March
/
VPR9703A.ISO
/
VPR_DATA
/
DOGA
/
SOURCES
/
REND.LZH
/
PIC1600
/
SEQUENCE.C
< prev
next >
Wrap
C/C++ Source or Header
|
1995-12-27
|
3KB
|
132 lines
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include "piclib.h"
int PicSequence_isAnim(PicSequence *seq)
{
if (seq->start != 0 && seq->number != 0) {
return TRUE;
}
return FALSE;
}
int PicSequence_forceAnim(PicSequence *seq)
{
if (seq->start == 0 || seq->number == 0) {
if (seq->number > 0) {
seq->start = seq->number;
seq->end = 999;
} else {
seq->start = seq->number = 1;
seq->end = 999;
}
}
return TRUE;
}
/*
Moving
test001
test[5-10].rgb
Stop
tmp
aaa.pic
test001.pic
*/
int PicSequence_set(PicSequence *seq, char *filename)
{
char *p, *name, *ext, *brace;
int i;
strcpy(seq->body, filename);
if ((name = strrchr(seq->body, '\\')) != NULL) {
name++;
} else if ((name = strrchr(seq->body, '/')) != NULL) {
name++;
} else {
name = seq->body;
}
ext = strchr(name, '.');
brace = strchr(name, '[');
i = strlen(name);
if (ext == NULL) {
strcpy(seq->ext, "PIC");
} else {
strcpy(seq->ext, ext+1);
*ext = '\0';
}
if (brace != NULL) {
seq->start = atoi(brace+1);
if (seq->start == 0) {
seq->start = 1;
}
seq->number = seq->start;
if ((p = strchr(brace, '-')) != NULL) {
seq->end = atoi(p+1);
if (seq->end == 0) {
seq->end = 999;
}
} else {
seq->end = 999;
}
*brace = '\0';
} else if (i > 3 && isdigit(name[i-3]) && isdigit(name[i-2]) && isdigit(name[i-1])) {
seq->number = (name[i-3]-'0') * 100 + (name[i-2]-'0') * 10 + (name[i-1]-'0');
name[i-3] = '\0';
if (ext == NULL) {
seq->start = seq->number;
seq->end = 999;
} else {
seq->start = seq->end = 0;
}
} else {
seq->number = 0;
if (ext == NULL) {
seq->start = 1;
seq->end = 999;
} else {
seq->start = seq->end = 0;
}
}
return TRUE;
}
int PicSequence_next(PicSequence *seq)
{
if (seq->start > 0 && seq->number > 0) {
if (seq->start <= seq->end) {
seq->number++;
} else {
seq->number--;
}
return TRUE;
}
return FALSE;
}
int PicSequence_prev(PicSequence *seq)
{
if (seq->start > 0 && seq->number > 0) {
if (seq->start <= seq->end) {
seq->number--;
} else {
seq->number++;
}
return TRUE;
}
return FALSE;
}
int PicSequence_get(PicSequence *seq, char *filename)
{
if (seq->number > 0) {
sprintf(filename, "%s%03d.%s", seq->body, seq->number, seq->ext);
} else {
sprintf(filename, "%s.%s", seq->body, seq->ext);
}
return TRUE;
}