Shinya Kitaoka 810553
#pragma once
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#ifndef STYLESELECTION_INCLUDED
Toshihiro Shimizu 890ddd
#define STYLESELECTION_INCLUDED
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#include "toonzqt/selection.h"
Toshihiro Shimizu 890ddd
#include "toonz/tpalettehandle.h"
Toshihiro Shimizu 890ddd
#include "tpalette.h"
Toshihiro Shimizu 890ddd
#include <set></set>
Toshihiro Shimizu 890ddd
#include <qstring></qstring>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
class QByteArray;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
#undef DVAPI
Toshihiro Shimizu 890ddd
#undef DVVAR
Toshihiro Shimizu 890ddd
#ifdef TOONZQT_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 TXsheetHandle;
Toshihiro Shimizu 890ddd
class TXshLevelHandle;
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
//=============================================================================
Toshihiro Shimizu 890ddd
// TStyleSelection
Toshihiro Shimizu 890ddd
//-----------------------------------------------------------------------------
Toshihiro Shimizu 890ddd
Shinya Kitaoka d1f6c4
class DVAPI TStyleSelection final : public TSelection {
Shinya Kitaoka 120a6e
  TPaletteHandle *m_paletteHandle;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  // Used to change level palette; in other palette (cleanup, ...) xsheetHandle
Shinya Kitaoka 120a6e
  // is not necessary.
Shinya Kitaoka 120a6e
  TXsheetHandle *m_xsheetHandle;
Shinya Kitaoka 120a6e
  // for clearing cache when the pastestyle command is executed
Shinya Kitaoka 120a6e
  TXshLevelHandle *m_levelHandle;
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
  int m_pageIndex;
Shinya Kitaoka 120a6e
  std::set<int> m_styleIndicesInPage;</int>
Toshihiro Shimizu 890ddd
Toshihiro Shimizu 890ddd
public:
Shinya Kitaoka 120a6e
  TStyleSelection();
Shinya Kitaoka 120a6e
  TStyleSelection(TStyleSelection *styleSelection)
Shinya Kitaoka 120a6e
      : m_paletteHandle(styleSelection->getPaletteHandle())
Shinya Kitaoka 120a6e
      , m_pageIndex(styleSelection->getPageIndex())
Shinya Kitaoka 120a6e
      , m_styleIndicesInPage(styleSelection->getIndicesInPage()) {}
Shinya Kitaoka 120a6e
  ~TStyleSelection();
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  void select(int pageIndex);
Shinya Kitaoka 120a6e
  void select(int pageIndex, int styleIndexInPage, bool on);
Shinya Kitaoka 120a6e
  bool isSelected(int pageIndex, int styleIndexInPage) const;
Shinya Kitaoka 120a6e
  bool isPageSelected(int pageIndex) const;
Shinya Kitaoka 120a6e
  bool canHandleStyles();
Shinya Kitaoka 473e70
  void selectNone() override;
Shinya Kitaoka 473e70
  bool isEmpty() const override;
Shinya Kitaoka 120a6e
  int getStyleCount() const;
Shinya Kitaoka 120a6e
  TPaletteHandle *getPaletteHandle() const { return m_paletteHandle; }
Shinya Kitaoka 120a6e
  void setPaletteHandle(TPaletteHandle *paletteHandle) {
Shinya Kitaoka 120a6e
    m_paletteHandle = paletteHandle;
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
  TPalette *getPalette() const { return m_paletteHandle->getPalette(); }
Shinya Kitaoka 120a6e
  int getPageIndex() const { return m_pageIndex; }
Shinya Kitaoka 120a6e
  const std::set<int> &getIndicesInPage() const { return m_styleIndicesInPage; }</int>
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  void getIndices(std::set<int> &indices) const;</int>
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  // Used to change level palette; in other palette (cleanup, ...) xsheetHandle
Shinya Kitaoka 120a6e
  // is not necessary.
Shinya Kitaoka 120a6e
  void setXsheetHandle(TXsheetHandle *xsheetHandle) {
Shinya Kitaoka 120a6e
    m_xsheetHandle = xsheetHandle;
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
  TXsheetHandle *getXsheetHandle() const { return m_xsheetHandle; }
Shinya Kitaoka 120a6e
  void setLevelHandle(TXshLevelHandle *levelHandle) {
Shinya Kitaoka 120a6e
    m_levelHandle = levelHandle;
Shinya Kitaoka 120a6e
  }
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  // commands
Shinya Kitaoka 120a6e
  void cutStyles();
Shinya Kitaoka 120a6e
  void copyStyles();
Shinya Kitaoka 120a6e
  void pasteStyles();
Shinya Kitaoka 120a6e
  void pasteStylesValues(bool pasteName, bool pasteColor = true);
Shinya Kitaoka 120a6e
  void pasteStylesValue();
Shinya Kitaoka 120a6e
  void pasteStylesColor();
Shinya Kitaoka 120a6e
  void pasteStylesName();
Shinya Kitaoka 120a6e
  void deleteStyles();
shun-iwasawa b37337
  void eraseUnusedStyle();
Shinya Kitaoka 120a6e
  void blendStyles();
Shinya Kitaoka 120a6e
  void toggleLink();
Shinya Kitaoka 120a6e
  void eraseToggleLink();
Shinya Kitaoka 120a6e
Shinya Kitaoka 473e70
  void enableCommands() override;
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  void toggleKeyframe(int frame);
Shinya Kitaoka 120a6e
Shinya Kitaoka 120a6e
  // remove link from the studio palette (if linked)
shun_iwasawa 640862
  void removeLink();
Shinya Kitaoka 120a6e
  // get back the style from the studio palette (if linked)
Shinya Kitaoka 120a6e
  void getBackOriginalStyle();
shun-iwasawa 2d063f
shun-iwasawa 2d063f
  // return true if there is at least one linked style in the selection.
shun-iwasawa 2d063f
  // link parent styles are not counted
shun_iwasawa 9f19cf
  bool hasLinkedStyle();
Toshihiro Shimizu 890ddd
};
Toshihiro Shimizu 890ddd
Shinya Kitaoka 120a6e
#endif  // STYLESELECTION_INCLUDED