tahoma2d/toonz/sources/include/toonz/tcleanupper.h
2017-08-10 18:35:45 +09:00

129 lines
4.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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_sourceDpi;
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 getSourceDpi() const { return m_sourceDpi; }
void setSourceDpi(const TPointD &dpi) { m_sourceDpi = 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