home *** CD-ROM | disk | FTP | other *** search
/ Power GUI Programming with VisualAge C++ / powergui.iso / trialva / ibmcppw / include / immtime.hpp < prev    next >
Encoding:
C/C++ Source or Header  |  1996-02-22  |  9.8 KB  |  299 lines

  1. #ifndef _IMMTIME_
  2.    #define _IMMTIME_
  3. /*******************************************************************************
  4. * FILE NAME:  immtime.hpp                                                      *
  5. *                                                                              *
  6. * DESCRIPTION:                                                                 *
  7. *   Declaration of the classes:                                                *
  8. *     IMMTime                                                                  *
  9. *     IMMMillisecondTime                                                       *
  10. *     IMMHourMinSecFrameTime                                                   *
  11. *     IMM24FramesPerSecTime                                                    *
  12. *     IMM25FramesPerSecTime                                                    *
  13. *     IMM30FramesPerSecTime                                                    *
  14. *     IMMMinSecFrameTime                                                       *
  15. *     IMMHourMinSecTime                                                        *
  16. *                                                                              *
  17. * COPYRIGHT:                                                                   *
  18. *   IBM Open Class Library                                                     *
  19. *   (C) Copyright International Business Machines Corporation 1992, 1996       *
  20. *   Licensed Material - Program-Property of IBM - All Rights Reserved.         *
  21. *   US Government Users Restricted Rights - Use, duplication, or disclosure    *
  22. *   restricted by GSA ADP Schedule Contract with IBM Corp.                     *
  23. *                                                                              *
  24. *******************************************************************************/
  25. #include <ivbase.hpp>
  26.  
  27. class IString;
  28.  
  29. #pragma pack(4)
  30.  
  31.  
  32. class IMMTime : public IVBase {
  33. typedef IVBase
  34.   Inherited;
  35. public:
  36. /*----------------------------- Constructors ---------------------------------*/
  37. static const unsigned long
  38.   IC_IMPORTM defaultTime;
  39.  
  40.   IMMTime  ( const IMMTime& time     );
  41.   IMMTime  ( unsigned long  time = defaultTime );
  42. virtual
  43.   ~IMMTime ();
  44.  
  45. IMMTime
  46.   &operator =  (const IMMTime& time);
  47.  
  48. /*-------------------------- Diagnostics -------------------------------------*/
  49. virtual Boolean
  50.   isValid        () const;
  51. virtual IString
  52.   asString       () const;
  53.  
  54. /*-------------------------- Attributes --------------------------------------*/
  55. virtual unsigned long
  56.   hours          () const,
  57.   minutes        () const,
  58.   seconds        () const,
  59.   hundredths     () const,
  60.   thousandths    () const,
  61.   asMMTime       () const;
  62.  
  63. /*-------------------------- Conversions -------------------------------------*/
  64. virtual operator unsigned long () const;
  65.  
  66. /*-------------------------- Operators ---------------------------------------*/
  67. IMMTime
  68.   &operator += (const IMMTime& time),
  69.   &operator -= (const IMMTime& time);
  70.  
  71. IMMTime
  72.   operator +   (const IMMTime& time) const,
  73.   operator -   (const IMMTime& time) const;
  74.  
  75. Boolean
  76.   operator <   (const IMMTime& time) const,
  77.   operator >   (const IMMTime& time) const,
  78.   operator ==  (const IMMTime& time) const,
  79.   operator !=  (const IMMTime& time) const,
  80.   operator <=  (const IMMTime& time) const,
  81.   operator >=  (const IMMTime& time) const;
  82.  
  83. /*-------------------------------- Format ------------------------------------*/
  84. enum Format
  85. {
  86.    milliseconds     = 1,
  87.    mmTime,
  88.    minSecFrame      = 5,
  89.    trackMinSecFrame,
  90.    frames           = 8,
  91.    hourMinSec,
  92.    bytes            =11,
  93.    samples,
  94.    hourMinSecFrame,
  95.    mm24FramesPerSecond,
  96.    mm25FramesPerSecond,
  97.    mm30FramesPerSecond,
  98.    mm30FramesPerSecondDrop,
  99.    songpointer                   // JAD 9/26/95 - default WIN32 midi format
  100. };
  101.  
  102.  
  103. /*----------------------------- Ordinal --------------------------------------*/
  104. virtual unsigned long
  105.   ordinal             () const;
  106. virtual IMMTime
  107.   &setTimeToOrdinal (unsigned long ordinal);
  108.  
  109. protected:
  110. /*----------------------------- Implementation -------------------------------*/
  111. IMMTime
  112.   &setMMTime (unsigned long newTime),
  113.   &setValid  (Boolean Valid = true);
  114.  
  115. private:
  116. /*--------------------------------- Private ----------------------------------*/
  117. unsigned long
  118.   fValue;
  119. Boolean
  120.   fValid;
  121. }; // IMMTime
  122.  
  123. class IMMMillisecondTime : public IMMTime {
  124. typedef IMMTime
  125.   Inherited;
  126. public:
  127. /*----------------------------- Constructors ---------------------------------*/
  128.   IMMMillisecondTime  ( const IMMMillisecondTime& time );
  129.   IMMMillisecondTime  ( unsigned long time = defaultTime );
  130.   IMMMillisecondTime  ( const IMMTime& time );
  131. virtual
  132.   ~IMMMillisecondTime ();
  133.  
  134. /*----------------------------- Conversions ----------------------------------*/
  135. virtual operator unsigned long () const;
  136.  
  137. }; // IMMMillisecondTime
  138.  
  139.  
  140. class IMMHourMinSecFrameTime : public IMMTime {
  141. typedef IMMTime
  142.   Inherited;
  143. public:
  144. /*----------------------------- Constructors ---------------------------------*/
  145.   IMMHourMinSecFrameTime  ( const IMMHourMinSecFrameTime& time );
  146.   IMMHourMinSecFrameTime  ( unsigned long value = defaultTime,
  147.                             unsigned long framesPerSecond = 1);
  148. virtual
  149.   ~IMMHourMinSecFrameTime ();
  150.  
  151. /*-------------------------- Diagnostics -------------------------------------*/
  152. virtual IString
  153.   asString           () const;
  154.  
  155. /*-------------------------- Conversions -------------------------------------*/
  156. virtual operator unsigned long () const;
  157.  
  158. /*-------------------------- Attributes --------------------------------------*/
  159. unsigned long
  160.   framesPerSecond    () const;
  161.  
  162. virtual unsigned long
  163.   frames             () const,
  164.   hours              () const,
  165.   minutes            () const,
  166.   seconds            () const;
  167.  
  168. /*----------------------------- Ordinal --------------------------------------*/
  169. virtual unsigned long
  170.   ordinal           () const;
  171. virtual IMMTime
  172.   &setTimeToOrdinal (unsigned long ordinal);
  173.  
  174. private:
  175. /*--------------------------------- Private ----------------------------------*/
  176. unsigned long
  177.   HourMinSecFrameToMM   (unsigned long value, unsigned long fps),
  178.   HourMinSecFrameFromMM (unsigned long value, unsigned long fps);
  179. unsigned long
  180.   fFramesPerSec,
  181.   fOriginal;
  182. };  // IMMHourMinSecFrameTime
  183.  
  184.  
  185. class IMM24FramesPerSecondTime : public IMMHourMinSecFrameTime {
  186. typedef IMMHourMinSecFrameTime
  187.   Inherited;
  188. public:
  189. /*----------------------------- Constructors ---------------------------------*/
  190.   IMM24FramesPerSecondTime  ( const IMM24FramesPerSecondTime& time );
  191.   IMM24FramesPerSecondTime  ( unsigned long value = defaultTime );
  192. virtual
  193.   ~IMM24FramesPerSecondTime ();
  194.  
  195. /*----------------------------- Conversions ----------------------------------*/
  196. virtual operator unsigned long () const;
  197.  
  198. }; // IMM24FramesPerSecondTime
  199.  
  200.  
  201. class IMM25FramesPerSecondTime : public IMMHourMinSecFrameTime {
  202. typedef IMMHourMinSecFrameTime
  203.   Inherited;
  204. public:
  205. /*----------------------------- Constructors ---------------------------------*/
  206.   IMM25FramesPerSecondTime  ( const IMM25FramesPerSecondTime& time );
  207.   IMM25FramesPerSecondTime  ( unsigned long value = defaultTime);
  208. virtual
  209.   ~IMM25FramesPerSecondTime ();
  210.  
  211. /*----------------------------- Conversions ----------------------------------*/
  212. virtual operator unsigned long () const;
  213.  
  214. }; // IMM25FramesPerSecondTime
  215.  
  216.  
  217. class IMM30FramesPerSecondTime : public IMMHourMinSecFrameTime {
  218. typedef IMMHourMinSecFrameTime
  219.   Inherited;
  220. public:
  221. /*----------------------------- Constructors ---------------------------------*/
  222.   IMM30FramesPerSecondTime  ( const IMM30FramesPerSecondTime& time );
  223.   IMM30FramesPerSecondTime  ( unsigned long value = defaultTime );
  224. virtual
  225.   ~IMM30FramesPerSecondTime ();
  226.  
  227. /*----------------------------- Conversions ----------------------------------*/
  228. virtual operator unsigned long () const;
  229.  
  230. }; // IMM30FramesPerSecondTime
  231.  
  232.  
  233. typedef IMM30FramesPerSecondTime IMMSMPTE30DropTime;
  234.  
  235. class IMMMinSecFrameTime : public IMMTime {
  236. typedef IMMTime
  237.   Inherited;
  238. public:
  239. /*----------------------------- Constructors ---------------------------------*/
  240.   IMMMinSecFrameTime  ( const IMMMinSecFrameTime& time );
  241.   IMMMinSecFrameTime  ( unsigned long value = defaultTime);
  242.   IMMMinSecFrameTime  ( const IMMTime& time );
  243. virtual
  244.   ~IMMMinSecFrameTime ();
  245.  
  246. /*-------------------------- Diagnostics -------------------------------------*/
  247. virtual IString
  248.   asString () const;
  249.  
  250. /*-------------------------- Conversions -------------------------------------*/
  251. virtual operator unsigned long () const;
  252.  
  253. /*-------------------------- Attributes --------------------------------------*/
  254. unsigned long
  255.   frames   () const,
  256.   minutes  () const,
  257.   seconds  () const;
  258. }; // IMMMinSecFrameTime
  259.  
  260.  
  261. class IMMHourMinSecTime : public IMMTime {
  262. typedef IMMTime
  263.   Inherited;
  264. public:
  265. /*----------------------------- Constructors ---------------------------------*/
  266.   IMMHourMinSecTime  ( const IMMHourMinSecTime& time );
  267.   IMMHourMinSecTime  ( unsigned long value = defaultTime);
  268.   IMMHourMinSecTime  ( const IMMTime& time );
  269. virtual
  270.   ~IMMHourMinSecTime ();
  271.  
  272. /*-------------------------- Diagnostics -------------------------------------*/
  273. virtual IString
  274.   asString           () const;
  275.  
  276. /*-------------------------- Attributes --------------------------------------*/
  277. virtual unsigned long
  278.   hours              () const,
  279.   minutes            () const,
  280.   seconds            () const;
  281.  
  282. /*----------------------------- Ordinal --------------------------------------*/
  283. virtual unsigned long
  284.   ordinal             () const;
  285. virtual IMMTime
  286.   &setTimeToOrdinal (unsigned long ordinal);
  287.  
  288. /*-------------------------- Conversions -------------------------------------*/
  289. virtual operator unsigned long () const;
  290.  
  291. }; // IMMHourMinSecTime
  292.  
  293.  
  294. #pragma pack()
  295.  
  296.    #include <immtime.inl>
  297.  
  298. #endif /* _IMMTIME_ */
  299.