This is TicCell.m in view mode; [Download] [Up]
/*
* Copyright (C) 1993 Robert Davis
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of Version 2, or any later version, of
* the GNU General Public License as published by the Free Software
* Foundation.
*/
static char RCSId[]="$Id: TicCell.m,v 1.4 1993/05/04 16:23:06 davis Exp $";
#import <appkit/Font.h>
#import <appkit/Text.h> /* NXTextFontInfo() */
#import <dpsclient/wraps.h>
#import <strings.h>
#import "TicCell.h"
#import "TicObject.h"
#define VALUE_COLUMN_END 95.0
#define STRING_COLUMN_START 100.0
#define DIGITS_ACCURACY 5
@implementation TicCell
- drawInside:(const NXRect *)cellFrame inView:controlView
{
float stringWidth;
NXRect rectArray[2];
char valueString[100];
sprintf (valueString, "%.*f", DIGITS_ACCURACY, [subObject doubleValue]);
/*
* Find width of the string, which depends on the font, which
* depends on whether we're printing or drawing.
*/
if (NXDrawingStatus == NX_DRAWING)
stringWidth = [[[support screenFont] set] getWidthOf:valueString];
else
stringWidth = [[support set] getWidthOf:valueString];
PSsetgray(cFlags1.highlighted ? NX_WHITE : NX_LTGRAY); /* Erase cell */
NXRectFill(cellFrame);
PSsetgray(cFlags1.disabled? NX_DKGRAY : NX_BLACK);
/*
* TicCells draw both the double value and the string value in
* the cell. Here's the string value ("contents"):
*/
PSmoveto(NX_X(cellFrame) + STRING_COLUMN_START,
NX_Y(cellFrame) + lineHeight - descender);
PSshow(contents);
/* ... and the double value: */
PSmoveto(NX_X(cellFrame) + VALUE_COLUMN_END - stringWidth,
NX_Y(cellFrame) + lineHeight - descender);
PSshow(valueString);
/* Draw the two dark gray lines above and below the cell. */
PSsetgray(NX_DKGRAY);
if (cFlags1.highlighted) {
/*
* Draw 1-pixel tall rectangles instead of lines (this is
* faster than PSmoveto(); PSlineto()).
*/
NXSetRect(&(rectArray[0]), NX_X(cellFrame), NX_Y(cellFrame),
NX_WIDTH(cellFrame), 1.0);
NXSetRect(&(rectArray[1]), NX_X(cellFrame), NX_MAXY(cellFrame) - 1.0,
NX_WIDTH(cellFrame), 1.0);
/*
* Using NXRectFillList is faster than separate calls to
* NXRectFill.
*/
NXRectFillList(rectArray, 2);
}
return self;
}
// Shuts up the compiler about unused RCSId
- (const char *) rcsid
{
return RCSId;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.