#pragma once #ifndef TVECTORRENDERDATA_H #define TVECTORRENDERDATA_H // TnzCore includes #include "tgeometry.h" #include "tpixel.h" #undef DVAPI #undef DVVAR #ifdef TVRENDER_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 TPalette; class TColorFunction; //======================================================================== //********************************************************************************** // TVectorRenderData definition //********************************************************************************** /*! \brief Stores parameters for rendering vector images in Toonz. */ class DVAPI TVectorRenderData { public: /*! \brief Tag representing default settings for work-quality rendering to be displayed on Toonz widgets. */ struct ViewerSettings {}; /*! \brief Tag representing default settings for production-quality rendering to be stored on image files. */ struct ProductionSettings {}; public: const TColorFunction *m_cf; //!< [\p not-owned] Transform to be used for drawing RGBM colors. const TColorFunction *m_guidedCf; const TPalette *m_palette; //!< [\p not-owned] Palette to be used for //! translating color indexes to //! RGBM colors. TAffine m_aff; //!< Geometric transform to be applied on image rendering. TRect m_clippingRect; //!< Integral rect where the image drawing will be //! restricted on; //! if empty, clipping is assumed to be disabled. //! \internal Coordinates reference? TPixel m_tCheckInk; //!< Color to be used for ink check mode. TPixel m_tCheckPaint; //!< Color to be used for paint check mode. int m_colorCheckIndex; //!< Color index to be highlighted in color //! check mode. int m_indexToHighlight; // for guided vector drawing bool m_alphaChannel, //!< Whether alpha channel is enabled. m_antiAliasing, //!< Whether antialiasing must be applied. m_isImagePattern, //!< \internal Seems like a bad bug-patch - inquire //! further... m_drawRegions, //!< Inks only mode. m_tcheckEnabled, //!< Transparency check mode. m_inkCheckEnabled, //!< Ink check mode. m_ink1CheckEnabled, //!< Ink #1 check mode. m_paintCheckEnabled, //!< Paint check mode. m_blackBgEnabled, //!< Black background mode. m_isIcon, //!< Whether image rendering is for an icon. m_is3dView, //!< Whether image rendering is in 3D mode. m_show0ThickStrokes, //!< Whether strokes with 0 thickness should be //! rendered anyway. m_regionAntialias, //!< Whether regions should be rendered with //! antialiasing at boundaries. m_isOfflineRender, //!< Whether image rendering is in render or //! camera-stand (preview) mode. m_showGuidedDrawing, // Whether this image is being used for guided // drawing m_highLightNow; // Show highlight on active stroke bool m_animatedGuidedDrawing = false; //! \deprecated Use the above individual options instead. //! \todo Remove it ASAP. public: TVectorRenderData(ViewerSettings, const TAffine &aff, const TRect &clippingRect, const TPalette *palette, const TColorFunction *cf = 0) : m_cf(cf) , m_palette(palette) , m_aff(aff) , m_clippingRect(clippingRect) , m_tCheckInk(TPixel::Black) , m_tCheckPaint(TPixel(128, 128, 128)) , m_colorCheckIndex(-1) , m_alphaChannel( false) // Camera stand-like widgets have opaque background , m_antiAliasing( true) // Jaggy-free pretty images, antialias is not that costly , m_isImagePattern(false) // Patch variable - internal use , m_drawRegions(true) // Paint regions painted , m_tcheckEnabled(false) // No checks , m_inkCheckEnabled(false) , m_ink1CheckEnabled(false) , m_paintCheckEnabled(false) , m_blackBgEnabled(false) , m_isIcon(false) // Not an icon by default , m_is3dView(false) // Standard view by default , m_show0ThickStrokes( true) // Wanna see every stroke, even invisible ones , m_regionAntialias(false) // No need for pretty region boundaries, // typically shadowed by strokes // This is also related to interference with the directly above param , m_isOfflineRender(false) // By definition , m_indexToHighlight(-1) , m_highLightNow(false) , m_guidedCf(0) , m_showGuidedDrawing(false) {} TVectorRenderData(ProductionSettings, const TAffine &aff, const TRect &clippingRect, const TPalette *palette, const TColorFunction *cf = 0) : m_cf(cf) , m_palette(palette) , m_aff(aff) , m_clippingRect(clippingRect) , m_tCheckInk(TPixel::Black) , m_tCheckPaint(TPixel(128, 128, 128)) , m_colorCheckIndex(-1) , m_alphaChannel( true) // No opaque background - freestanding images with alpha , m_antiAliasing(true) // Jaggy-free pretty images , m_isImagePattern(false) // Patch variable - internal use , m_drawRegions(true) // Paint regions painted , m_tcheckEnabled(false) // No checks , m_inkCheckEnabled(false) , m_ink1CheckEnabled(false) , m_paintCheckEnabled(false) , m_blackBgEnabled(false) , m_isIcon(false) // Not an icon by default , m_is3dView(false) // Definitely standard view , m_show0ThickStrokes(false) // Invisible strokes must be invisible , m_regionAntialias(true) // Pretty region boundaries under invisible or // semitransparent strokes , m_isOfflineRender(true) // By definition , m_indexToHighlight(-1) , m_highLightNow(false) , m_guidedCf(0) , m_showGuidedDrawing(false) {} TVectorRenderData(const TVectorRenderData &other, const TAffine &aff, const TRect &clippingRect, const TPalette *palette, const TColorFunction *cf = 0) : m_cf(cf) , m_palette(palette) , m_aff(aff) , m_clippingRect(clippingRect) , m_tCheckInk(other.m_tCheckInk) , m_tCheckPaint(other.m_tCheckPaint) , m_colorCheckIndex(other.m_colorCheckIndex) , m_alphaChannel(other.m_alphaChannel) , m_antiAliasing(other.m_antiAliasing) , m_isImagePattern(other.m_isImagePattern) , m_drawRegions(other.m_drawRegions) , m_tcheckEnabled(other.m_tcheckEnabled) , m_inkCheckEnabled(other.m_inkCheckEnabled) , m_ink1CheckEnabled(other.m_ink1CheckEnabled) , m_paintCheckEnabled(other.m_paintCheckEnabled) , m_blackBgEnabled(other.m_blackBgEnabled) , m_isIcon(other.m_isIcon) , m_is3dView(other.m_is3dView) , m_show0ThickStrokes(other.m_show0ThickStrokes) , m_regionAntialias(other.m_regionAntialias) , m_isOfflineRender(other.m_isOfflineRender) , m_indexToHighlight(other.m_indexToHighlight) , m_highLightNow(other.m_highLightNow) , m_guidedCf(other.m_guidedCf) , m_showGuidedDrawing(other.m_showGuidedDrawing) { } //!< Constructs from explicit primary context settings while //! copying the rest from another instance. TVectorRenderData(const TAffine &aff, const TRect &clippingRect, const TPalette *palette, const TColorFunction *cf, bool alphaChannel = false, bool antiAliasing = true, bool is3dView = false) : m_cf(cf) , m_palette(palette) , m_aff(aff) , m_clippingRect(clippingRect) , m_tCheckInk(TPixel::Black) , m_tCheckPaint(TPixel(128, 128, 128)) , m_colorCheckIndex(-1) , m_alphaChannel(alphaChannel) , m_antiAliasing(antiAliasing) , m_isImagePattern(false) , m_drawRegions(true) , m_tcheckEnabled(false) , m_inkCheckEnabled(false) , m_ink1CheckEnabled(false) , m_paintCheckEnabled(false) , m_blackBgEnabled(false) , m_isIcon(false) , m_is3dView(is3dView) , m_show0ThickStrokes(true) , m_regionAntialias(false) , m_isOfflineRender(false) , m_indexToHighlight(-1) , m_highLightNow(false) , m_guidedCf(0) , m_showGuidedDrawing(false) { } //!< Constructs settings with default ViewerSettings. //! \deprecated Use constructors with explicit settings type tag. }; #endif // TVECTORRENDERDATA_H