home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1995 August / NEBULA.mdf / SourceCode / MiscKit1.2.6 / Palettes / MiscCalendarPalette / MiscCalendarView.subproj / DateSelectionCell.m < prev    next >
Encoding:
Text File  |  1994-05-08  |  5.3 KB  |  264 lines

  1. /******************************************************************************
  2.  *      $Log: DateSelectionCell.m,v $
  3. # Revision 1.1  1993/10/08  22:04:14  jkute
  4. # Checkpoint
  5. #
  6. # Revision 1.1  1993/04/13  18:02:34  gpopick
  7. # done
  8. #
  9. # Revision 1.1  1993/01/29  19:45:21  jkute
  10. # *** empty log message ***
  11. #
  12. # Revision 1.1  1992/11/17  20:48:22  jkute
  13. # Initial revision
  14. #
  15. ******************************************************************************/
  16. static char *ident = "$Id: DateSelectionCell.m,v 1.1 1993/10/08 22:04:14 jkute Exp $";
  17. static int __hack(int x){if(x)return x;else return __hack((int)*ident);}
  18. /*****************************************************************************/
  19.  
  20. #import <strings.h>
  21.  
  22. #import <dpsclient/psops.h>
  23. #import <appkit/graphics.h>
  24. #import <appkit/color.h>
  25. #import <appkit/Font.h>
  26. #import <appkit/Text.h>
  27.  
  28. #import "DateSelectionCell.h"
  29.  
  30. #define COLOR_DKBLUE    NXConvertRGBToColor(34.0/255.0, 68.0/255.0, 119.0/255.0)
  31.  
  32. @implementation DateSelectionCell
  33.  
  34. - init
  35. {
  36.     id retCode;
  37.  
  38.     retCode = [super init];
  39.  
  40.     newCellFont = [Font newFont:"Helvetica" size:10 style:0
  41.            matrix:NX_FLIPPEDMATRIX];
  42.     [Font setUserFont:newCellFont];
  43.  
  44.     [self setTextColor:NX_COLORWHITE];
  45.     [self setHighlightTextColor:NX_COLORBLACK];
  46.     [self setBackgroundColor:COLOR_DKBLUE];
  47.     [self setHighlightColor:NX_COLORWHITE];
  48.  
  49.     [self setDrawRightEdge:NO];
  50.     [self setDrawEntireBottomEdge:YES];
  51.  
  52.     return retCode;
  53. }
  54.  
  55. - setTextColor:(NXColor)aColor
  56. {
  57.     textColor = aColor;
  58.  
  59.     return self;
  60. }
  61.  
  62. - (NXColor)textColor
  63. {
  64.     return textColor;
  65. }
  66.  
  67. - setHighlightTextColor:(NXColor)aColor
  68. {
  69.     highlightTextColor = aColor;
  70.  
  71.     return self;
  72. }
  73.  
  74. - (NXColor)highlightTextColor
  75. {
  76.     return highlightTextColor;
  77. }
  78.  
  79. - setBackgroundColor:(NXColor)aColor
  80. {
  81.     backgroundColor = aColor;
  82.  
  83.     return self;
  84. }
  85.  
  86. - (NXColor)backgroundColor
  87. {
  88.     return backgroundColor;
  89. }
  90.  
  91. - setHighlightColor:(NXColor)aColor
  92. {
  93.     highlightColor = aColor;
  94.  
  95.     return self;
  96. }
  97.  
  98. - (NXColor)highlightColor
  99. {
  100.     return highlightColor;
  101. }
  102.  
  103. - setDrawRightEdge:(BOOL)yn
  104. {
  105.     drawRightEdge = yn;
  106.  
  107.     return self;
  108. }
  109.  
  110. - (BOOL)drawRightEdge
  111. {
  112.     return drawRightEdge;
  113. }
  114.  
  115. - setDrawEntireBottomEdge:(BOOL)yn
  116. {
  117.     drawEntireBottomEdge = yn;
  118.  
  119.     return self;
  120. }
  121.  
  122. - (BOOL)drawEntireBottomEdge
  123. {
  124.     return drawEntireBottomEdge;
  125. }
  126.  
  127. - drawInside:(const NXRect *)cellFrame inView:controlView
  128. {
  129.     float    yPos, 
  130.         xPos,
  131.         width;
  132.     const char    *stringValue;
  133.     NXRect     rectArray[2];
  134.     int        numOfRects;
  135.  
  136.     stringValue = [self stringValue];
  137.  
  138.     /* erase the cell */
  139.  
  140.     NXSetColor((cFlags1.state || cFlags1.highlighted) ? [self highlightColor]
  141.            : [self backgroundColor]);
  142.     NXRectFill(cellFrame);
  143.     
  144.     if (stringValue && *stringValue)
  145.     {
  146.     /* set the font according to our drawing status */
  147.  
  148.     if (NXDrawingStatus != NX_DRAWING)
  149.       [newCellFont set];
  150.     else
  151.       [[newCellFont screenFont] set];
  152.     
  153.     /* draw the text */
  154.  
  155.     NXSetColor([self textColor]);
  156.  
  157.     if ( (cFlags1.state || cFlags1.highlighted) )
  158.       NXSetColor([self highlightTextColor]);
  159.  
  160.     yPos = NX_Y(cellFrame) + 10.0;// + lineHeight - descender;
  161.     xPos = NX_X(cellFrame) + ((NX_WIDTH(cellFrame) - 
  162.                    [newCellFont getWidthOf:stringValue])/2.0);
  163.  
  164.     PSmoveto( xPos, yPos );
  165.  
  166.     PSshow( stringValue );
  167.     }
  168.  
  169.     NXSetColor(NX_COLORBLACK);
  170.  
  171.     numOfRects = 1;
  172.  
  173.     if (![self drawEntireBottomEdge])
  174.     {
  175.     xPos = NX_X(cellFrame) + 1.0;
  176.     width = NX_WIDTH(cellFrame) - 1.0;
  177.     }
  178.     else
  179.     {
  180.     xPos = NX_X(cellFrame);
  181.     width = NX_WIDTH(cellFrame);
  182.     }
  183.  
  184.     NXSetRect(&(rectArray[0]), xPos, NX_MAXY(cellFrame), width, 1.0);
  185.  
  186.     if ([self drawRightEdge])
  187.     {
  188.     NXSetRect(&(rectArray[1]), NX_MAXX(cellFrame), 
  189.           NX_Y(cellFrame) + 1.0, 1.0, NX_HEIGHT(cellFrame));
  190.     numOfRects++;
  191.     }
  192.  
  193.     NXRectFillList(rectArray, numOfRects);
  194.  
  195.     return self;
  196. }
  197.  
  198. - highlight:(const NXRect *)cellFrame inView:controlView lit:(BOOL)flag
  199. {
  200.     if (cFlags1.highlighted != flag) 
  201.     {
  202.     cFlags1.highlighted = flag;
  203.  
  204.     [self drawInside:cellFrame inView:controlView];
  205.     }
  206.  
  207.     return self;
  208. }
  209.  
  210. - read:(NXTypedStream *)aStream
  211. {
  212.     float    red,
  213.         green,
  214.         blue;
  215.  
  216.     [super read:aStream];
  217.  
  218.     NXReadTypes(aStream, "fff", &red, &green, &blue);
  219.     textColor = NXConvertRGBToColor(red, green, blue);
  220.  
  221.     NXReadTypes(aStream, "fff", &red, &green, &blue);
  222.     highlightTextColor = NXConvertRGBToColor(red, green, blue);
  223.  
  224.     NXReadTypes(aStream, "fff", &red, &green, &blue);
  225.     backgroundColor = NXConvertRGBToColor(red, green, blue);
  226.  
  227.     NXReadTypes(aStream, "fff", &red, &green, &blue);
  228.     highlightColor = NXConvertRGBToColor(red, green, blue);
  229.  
  230.     NXReadTypes(aStream, "@cc", &newCellFont, &drawEntireBottomEdge, 
  231.         &drawRightEdge);
  232.  
  233.     return self;
  234. }
  235.  
  236. - write:(NXTypedStream *)aStream
  237. {
  238.     float    red,
  239.         green,
  240.         blue;
  241.  
  242.     [super write:aStream];
  243.  
  244.     NXConvertColorToRGBA(textColor, &red, &green, &blue, 0);
  245.     NXWriteTypes(aStream, "fff", &red, &green, &blue);
  246.  
  247.     NXConvertColorToRGBA(highlightTextColor, &red, &green, &blue, 0);
  248.     NXWriteTypes(aStream, "fff", &red, &green, &blue);
  249.  
  250.     NXConvertColorToRGBA(backgroundColor, &red, &green, &blue, 0);
  251.     NXWriteTypes(aStream, "fff", &red, &green, &blue);
  252.  
  253.     NXConvertColorToRGBA(highlightColor, &red, &green, &blue, 0);
  254.     NXWriteTypes(aStream, "fff", &red, &green, &blue);
  255.  
  256.     NXWriteTypes(aStream, "@cc", &newCellFont, &drawEntireBottomEdge,
  257.          &drawRightEdge);
  258.  
  259.     return self;
  260. }
  261.  
  262. @end
  263.  
  264.