1 #pragma once 2 3 #ifndef PALETTECMD_INCLUDED 4 #define PALETTECMD_INCLUDED 5 6 #include <set> 7 #include <vector> 8 #include "tpalette.h" 9 10 #undef DVAPI 11 #undef DVVAR 12 #ifdef TOONZLIB_EXPORTS 13 #define DVAPI DV_EXPORT_API 14 #define DVVAR DV_EXPORT_VAR 15 #else 16 #define DVAPI DV_IMPORT_API 17 #define DVVAR DV_IMPORT_VAR 18 #endif 19 20 class TPaletteHandle; 21 class TXsheet; 22 class TXshSimpleLevel; 23 class ToonzScene; 24 25 /*!Find all level with palette \b palette. Set \b row and \b column with first 26 cell which contain a simil level.*/ 27 DVAPI void findPaletteLevels(std::set<TXshSimpleLevel *> &levels, int &rowIndex, 28 int &columnIndex, TPalette *palette, 29 TXsheet *xsheet); 30 31 DVAPI bool isStyleUsed(const TImageP image, int styleId); 32 DVAPI bool areStylesUsed(const std::set<TXshSimpleLevel *> levels, 33 const std::vector<int> styleIds); 34 35 namespace PaletteCmd { 36 37 DVAPI void arrangeStyles(TPaletteHandle *paletteHandle, int dstPageIndex, 38 int dstIndexInPage, int srcPageIndex, 39 const std::set<int> &srcIndicesInPage); 40 41 DVAPI void createStyle(TPaletteHandle *paletteHandle, TPalette::Page *page); 42 43 DVAPI void addStyles(TPaletteHandle *paletteHandle, int pageIndex, 44 int indexInPage, const std::vector<TColorStyle *> &styles); 45 46 /*! 47 \brief Erases <I>image entities</I> whose style is any of the specified 48 ones. 49 \details This function applies to <I>all objects contained in the images of a 50 level</I>; 51 for example, all strokes and regions of the <TT>TVectorImage</TT>s 52 in a level. 53 54 \remark This command does not provide an undo for level types whose images 55 are raster-based 56 (specifically, fullcolor and TLV images), due to memory occupation 57 concerns. 58 */ 59 60 DVAPI void eraseStyles(const std::set<TXshSimpleLevel *> &levels, 61 const std::vector<int> &styleIds); 62 63 // se name == L"" viene generato un nome univoco ('page N') 64 DVAPI void addPage(TPaletteHandle *paletteHandle, std::wstring name = L"", 65 bool withUndo = true); 66 67 DVAPI void destroyPage(TPaletteHandle *paletteHandle, int pageIndex); 68 69 enum ColorModelPltBehavior { 70 KeepColorModelPlt = 0, 71 ReplaceColorModelPlt, 72 AddColorModelPlt 73 }; 74 75 enum ColorModelRasterPickType { 76 PickEveryColors = 0, 77 IntegrateSimilarColors, 78 PickColorChipGrid 79 }; 80 81 enum ColorChipOrder { UpperLeft = 0, LowerLeft, LeftUpper }; 82 83 struct ColorModelLoadingConfiguration { 84 ColorModelPltBehavior behavior = ReplaceColorModelPlt; 85 ColorModelRasterPickType rasterPickType = PickEveryColors; 86 TPixel32 gridColor = TPixel::Magenta; 87 int gridLineWidth = 1; 88 ColorChipOrder colorChipOrder = UpperLeft; 89 }; 90 91 DVAPI int loadReferenceImage( 92 TPaletteHandle *paletteHandle, const ColorModelLoadingConfiguration &config, 93 const TFilePath &_fp, ToonzScene *scene, 94 const std::vector<int> &frames = std::vector<int>()); 95 96 DVAPI void removeReferenceImage(TPaletteHandle *paletteHandle); 97 98 DVAPI void movePalettePage(TPaletteHandle *paletteHandle, int srcIndex, 99 int dstIndex); 100 101 DVAPI void renamePalettePage(TPaletteHandle *paletteHandle, int pageIndex, 102 const std::wstring &newName); 103 104 DVAPI void renamePaletteStyle(TPaletteHandle *paletteHandle, 105 const std::wstring &newName); 106 107 /* called in ColorModelViewer::pick() - move selected style to the first page */ 108 DVAPI void organizePaletteStyle(TPaletteHandle *paletteHandle, int styleId, 109 const TColorStyle::PickedPosition &point); 110 111 /* 112 called in ColorModelViewer::repickFromColorModel(). 113 Pick color from the img for all styles with "picked position" value. 114 */ 115 DVAPI void pickColorByUsingPickedPosition(TPaletteHandle *paletteHandle, 116 TImageP img, int frame); 117 118 } // namespace 119 120 #endif 121