Blob Blame Raw


#ifndef TIIO_MOV_H
#define TIIO_MOV_H

#include "openquicktime.h"
#include "tlevel_io.h"
#include "tthread.h"

class TImageWriterMov;
class TImageReaderMov;

bool IsQuickTimeInstalled();

class TLevelWriterMov : public TLevelWriter
{
public:
	TLevelWriterMov(const TFilePath &path, TWriterInfo *winfo);
	~TLevelWriterMov();
	TImageWriterP getFrameWriter(TFrameId fid);
	friend class TImageWriterMov;

public:
	static TLevelWriter *create(const TFilePath &f, TWriterInfo *winfo)
	{
		return new TLevelWriterMov(f, winfo);
	};
	void saveSoundTrack(TSoundTrack *st);
};

class TLevelReaderMov : public TLevelReader
{
public:
	TLevelReaderMov(const TFilePath &path);
	~TLevelReaderMov();
	TImageReaderP getFrameReader(TFrameId fid);
	friend class TImageReaderMov;
	TLevelP loadInfo();

	int m_IOError;

private:
	TThread::Mutex m_mutex;
	short m_refNum;
	short m_resId;
	long m_depth;
	int m_lx, m_ly;
	oqt_t *m_fileMov;
	int m_lastFrameDecoded;

public:
	static TLevelReader *create(const TFilePath &f)
	{
		return new TLevelReaderMov(f);
	};
};

//-----------------------------------------------------------------------------

class TWriterInfoMov : public TWriterInfo
{
	//friend TImageWriterMov;
public:
	static TWriterInfo *create(const string &ext) { return new TWriterInfoMov(); }
	~TWriterInfoMov() {}
	TWriterInfo *clone() const { return new TWriterInfoMov(); }
private:
	TWriterInfoMov() {}

	TWriterInfoMov(const TWriterInfoMov &);

	TWriterInfoMov &operator=(const TWriterInfoMov &); // not implemented
};

#endif //TIIO_MOV_H