Shinya Kitaoka 810553
#pragma once
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef TYPES_H
Toshihiro Shimizu 890ddd
#define TYPES_H
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
/**
Toshihiro Shimizu 890ddd
 * @author  Fabrizio Morciano <fabrizio.morciano@gmail.com></fabrizio.morciano@gmail.com>
Toshihiro Shimizu 890ddd
 */
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "tcommon.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#undef DVAPI
Toshihiro Shimizu 890ddd
#undef DVVAR
Toshihiro Shimizu 890ddd
#ifdef TNZEXT_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
Toshihiro Shimizu 890ddd
#include <map></map>
Toshihiro Shimizu 890ddd
#include <vector></vector>
Toshihiro Shimizu 890ddd
#include <stdexcept></stdexcept>
Toshihiro Shimizu 890ddd
#include <iostream></iostream>
Toshihiro Shimizu 890ddd
e280ae
#if defined(_MSC_VER) && (_MSC_VER <= 1200)
Toshihiro Shimizu 890ddd
// to avoid annoying warning
Toshihiro Shimizu 890ddd
#pragma warning(push)
Toshihiro Shimizu 890ddd
#pragma warning(disable : 4290)
Toshihiro Shimizu 890ddd
#endif
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
namespace ToonzExt {
Shinya Kitaoka 120a6e
namespace Type {
Shinya Kitaoka 120a6e
enum Corner { STRAIGHT, SPIRE, UNKNOWN };
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
/**
Toshihiro Shimizu 890ddd
   * @brief An useful alias for a pair of double.
Toshihiro Shimizu 890ddd
   */
Toshihiro Shimizu 890ddd
typedef std::pair<double, double=""> Interval;</double,>
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
inline std::ostream &operator<<(std::ostream &os, const Interval &interval) {
Shinya Kitaoka 120a6e
  return os << '[' << interval.first << ',' << interval.second << ']';
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
/**
Toshihiro Shimizu 890ddd
   * @brief List of intervals.
Toshihiro Shimizu 890ddd
   */
Toshihiro Shimizu 890ddd
typedef std::vector<interval> Intervals;</interval>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
/**
Toshihiro Shimizu 890ddd
   * @brief This class is an abstraction to wrap all odd number.
Shinya Kitaoka 120a6e
   *
Toshihiro Shimizu 890ddd
   * It is useful if you need to manage parameter of a function,
Toshihiro Shimizu 890ddd
   * that are in some sub set of integer.
Toshihiro Shimizu 890ddd
   * @sa EvenInt.
Toshihiro Shimizu 890ddd
   */
Toshihiro Shimizu 890ddd
// -3 -1 1 3
Shinya Kitaoka 120a6e
class DVAPI OddInt {
Shinya Kitaoka 120a6e
  int val_;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  OddInt(int);
Shinya Kitaoka 120a6e
  /**
Shinya Kitaoka 120a6e
*@brief Cast an integer, if is not an even exception is
Shinya Kitaoka 120a6e
*       thrown.
Shinya Kitaoka 120a6e
*/
Shinya Kitaoka 120a6e
  operator int() const;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /**
Shinya Kitaoka 120a6e
*@copydoc operator int() const
Shinya Kitaoka 120a6e
*/
Shinya Kitaoka 120a6e
  operator int();
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /**
Shinya Kitaoka 120a6e
*@brief Simple check to verify that a number is odd,
Shinya Kitaoka 120a6e
*       without exception.
Shinya Kitaoka 120a6e
*/
Shinya Kitaoka 120a6e
  bool isOdd() const;
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
/**
Toshihiro Shimizu 890ddd
   * @brief This class is an abstraction to wrap all odd number.
Shinya Kitaoka 120a6e
   *
Toshihiro Shimizu 890ddd
   * It is useful if you need to manage parameter of a function,
Toshihiro Shimizu 890ddd
   * that are in some sub set of integer.
Toshihiro Shimizu 890ddd
   * @sa EvenInt.
Toshihiro Shimizu 890ddd
   */
Toshihiro Shimizu 890ddd
// -4 -2 0 2 4..
Shinya Kitaoka 120a6e
class DVAPI EvenInt {
Shinya Kitaoka 120a6e
  int val_;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  EvenInt(int);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /**
Shinya Kitaoka 120a6e
*@brief Cast an integer, if is not an even exception is
Shinya Kitaoka 120a6e
*       thrown.
Shinya Kitaoka 120a6e
*/
Shinya Kitaoka 120a6e
  operator int() const;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /**
Shinya Kitaoka 120a6e
*@copydoc operator int() const
Shinya Kitaoka 120a6e
*/
Shinya Kitaoka 120a6e
  operator int();
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  /**
Shinya Kitaoka 120a6e
*@brief Simple check to verify that a number is even,
Shinya Kitaoka 120a6e
*       without exception.
Shinya Kitaoka 120a6e
*/
Shinya Kitaoka 120a6e
  bool isEven() const;
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
}
Toshihiro Shimizu 890ddd
e280ae
#if defined(_MSC_VER) && (_MSC_VER <= 1200)
Toshihiro Shimizu 890ddd
#pragma warning(pop)
Toshihiro Shimizu 890ddd
#endif
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#endif /* TYPES_H */
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
//  End Of File
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------