|
|
1.1 ! root 1: // PostScriptView.m ! 2: // By Jayson Adams, NeXT Developer Support Team ! 3: // You may freely copy, distribute and reuse the code in this example. ! 4: // NeXT disclaims any warranty of any kind, expressed or implied, as to its ! 5: // fitness for any particular use. ! 6: ! 7: #import <dpsclient/psops.h> ! 8: #import <appkit/NXImage.h> ! 9: ! 10: #import "PostScriptView.h" ! 11: ! 12: @implementation PostScriptView ! 13: ! 14: ! 15: /* instance methods */ ! 16: ! 17: - initFrame:(const NXRect *)frameRect ! 18: { ! 19: [super initFrame:frameRect]; ! 20: ! 21: /* ! 22: * create an nximage to hold the PostScript image contained in our MachO ! 23: * segment, created by Makefile.preamble; we'll "draw" by compositing the ! 24: * resulting bits into ourself. By making the image scalable, we can scale ! 25: * the bitmap image by changing our nximage's size ! 26: */ ! 27: ! 28: postscriptImage = [[[NXImage alloc] initFromSection:"SampleImage"] ! 29: setScalable:YES]; ! 30: ! 31: return self; ! 32: } ! 33: ! 34: - free ! 35: { ! 36: [postscriptImage free]; ! 37: ! 38: return [super free]; ! 39: } ! 40: ! 41: - scale:(float)factor ! 42: { ! 43: NXSize aSize; ! 44: ! 45: /* ! 46: * if we resize the nximage, it will reexcute the PostScript ! 47: * image with the new scale factor (resulting in a bitmap image that's ! 48: * larger or smaller than before) ! 49: */ ! 50: [postscriptImage getSize:&aSize]; ! 51: aSize.width *= factor; ! 52: aSize.height *= factor; ! 53: [postscriptImage setSize:&aSize]; ! 54: ! 55: aSize.width = NX_WIDTH(&bounds) * factor; ! 56: aSize.height = NX_HEIGHT(&bounds) * factor; ! 57: [self sizeTo:aSize.width :aSize.height]; ! 58: ! 59: /* show the new image */ ! 60: [self display]; ! 61: ! 62: return self; ! 63: } ! 64: ! 65: - drawSelf:(const NXRect *)rects :(int)rectCount ! 66: { ! 67: /* erase update rect since the nximage might be smaller than our bounds */ ! 68: PSsetgray(NX_WHITE); ! 69: NXRectFill(&(rects[0])); ! 70: ! 71: /* ! 72: * copy the bits from the nximage into ourself; note that we need not check ! 73: * to see if we're printing since the nximage will do the right thing (i.e. ! 74: * spit out PostScript) if we are ! 75: */ ! 76: ! 77: [postscriptImage composite:NX_SOVER ! 78: fromRect:&(rects[0]) ! 79: toPoint:&(rects[0].origin)]; ! 80: ! 81: return self; ! 82: } ! 83: ! 84: @end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.