|
Shinya Kitaoka |
810553 |
#pragma once
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#ifndef STUDIOPALETTE_INCLUDED
|
|
Toshihiro Shimizu |
890ddd |
#define STUDIOPALETTE_INCLUDED
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#include "tpalette.h"
|
|
shun-iwasawa |
73c7bb |
#include "toonz/tproject.h"
|
|
shun-iwasawa |
73c7bb |
// #include "tfilepath.h"
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#undef DVAPI
|
|
Toshihiro Shimizu |
890ddd |
#undef DVVAR
|
|
Toshihiro Shimizu |
890ddd |
#ifdef TOONZLIB_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 TPalette;
|
|
Toshihiro Shimizu |
890ddd |
class TImage;
|
|
Toshihiro Shimizu |
890ddd |
class TColorStyle;
|
|
Toshihiro Shimizu |
890ddd |
|
|
shun-iwasawa |
73c7bb |
class DVAPI StudioPalette
|
|
shun-iwasawa |
73c7bb |
: public TProjectManager::Listener { // singleton; methods can throw
|
|
shun-iwasawa |
73c7bb |
// exceptions
|
|
Toshihiro Shimizu |
890ddd |
public:
|
|
Shinya Kitaoka |
120a6e |
class Listener {
|
|
Shinya Kitaoka |
120a6e |
public:
|
|
Shinya Kitaoka |
120a6e |
virtual void onStudioPaletteTreeChange() {}
|
|
Shinya Kitaoka |
120a6e |
virtual void onStudioPaletteMove(const TFilePath &dstPath,
|
|
Shinya Kitaoka |
120a6e |
const TFilePath &srcPath) {}
|
|
Shinya Kitaoka |
120a6e |
virtual void onStudioPaletteChange(const TFilePath &palette) {}
|
|
Shinya Kitaoka |
120a6e |
virtual ~Listener() {}
|
|
Shinya Kitaoka |
120a6e |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
class Palette { // serve per il drag&drop
|
|
Shinya Kitaoka |
120a6e |
TFilePath m_palettePath;
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
public:
|
|
Shinya Kitaoka |
120a6e |
Palette(const TFilePath &path) : m_palettePath(path) {}
|
|
Shinya Kitaoka |
120a6e |
const TFilePath &getPath() const { return m_palettePath; }
|
|
Shinya Kitaoka |
120a6e |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
static StudioPalette *instance();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
~StudioPalette();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TPalette *getPalette(const TFilePath &path, bool loadRefImg = false);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
int getChildren(std::vector<tfilepath> &fps, const TFilePath &folderPath);</tfilepath>
|
|
Shinya Kitaoka |
120a6e |
int getChildCount(const TFilePath &folderPath);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
bool isFolder(const TFilePath &path);
|
|
Shinya Kitaoka |
120a6e |
bool isPalette(const TFilePath &path);
|
|
Shinya Kitaoka |
120a6e |
bool isReadOnly(const TFilePath &path);
|
|
Shinya Kitaoka |
120a6e |
bool isLevelPalette(const TFilePath &path);
|
|
Shinya Kitaoka |
120a6e |
bool hasGlobalName(const TFilePath &path);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// ritorna il nome del folder creato
|
|
Shinya Kitaoka |
120a6e |
TFilePath createFolder(const TFilePath &parentFolderPath);
|
|
Shinya Kitaoka |
120a6e |
void createFolder(const TFilePath &parentFolderPath, std::wstring name);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// ritorna il nome della palette creata;
|
|
Shinya Kitaoka |
120a6e |
// se paletteName != "" prova ad assegnare quel nome. Se esiste gia'
|
|
Shinya Kitaoka |
120a6e |
// aggiunge un suffisso
|
|
Shinya Kitaoka |
120a6e |
TFilePath createPalette(const TFilePath &folderPath,
|
|
Shinya Kitaoka |
120a6e |
std::string paletteName = "");
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// DOESN'T get ownership
|
|
Shinya Kitaoka |
120a6e |
void setPalette(const TFilePath &palettePath, const TPalette *palette,
|
|
Shinya Kitaoka |
120a6e |
bool notifyPaletteChanged);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void deletePalette(const TFilePath &palettePath);
|
|
Shinya Kitaoka |
120a6e |
void deleteFolder(const TFilePath &folderPath);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TFilePath importPalette(const TFilePath &dstFolder, const TFilePath &srcPath);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void movePalette(const TFilePath &dstPath, const TFilePath &srcPath);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TFilePath getLevelPalettesRoot();
|
|
Shinya Kitaoka |
120a6e |
TFilePath getProjectPalettesRoot();
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// TFilePath getRefImage(const TFilePath palettePath);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
bool updateLinkedColors(TPalette *palette);
|
|
Shinya Kitaoka |
120a6e |
void setStylesGlobalNames(TPalette *palette);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TFilePath getPalettePath(std::wstring paletteId);
|
|
Shinya Kitaoka |
120a6e |
TPalette *getPalette(std::wstring paletteId);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TColorStyle *getStyle(std::wstring styleId);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// se lo stile ha un nome globale restituisce il nome della studio palette e
|
|
Shinya Kitaoka |
120a6e |
// l'indice
|
|
Shinya Kitaoka |
120a6e |
// dello stile linkato
|
|
Shinya Kitaoka |
120a6e |
// (altrimenti restituisce (TFilePath(),-1))
|
|
Shinya Kitaoka |
120a6e |
std::pair<tfilepath, int=""> getSourceStyle(TColorStyle *cs);</tfilepath,>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void addListener(Listener *listener);
|
|
Shinya Kitaoka |
120a6e |
void removeListener(Listener *listener);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void notifyTreeChange();
|
|
Shinya Kitaoka |
120a6e |
void notifyMove(const TFilePath &dstPath, const TFilePath &srcPath);
|
|
Shinya Kitaoka |
120a6e |
void notifyPaletteChange(const TFilePath &name);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
// bruttacchietto.
|
|
Shinya Kitaoka |
120a6e |
static bool isEnabled() { return m_enabled; };
|
|
Shinya Kitaoka |
120a6e |
static void enable(bool enabled);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
void save(const TFilePath &path, TPalette *palette);
|
|
Toshihiro Shimizu |
890ddd |
|
|
shun-iwasawa |
3bb469 |
void removeEntry(const std::wstring paletteId);
|
|
shun-iwasawa |
3bb469 |
void addEntry(const std::wstring paletteId, const TFilePath &path);
|
|
shun-iwasawa |
3bb469 |
|
|
shun-iwasawa |
73c7bb |
// TProjectManager::Listener
|
|
shun-iwasawa |
73c7bb |
void onProjectSwitched() override;
|
|
shun-iwasawa |
73c7bb |
void onProjectChanged() override;
|
|
shun-iwasawa |
73c7bb |
|
|
Toshihiro Shimizu |
890ddd |
private:
|
|
Shinya Kitaoka |
120a6e |
StudioPalette();
|
|
Shinya Kitaoka |
120a6e |
TFilePath m_root;
|
|
Shinya Kitaoka |
120a6e |
std::map<std::wstring, tfilepath=""> m_table;</std::wstring,>
|
|
Shinya Kitaoka |
120a6e |
std::vector<listener *=""> m_listeners;</listener>
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
TPalette *load(const TFilePath &path);
|
|
Toshihiro Shimizu |
890ddd |
|
|
Shinya Kitaoka |
120a6e |
static bool m_enabled;
|
|
Toshihiro Shimizu |
890ddd |
};
|
|
Toshihiro Shimizu |
890ddd |
|
|
Toshihiro Shimizu |
890ddd |
#endif
|