⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 coverlaycontroller.h

📁 简单的COM 实际例子 用法1
💻 H
字号:
//
// COverlayController.h
//

#ifndef __H_COverlayController__
#define __H_COverlayController__

#include "CBasePixel.h"
#include "OverlayDefs.h"

class COverlayController
{
protected:
	CBasePixel *        mPixelConverter;
	BOOL                mCanDoOverlay;      // Title overlay workable flag
	BOOL                mIsOverlayByCover;
	long                mOverlayCounter;
	double              mDoubleStartTime;   // Actual start and end time
	double              mDoubleEndTime;
	long                mOverlayStartTime;  // Using frame index
	long                mOverlayEndTime;

	// Title property
	char *              mTitle;
	unsigned char *     mTitleDIBBits;
	unsigned char       mColorRed;     // Text color
	unsigned char       mColorGreen;
	unsigned char       mColorBlue;
	SIZE                mTitleSize;
	POINT               mStartPos;     // Start position to draw text
	LOGFONT             mTitleFont;
	BOOL                mIsFontChanged;
	long                mDIBWidthInBytes;

	// Input video property
	RGB_FORMAT          mInputColorSpace;
	long                mImageWidth;
	long                mImageHeight;        // This is an absolute value
	long                mImageWidthInBytes;  // the line width in bytes
	WORD                mImageBitCount;
	BOOL                mIsBottomUpImage;
	double              mInputFrameRate;

public:
	COverlayController();
	virtual ~COverlayController();

	void SetInputColorSpace(RGB_FORMAT inColorSpace);
	void SetInputVideoInfo(const VIDEOINFOHEADER * inInfoHeader);
	// If VIDEOINFOHEADER not contain valid frame rate, 
	// using the following method to set an estimated value.
	void SetEstimatedFrameRate(double inFrameRate);
	void SetOverlayStyle(BOOL inUsingCover);
	void GetOverlayStyle(BOOL * outUsingCover);  

	virtual void SetTitle(const char * inTitle, int inLength);
	void SetTitleColor(BYTE inR, BYTE inG, BYTE inB); 
	void SetTitleStartPosition(POINT inStartPos);
	void SetTitleFont(LOGFONT inFont);
	void SetTitleDuration(double inStart, double inEnd);

	// Get the title length by passing NULL to outBuffer
	int  GetTitle(char * outBuffer);
	void GetTitleColor(BYTE * outR, BYTE * outG, BYTE * outB);
	void GetTitleStartPosition(POINT * outStartPos);
	void GetTitleFont(LOGFONT * outFont);
	void GetTitleDuration(double * outStart, double * outEnd);
	
public:
	virtual BOOL StartTitleOverlay(void);
	virtual BOOL StopTitleOverlay(void);
	BOOL DoTitleOverlay(PBYTE inImage);

protected:
	void ReleasePixelConverter(void);
	void ReleaseTitleBuffer(void);
	void ReleaseTitleDIB(void);

	BOOL CreateTitleDIBBits(void);
	HBITMAP ActualCreateTitleDIB(HDC inDC);
	virtual BOOL ValidateTitleDIBSize(void);

	virtual void SideEffectProgressChanged(void);
	virtual void SideEffectColorSpaceChanged(void);
	virtual void SideEffectFontChanged(void);
	
	// Subclass can use these methods to do more details
	virtual BOOL BeforeActualOverlay(void);
	virtual BOOL AfterActualOverlay(void);
	virtual BOOL ActualOverlay(PBYTE inImage);
};

#endif // __H_COverlayController__

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -