This is image2m.m in view mode; [Download] [Up]
#import <appkit/appkit.h>
BOOL
transcribeImageFromFileToCFile(char vname[], char in[], char out[])
{
BOOL ret = NO;
FILE *f;
if ((f = fopen(in, "r")) != NULL)
{
unsigned char i;
int count = 0;
NXStream *s = NULL;
s = NXOpenMemory(NULL, 0L, NX_WRITEONLY);
NXPrintf(s, "static unsigned char %s_buf[] = {\n", vname);
while (fread(&i, sizeof(unsigned char), (size_t)1, f) == 1)
{
int o = (int)i;
NXPrintf(s, "0x%02hx, ", o);
count += 1;
if ((count % 10) == 0)
{
NXPrintf(s, "\n");
}
}
NXPrintf(s, "\n};\n\n");
NXPrintf(s, "NXImage *\n%s_fn(void)\n", vname);
NXPrintf(s, "{\n");
NXPrintf(s, " NXImage *ret = nil;\n");
NXPrintf(s, " NXStream *stream = NXOpenMemory(%s_buf, sizeof(%s_buf), NX_READONLY);\n", vname, vname);
NXPrintf(s, " ret = [[NXImage alloc] initFromStream:stream];\n");
NXPrintf(s, " NXCloseMemory(stream, NX_FREEBUFFER);\n");
NXPrintf(s, " return ret;\n");
NXPrintf(s, "}\n\n");
if (NXSaveToFile(s, out) == 0)
{
ret = YES;
}
NXCloseMemory(s, NX_FREEBUFFER);
}
return ret;
}
int
main(int argc, char *argv[])
{
BOOL verbose = YES;
if (argc < 2)
{
fprintf(stderr, "Usage: %s [-h] [-s] filename {filename ...}\n", argv[0]);
exit(1);
} else
{
int i;
for (i = 1; i < argc; i++)
{
if (strcmp(argv[i], "-h") == 0)
{
fprintf(stderr, "Usage: %s [-h] [-s] filename {filename ...}\n", argv[0]);
fprintf(stderr, "-h\tprint this message\n");
fprintf(stderr, "-s\tdo not print out progress verbosely\n");
} else
if (strcmp(argv[i], "-v") == 0)
{
verbose = NO;
} else
{
BOOL err;
char *dot;
char vname[MAXPATHLEN + 1];
char pathname[MAXPATHLEN + 1];
strcpy(vname, argv[i]);
if ((dot = strrchr(vname, '.')) != NULL)
{
if (strcmp(dot, ".tiff") != 0 &&
strcmp(dot, ".TIFF") != 0 &&
strcmp(dot, ".eps") != 0 &&
strcmp(dot, ".EPS") != 0)
{
if (verbose)
{
fprintf(stderr, "error: %s not a TIFF or EPS file.\n", argv[i]);
}
continue;
}
}
while ((dot = strchr(vname, '.')) != NULL)
{
*dot = '_';
}
strcpy(pathname, vname);
strcat(pathname, ".m");
if (verbose)
{
fprintf(stderr, "working: %s --> ", argv[i]);
}
err = transcribeImageFromFileToCFile(vname, argv[i], pathname);
if (verbose)
{
fprintf(stderr, "%s (%s).\n", pathname, (err) ? "OK" : "ERROR");
}
}
}
}
return 0;
}
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.