Shinya Kitaoka 810553
#pragma once
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef TFILETYPE_INCLUDED
Toshihiro Shimizu 890ddd
#define TFILETYPE_INCLUDED
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//#include "tfilepath.h"
Toshihiro Shimizu 890ddd
#include "tcommon.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class TFilePath;
Toshihiro Shimizu 890ddd
class QString;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#undef DVAPI
Toshihiro Shimizu 890ddd
#undef DVVAR
Toshihiro Shimizu 890ddd
#ifdef TSYSTEM_EXPORTS
Toshihiro Shimizu 890ddd
#define DVAPI DV_EXPORT_API
Toshihiro Shimizu 890ddd
#define DVVAR DV_EXPORT_VAR
Toshihiro Shimizu 890ddd
#else
Toshihiro Shimizu 890ddd
#define DVAPI DV_IMPORT_API
Toshihiro Shimizu 890ddd
#define DVVAR DV_IMPORT_VAR
Toshihiro Shimizu 890ddd
#endif
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
namespace TFileType {
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
enum Type {
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  UNKNOW_FILE = 0,
Shinya Kitaoka 120a6e
  LEVEL       = 0x1,
Shinya Kitaoka 120a6e
  SCENE       = 0x1000,
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  RASTER_IMAGE  = 0x2,
Shinya Kitaoka 120a6e
  RASTER_LEVEL  = RASTER_IMAGE | LEVEL,
Shinya Kitaoka 120a6e
  VECTOR_IMAGE  = 0x4,
Shinya Kitaoka 120a6e
  VECTOR_LEVEL  = VECTOR_IMAGE | LEVEL,
Shinya Kitaoka 120a6e
  CMAPPED_IMAGE = 0x8,
Shinya Kitaoka 120a6e
  CMAPPED_LEVEL = CMAPPED_IMAGE | LEVEL,
Shinya Kitaoka 120a6e
  MESH_IMAGE    = 0x10,
Shinya Kitaoka 120a6e
  MESH_LEVEL    = MESH_IMAGE | LEVEL,
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  IMAGE = RASTER_IMAGE | VECTOR_IMAGE | CMAPPED_IMAGE | MESH_IMAGE,
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  AUDIO_LEVEL   = 0x20 | LEVEL,
Shinya Kitaoka 120a6e
  PALETTE_LEVEL = 0x40 | LEVEL,
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  TABSCENE   = 0x2000 | SCENE,
Shinya Kitaoka 120a6e
  TOONZSCENE = 0x4000 | SCENE,
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  VIEWABLE = RASTER_IMAGE | VECTOR_IMAGE | CMAPPED_IMAGE
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
/*!
Shinya Kitaoka 120a6e
   * getInfo() returns the TFileType::Type of the filepath.
Shinya Kitaoka 120a6e
   * e.g. 'a.tif' => RASTER_IMAGE, 'a..tif' => RASTER_LEVEL, 'a.mov' =>
Shinya Kitaoka 120a6e
 * RASTER_LEVEL, 'a.tlv' => CMAPPED_LEVEL, etc.
Shinya Kitaoka 120a6e
   * Note!!: in the current implementation, a.0001.tif => RASTER_LEVEL,
Shinya Kitaoka 120a6e
 * (probably a bad choice: should be RASTER IMAGE)
Toshihiro Shimizu 890ddd
   */
Toshihiro Shimizu 890ddd
//!
Toshihiro Shimizu 890ddd
DVAPI Type getInfo(const TFilePath &fp);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
/*!
Shinya Kitaoka 120a6e
   * getInfoFromExtension() returns the TFileType::Type "naturally" associated
Shinya Kitaoka 120a6e
 * to a given type (file extension)
Shinya Kitaoka 120a6e
   * e.g. 'tif' => RASTER_IMAGE, 'mov' => RASTER_LEVEL, 'tlv' => CMAPPED_LEVEL,
Shinya Kitaoka 120a6e
 * etc.
Toshihiro Shimizu 890ddd
   */
Toshihiro Shimizu 890ddd
//!
Shinya Kitaoka 3bfa54
DVAPI Type getInfoFromExtension(const std::string &ext);
Toshihiro Shimizu 890ddd
DVAPI Type getInfoFromExtension(const QString &ext);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 3bfa54
DVAPI void declare(std::string extension, Type type);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
inline bool isResource(Type type) { return (type != UNKNOW_FILE); }
Toshihiro Shimizu 890ddd
inline bool isViewable(Type type) { return (type & VIEWABLE) != 0; }
Toshihiro Shimizu 890ddd
inline bool isLevel(Type type) { return (type & LEVEL) != 0; }
Toshihiro Shimizu 890ddd
inline bool isScene(Type type) { return (type & SCENE) != 0; }
Toshihiro Shimizu 890ddd
inline bool isFullColor(Type type) { return (type & RASTER_IMAGE) != 0; }
Toshihiro Shimizu 890ddd
inline bool isVector(Type type) { return (type & VECTOR_IMAGE) != 0; }
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
inline bool isLevelExtension(const std::string &fileExtension) {
Shinya Kitaoka 120a6e
  return (getInfoFromExtension(fileExtension) & LEVEL) != 0;
Shinya Kitaoka 120a6e
}
Shinya Kitaoka 120a6e
inline bool isLevelExtension(const QString &fileExtension) {
Shinya Kitaoka 120a6e
  return (getInfoFromExtension(fileExtension) & LEVEL) != 0;
Shinya Kitaoka 120a6e
}
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
inline bool isLevelFilePath(const TFilePath &fp) {
Shinya Kitaoka 120a6e
  return (getInfo(fp) & LEVEL) != 0;
Shinya Kitaoka 120a6e
}
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
}  // namespace
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#endif