home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 7 / Apprentice-Release7.iso / Source Code / C ++ / Applications / NeuroSim 1.0.2 / AGA Slider ƒ / Sources / CAGASlider.h < prev    next >
Encoding:
Text File  |  1997-03-21  |  4.1 KB  |  127 lines  |  [TEXT/CWIE]

  1. //
  2. //    CAGASlider.h
  3. //
  4. //    Apple Grayscale Appearance Slider class for PowerPlant
  5. //    Subclassed from LControl
  6. //
  7. //    version 1.4.2 - March 21, 1997
  8. //
  9. //    Copyright © 1996-1997 by James Jennings. All rights reserved.
  10. //
  11.  
  12. #pragma once
  13.  
  14. #include <LControl.h>
  15. #include <UGWorld.h>
  16. #include <URegistrar.h>
  17. #include "UGrayscaleAppearance.h"
  18.  
  19. // In version 1.4.2 the slider redraws itself when it's appearance changes.
  20. // Since this might affect backward compatibility, I've added a compiler flag.
  21. #define SLIDER_DRAWS_SELF
  22.  
  23. class CAGASlider : public LControl, public UGrayscaleAppearance {
  24. public:
  25.     enum { class_ID = 'Slid' };
  26.     static CAGASlider*    CreateFromStream(LStream *inStream);
  27.     static    void    Register(void)
  28.         {     URegistrar::RegisterClass(CAGASlider::class_ID,    
  29.             (ClassCreatorFunc) CAGASlider::CreateFromStream);  }
  30.     
  31.                         CAGASlider(LStream *inStream);
  32.                         CAGASlider(const CAGASlider &inSlider);    // copy constructor
  33.     virtual                ~CAGASlider();
  34.     
  35.     // Recalculate mTrackRect when the frame changes size.
  36.     virtual void    ResizeFrameBy(Int16 inWidthDelta, Int16 inHeightDelta, Boolean inRefresh);
  37.     virtual void    MoveBy(Int32 inHorizDelta, Int32 inVertDelta, Boolean inRefresh);
  38.     
  39.     static    void        Purge();    // Release indicator images
  40.     
  41.     // Enumerations for controling display states.
  42. typedef    enum {
  43.         hot_None = 0,
  44.         hot_Indicator,
  45.         hot_Track        // don't confuse 'the track' with 'mouse tracking'.
  46.         } EHotSpots;
  47. typedef    enum {
  48.         ind_Enabled = 0,
  49.         ind_Pressed,
  50.         ind_Ghost,
  51.         ind_Disabled
  52.         } EIndicatorState;
  53. typedef    enum {
  54.         ind_Horizontal = 0,
  55.         ind_North,
  56.         ind_South,
  57.         ind_Vertical,
  58.         ind_East,
  59.         ind_West
  60.         } EIndicatorDirection;
  61.     
  62. protected:
  63.     EIndicatorDirection    mDirection;
  64.     EIndicatorState        mState;
  65.     Uint16                mNumberOfTicks;    // 0 = no ticks, 1 = max-min+1 ticks, >1 is the number
  66.     // mContinuousBroadcast == true -> broadcast changes without waiting for mouseUp
  67.     Boolean                mContinuousBroadcast;
  68.     // mMinIsBottomOrRight == true -> direction of increasing value is up or left, 
  69.     // opposite that of standard scrollbars.
  70.     Boolean                mMinIsBottomOrRight;
  71.     
  72.     Boolean                mIsTracking;
  73.     Int32                mTrackingValue;
  74.     Rect                mTrackRect;        // bounds for drawing the track
  75.     Rect                mChangedRect;    // what to redraw while tracking the indicator
  76.  
  77.     virtual void        DrawSelf();
  78.     virtual void        DrawSelfBasic( Boolean useGrays );
  79.     virtual void        DrawTrack( EIndicatorState inState, Boolean inUseGrays = true );
  80.     virtual void        DrawIndicator( Int32 inValue, EIndicatorState inState = ind_Enabled, 
  81.                                 Boolean inUseGrays = true );
  82.     virtual void        DrawTickMarks( UInt16 inNumber, EIndicatorState inState, 
  83.                                 Boolean inUseGrays = true );
  84.     
  85. //    virtual void        DrawIcon1( Rect inWhere, ResIDT inWhich, Boolean inUseGrays );
  86.     virtual void        DrawIcon( Rect inWhere, EIndicatorDirection inDirection, 
  87.                             EIndicatorState inState, Boolean inUseGrays );
  88.     virtual void        InitColorData();
  89.     virtual void        InitBlackAndWhiteData();
  90.     virtual void        InitMaskData();
  91.     virtual void        InitPICTDataHelper( LGWorld *inWorld, const ResIDT inPICT, 
  92.                                 const Rect inRect );
  93.     
  94. //    virtual    void        GetBackground(RGBColor &outColor);
  95.     virtual    void        DetectBackgroundColor();
  96.     virtual    void        DrawBackground( const Rect &inRect, Boolean inUseGrays );
  97.     RGBColor            mBackground;
  98.     
  99.     static    LGWorld    *    sColorData;
  100.     static    LGWorld    *    sBlackAndWhiteData;
  101.     static    LGWorld    *    sMaskData;
  102.     
  103.     enum EOrientation { orient_Horizontal, orient_Vertical };
  104.     virtual EOrientation GetOrientation();
  105.     
  106.     virtual void        ValueToIndicatorRect( Int32 inValue, Rect & outRect );
  107.     virtual Point        ValueToPosition( Int32 inValue );
  108.     virtual Int32        PositionToValue( Point inPosition );
  109.     
  110.     virtual void        GetTrackRect( Rect &outRect );
  111.     virtual void        CalcTrackRect();
  112.  
  113.     virtual Int16        FindHotSpot(Point inPoint);
  114.     virtual Boolean        PointInHotSpot(Point inPoint, Int16 inHotSpot);
  115.     virtual Boolean        TrackHotSpot(Int16 inHotSpot, Point inPoint);
  116.     virtual void        HotSpotAction(Int16 inHotSpot, Boolean inCurrInside, Boolean inPrevInside);
  117.     virtual void        HotSpotResult(Int16 inHotSpot);
  118.  
  119. #ifdef SLIDER_DRAWS_SELF
  120. public:
  121.     virtual void        SetValue( Int32 inValue );
  122. protected:
  123.     virtual void        EnableSelf();
  124.     virtual void        DisableSelf();
  125. #endif // SLIDER_DRAWS_SELF
  126. };
  127.