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