home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / PowerPlant / AGA Slider 1.0 / Sources / CAGASlider.h < prev    next >
Encoding:
Text File  |  1996-06-25  |  4.9 KB  |  122 lines  |  [TEXT/CWIE]

  1. //
  2. //    CAGASlider.h
  3. //
  4. //    Apple Grayscale Appearance Slider class for PowerPlant
  5. //    Subclassed from LControl
  6. //
  7. //    version 1.0 - June 15, 1996
  8. //
  9. //    Copyright © 1996 by James Jennings. All rights reserved.
  10. //
  11.  
  12. #pragma once
  13.  
  14. #include <LControl.h>
  15. #include "UGrayscaleAppearance.h"
  16.  
  17. class CAGASlider : public LControl, UGrayscaleAppearance {
  18. public:
  19.     enum { class_ID = 'Slid' };
  20.     static CAGASlider*    CreateFromStream(LStream *inStream);
  21.     static    void    Register(void)
  22.         {     URegistrar::RegisterClass(CAGASlider::class_ID,    
  23.             (ClassCreatorFunc) CAGASlider::CreateFromStream);  }
  24.     
  25.                         CAGASlider(LStream *inStream);
  26.     virtual                ~CAGASlider();
  27.     
  28.     // Enumerations for controling display states.
  29. typedef    enum {
  30.         hot_None = 0,
  31.         hot_Indicator,
  32.         hot_Track        // don't confuse 'the track' with 'mouse tracking'.
  33.         } EHotSpots;
  34. typedef    enum {
  35.         ind_Enabled = 0,
  36.         ind_Pressed,
  37.         ind_Ghost,
  38.         ind_Disabled
  39.         } EIndicatorState;
  40. typedef    enum {
  41.         ind_Horizontal = 0,
  42.         ind_North,
  43.         ind_South,
  44.         ind_Vertical,
  45.         ind_East,
  46.         ind_West,
  47.         } EIndicatorDirection;
  48. typedef    enum {
  49.         // Indicator ics8 ID's (direction + state)
  50.         ind_StateOffset = 4,
  51.         ind_First_ics8_ID    = 1000/*,    // ID that the ics8 IDs start at
  52.         ind_HorizEnabled    = ind_First_ics8_ID + ind_StateOffset*ind_Horizontal + ind_Enabled,
  53.         ind_HorizPressed    = ind_First_ics8_ID + ind_StateOffset*ind_Horizontal + ind_Pressed,
  54.         ind_HorizGhost        = ind_First_ics8_ID + ind_StateOffset*ind_Horizontal + ind_Ghost,
  55.         ind_HorizDisabled    = ind_First_ics8_ID + ind_StateOffset*ind_Horizontal + ind_Disabled,
  56.         ind_VertEnabled        = ind_First_ics8_ID + ind_StateOffset*ind_Vertical + ind_Enabled,
  57.         ind_VertPressed        = ind_First_ics8_ID + ind_StateOffset*ind_Vertical + ind_Pressed,
  58.         ind_VertGhost        = ind_First_ics8_ID + ind_StateOffset*ind_Vertical + ind_Ghost,
  59.         ind_VertDisabled    = ind_First_ics8_ID + ind_StateOffset*ind_Vertical + ind_Disabled,
  60.         ind_NorthEnabled    = ind_First_ics8_ID + ind_StateOffset*ind_North + ind_Enabled,
  61.         ind_NorthPressed    = ind_First_ics8_ID + ind_StateOffset*ind_North + ind_Pressed,
  62.         ind_NorthGhost        = ind_First_ics8_ID + ind_StateOffset*ind_North + ind_Ghost,
  63.         ind_NorthDisabled    = ind_First_ics8_ID + ind_StateOffset*ind_North + ind_Disabled,
  64.         ind_SouthEnabled    = ind_First_ics8_ID + ind_StateOffset*ind_South + ind_Enabled,
  65.         ind_SouthPressed    = ind_First_ics8_ID + ind_StateOffset*ind_South + ind_Pressed,
  66.         ind_SouthGhost        = ind_First_ics8_ID + ind_StateOffset*ind_South + ind_Ghost,
  67.         ind_SouthDisabled    = ind_First_ics8_ID + ind_StateOffset*ind_South + ind_Disabled,
  68.         ind_EastEnabled        = ind_First_ics8_ID + ind_StateOffset*ind_East + ind_Enabled,
  69.         ind_EasthPressed    = ind_First_ics8_ID + ind_StateOffset*ind_East + ind_Pressed,
  70.         ind_EastGhost        = ind_First_ics8_ID + ind_StateOffset*ind_East + ind_Ghost,
  71.         ind_EastDisabled    = ind_First_ics8_ID + ind_StateOffset*ind_East + ind_Disabled,
  72.         ind_WestEnabled        = ind_First_ics8_ID + ind_StateOffset*ind_West + ind_Enabled,
  73.         ind_WestPressed        = ind_First_ics8_ID + ind_StateOffset*ind_West + ind_Pressed,
  74.         ind_WestGhost        = ind_First_ics8_ID + ind_StateOffset*ind_West + ind_Ghost,
  75.         ind_WestDisabled    = ind_First_ics8_ID + ind_StateOffset*ind_West + ind_Disabled
  76.     */    } EIndicator;
  77.     
  78. protected:
  79.     EIndicatorDirection    mDirection;
  80.     EIndicatorState        mState;
  81.     Uint16                mNumberOfTicks;    // 0 = no tick, 1 = max-min+1 ticks, >1 is the number
  82.     // mContinuousBroadcast == true -> broadcast change without waiting for mouseUp
  83.     Boolean                mContinuousBroadcast;
  84.     
  85.     Boolean                mIsTracking;
  86.     Int32                mTrackingValue;
  87.     
  88.     virtual void        DrawSelf();
  89.     virtual void        DrawSelfBasic( Boolean useGrays );
  90.     virtual void        DrawTrack( EIndicatorState inState, Boolean inUseGrays = true );
  91.     virtual void        DrawIndicator( Int32 inValue, EIndicatorState inState = ind_Enabled, 
  92.                                 Boolean inUseGrays = true );
  93.     virtual void        DrawTickMarks( UInt16 inNumber, EIndicatorState inState, 
  94.                                 Boolean inUseGrays = true );
  95.     
  96. //    virtual void        DrawIcon1( Rect inWhere, ResIDT inWhich, Boolean inUseGrays );
  97.     virtual void        DrawIcon( Rect inWhere, EIndicatorDirection inDirection, 
  98.                             EIndicatorState inState, Boolean inUseGrays );
  99.     virtual void        InitColorData();
  100.     virtual void        InitBlackAndWhiteData();
  101.     virtual void        InitMaskData();
  102.     virtual void        InitPICTDataHelper( LGWorld *inWorld, const ResIDT inPICT, 
  103.                                 const Rect inRect );
  104.     static    LGWorld    *    sColorData;
  105.     static    LGWorld    *    sBlackAndWhiteData;
  106.     static    LGWorld    *    sMaskData;
  107.     
  108.     enum EOrientation { orient_Horizontal, orient_Vertical };
  109.     virtual EOrientation GetOrientation();
  110.     
  111.     virtual void        ValueToIndicatorRect( Int32 inValue, Rect & outRect );
  112.     virtual Point        ValueToPosition( Int32 inValue );
  113.     virtual Int32        PositionToValue( Point inPosition );
  114.     virtual void        GetTrackRect( Rect &outRect );
  115.  
  116.     virtual Int16        FindHotSpot(Point inPoint);
  117.     virtual Boolean        PointInHotSpot(Point inPoint, Int16 inHotSpot);
  118.     virtual Boolean        TrackHotSpot(Int16 inHotSpot, Point inPoint);
  119.     virtual void        HotSpotAction(Int16 inHotSpot, Boolean inCurrInside, Boolean inPrevInside);
  120.     virtual void        HotSpotResult(Int16 inHotSpot);
  121. };
  122.