This is eps2tiff.m in view mode; [Download] [Up]
#include <stdio.h>
#import <dpsclient/event.h>
#import <appkit/appkit.h>
#import <appkit/NXImage.h>
#import <appkit/NXEPSImageRep.h>
#import <appkit/NXBitmapImageRep.h>
#import <appkit/View.h>
#import <appkit/Window.h>
#import <appkit/graphics.h>
#import <appkit/tiff.h>
#import <streams/streams.h>
// to compile cc -g -o eps2tiff eps2tiff.m -lNeXT_s
void main(argc, argv)
int argc;
char *argv[];
{
NXStream *fp, *fpz;
id myRep, myWindow;
NXSize theSize;
char filename[80];
extern char *optarg;
extern int optind;
int scale = 1;
int c;
int depth = 24;
//added by GWR, 10/27/92
int compressionType = NX_TIFF_COMPRESSION_NONE;
int errflg = 0;
id myTiffRep;
float compressionFactor = 0.0;
optind = 1;
while ((c = getopt(argc, argv, "zj:d:s:")) != EOF) {
switch (c) {
case 'd': {
(void) sscanf (optarg, "%d", &depth);
break;
}
case 's': {
(void) sscanf (optarg, "%d", &scale);
break;
}
case 'z': {
compressionType = NX_TIFF_COMPRESSION_LZW;
break;
}
case 'j': {
compressionType = NX_TIFF_COMPRESSION_JPEG;
(void) sscanf (optarg, "%f", &compressionFactor);
break;
}
default: {
errflg++;
}
}
if (errflg) {
fprintf(stderr, "Usage:eps2tiff [-d nn] [-s nn] [-z] [-j nn] infile outfile\n");
exit(2);
}
}
strcpy(filename, argv[optind++]);
fprintf(stderr,"input = %s scale = %d\n", filename, scale);
[Application new];
myWindow = [[Window alloc] init];
[myWindow setDepthLimit: NX_TwentyFourBitRGBDepth];
fp = NXOpenMemory(NULL, 0, NX_READWRITE);
myRep = [[NXImage alloc] initFromFile:filename];
[myRep getSize: &theSize]; /* this is where you get the size */
[myRep setScalable: YES]; /* this is where you change it! */
theSize.width *= scale;
theSize.height *= scale;
[myRep setSize: &theSize];
[myRep setBackgroundColor: NX_COLORWHITE];
[myRep setCacheDepthBounded:NO];
if ([myRep isCacheDepthBounded]) fprintf(stderr,"CacheDepth is Bounded\n");
switch (depth) {
case 2: {
[myRep useCacheWithDepth: NX_TwoBitGrayDepth];
break;
}
case 8: {
[myRep useCacheWithDepth: NX_EightBitGrayDepth];
break;
}
case 12: {
[myRep useCacheWithDepth: NX_TwelveBitRGBDepth];
break;
}
case 24: {
[myRep useCacheWithDepth: NX_TwentyFourBitRGBDepth];
break;
}
default: {
fprintf(stderr, "You want a depth of %d but I can only give\
you 2, 8, 12 or 24 bit depth...\nyou will get 24 bits this time\n", depth);
}
}
[myRep writeTIFF: fp allRepresentations: NO];
if (((compressionType == NX_TIFF_COMPRESSION_LZW)||(compressionType == NX_TIFF_COMPRESSION_JPEG)) &&(depth==2)){
fprintf(stderr, "Unable to compress a 2-bit grayscale image: saving as uncompressed\n");
compressionType = NX_TIFF_COMPRESSION_NONE;
}
switch (compressionType) {
case NX_TIFF_COMPRESSION_NONE: {
NXSaveToFile(fp, argv[optind]);
NXCloseMemory(fp, NX_FREEBUFFER);
break;
}
case NX_TIFF_COMPRESSION_JPEG:{
fpz = NXOpenMemory(NULL, 0, NX_READWRITE);
if (!(myTiffRep = [[NXBitmapImageRep alloc] initFromStream:fp]))
fprintf(stderr,"myTiffRep failed initialization\n");
NXCloseMemory(fp, NX_FREEBUFFER);
fprintf(stderr, "Compressing file %s as jpeg(%f)... ",filename, compressionFactor);
[myTiffRep writeTIFF:fpz usingCompression:NX_TIFF_COMPRESSION_JPEG andFactor:compressionFactor];
fprintf(stderr, "Writing %s \n",argv[optind]);
NXSaveToFile(fpz, argv[optind]);
NXCloseMemory(fpz, NX_FREEBUFFER);
break;
}
case NX_TIFF_COMPRESSION_LZW:{
fpz = NXOpenMemory(NULL, 0, NX_READWRITE);
if (!(myTiffRep = [[NXBitmapImageRep alloc] initFromStream:fp]))
fprintf(stderr,"myTiffRep failed initialization\n");
NXCloseMemory(fp, NX_FREEBUFFER);
fprintf(stderr, "Compressing file %s as lzw-tiff... ",filename);
[myTiffRep writeTIFF:fpz usingCompression:NX_TIFF_COMPRESSION_LZW];
fprintf(stderr, "Writing %s \n",argv[optind]);
NXSaveToFile(fpz, argv[optind]);
NXCloseMemory(fpz, NX_FREEBUFFER);
break;
}
}
}These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.