home *** CD-ROM | disk | FTP | other *** search
/ Nebula 1995 August / NEBULA.mdf / SourceCode / MiscKit1.2.6 / Palettes / MiscSoundPalette / MiscSoundUtil.subproj / MiscVolumeMeter.h < prev    next >
Encoding:
Text File  |  1994-05-27  |  4.6 KB  |  171 lines

  1.  
  2. #import <appkit/appkit.h>
  3. #import <soundkit/soundkit.h>
  4.  
  5.  
  6.  
  7. // Defines
  8.  
  9. #define VOLUMEMETER_DISPLAYTYPE_NONE        0
  10. #define VOLUMEMETER_DISPLAYTYPE_BEZEL        1
  11.  
  12. #define VOLUMEMETER_BACKGROUND_INSET     2.0
  13. #define VOLUMEMETER_VALUE_INSET            6.0
  14. #define VOLUMEMETER_LEFT_END            0.4
  15. #define VOLUMEMETER_RIGHT_BEGIN            0.6
  16.  
  17. #define VOLUMEMETER_TIMED_ENTRY_SPEED    0.1
  18. #define VOLUMEMETER_MAX_REFRESHES        256
  19. #define VOLUMEMETER_STD_REFRESHES        4
  20.  
  21.  
  22.  
  23. // Public Convenience Functions
  24.  
  25. BOOL VOLUMEMETER_can_draw(const NXRect* aRect);
  26.     // given aRect, determines if there's enough space to draw a meter
  27.  
  28. BOOL VOLUMEMETER_draw_wide(const NXRect* aRect);
  29.     // given aRect, determines if the meter should draw wide
  30.     // (as opposed to tall)
  31.  
  32.  
  33. @interface MiscVolumeMeter:View
  34. {
  35.     NXSoundIn*         input_device;
  36.     NXSoundOut*     output_device;
  37.     id                sound;                    // can be a sound or soundview
  38.     id                delegate;
  39.     BOOL            input;                    // set to input.  Default is NO
  40.     BOOL            running;                // set running.  Default is NO
  41.     BOOL            bezeled;
  42.     BOOL            peak_bubble_displayed;
  43.     BOOL            stereo;
  44.     float            background_gray;
  45.     float            value_gray;
  46.     float            bubble_gray;
  47.     float            refresh;
  48.     int                refreshes_per_new_peak_bubble;
  49.     int                refresh_tally;
  50.     float            refreshes_left[VOLUMEMETER_MAX_REFRESHES];
  51.     float            refreshes_right[VOLUMEMETER_MAX_REFRESHES];
  52.     int                current_max_refresh_left;
  53.     int                current_max_refresh_right;
  54.     DPSTimedEntry    teNum;                    // timed entry which displays
  55. }
  56.  
  57.  
  58. // constructors and destructors
  59.  
  60. - initFrame:(const NXRect*) frameRect;
  61. - free;
  62. - awake;
  63.  
  64. // drawing
  65.  
  66. - drawSelf:(const NXRect*) rects:(int) rectCount;
  67.  
  68. // Setting parameters
  69.  
  70. - setDelegate:this_delegate;
  71. - delegate;
  72. - setMono;
  73. - setStereo;
  74. - setBackgroundGray:(float) this_value;    // 0 <= this_value <= 1
  75. - setValueGray:(float) this_value;        // 0 <= this_value <= 1
  76. - setBubbleGray:(float) this_value;        // 0 <= this_value <= 1
  77. - (float) backgroundGray;
  78. - (float) valueGray;
  79. - (float) bubbleGray;
  80. - setBezeled:(BOOL) yes_or_no;
  81. - setPeakBubbleDisplayed:(BOOL) yes_or_no;
  82. - setToInput;                            // returns self if usable, NULL if not
  83. - setToOutput;                            // returns self if usable, NULL if not
  84. - setRefresh:(float) number_seconds;    // sets update speed in fraction of 
  85.                                         // seconds or whole seconds.
  86.                                         // default is .1 second
  87. - setRefreshesPerNewPeakBubble:(int) number_refreshes;        
  88.                                         // VOLUMEMETER_MAX_REFRESHES max, 1 min
  89. // Querying the object
  90.  
  91. - (BOOL) isBezeled:sender;
  92. - (BOOL) peakBubbleDisplayed:sender;
  93. - (BOOL) isInput:sender;
  94. - (BOOL) isStereo:sender;
  95. - (float) refresh:sender;
  96. - (int) updatesPerPeakBubble:sender;
  97.  
  98. // Operating the meter
  99.  
  100. - reclaim;                                // tries to reclaim devices
  101. - run;
  102. - stop;
  103.  
  104. // Archiving
  105.  
  106. - read:(NXTypedStream*) stream;
  107. - write:(NXTypedStream*) stream;
  108.  
  109. // Locking Methods.  This locks the meter to only 
  110. // display when a certain sound or soundview is recording or playing
  111.  
  112. - setSound:this_sound;                    // can be a sound or a soundview
  113. - sound;
  114.  
  115. // Action versions of above methods
  116.  
  117. - setMono:sender;
  118. - setStereo:sender;
  119. - setToInput:sender;
  120. - setToOutput:sender;
  121. - run:sender;
  122. - stop:sender;
  123.  
  124. // Convenience methods responding to window action.
  125. // This allows a window to open/close and start up / shut down the meter
  126.  
  127. - windowDidBecomeKey:sender;
  128. - windowDidBecomeMain:sender;
  129. - windowDidDeminiaturize:sender;
  130. - windowDidMiniaturize:sender;
  131. - windowWillClose:sender;
  132.  
  133.  
  134.  
  135.  
  136.  
  137. // Methods implementable by delegates of VolumeMeter:
  138. // (VolumeMeter itself only defines them here--it doesn't do a thing with 'em)
  139.  
  140. - meterWillUpdateOnOwn:sender;    // ...the volume meter will update/display
  141.                                 // (called before meterWillUpdate and before
  142.                                 // the display method is called (so meter
  143.                                 // has not locked focus yet))
  144. - meterWillUpdate:sender;        //    ...the volume meter will update/display
  145.                                 // (possibly on its own)
  146. - meterDidUpdate:sender;        //    ...the volume meter updated/displayed
  147.                                 // (possibly on its own)
  148.  
  149.  
  150. // More methods implementable by delegates of VolumeMeter.
  151. // The difference with these is
  152. // 1)  They're already defined above so shadows don't need to be defined, and
  153. // 2)  VERY IMPORTANT:  If you respond NULL to any of these, the meter will
  154. //     NOT run, or stop, or whatever it plans to do as described below.
  155.  
  156. /*
  157.  
  158. - windowDidBecomeKey:sender        ...volume meter's window became key
  159.                                 and meter will run
  160. - windowDidBecomeMain:sender    ...volume meter's window became main
  161.                                 and meter will run
  162. - windowDidDeminiaturize:sender    ...volume meter's window deminiaturized
  163.                                 and meter will run
  164. - windowDidMiniaturize:sender    ...volume meter's window miniaturized
  165.                                 and meter will stop
  166. - windowWillClose:sender    ...volume meter's window will close
  167.                                 and meter will stop
  168. */
  169.  
  170. @end
  171.