Shinya Kitaoka 810553
#pragma once
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef IMAGEPAINTER_H
Toshihiro Shimizu 890ddd
#define IMAGEPAINTER_H
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
// TnzCore includes
Toshihiro Shimizu 890ddd
#include "tgeometry.h"
Toshihiro Shimizu 890ddd
#include "timage.h"
Toshihiro Shimizu 890ddd
#include "tpixel.h"
Toshihiro Shimizu 890ddd
#include "ttoonzimage.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
// TnzExt includes
Toshihiro Shimizu 890ddd
#include "ext/plasticvisualsettings.h"
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#undef DVAPI
Toshihiro Shimizu 890ddd
#undef DVVAR
Toshihiro Shimizu 890ddd
#ifdef TOONZLIB_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
//===========================================================================
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//    Forward declaration
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class TSceneProperties;
Toshihiro Shimizu 890ddd
class TSceneProperties;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//===========================================================================
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
namespace ImagePainter {
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//*************************************************************************************************
Toshihiro Shimizu 890ddd
//    ImagePainter::VisualSettings  declaration
Toshihiro Shimizu 890ddd
//*************************************************************************************************
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//! Stores generic settings used by Toonz painters to draw images
Shinya Kitaoka 120a6e
class DVAPI VisualSettings {
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  int m_colorMask;  //!< Combination of TRop::rChan, gChan, bChan or mChan.
Shinya Kitaoka 120a6e
  //!< Note: 0 means rChan | gChan | bChan (draw all channels).
Shinya Kitaoka 120a6e
  bool m_greytones;  //!< Whether color channels are visualized in greytones
Shinya Kitaoka 120a6e
  int m_bg;          //!< Can be equal to eBlackBg, or eWhiteBg, or eCheckBg
Shinya Kitaoka 120a6e
  bool m_drawExternalBG;  // ... not sure ...
Shinya Kitaoka 120a6e
  bool m_showBBox;        //!< Show the bounding box of current level
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  TSceneProperties *m_sceneProperties;  //!< Scene properties reference - which
Shinya Kitaoka 38fd86
                                        //! contains further options
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  PlasticVisualSettings m_plasticVisualSettings;  //!< Settings for mesh images
Shinya Kitaoka 38fd86
                                                  //! and plastic deformations
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  // Other (misplaced) misc options
Toshihiro Shimizu 890ddd
luz paz 6454c4
  bool m_doCompare;      //!< Whether must compare between two images
Shinya Kitaoka 120a6e
  bool m_defineLoadbox;  //!< Flipbook-specific
Shinya Kitaoka 120a6e
  bool m_useLoadbox;     //!< Flipbook-specific
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  TPixel32 m_blankColor;  //!< The color of blank frames during playback
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  bool m_useTexture;  //!< Whether should we use OpenGL textures instead of
Shinya Kitaoka 38fd86
                      //! drawPixels()
Shinya Kitaoka 120a6e
  bool m_recomputeIfNeeded;
Shinya Kitaoka 120a6e
  bool m_drawBlankFrame;
Shinya Kitaoka 120a6e
  bool m_useChecks;  //!< whether to consider  paint check and ink check
luz paz 6454c4
  bool m_forSceneIcon = false;  // whether it is rendered for the scene icons
shun-iwasawa 481b59
shun-iwasawa 481b59
  int m_gainStep;
shun-iwasawa 481b59
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  VisualSettings();
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  bool needRepaint(const VisualSettings &newVs) const;
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//*************************************************************************************************
Toshihiro Shimizu 890ddd
//    ImagePainter::VisualSettings  declaration
Toshihiro Shimizu 890ddd
//*************************************************************************************************
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//! Stores settings used to compare two images
Shinya Kitaoka 120a6e
class DVAPI CompareSettings {
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  //! Used to set compared image width
Shinya Kitaoka 120a6e
  double m_compareX;
Shinya Kitaoka 120a6e
  //! Used to set compared image height
Shinya Kitaoka 120a6e
  double m_compareY;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  //! Used to change compared image width
Shinya Kitaoka 120a6e
  bool m_dragCompareX;
Shinya Kitaoka 120a6e
  //! Used to change compared image height
Shinya Kitaoka 120a6e
  bool m_dragCompareY;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  //! Used to swap compared images
Shinya Kitaoka 120a6e
  bool m_swapCompared;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  CompareSettings();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
const double DefaultCompareValue = 0.01;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//*************************************************************************************************
Toshihiro Shimizu 890ddd
//    ImagePainter  global functions
Toshihiro Shimizu 890ddd
//*************************************************************************************************
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
DVAPI void paintImage(const TImageP &image, const TDimension &imageSize,
Shinya Kitaoka 120a6e
                      const TDimension &viewerSize, const TAffine &aff,
Shinya Kitaoka 120a6e
                      const VisualSettings &visualSettings,
Shinya Kitaoka 120a6e
                      const CompareSettings &compareSettings,
Shinya Kitaoka 120a6e
                      const TRect &loadbox);
shun-iwasawa 481b59
}  // namespace ImagePainter
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
#endif  // IMAGEPAINTER_H