This is ClockView.m in view mode; [Download] [Up]
/* Generated by Interface Builder */ #import <appkit/NXImage.h> #import "ClockView.h" @implementation ClockView - initFrame:(NXRect *)frameRect { [super initFrame:frameRect]; clockImage = [NXImage findImageNamed:"Clock"]; numbers[0] = [NXImage findImageNamed:"DigitalZero"]; numbers[1] = [NXImage findImageNamed:"DigitalOne"]; numbers[2] = [NXImage findImageNamed:"DigitalTwo"]; numbers[3] = [NXImage findImageNamed:"DigitalThree"]; numbers[4] = [NXImage findImageNamed:"DigitalFour"]; numbers[5] = [NXImage findImageNamed:"DigitalFive"]; numbers[6] = [NXImage findImageNamed:"DigitalSix"]; numbers[7] = [NXImage findImageNamed:"DigitalSeven"]; numbers[8] = [NXImage findImageNamed:"DigitalEight"]; numbers[9] = [NXImage findImageNamed:"DigitalNine"]; colon = [NXImage findImageNamed:"Colon"]; amImage = [NXImage findImageNamed:"AM"]; pmImage = [NXImage findImageNamed:"PM"]; hours = 10; minutes = 2; meridianImage = amImage; return self; } - setHour:sender { hours = [sender intValue]; [self display]; return self; } - setMinutes:sender { minutes = [sender intValue]; [self display]; return self; } - drawSelf:(NXRect *)rects :(int)count { NXPoint position; NXSize size, hoursTensSize, hoursUnitsSize, colonSize, minutesTensSize, minutesUnitsSize; float width, timeWidth; [clockImage composite:NX_COPY toPoint:&(bounds.origin)]; [meridianImage getSize:&size]; width = position.x = bounds.size.width - size.width - 3.0; position.y = (bounds.size.height - size.height) / 2.0; [meridianImage composite:NX_COPY toPoint:&position]; if (hours / 10) { [numbers[hours / 10] getSize:&hoursTensSize]; timeWidth = hoursTensSize.width; } [numbers[hours % 10] getSize:&hoursUnitsSize]; timeWidth += hoursUnitsSize.width; [colon getSize:&colonSize]; timeWidth += colonSize.width; [numbers[minutes / 10] getSize:&minutesTensSize]; timeWidth += minutesTensSize.width; [numbers[minutes % 10] getSize:&minutesUnitsSize]; timeWidth += minutesUnitsSize.width; position.x = (bounds.size.width - 6.0 - width) / 2.0 + 3.0; position.y = 3.0; if (hours / 10) { [numbers[hours / 10] composite:NX_COPY toPoint:&position]; position.x += hoursTensSize.width; } [numbers[hours % 10] composite:NX_COPY toPoint:&position]; position.x += hoursUnitsSize.width; [colon composite:NX_COPY toPoint:&position]; position.x += colonSize.width; [numbers[minutes / 10] composite:NX_COPY toPoint:&position]; position.x += minutesTensSize.width; [numbers[minutes % 10] composite:NX_COPY toPoint:&position]; return self; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.