This is FooCell.m in view mode; [Download] [Up]
/*
* 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 "FooCell.h"
#import "FooObject.h"
#import <appkit/Text.h>
#import <dpsclient/psops.h>
#import <objc/hashtable.h>
#import <stdlib.h>
#import <stdio.h>
#import "VISCA.h"
#define FIELD1_LMARGIN 4.0
#define FIELD2_LMARGIN 34.0
@implementation FooCell
- init
{
[super init];
[self setType:NX_TEXTCELL];
return self;
}
- fooObject
{
return fooObject;
}
- setFooObject:anObject
{
fooObject = anObject;
return self;
}
- setFont:fontObj
{
[super setFont:fontObj];
/*
* save this info so we don't have to look it up every time we draw
* Note: support for a TextCell is a font object
*/
NXTextFontInfo(support, &ascender, &descender, &lineHeight);
return self;
}
- drawInside:(const NXRect *)cellFrame inView:controlView
{
char buf[100];
NXCoord baseX, baseY;
struct ct_hmsf *pos1, *pos2;
char *comment;
baseX = NX_X(cellFrame);
baseY = NX_Y(cellFrame) + lineHeight - descender;
/* erase the cell */
PSsetgray((cFlags1.state || cFlags1.highlighted) ? NX_WHITE : NX_LTGRAY);
NXRectFill(cellFrame);
PSsetgray(NX_BLACK);
/* draw the start, duration, and mark name in black */
PSmoveto(baseX + FIELD1_LMARGIN, baseY);
sprintf(buf,"%d",[fooObject tag]);
PSshow(buf);
PSmoveto(baseX + FIELD2_LMARGIN, baseY);
pos1 = [fooObject startFrame];
pos2 = [fooObject endFrame];
comment = [fooObject comment];
sprintf(buf,"%02X:%02X:%02X:%02X -> %02X:%02X:%02X:%02X %s",
pos1->hh, pos1->mm, pos1->ss, pos1->ff,
pos2->hh, pos2->mm, pos2->ss, pos2->ff, comment);
PSshow(buf);
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.