diff utils/frmconv/frmconv.c @ 0:4a0efb7baf70

* Datasets becomes the new trunk and retires after that :-)
author mvbarracuda@33b003aa-7bff-0310-803a-e67f0ece8222
date Sun, 29 Jun 2008 18:44:17 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/utils/frmconv/frmconv.c	Sun Jun 29 18:44:17 2008 +0000
@@ -0,0 +1,125 @@
+//frmconv - A tool to convert the frm file format to png/mng
+//Copyright (C) 2005 IanOut Team (RogerWilco)
+//
+//This program is free software; you can redistribute it and/or
+//modify it under the terms of the GNU General Public License
+//version 2 as published by the Free Software Foundation; 
+//
+//This program is distributed in the hope that it will be useful,
+//but WITHOUT ANY WARRANTY; without even the implied warranty of
+//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+//GNU General Public License for more details.
+//
+//You should have received a copy of the GNU General Public License
+//along with this program; if not, write to the Free Software
+//Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
+
+
+// frmconv is inspired by frm2bmp by Borg Locutus (dystopia@iname.com) and 
+// the documentation of the frm file format (written by Noid and Anchorite)
+// was used extensively
+
+
+
+// ToDo: *Add mng support for true animations
+
+#ifdef _WIN32
+#define ssize_t int
+#include <io.h>
+#include <sys/types.h>
+#include <Winsock2.h>
+#else
+#include <netinet/in.h>
+#include <getopt.h>
+#endif
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+
+#include "frm.h"
+#include "out_png.h"
+
+const char helpstr[] = "frmconv v1.0 - (c) 2005 by IanOut Team (RogerWilco)\nUsage: %s [-m] -f <frm-file> [-o <basename>]\n";
+const char verstr[] = "frmconv v1.0 - (c) 2005 by IanOut Team (RogerWilco)\n";
+
+int main(int argc, char *argv[]) {
+	char *buf=NULL, *inputname=NULL, *outputname=NULL;
+	frm_frame *frame;
+	frm_anim *anim;
+	FILE *outfile=NULL, *inputfile;
+	short int mng=0;
+	int c, i;
+	
+	if (argc > 6) {
+		printf(helpstr,argv[0]);
+		return 0;	
+	}
+	
+	while ( (c = getopt(argc, argv, "mf:o:")) ) {
+		if (c == -1)
+			break;
+			
+		switch (c) {
+			case 'm':
+				mng = 1;
+				printf("Sorry, mng support is not working.\n");
+				return 2;
+				break;
+			case 'f':
+				inputname = optarg;
+				break;
+			case 'o':
+				outputname = optarg;
+				break;
+		}
+	}
+	
+	if (!inputname) {
+		printf("frmconv v1.0 - (c) 2005 by IanOut Team (RogerWilco)\nUsage: %s [-m] -f <frm-file> [-o <basename>]\n", argv[0]);
+		return 1;
+	}
+	
+	if (0 != (inputfile = fopen(inputname, "rb"))) {
+		anim = loadFRMAnim(inputfile);
+	} else {
+		printf("Couldn't open %s.\n", inputname);
+		return 2;
+	}
+		
+	
+	if (anim) {
+		if (outputname) {
+			buf = malloc(strlen(outputname)+8);
+			if (!buf) {
+				freefrmanim(anim);
+				return 1;
+			}
+			strcpy(buf, outputname);
+		}
+		
+		frame = anim->frames;
+		
+		for (i=0; frame && i<anim->nrofframes && i<999; ++i) {
+			if (outputname) {
+				sprintf(buf, "%s%03d.png", outputname, i);
+				outfile = fopen(buf, "wb");
+			}
+			
+			if (mng) {
+			} else {
+				writePNGFile(frame, anim->palette, outputname?outfile:stdout);
+			}
+			
+			if (outfile)
+				fclose(outfile);
+				
+			frame = frame->next_frame;
+		}
+	}
+	
+	fclose(inputfile);
+	freefrmanim(anim);
+	return 0;
+}