home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1994 June / NEBULA_SE.ISO / SourceCode / Cookbook / 17.plot / PlotView.m < prev    next >
Encoding:
Text File  |  1993-01-19  |  1.5 KB  |  67 lines

  1.  
  2. /* Generated by Interface Builder */
  3.  
  4. #import "PlotView.h"
  5. #import <dpsclient/wraps.h>
  6. #import <appkit/Control.h>
  7. #import "plotview.h"    /* pswrap stuff */
  8. #import <stdlib.h>    /* for malloc and free */
  9. #import    <strings.h>    /* string handling functions */
  10.  
  11.  
  12. @implementation PlotView
  13.  
  14. +newFrame:(const NXRect *)f
  15. {
  16.     int i;
  17.     self = [super newFrame:f];
  18.     createPSDefs();        /* init up the definitions for PS */
  19.     slope = DEFAULT_SLOPE;
  20.     XIntercept = DEFAULT_XINTERCEPT;
  21.     leftBorder = 40.0;
  22.     bottomBorder = 40.0;
  23.     rightBorder = 10.0;
  24.     topBorder = 10.0;
  25.     
  26.     plotArea.origin.x = leftBorder;
  27.     plotArea.origin.y = bottomBorder;
  28.     plotArea.size.width = bounds.size.width - leftBorder - rightBorder;
  29.     plotArea.size.height = bounds.size.height - bottomBorder - topBorder;
  30.  
  31.     return self;
  32. }
  33.  
  34. // target/action methods
  35.  
  36. - slopeSlider:sender
  37. {
  38.     slope = [sender floatValue];
  39.     [self display];
  40.     return self;
  41. }
  42.  
  43. - XInterceptSlider:sender
  44. {
  45.     XIntercept = [sender floatValue];
  46.     [self display];
  47.     return self;
  48. }
  49.  
  50. - drawSelf:(NXRect*)r :(int)c
  51. {
  52.     NXEraseRect(&bounds);
  53.     PSDrawAxis(NX_DKGRAY, leftBorder, bottomBorder, plotArea.size.width, plotArea.size.height);
  54.     // translate the origin to be offset by the left and bottom border
  55.     PStranslate(plotArea.origin.x, plotArea.origin.y);
  56.     PSsetgray(NX_BLACK);
  57.     PSsetlinewidth(5.0);
  58.     PSnewpath();
  59.       PSmoveto(0.0, -XIntercept);
  60.       PSlineto(plotArea.size.width, slope*plotArea.size.width - XIntercept);
  61.     PSstroke();
  62.     return self;
  63. }
  64.  
  65.  
  66. @end
  67.