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としないとカメラからのダウンロードが終わらないことになります。
コメント