C++ Builder CE Cameralibの活用

6. Cameralibのヘッダーの解説

Cameralibで提案しているCamera クラスでどんなことができるかを表したものが、Cameralib.hです。こうしたヘッダーをインターフェースと呼ぶことがあります。それは既に公開済みなので、解説してみましょう。


#ifndef CAMERALIB
#define CAMERALIB
#include "edsdklib.h"
#include "nikonsdk.h"
#include "stiso.h"
#include "stcomplist.h"


class Camera : public CanonCamera, public NikonCamera {

	private:

		char CameraName[80];

		Camera* activeptr;

	public:
		bool    usenikon = false;
		bool    usecanon = false;
		int TotalCameraCount;

	Camera();
	~Camera();

	Camera* getptr(){
			return activeptr;
		  }
	  char* GetName();
	  unsigned char* getbuffer();
	  void ReleaseStream(unsigned char* stream);
	  long	getsize();
	 unsigned char* getlivebuffer();
	  long	getlivesize();

	 void GetIso();
	 void SetIso(int index);
	  stisolist* GetIsoList();
	 int GetNofIso();
	int GetIsoIndex();
        int GetResult();

        void SetWB(int index);

	void    GetCompressionLevel();
	void    SetCompressionLevel(int index);
	stcomplist* GetCompList();
	int GetNofCompressionLevel();
	int  GetCompressionLevelIndex();
        void GetAFModes();
	void TakePictureToStream();
	void DoAF();
        void    SetAFMode(int index);
	void RecordMovie();
	void StopMovie();
        char* CGetName();
	void LiveViewOn(void);
	void LiveViewOff(void);
	void LiveViewOnTFT(void);
        void LiveViewOffTFT(void);
	void DownLoadEVFData(void);
	int  IsTransfered(void);
	void UnsetTransfered(void);
	void TakePictureToFile();
	void Rehook(void);
        int GetBatteryLevel();

};

#endif

前にも書きましたが、Cameraは普通のclassなので、

Camera* camera = new Camera();

でも

Camera camera;

でも、どちらの宣言も可能です。C++ Builderに慣れ親しんでいると、上の書き方が普通というかよく出てきますけど、C++の場合ならば下の書き方の方が普通だと思います。ま、どちらでもお好きなように、でそうして宣言したcameraはCanonのカメラかNikonのカメラなんですが、どちらでも同じように扱えます。基本的にGet????は撮影パラメーターの取得系で、Set????は撮影パラメーターの設定系です。このシリーズのデモプログラムでは、撮影パラメーターの取得や設定は扱っていませんが、GetとSetをフルに使うとCamera Remote Control 64のような撮影ができます。一点注意が要りますが、撮影のファイル構成によっては、いわゆるRaw画像とJpeg画像と両方得ることができます。そういう時にfilecountを使います。filecount=2としないとカメラからのダウンロードが終わらないことになります。

コメント