ftp.nice.ch/pub/next/tools/postscript/BBFig1.4.NIHS.bs.tar.gz#/BBFig1.4/PSText.m

This is PSText.m in view mode; [Download] [Up]

/*
 *  PSText.m, subclass of Text overriding paste: for adding functionality
 *  Author: Ali Ozer
 *  Created: Mar 22, 89
 *
 *  You may freely copy, distribute and reuse the code in this example.
 *  NeXT disclaims any warranty of any kind, expressed or implied,
 *  as to its fitness for any particular use.
 */

#import "PSText.h"

#import <string.h>
#import <mach/mach.h>
#import <appkit/Pasteboard.h>

@implementation PSText

/*
 * The following method overrides the Text paste: method. If there's any
 * PostScript on the pasteboard, this method will paste that in before pasting
 * ASCII. If there's no PostScript on the pasteboard, then this method will
 * simply call the overridden paste: method.
 */
- paste:(id)sender
{
    id pb = [Pasteboard new];  
    char *data;
    char *const *s;  /* We use s to go through types. */
    char *const *types = [pb types];
    int len;

    /* Check to see if we have any PostScript on the pasteboard... */

    for (s = types; *s; s++) if (!strcmp(*s, NXPostScriptPboard)) break;

    /* At this point, if *s != NULL, we found PostScript on the pasteboard. */

    if (*s && [pb readType:NXPostScriptPboard data:&data length:&len] && len) {
	[self replaceSel:data length:len];
        vm_deallocate (task_self(), (vm_address_t)data, (vm_size_t)len); 	
    } else {
        [super paste:sender];  /* No PS; pass the task on to Text. */
    }

    return self;
}

@end

These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.