This is MultibitCompView.m in view mode; [Download] [Up]
//
// MultibitComp.m
//
// Copyright (c) 1991 by Jiro Nakamura
// All Rights Reserved.
//
// Original Author: Jiro Nakamura
// Created: Jan 6, 1991
//
// RCS Information
// Revision Number-> $Revision: 2.1 $
// Last Revised-> $Date: 91/07/02 17:38:40 $
// ------------------
// History:
// 3-Jun-91 Jiro Nakamura at The Shaman Group (jiro@shaman.com)
// Frozen for Release 2.0 of ScanApp
// 6-Jan-91 Jiro Nakamura
// Created.
static char rcsid[]="$Id: MultibitCompView.m,v 2.1 91/07/02 17:38:40 jiro Exp Locker: jiro $";
static char copyrightid[] = "Copyright (C) 1991 by Jiro Nakamura. All Rights Reserved.";
#import "MultibitCompView.h"
#import <math.h>
#import <dpsclient/psops.h>
#import <dpsclient/wraps.h>
@implementation MultibitCompView
+ newFrame: (const NXRect *) frameRect
{
self = [super newFrame: frameRect];
brightness = contrast = 128;
return self;
}
- drawSelf: (const NXRect *) rects : (int) rectCount
{
double bottomIntersection, topIntersection;
double m, b; // as in y = mx + b ....
#ifdef DEBUG
fprintf(stderr, "MultibitView: Updating, b = %d, c = %d\n",
brightness, contrast);
#endif
// m = tan( ((double) contrast * (M_PI/(256*2))));
// b = brightness - 128;
// bottomIntersection = ((-128.0 - b) / m) + 128;
// topIntersection = ((255.0 - 128.0 - b) / m) + 128;
m = tan( ((double) contrast * 45.0 / 128.0 * M_PI / 180.0));
b = 128 - 128 * (brightness - 128) / 128;
bottomIntersection = (-128.0 / m) + b;
topIntersection = ((255.0 - 128.0) / m) + b;
#ifdef DEBUG
fprintf(stderr, "MultibitView: m=%f, b=%f, bi=%f, ti=%f\n",
m, b, bottomIntersection, topIntersection);
#endif
[self lockFocus];
PSsetgray (NX_WHITE);
NXRectFill (&bounds);
PSsetgray( NX_BLACK);
PSsetlinewidth( 2.0 );
PSscale( 0.5, 0.5 );
PSmoveto( 0.0, 0.0 );
PSlineto( bottomIntersection, 0.0);
PSlineto( topIntersection, 255.0);
PSlineto( 255.0, 255.0 );
PSstroke();
[self unlockFocus];
return self;
}
- setBrightness: (int) b andContrast: (int) c
{
brightness = b;
contrast = c;
[self display];
return self;
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.