COverlayController.h
上传用户:hhs829
上传日期:2022-06-17
资源大小:586k
文件大小:3k
源码类别:

DirextX编程

开发平台:

Visual C++

  1. //
  2. // COverlayController.h
  3. //
  4. #ifndef __H_COverlayController__
  5. #define __H_COverlayController__
  6. #include "CBasePixel.h"
  7. #include "OverlayDefs.h"
  8. class COverlayController
  9. {
  10. protected:
  11. CBasePixel *        mPixelConverter;
  12. BOOL                mCanDoOverlay;      // Title overlay workable flag
  13. BOOL                mIsOverlayByCover;
  14. long                mOverlayCounter;
  15. double              mDoubleStartTime;   // Actual start and end time
  16. double              mDoubleEndTime;
  17. long                mOverlayStartTime;  // Using frame index
  18. long                mOverlayEndTime;
  19. // Title property
  20. char *              mTitle;
  21. unsigned char *     mTitleDIBBits;
  22. unsigned char       mColorRed;     // Text color
  23. unsigned char       mColorGreen;
  24. unsigned char       mColorBlue;
  25. SIZE                mTitleSize;
  26. POINT               mStartPos;     // Start position to draw text
  27. LOGFONT             mTitleFont;
  28. BOOL                mIsFontChanged;
  29. long                mDIBWidthInBytes;
  30. // Input video property
  31. RGB_FORMAT          mInputColorSpace;
  32. long                mImageWidth;
  33. long                mImageHeight;        // This is an absolute value
  34. long                mImageWidthInBytes;  // the line width in bytes
  35. WORD                mImageBitCount;
  36. BOOL                mIsBottomUpImage;
  37. double              mInputFrameRate;
  38. public:
  39. COverlayController();
  40. virtual ~COverlayController();
  41. void SetInputColorSpace(RGB_FORMAT inColorSpace);
  42. void SetInputVideoInfo(const VIDEOINFOHEADER * inInfoHeader);
  43. // If VIDEOINFOHEADER not contain valid frame rate, 
  44. // using the following method to set an estimated value.
  45. void SetEstimatedFrameRate(double inFrameRate);
  46. void SetOverlayStyle(BOOL inUsingCover);
  47. void GetOverlayStyle(BOOL * outUsingCover);  
  48. virtual void SetTitle(const char * inTitle, int inLength);
  49. void SetTitleColor(BYTE inR, BYTE inG, BYTE inB); 
  50. void SetTitleStartPosition(POINT inStartPos);
  51. void SetTitleFont(LOGFONT inFont);
  52. void SetTitleDuration(double inStart, double inEnd);
  53. // Get the title length by passing NULL to outBuffer
  54. int  GetTitle(char * outBuffer);
  55. void GetTitleColor(BYTE * outR, BYTE * outG, BYTE * outB);
  56. void GetTitleStartPosition(POINT * outStartPos);
  57. void GetTitleFont(LOGFONT * outFont);
  58. void GetTitleDuration(double * outStart, double * outEnd);
  59. public:
  60. virtual BOOL StartTitleOverlay(void);
  61. virtual BOOL StopTitleOverlay(void);
  62. BOOL DoTitleOverlay(PBYTE inImage);
  63. protected:
  64. void ReleasePixelConverter(void);
  65. void ReleaseTitleBuffer(void);
  66. void ReleaseTitleDIB(void);
  67. BOOL CreateTitleDIBBits(void);
  68. HBITMAP ActualCreateTitleDIB(HDC inDC);
  69. virtual BOOL ValidateTitleDIBSize(void);
  70. virtual void SideEffectProgressChanged(void);
  71. virtual void SideEffectColorSpaceChanged(void);
  72. virtual void SideEffectFontChanged(void);
  73. // Subclass can use these methods to do more details
  74. virtual BOOL BeforeActualOverlay(void);
  75. virtual BOOL AfterActualOverlay(void);
  76. virtual BOOL ActualOverlay(PBYTE inImage);
  77. };
  78. #endif // __H_COverlayController__