115 lines
3.7 KiB
C++
115 lines
3.7 KiB
C++
#pragma once
|
||
|
||
#ifndef TCLEANUPPER_H
|
||
#define TCLEANUPPER_H
|
||
|
||
#include "trasterimage.h"
|
||
#include "ttoonzimage.h"
|
||
#include "toonz/cleanupparameters.h"
|
||
|
||
#undef DVAPI
|
||
#undef DVVAR
|
||
#ifdef TOONZLIB_EXPORTS
|
||
#define DVAPI DV_EXPORT_API
|
||
#define DVVAR DV_EXPORT_VAR
|
||
#else
|
||
#define DVAPI DV_IMPORT_API
|
||
#define DVVAR DV_IMPORT_VAR
|
||
#endif
|
||
|
||
//-----------------------------------------------------------------------------
|
||
|
||
// Forward declarations
|
||
|
||
class CleanupPreprocessedImage;
|
||
class TargetColors;
|
||
class TCamera;
|
||
|
||
//-----------------------------------------------------------------------------
|
||
|
||
//****************************************************************************************
|
||
// CleanupProcessedImage declaration
|
||
//****************************************************************************************
|
||
|
||
class DVAPI CleanupPreprocessedImage
|
||
{
|
||
std::string m_imgId;
|
||
TDimension m_size;
|
||
|
||
public:
|
||
bool m_wasFromGR8;
|
||
bool m_autocentered;
|
||
std::vector<TPixel32> m_pixelsLut;
|
||
TAffine m_appliedAff;
|
||
|
||
public:
|
||
CleanupPreprocessedImage(CleanupParameters *parameters, TToonzImageP processed, bool fromGr8);
|
||
~CleanupPreprocessedImage();
|
||
|
||
TDimension getSize() const { return m_size; }
|
||
TToonzImageP getImg() const;
|
||
TRasterImageP getPreviewImage() const;
|
||
};
|
||
|
||
//****************************************************************************************
|
||
// TCleanupper singleton declaration
|
||
//****************************************************************************************
|
||
|
||
class DVAPI TCleanupper
|
||
{
|
||
CleanupParameters *m_parameters;
|
||
TPointD m_customDpi;
|
||
|
||
private:
|
||
TCleanupper() : m_parameters(0) {} //singleton class - will not be externally constructed
|
||
|
||
public:
|
||
static TCleanupper *instance();
|
||
|
||
void setParameters(CleanupParameters *parameters);
|
||
const CleanupParameters *getParameters() const { return m_parameters; }
|
||
|
||
TPalette *createToonzPaletteFromCleanupPalette();
|
||
|
||
/*--- 拡大/縮小をしていない場合(DPIが変わらない場合)、NearestNeighborでリサンプリングする。 ---*/
|
||
bool getResampleValues(const TRasterImageP &image, TAffine &aff, double &blur,
|
||
TDimension &outDim, TPointD &outDpi, bool isCameraTest,
|
||
bool &isSameDpi);
|
||
|
||
TRasterP processColors(const TRasterP &r);
|
||
|
||
/*!
|
||
The main cleanup method.
|
||
\warning The input image reference is internally released at the most appropriate
|
||
time, to unlock a possibly useful memory block.
|
||
*/
|
||
CleanupPreprocessedImage *process(
|
||
TRasterImageP &image,
|
||
bool first_image, TRasterImageP &onlyResampledImage,
|
||
bool isCameraTest = false, bool returnResampled = false, bool onlyForSwatch = false, TAffine *aff = 0);
|
||
|
||
void finalize(const TRaster32P &dst, CleanupPreprocessedImage *src);
|
||
TToonzImageP finalize(CleanupPreprocessedImage *src, bool isCleanupper = false);
|
||
|
||
TRasterImageP autocenterOnly(const TRasterImageP &image, bool isCameraTest, bool &autocentered);
|
||
|
||
TPointD getCustomDpi() const { return m_customDpi; }
|
||
void setCustomDpi(const TPointD &dpi) { m_customDpi = dpi; }
|
||
|
||
private:
|
||
// process phase
|
||
bool doAutocenter(double &angle, double &skew, double &cxin, double &cyin, double &cqout, double &cpout,
|
||
const double xdpi, const double ydpi, const int raster_is_savebox,
|
||
const TRect saveBox, const TRasterImageP &image, const double scalex);
|
||
void preprocessColors(const TRasterCM32P &outRas, const TRaster32P &raster32, const TargetColors &colors);
|
||
void removeSinglePoint(const TRasterCM32P &outRas);
|
||
|
||
// post-processing phase
|
||
TToonzImageP doPostProcessingGR8(const CleanupPreprocessedImage *img);
|
||
void doPostProcessingGR8(const TRaster32P &outRas, CleanupPreprocessedImage *srcImg);
|
||
|
||
TToonzImageP doPostProcessingColor(const TToonzImageP &imgToProcess, bool isCleanupper);
|
||
void doPostProcessingColor(const TRaster32P &outRas, CleanupPreprocessedImage *srcImg);
|
||
};
|
||
|
||
#endif
|