home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / i / iv26_w_3.zip / EXAMPLES / DCLOCK / DFACE.H < prev    next >
C/C++ Source or Header  |  1980-01-05  |  3KB  |  83 lines

  1. /*
  2.  * Copyright (c) 1987, 1988, 1989 Stanford University
  3.  *
  4.  * Permission to use, copy, modify, distribute, and sell this software and its
  5.  * documentation for any purpose is hereby granted without fee, provided
  6.  * that the above copyright notice appear in all copies and that both that
  7.  * copyright notice and this permission notice appear in supporting
  8.  * documentation, and that the name of Stanford not be used in advertising or
  9.  * publicity pertaining to distribution of the software without specific,
  10.  * written prior permission.  Stanford makes no representations about
  11.  * the suitability of this software for any purpose.  It is provided "as is"
  12.  * without express or implied warranty.
  13.  *
  14.  * STANFORD DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
  15.  * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
  16.  * IN NO EVENT SHALL STANFORD BE LIABLE FOR ANY SPECIAL, INDIRECT OR
  17.  * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
  18.  * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
  19.  * OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
  20.  * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
  21.  */
  22.  
  23. /* 
  24.  * digital clockface class
  25.  */
  26.  
  27. #ifndef dface_h
  28. #define dface_h
  29.  
  30. struct CharPoints {
  31.     int count;
  32.     Coord x[12];
  33.     Coord y[12];
  34. };
  35.  
  36. enum AMPMMODE { BLANK, AM, PM };
  37.  
  38. class DFace : public Interactor {
  39. public:
  40.     DFace(
  41.     boolean showDate, boolean showBorder, boolean showTime,
  42.     TMode timeMode, int width = 0, int height = 0
  43.     );
  44.     ~DFace();
  45.  
  46.     virtual void Reconfig();
  47.     virtual void Resize();
  48.     virtual void Draw();
  49.     virtual void Handle(Event&);
  50.     void Run();
  51. protected:
  52.     void DrawFace();
  53.     void DrawColon();
  54.     void DrawAMPM(Painter*);
  55.     void DrawDate();
  56.     void DrawBorder();
  57.     void Redraw(Coord left, Coord bottom, Coord right, Coord top);
  58.     void RedrawList(int, Coord[], Coord[], Coord[], Coord[]);
  59.     void Set(char* today, int hours, int minutes);
  60.     void Tick();
  61. private:
  62.     Clock* clock;
  63.     TMode mode;                /* civil or military */
  64.     AMPMMODE AMPMmode;
  65.     SegPoints colon[2];            /* colon shape data */
  66.     CharPoints A, P, M;            /* character shape data */
  67.     Painter* invertor;            /* for highlights and erasing */
  68.     boolean showDate;            /* visibility of date */
  69.     boolean showBorder;            /* visibility of date/time line */
  70.     boolean showTime;            /* visibility of time */
  71.     boolean selected;            /* highlight date if true */
  72.     boolean done;            /* program terminator */
  73.  
  74.     Digit* ht, * hu, * mt, * mu;
  75.  
  76.     struct {                /* date string */
  77.     int len;
  78.     char text[50];
  79.     } date;
  80. };
  81.  
  82. #endif
  83.