BlendText.h
上传用户:maxzhb99
上传日期:2013-03-13
资源大小:48k
文件大小:2k
源码类别:

DirextX编程

开发平台:

Visual C++

  1. // BlendText.h: interface for the CBlendText class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_BLENDTEXT_H__54C4A3EA_7E0C_477E_ABC6_2E2AB68408E8__INCLUDED_)
  5. #define AFX_BLENDTEXT_H__54C4A3EA_7E0C_477E_ABC6_2E2AB68408E8__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include <dshow.h>
  10. #include <commctrl.h>
  11. #include <commdlg.h>
  12. #include <stdio.h>
  13. #include <tchar.h>
  14. #include <atlbase.h>
  15. #include "common.h"
  16. //
  17. // Constants
  18. //
  19. #define TRANSPARENCY_VALUE   (0.5f)
  20. #define PURE_WHITE          RGB(255,255,255)
  21. #define ALMOST_WHITE        RGB(250,250,250)
  22. #define BLEND_TEXT          TEXT("This is a demonstration of alpha-blended dynamic text.")
  23. #define DYNAMIC_TEXT_SIZE   255
  24. #define DEFAULT_FONT_NAME   TEXT("Impact")
  25. #define DEFAULT_FONT_STYLE  TEXT("Regular")
  26. #define DEFAULT_FONT_SIZE   12
  27. #define DEFAULT_FONT_COLOR  RGB(255,0,0)
  28. #define MAX_FONT_SIZE 25
  29. //
  30. // Constants
  31. //
  32. const float X_EDGE_BUFFER=0.05f; // Pixel buffer between bitmap and window edge
  33.                                  // (represented in composition space [0 - 1.0f])
  34. const float Y_EDGE_BUFFER=0.05f;
  35. const int UPDATE_TIMER   = 2000;
  36. const int UPDATE_TIMEOUT = 2000; // 2 seconds between ticker movements
  37. class CBlendText  
  38. {
  39. public:
  40. HFONT UserSelectFont(HWND hWnd);
  41. HFONT SetTextFont(HWND hwndApp,BOOL bShowDialog);
  42. void UpdateText(IVMRWindowlessControl *pWC,HWND hwndApp);
  43. HRESULT BlendText(IVMRWindowlessControl *pWC,HWND hwndApp, TCHAR *szNewText,HFONT hFont);
  44. CBlendText();
  45. virtual ~CBlendText();
  46. private:
  47. void SetColorRef(VMRALPHABITMAP& bmpInfo);
  48. private:
  49. //
  50. // Global data
  51. //
  52. TCHAR g_szAppText[DYNAMIC_TEXT_SIZE];
  53. int gnTimer;
  54. float g_fBitmapCompWidth;  // Width of bitmap in composition space units
  55. int g_nImageWidth;         // Width of text bitmap
  56. // Text font information
  57. HFONT g_hFont;
  58. LONG g_lFontPointSize ;
  59. COLORREF g_rgbColors  ;
  60. TCHAR g_szFontName[100] ;
  61. TCHAR g_szFontStyle[32];
  62. // Destination rectangle used for alpha-blended text
  63. // RMALIZEDRECT  g_rDest;
  64. public:
  65. IVMRMixerBitmap *pBMP;
  66. };
  67. #endif // !defined(AFX_BLENDTEXT_H__54C4A3EA_7E0C_477E_ABC6_2E2AB68408E8__INCLUDED_)