計劃統一播放接口(thinkvd開發日誌)

  技術解決方案swf2video, ppt2video基本完成,但要與原來的視頻播放接口保持一至,這樣就不用處理大量的類似的邏輯問題,具體的有差異邏輯處理再作針對性處理,目前還在構想中。
  以前工作中由於不同產品屬於不同的開發小組,它們之間沒有實現真正的技術上的代碼共享,而是各自根據自己的情況來實現,開發的工作量也不小。事實裏面的很多邏輯是一致的,只是具體的並實現方式有些差異,做成同一接口,不同實現。

接口代碼:

#ifndef IMPLAYBASE_H

#define IMPLAYBASE_H

#include "UIApi.h"

#include "UILib.h"

 

class ImPlayBase

{  

public:  

ImPlayBase (lpShareMemData data)

:handle(NULL)

,m_lpSMD(data){};  

virtual ~ImPlayBase ()  {  }  

 

virtual int init() = 0;

virtual int open() = 0;

virtual int start() = 0;  

virtual int pause() = 0;  

virtual int resume() = 0;

virtual int stop() = 0;  

virtual int close() = 0;  

virtual int seek() = 0;  

virtual int shotsnap() = 0;  

virtual void setVolume() = 0;  

virtual int getVolume() = 0;

lpShareMemData getData(){ return m_lpSMD; }

 

protected:  

/* data */  

void* handle;

lpShareMemData m_lpSMD;

};  

 

#endif 

////////////////////////////////////////////////////////////////////
//ppt header:

 

class PPTMGR_EXPORT ImPPTPlayer : public ImPlayBase 

{

public:

ImPPTPlayer(lpShareMemData data);

~ImPPTPlayer();

 

int init();

int open();

int start();

int pause();

int resume();

int stop();

int close();

int seek();

int shotsnap();

void setVolume();

int getVolume();

 

void setListItem(ImListTreeItem *item);

QString getVersion();

bool isInstallPPT();

 

signals:

 

protected slots:

 

private:

HRESULT createPPTEvents();

 

private:

_ApplicationPtr  m_app;

PPTEventSink *m_sink;            //Global variables

IConnectionPoint* m_connectPoint;

SlideShowWindowPtr m_sldeWindow;

int m_slideNum;

HWND m_pptHwnd;

lpShareMemData m_lpSMD;

 

ImListTreeItem *m_listItem;

};

 

 

////////////////////////////////////////////////////////////////

 

// flash header:

 

class FLASHMGR_EXPORT ImFlashPlayer :  public ImPlayBase 

{

public:

ImFlashPlayer(lpShareMemData data);

~ImFlashPlayer();

 

int init();

int open();

int start();

int pause();

int resume();

int stop();

int close();

int seek();

int shotsnap();

void setVolume();

int getVolume();

 

void setListItem(ImListTreeItem *item);

 

signals:

 

protected slots:

 

private:

 

 

private:

ImListTreeItem *m_listItem;

};

////////////////////////////////////////////////////////////////
// video header:
class FLASHMGR_EXPORT ImVideoPlayer :  public ImPlayBase 
{
public:
ImVideoPlayer(lpShareMemData data);
~ImVideoPlayer();
int init();
int open();
int start();
int pause();
int resume();
int stop();
int close();
int seek();
int shotsnap();
void setVolume();
int getVolume();
void setListItem(ImListTreeItem *item);
signals:
protected slots:
private:
private:
ImListTreeItem *m_listItem;
};

目前由於還在處於構想之中,具體實現下一步再做。

參考:C++的多態與適配器模式 
 http://blog.csdn.net/fjb2080/archive/2010/04/15/5488948.aspx

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章