There are several methods which the programmer must supply to create or modify the content of a View. Which ones are needed and their complexity depends on the intricacy of the planned view. The most essential methods are:
Beyond these essentials there are other possibilities, such as assigning a delegate.
/* = = = = = = = = = = = = = = R E C V I E W = = = = = = = = = = = = = */
- initFrame:(const NXRect *)frameRect
/*
* Initializes the new RECView object. First, an initFrame: message is sent
* to super to initialize RECView as a View. Next, the RECView sets its own
* state -- that it is opaque and that the origin of its coordinate system
* lies in the center of its area.
*/
{
[super initFrame:frameRect];
[self setOpaque:YES];
[self translate:floor(frame.size.width/2) :floor(frame.size.height/2)];
return self;
}
- drawSelf:(const NXRect *)rects :(int)rectCount
/*
* Draws the RECView's background and axes. If there are any points,
* these are drawn too.
*/
{
if (rects == NULL) return self;
// PSsetgray(NX_WHITE);
PSsetgray(NX_LTGRAY);
if (drawBack) NXRectFill(&rects[0]);
PSsetgray(NX_DKGRAY);
// PSsetgray(NX_BLACK);
plev=0;
isErrm=FALSE;
[RECValue setStringValue: "*"];
if (rec(cstr)) [RECValue setStringValue: "T"];
else [RECValue setStringValue: "F"];
if (isErrm) {[comment setStringValue: errm]; isErrm=FALSE;}
PSstroke();
return self;
}
- sizeTo:(NXCoord)width :(NXCoord)height
/*
* Ensures that whenever the RECView is resized, the origin of its
* coordinate system is repositioned to the center of its area.
*/
{
[super sizeTo:width :height];
[self setDrawOrigin:-floor(width/2) : -floor(height/2)];
return self;
}
@end