home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1994 June / NEBULA_SE.ISO / SourceCode / Cookbook / 12.fractTree / MyView.m < prev    next >
Encoding:
Text File  |  1993-01-19  |  2.9 KB  |  154 lines

  1.  
  2. /* Generated by Interface Builder */
  3.  
  4. #import "MyView.h"
  5. #import "tree.h"
  6. #import <appkit/Control.h>
  7. #import <appkit/Application.h>
  8. #include <appkit/Pasteboard.h>
  9. #import <dpsclient/wraps.h>
  10.  
  11.  
  12. @implementation MyView
  13.  
  14. +newFrame:(const NXRect *)tF {
  15.     self = [super newFrame:tF];
  16.     branchChange = .7;
  17.     widthChange = .7;
  18.     moveLeft = 0.0;
  19.     height = 1.0;
  20.     branchLength = 200.0;
  21.     rightBranch = 50.0;
  22.     leftBranch = -30.0;
  23.     lineWidth = 40.0;
  24.     moveRight = 200.0;
  25.     width = .8;
  26. // same !!
  27.     maxDepth = 9.0;
  28.     moveLeft = 6.0;
  29. }
  30.  
  31. - branchChange:sender
  32. {
  33.    branchChange = [sender floatValue];
  34.    [self display];
  35.    return self;
  36. }
  37.  
  38. - widthChange:sender
  39. {
  40.     widthChange = [sender floatValue];
  41.     [self display];
  42.     return self;
  43. }
  44.  
  45. - moveLeft:sender
  46. {
  47.     moveLeft = [sender floatValue];
  48.    [self display];
  49.     return self;
  50. }
  51.  
  52. - height:sender
  53. {
  54.     height = [sender floatValue];
  55.     [self display];
  56.     return self;
  57. }
  58.  
  59. - branchLength:sender
  60. {
  61.     branchLength = [sender floatValue];
  62.     [self display];
  63.     return self;
  64. }
  65.  
  66. - rightBranch:sender
  67. {
  68.     rightBranch = [sender floatValue];
  69.     [self display];
  70.     return self;
  71. }
  72.  
  73. - leftBranch:sender
  74. {
  75.     leftBranch = [sender floatValue];
  76.     [self display];
  77.     return self;
  78. }
  79.  
  80. - lineWidth:sender
  81. {
  82.     lineWidth = [sender floatValue];
  83.     [self display];
  84.     return self;
  85. }
  86.  
  87. - moveRight:sender
  88. {
  89.     moveRight = [sender floatValue];
  90.     [self display];
  91.     return self;
  92. }
  93.  
  94. - width:sender
  95. {
  96.     width = [sender floatValue];
  97.     [self display];
  98.     return self;
  99. }
  100.  
  101. - copy:sender { 
  102.    id pb = [NXApp pasteboard];  /* global Pasteboard object */ 
  103.    NXStream  *st;               /* stream to collect data in */ 
  104.    char      *data;             /* actual data buffer */ 
  105.    int       length;            /* length of data */ 
  106.    int       maxLength;         /* (not used here) */
  107.  
  108.    // To see how to use the pasteboard see page 10-33 of
  109.    // the SysRefMan
  110.    // declare that we will supply a single type of data: PostScript
  111.    [pb declareTypes:&NXPostScriptPboard num:1 owner:self];
  112.  
  113.    /* get a stream which writes to memory */ 
  114.    st = NXOpenMemory( NULL, 0, NX_WRITEONLY );
  115.  
  116.    /* write PostScript code for this view into the stream */ 
  117.    [self copyPSCodeInside:NULL to:st];
  118.  
  119.    /* get actual data buffer from stream */ 
  120.    NXGetMemoryBuffer( st, &data, &length, &maxLength );
  121.  
  122.    /* write PostScript data to pasteboard */ 
  123.    [pb writeType:NXPostScriptPboard data:data length:length];
  124.  
  125.    /* deallocate stream, including its buffer */ 
  126.    NXCloseMemory( st, NX_FREEBUFFER );
  127.  
  128.    return self; 
  129. }
  130.  
  131. /* make this view accept first responder so it will understand copy */
  132. -(BOOL)acceptsFirstResponder
  133. {
  134.     return (YES);
  135. }
  136.  
  137. -resignFirstResponder
  138. {
  139.     return self;
  140. }
  141.  
  142.  
  143. - drawSelf:(NXRect*)r :(int)c
  144. {
  145.     NXEraseRect(&bounds);
  146.     PSsetgray(NX_BLACK);
  147.     PSsetlinewidth(lineWidth);
  148.     doTree(moveLeft, leftBranch, rightBranch, branchLength, moveRight, width, height, lineWidth, branchChange, widthChange);
  149.     return self;
  150. }
  151.  
  152.  
  153. @end
  154.