#pragma once #ifndef CMRASTERBRUSH_H #define CMRASTERBRUSH_H #include "trasterimage.h" #include "toonz/rasterstrokegenerator.h" #include class RasterStrokeGenerator; class BluredBrush; //************************************************************************ // CM Raster Brush //************************************************************************ class CMRasterBrush { private: std::vector m_rasterTracks; int m_styleId; // L'ink-style dello stroke bool m_selective; bool m_modifierLockAlpha; bool m_isPaletteOrder; QSet m_aboveStyleIds; int m_brushCount; double m_rotation; TPointD m_centerPoint; bool m_useLineSymmetry; TPointD m_rasCenter, m_dpiScale; public: CMRasterBrush(const TRasterCM32P &raster, Tasks task, ColorType colorType, int styleId, const TThickPoint &p, bool selective, int selectedStyle, bool lockAlpha, bool keepAntialias, bool isPaletteOrder = false); ~CMRasterBrush(){}; void addSymmetryBrushes(double lines, double rotation, TPointD centerPoint, bool useLineSymmetry, TPointD dpiScale); bool hasSymmetryBrushes() { return m_brushCount > 1; } int getStyleId() const { return m_styleId; } bool isSelective() { return m_selective; } bool isAlphaLocked() { return m_modifierLockAlpha; } bool isPaletteOrder() { return m_isPaletteOrder; } void add(const TThickPoint &p); void setAboveStyleIds(QSet &ids); void generateStroke(bool isPencil, bool isStraight = false) const; std::vector getPointsSequence(bool mainOnly = false); void setPointsSequence(const std::vector &points); TRect getBBox(const std::vector &points) const; TRect getLastRect(bool isStraight = false) const; TRect generateLastPieceOfStroke(bool isPencil, bool closeStroke = false, bool isStraight = false); }; #endif // CMRASTERBRUSH_H