#pragma once #ifndef STYLESELECTION_INCLUDED #define STYLESELECTION_INCLUDED #include "toonzqt/selection.h" #include "toonz/tpalettehandle.h" #include "tpalette.h" #include #include class QByteArray; #undef DVAPI #undef DVVAR #ifdef TOONZQT_EXPORTS #define DVAPI DV_EXPORT_API #define DVVAR DV_EXPORT_VAR #else #define DVAPI DV_IMPORT_API #define DVVAR DV_IMPORT_VAR #endif class TXsheetHandle; class TXshLevelHandle; //============================================================================= // TStyleSelection //----------------------------------------------------------------------------- class DVAPI TStyleSelection final : public TSelection { TPaletteHandle *m_paletteHandle; // Used to change level palette; in other palette (cleanup, ...) xsheetHandle // is not necessary. TXsheetHandle *m_xsheetHandle; // for clearing cache when the pastestyle command is executed TXshLevelHandle *m_levelHandle; int m_pageIndex; std::set m_styleIndicesInPage; public: TStyleSelection(); TStyleSelection(TStyleSelection *styleSelection) : m_paletteHandle(styleSelection->getPaletteHandle()) , m_pageIndex(styleSelection->getPageIndex()) , m_styleIndicesInPage(styleSelection->getIndicesInPage()) {} ~TStyleSelection(); void select(int pageIndex); void select(int pageIndex, int styleIndexInPage, bool on); bool isSelected(int pageIndex, int styleIndexInPage) const; bool isPageSelected(int pageIndex) const; bool canHandleStyles(); void selectNone() override; bool isEmpty() const override; int getStyleCount() const; TPaletteHandle *getPaletteHandle() const { return m_paletteHandle; } void setPaletteHandle(TPaletteHandle *paletteHandle) { m_paletteHandle = paletteHandle; } TPalette *getPalette() const { return m_paletteHandle->getPalette(); } int getPageIndex() const { return m_pageIndex; } const std::set &getIndicesInPage() const { return m_styleIndicesInPage; } void getIndices(std::set &indices) const; // Used to change level palette; in other palette (cleanup, ...) xsheetHandle // is not necessary. void setXsheetHandle(TXsheetHandle *xsheetHandle) { m_xsheetHandle = xsheetHandle; } TXsheetHandle *getXsheetHandle() const { return m_xsheetHandle; } void setLevelHandle(TXshLevelHandle *levelHandle) { m_levelHandle = levelHandle; } // commands void cutStyles(); void copyStyles(); void pasteStyles(); void pasteStylesValues(bool pasteName, bool pasteColor = true); void pasteStylesValue(); void pasteStylesColor(); void pasteStylesName(); void deleteStyles(); void eraseUnusedStyle(); void blendStyles(); void toggleLink(); void eraseToggleLink(); void enableCommands() override; void toggleKeyframe(int frame); // remove link from the studio palette (if linked) void removeLink(); // get back the style from the studio palette (if linked) void getBackOriginalStyle(); // return true if there is at least one linked style in the selection bool hasLinkedStyle(); }; #endif // STYLESELECTION_INCLUDED