Shinya Kitaoka 810553
#pragma once
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef TROPCM_INCLUDED
Toshihiro Shimizu 890ddd
#define TROPCM_INCLUDED
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "trop.h"
Toshihiro Shimizu 890ddd
//#include "trastercm.h"
Toshihiro Shimizu 890ddd
//#include "tpalette.h"
Toshihiro Shimizu 890ddd
//#include "ttile.h"
Toshihiro Shimizu 890ddd
#include "ttoonzimage.h"
Toshihiro Shimizu 890ddd
#include <set></set>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#undef DVAPI
Toshihiro Shimizu 890ddd
#undef DVVAR
Toshihiro Shimizu 890ddd
#ifdef TROP_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
class TTile;
Toshihiro Shimizu 890ddd
class TLevelP;
Toshihiro Shimizu 890ddd
class TToonzImageP;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
namespace TRop {
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
DVAPI void convert(const TRaster32P &rasOut, const TRasterCM32P &rasIn,
Shinya Kitaoka 120a6e
                   const TPaletteP palette, bool transparencyCheck = false);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
DVAPI void convert(
Shinya Kitaoka 120a6e
    const TRaster32P &rasOut, const TRasterCM32P &rasIn, TPaletteP palette,
Shinya Kitaoka 120a6e
    const TRect &theClipRect,  // il rect su cui e' applicata la conversione
Shinya Kitaoka 120a6e
    bool transparencyCheck = false, bool applyFx = false);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
DVAPI void convert(const TTile &dst, const TTile &src, const TPaletteP plt,
Shinya Kitaoka 120a6e
                   bool transparencyCheck, bool applyFxs);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
// matchlinePrevalence ==0->always ink down; matchlinePrevalence == 100 always
Shinya Kitaoka 120a6e
// ink up;
Shinya Kitaoka 120a6e
DVAPI void applyMatchLines(TRasterCM32P rasOut, const TRasterCM32P &rasUp,
shun-iwasawa 3a1040
                           const TPaletteP &pltOut, const TPaletteP &matchPlt,
shun-iwasawa 3a1040
                           int inkIndex, int matchlinePrevalence,
Shinya Kitaoka 120a6e
                           std::map<int, int=""> &usedInks);</int,>
Shinya Kitaoka 120a6e
DVAPI void mergeCmapped(TRasterCM32P rasOut, const TRasterCM32P &rasUp,
Shinya Kitaoka 120a6e
                        const TPaletteP &pltOut, int matchlinePrevalence,
Shinya Kitaoka 120a6e
                        std::map<int, int=""> &usedColors);</int,>
Shinya Kitaoka 120a6e
DVAPI void overlayCmapped(TRasterCM32P rasOut, const TRasterCM32P &rasUp,
Shinya Kitaoka 120a6e
                          const TPaletteP &pltOut, const TPaletteP &upPlt,
Shinya Kitaoka 120a6e
                          std::map<int, int=""> &usedColors);</int,>
Shinya Kitaoka 120a6e
// DVAPI void applyMatchline(const vector<matchlinepair>& matchingLevels, int</matchlinepair>
Shinya Kitaoka 120a6e
// inkIndex, int matchlinePrevalence);
Shinya Kitaoka 120a6e
// DVAPI void deleteMatchline(const vector<ttoonzimagep>& level, const</ttoonzimagep>
Shinya Kitaoka 120a6e
// vector<int>& inkIndexes);</int>
Shinya Kitaoka 120a6e
// DVAPI void eraseInks(TRasterCM32P ras, vector<int>& inkIds, bool</int>
Shinya Kitaoka 120a6e
// keepInks=false);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
DVAPI void eraseColors(TRasterCM32P ras, std::vector<int> *colorIds,</int>
Shinya Kitaoka 120a6e
                       bool eraseInks);  // colorsId==0 ->erase ALL
Shinya Kitaoka 120a6e
// DVAPI void  eraseColors(TRasterCM32P ras, vector<int>& colorIds, bool</int>
Shinya Kitaoka 120a6e
// eraseInks, bool keepColor);
Shinya Kitaoka 3bfa54
DVAPI void eraseStyleIds(TToonzImage *image, const std::vector<int> styleIds);</int>
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
DVAPI void resample(const TRasterP &out, const TRasterCM32P &in,
Shinya Kitaoka 120a6e
                    const TPaletteP palette, const TAffine &aff,
Shinya Kitaoka 120a6e
                    ResampleFilterType filterType = Triangle, double blur = 1.);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
DVAPI void convolve_3_i(TRasterP rout, TRasterCM32P rin,
Shinya Kitaoka 120a6e
                        const TPaletteP &palette, int dx, int dy,
Shinya Kitaoka 120a6e
                        double conv[]);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
DVAPI void convolve_i(TRasterP rout, TRasterCM32P rin, const TPaletteP &palette,
Shinya Kitaoka 120a6e
                      int dx, int dy, double conv[], int radius);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
DVAPI void fracmove(TRasterP rout, TRasterCM32P rin, const TPaletteP &palette,
Shinya Kitaoka 120a6e
                    double dx, double dy);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
DVAPI void zoomOutCm32Rgbm(const TRasterCM32P &rin, TRaster32P &rout,
Shinya Kitaoka 120a6e
                           const TPalette &plt, int x1, int y1, int x2, int y2,
Shinya Kitaoka 120a6e
                           int newx, int newy, int absZoomLevel);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
// these function create a small raster in rout shrinking rin, typically to make
Shinya Kitaoka 120a6e
// an icon.  the shrink method preserves pixels: even a single isolated pixel
Shinya Kitaoka 120a6e
// is kept in the shrinked image.
Shinya Kitaoka 120a6e
// shrinking is done without clipping  original image and preserving aspect
Shinya Kitaoka 120a6e
// ratio (no stretch!): therefore, horizontal or vertical transparent stripes on
Shinya Kitaoka 120a6e
// borders are added when needed.
Toshihiro Shimizu 890ddd
// warning: rout width must be <= rin width; same for height.
Shinya Kitaoka 120a6e
// DVAPI void makeIcon(TRaster32P& rout,    const TRasterCM32P& rin, const
Shinya Kitaoka 120a6e
// TPaletteP& palette, bool onBlackBg);
Toshihiro Shimizu 890ddd
DVAPI void makeIcon(TRasterCM32P &rout, const TRasterCM32P &rin);
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
DVAPI void expandPaint(const TRasterCM32P &rasCM);
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
}  // namespace TRop
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#endif