This is JFIFBitmap.m in view mode; [Download] [Up]
#import "JFIFBitmap.h" #import "nxJfif.h" #import "jfifNx.h" #import <c.h> #import <libc.h> // This subclass extends NXBitmapImageRep. Specifically, this class may // be initialized from a jpeg stream and may create a jpeg stream. Really // just an object-oriented interface to write_jfif() and read_jfif(). @implementation JFIFBitmap - writeJFIF:(NXStream *)stream usingQuality:(int)quality { // write_jfif only processes bitmaps with eight bits per sample if ([self bitsPerSample] != 8) { return(nil); } // the bitsPerPixel argument allows you to specify the alpha component // the bytesPerRow argument allows you to specify row padding write_jfif(stream, [self data], [self pixelsWide], [self pixelsHigh], [self samplesPerPixel], [self bitsPerSample], [self bitsPerPixel], [self bytesPerRow], quality); return(self); } - readJFIF:(NXStream *)stream { unsigned char *data; int width, height, bps, spp; NXColorSpace colorSpace; read_jfif(stream, &data, &width, &height, &bps, &spp); if (spp == 3) { colorSpace = NX_RGBColorSpace; } else if (spp == 1) { colorSpace = NX_OneIsWhiteColorSpace; } [self initData:data pixelsWide:width pixelsHigh:height bitsPerSample:bps samplesPerPixel:spp hasAlpha:NO isPlanar:NO colorSpace:colorSpace bytesPerRow:(width * spp * bps) / 8 bitsPerPixel:spp * bps]; return(self); } - free { if (jfifData != NULL) { free(jfifData); } return([super free]); } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.