This is hdshowany.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. */ /* filename : hdshowany.m date created : 9-feb-90 last updated : 26-oct-90 author : ross a jeynes porter : ken r fromm purpose : showany routine for generic driver. This is the central text-setting routine. Handles (font changes-temporarily removed), kerning, underline, superscript, etc. */ #import "hdshowany.h" #import "DrawingViewWraps.h" #import <objc/Storage.h> #import <dpsclient/dpsclient.h> #import <dpsclient/wraps.h> static void hd_showstr(int start, int end, ShowStruct *show, float spaceval, float trackval) { if (start == end) return; /* * Decide wether to use show, ashow, widthshow or awidthshow */ if (spaceval == 0.0) { if (trackval == 0.0) PSWShow((char *)((show->text)+start), (end-start)); else PSWAshow(trackval, 0, (char *)((show->text)+start), (end-start)); } else { if (trackval == 0.0) PSWWidthshow(spaceval, 0, 32, (char *)((show->text)+start), (end-start)); else PSWAwidthshow(spaceval, 0, 32, trackval, 0, (char *)((show->text)+start), (end-start)); } } void ShowAny(ShowStruct *show) { int lastshow=0; /* last "show" went from this point in show->text[] */ /* indexes into ShowStruct arrays */ int textptr =0; /* current character in show->text[] */ int prkernptr =0; /* pair kern */ int absmovptr =0; /* absolute moveto array index */ int spaceadjptr =0; /* space adjustment for justification */ int trackkernptr =0; /* track kern */ float spaceval =0.0; float trackval =0.0; while (textptr < show->textlen) { if (show->attr[textptr] == SA_NOATTR) { textptr++; continue; } if (lastshow != textptr) hd_showstr(lastshow, textptr, show, spaceval, trackval); if (show->attr[textptr] & SA_ABSMOV) { PSmoveto(show->absmov[absmovptr].x, show->absmov[absmovptr].y); absmovptr++; } if (show->attr[textptr] & SA_PRKERN) PSrmoveto(show->prkern[prkernptr++], 0); if (show->attr[textptr] & SA_TRACKADJ) trackval = (show->trackkernlen ? show->trackkern[trackkernptr++] : 0.0); if (show->attr[textptr] & SA_SPACEADJ) spaceval = (show->spaceadjlen ? show->spaceadj[spaceadjptr++] : 0.0); lastshow = textptr++; /* mark last show and increment show pointer */ } hd_showstr(lastshow, textptr, show, spaceval, trackval); }
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.