This is ImportApp.m in view mode; [Download] [Up]
/* * (a) (C) 1990 by Adobe Systems Incorporated. All rights reserved. * * (b) If this Sample Code is distributed as part of the Display PostScript * System Software Development Kit from Adobe Systems Incorporated, * then this copy is designated as Development Software and its use is * subject to the terms of the License Agreement attached to such Kit. * * (c) If this Sample Code is distributed independently, then the following * terms apply: * * (d) This file may be freely copied and redistributed as long as: * 1) Parts (a), (d), (e) and (f) continue to be included in the file, * 2) If the file has been modified in any way, a notice of such * modification is conspicuously indicated. * * (e) PostScript, Display PostScript, and Adobe are registered trademarks of * Adobe Systems Incorporated. * * (f) THE INFORMATION BELOW IS FURNISHED AS IS, IS SUBJECT TO * CHANGE WITHOUT NOTICE, AND SHOULD NOT BE CONSTRUED * AS A COMMITMENT BY ADOBE SYSTEMS INCORPORATED. * ADOBE SYSTEMS INCORPORATED ASSUMES NO RESPONSIBILITY * OR LIABILITY FOR ANY ERRORS OR INACCURACIES, MAKES NO * WARRANTY OF ANY KIND (EXPRESS, IMPLIED OR STATUTORY) * WITH RESPECT TO THIS INFORMATION, AND EXPRESSLY * DISCLAIMS ANY AND ALL WARRANTIES OF MERCHANTABILITY, * FITNESS FOR PARTICULAR PURPOSES AND NONINFRINGEMENT * OF THIRD PARTY RIGHTS. */ /* * ImportApp.m * * This class performs some of the global functions necessary to * manage the application. * * Several application wide resources are retained as * instance variables. Examples are the hitPoint and * upathBuffer buffers, the hitSetting value and the * epsfContext. * * The epsfContext is a separate context that is * used solely for imaging included epsf files. It * prevents any errors in the epsf files from harming * the application's context. If errors occur when imaging * an epsf file, the context is destroyed and a new one * created. (See the context setting methods in this file * as well as in GraphicEpsf.m for specific details on * how to switch the contexts.) * * Version: 2.0 * Author: Ken Fromm * History: * 03-07-91 Added this comment. */ #import "ImportApp.h" #import "Document.h" #import "SaveAsPanel.h" #import "DrawingViewWraps.h" #import <appkit/Matrix.h> #import <appkit/NXCursor.h> #import <appkit/NXImage.h> #import <appkit/Window.h> #import <appkit/defaults.h> #import <appkit/nextstd.h> char ControlFont[ ] = "ControlPointsFont"; @implementation ImportApp + new { self = [super new]; [self setAutoupdate:YES]; [self initializeSelf]; return self; } - free { if (upathBuffer.pts) NX_FREE(upathBuffer.pts); if (upathBuffer.ops) NX_FREE(upathBuffer.ops); if (hitPoint.pts) NX_FREE(hitPoint.pts); if (hitPoint.ops) NX_FREE(hitPoint.ops); return [super free]; } /* * Allocate a buffer for use by any drawing view to send * data to the PostScript server. * * Allocate another buffer for use by any drawing view to * use as the hitdetection userpath. Initialize the description * since most of the components will remain the same. */ - initializeSelf { int i; contextFlag = YES; PSWDefineFont(ControlFont); NX_MALLOC(upathBuffer.pts, float, PTS_BUFFER); NX_MALLOC(upathBuffer.ops, char, OPS_BUFFER); NX_MALLOC(hitPoint.pts, float, PTS_HITPOINT); NX_MALLOC(hitPoint.ops, char, OPS_HITPOINT); for (i = 0; i < PTS_HITPOINT; i++) hitPoint.pts[i] = 0; hitPoint.num_pts = i; i = 0; hitPoint.ops[i++] = dps_setbbox; hitPoint.ops[i++] = dps_moveto; hitPoint.ops[i++] = dps_rlineto; hitPoint.ops[i++] = dps_rlineto; hitPoint.ops[i++] = dps_rlineto; hitPoint.ops[i++] = dps_closepath; hitPoint.num_ops = i; return self; } - setSaveAccessory:anObject { id savepanel; savepanel = [SaveAsPanel new]; [savepanel setAccessoryView:anObject]; [savepanel setSaveTo]; return self; } - setContextFlag:sender { if (!contextFlag) [[sender selectedCell] setTitle:"Separate Context On"]; else [[sender selectedCell] setTitle:"Separate Context Off"]; contextFlag = !contextFlag; return self; } - (BOOL) contextFlag { return contextFlag; } - setShowEpsfFlag:sender { if (!showEpsfFlag) [[sender selectedCell] setTitle:"Show Epsf On"]; else [[sender selectedCell] setTitle:"Show Epsf Off"]; showEpsfFlag = !showEpsfFlag; return self; } - (BOOL) showEpsfFlag { return showEpsfFlag; } - setTracingFlag:sender { if (!tracingFlag) [[sender selectedCell] setTitle:"Trace On"]; else [[sender selectedCell] setTitle:"Trace Off"]; tracingFlag = !tracingFlag; return self; } - (BOOL) tracingFlag { return tracingFlag; } - (UPath *) hitPoint; { return &hitPoint; } - (UPath *) upathBuffer; { return &upathBuffer; } - resourcePanel { if (!resourcePanel) [NXApp loadNibSection:"ResourcePanel.nib" owner:self withNames:NO]; return resourcePanel; } - cursor { id imageId, cursorId; NXPoint spot; if (operation == OP_IMPORT) { if (!importId) { imageId = [NXImage newFromSection:"cursorImport.tiff"]; importId = [NXCursor newFromImage:imageId]; spot.x = 2.0; spot.y = 1.0; [importId setHotSpot:&spot]; } cursorId = importId; } else cursorId = NXArrow; return cursorId; } - setOperation:(int) op { operation = op; [[documentId window] invalidateCursorRectsForView:[[documentId window] contentView]]; return self; } - (int) operation { return operation; } /* * Application delegate methods. */ - appDidInit:sender { documentId = [Document new]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.