Annotation of Examples/AppKit/ScrollDoodScroll/PostScriptView.m, revision 1.1.1.1

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

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.