Shinya Kitaoka 810553
#pragma once
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef TIIO_MOV_H
Toshihiro Shimizu 890ddd
#define TIIO_MOV_H
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "openquicktime.h"
Toshihiro Shimizu 890ddd
#include "tlevel_io.h"
Toshihiro Shimizu 890ddd
#include "tthread.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class TImageWriterMov;
Toshihiro Shimizu 890ddd
class TImageReaderMov;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
bool IsQuickTimeInstalled();
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class TLevelWriterMov : public TLevelWriter {
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  TLevelWriterMov(const TFilePath &path, TWriterInfo *winfo);
Shinya Kitaoka 120a6e
  ~TLevelWriterMov();
Shinya Kitaoka 120a6e
  TImageWriterP getFrameWriter(TFrameId fid);
Shinya Kitaoka 120a6e
  friend class TImageWriterMov;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  static TLevelWriter *create(const TFilePath &f, TWriterInfo *winfo) {
Shinya Kitaoka 120a6e
    return new TLevelWriterMov(f, winfo);
Shinya Kitaoka 120a6e
  };
Shinya Kitaoka 120a6e
  void saveSoundTrack(TSoundTrack *st);
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class TLevelReaderMov : public TLevelReader {
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  TLevelReaderMov(const TFilePath &path);
Shinya Kitaoka 120a6e
  ~TLevelReaderMov();
Shinya Kitaoka 120a6e
  TImageReaderP getFrameReader(TFrameId fid);
Shinya Kitaoka 120a6e
  friend class TImageReaderMov;
Shinya Kitaoka 120a6e
  TLevelP loadInfo();
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  int m_IOError;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
private:
Shinya Kitaoka 120a6e
  TThread::Mutex m_mutex;
Shinya Kitaoka 120a6e
  short m_refNum;
Shinya Kitaoka 120a6e
  short m_resId;
Shinya Kitaoka 120a6e
  long m_depth;
Shinya Kitaoka 120a6e
  int m_lx, m_ly;
Shinya Kitaoka 120a6e
  oqt_t *m_fileMov;
Shinya Kitaoka 120a6e
  int m_lastFrameDecoded;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  static TLevelReader *create(const TFilePath &f) {
Shinya Kitaoka 120a6e
    return new TLevelReaderMov(f);
Shinya Kitaoka 120a6e
  };
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
class TWriterInfoMov : public TWriterInfo {
Shinya Kitaoka 120a6e
  // friend TImageWriterMov;
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  static TWriterInfo *create(const string &ext) { return new TWriterInfoMov(); }
Shinya Kitaoka 120a6e
  ~TWriterInfoMov() {}
Shinya Kitaoka 120a6e
  TWriterInfo *clone() const { return new TWriterInfoMov(); }
Shinya Kitaoka 120a6e
Toshihiro Shimizu 890ddd
private:
Shinya Kitaoka 120a6e
  TWriterInfoMov() {}
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  TWriterInfoMov(const TWriterInfoMov &);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  TWriterInfoMov &operator=(const TWriterInfoMov &);  // not implemented
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
#endif  // TIIO_MOV_H