ManaPlus
Public Member Functions | Static Public Member Functions | Static Public Attributes | Private Attributes
DyePalette Class Reference

#include <dyepalette.h>

Public Member Functions

 DyePalette (const std::string &pallete, const uint8_t blockSize)
 
void getColor (const unsigned int intensity, unsigned int(&color)[3]) const
 
void getColor (double intensity, int(&color)[3]) const
 
void replaceSColorDefault (uint32_t *pixels, const int bufSize) const
 
void replaceAColorDefault (uint32_t *pixels, const int bufSize) const
 
void replaceSOGLColorDefault (uint32_t *pixels, const int bufSize) const
 
void replaceAOGLColorDefault (uint32_t *pixels, const int bufSize) const
 

Static Public Member Functions

static unsigned int hexDecode (const signed char c) A_CONST
 
static void hexToColor (const std::string &hexStr, const uint8_t blockSize, DyeColor &color)
 
static void initFunctions ()
 

Static Public Attributes

static DyeFunctionPtr funcReplaceSOGLColor = 0
 
static DyeFunctionPtr funcReplaceSOGLColorSse2 = 0
 
static DyeFunctionPtr funcReplaceSOGLColorAvx2 = 0
 
static DyeFunctionPtr funcReplaceAOGLColor = 0
 
static DyeFunctionPtr funcReplaceAOGLColorSse2 = 0
 
static DyeFunctionPtr funcReplaceAOGLColorAvx2 = 0
 
static DyeFunctionPtr funcReplaceSColor = 0
 
static DyeFunctionPtr funcReplaceSColorSse2 = 0
 
static DyeFunctionPtr funcReplaceSColorAvx2 = 0
 
static DyeFunctionPtr funcReplaceAColor = 0
 
static DyeFunctionPtr funcReplaceAColorSse2 = 0
 
static DyeFunctionPtr funcReplaceAColorAvx2 = 0
 

Private Attributes

std::vector< DyeColormColors
 

Detailed Description

Class for performing a linear interpolation between colors.

Definition at line 46 of file dyepalette.h.

Constructor & Destructor Documentation

◆ DyePalette()

DyePalette::DyePalette ( const std::string &  pallete,
const uint8_t  blockSize 
)

Creates a palette based on the given string. The string is either a file name or a sequence of hexadecimal RGB values separated by ',' and starting with '#'.

Definition at line 68 of file dyepalette.cpp.

69  :
70  mColors()
71 {
72  const size_t size = CAST_SIZE(description.length());
73  if (size == 0)
74  return;
75 
76  StringVect parts;
77  splitToStringVector(parts, description.substr(1), ',');
78  if (description[0] == '#')
79  {
80  FOR_EACH (StringVectCIter, it, parts)
81  {
82  DyeColor color(0, 0, 0, 0);
83  hexToColor(*it, blockSize, color);
84  mColors.push_back(color);
85  }
86  return;
87  }
88 #ifndef DYECMD
89  else if (description[0] == '@')
90  {
91  uint8_t alpha = 255;
92  FOR_EACH (StringVectCIter, it, parts)
93  {
94  const std::string str = *it;
95  if (str.empty())
96  continue;
97  if (str[0] == '+')
98  {
99  if (str.size() != 3)
100  continue;
101  alpha = CAST_U8((hexDecode(str[1]) << 4) + hexDecode(str[2]));
102  continue;
103  }
104  const DyeColor *const color = PaletteDB::getColor(str);
105  if (color != nullptr)
106  {
107  DyeColor color2 = *color;
108  color2.value[3] = alpha;
109  mColors.push_back(color2);
110  }
111  else
112  {
113  DyeColor color2(0, 0, 0, 0);
114  hexToColor(str, blockSize, color2);
115  mColors.push_back(color2);
116  }
117  }
118  return;
119  }
120 #endif // DYECMD
121 
122  logger->log("Error, invalid embedded palette: %s", description.c_str());
123 }
#define CAST_SIZE
Definition: cast.h:34
#define CAST_U8
Definition: cast.h:27
static void hexToColor(const std::string &hexStr, const uint8_t blockSize, DyeColor &color)
Definition: dyepalette.cpp:125
static unsigned int hexDecode(const signed char c) A_CONST
Definition: dyepalette.cpp:140
std::vector< DyeColor > mColors
Definition: dyepalette.h:185
void log(const char *const log_text,...)
Definition: logger.cpp:269
#define FOR_EACH(type, iter, array)
Definition: foreach.h:25
Logger * logger
Definition: logger.cpp:89
int size()
Definition: emotedb.cpp:306
const DyeColor * getColor(const std::string &name)
Definition: palettedb.cpp:109
void splitToStringVector(StringVect &tokens, const std::string &text, const char separator)
StringVect::const_iterator StringVectCIter
Definition: stringvector.h:31
std::vector< std::string > StringVect
Definition: stringvector.h:29
uint8_t value[4]
Definition: dyecolor.h:77

References CAST_SIZE, CAST_U8, FOR_EACH, PaletteDB::getColor(), hexDecode(), hexToColor(), Logger::log(), logger, mColors, EmoteDB::size(), splitToStringVector(), and DyeColor::value.

Member Function Documentation

◆ getColor() [1/2]

void DyePalette::getColor ( const unsigned int  intensity,
unsigned int(&)  color[3] 
) const

Gets a pixel color depending on its intensity. First color is implicitly black (0, 0, 0).

Definition at line 152 of file dyepalette.cpp.

154 {
155  if (intensity == 0)
156  {
157  color[0] = 0;
158  color[1] = 0;
159  color[2] = 0;
160  return;
161  }
162 
163  const int last = CAST_S32(mColors.size());
164  if (last == 0)
165  return;
166 
167  const int intLast = intensity * last;
168  const int i = intLast / 255;
169  const int t = intLast % 255;
170 
171  int j = t != 0 ? i : i - 1;
172 
173  if (j >= last)
174  j = 0;
175 
176  // Get the exact color if any, the next color otherwise.
177  const DyeColor &colorJ = mColors[j];
178  const int r2 = colorJ.value[0];
179  const int g2 = colorJ.value[1];
180  const int b2 = colorJ.value[2];
181 
182  if (t == 0)
183  {
184  // Exact color.
185  color[0] = r2;
186  color[1] = g2;
187  color[2] = b2;
188  return;
189  }
190 
191  // Get the previous color. First color is implicitly black.
192  if (i > 0 && i < last + 1)
193  {
194  const DyeColor &colorI = mColors[i - 1];
195  const int t2 = 255 - t;
196  // Perform a linear interpolation.
197  color[0] = (t2 * colorI.value[0] + t * r2) / 255;
198  color[1] = (t2 * colorI.value[1] + t * g2) / 255;
199  color[2] = (t2 * colorI.value[2] + t * b2) / 255;
200  }
201  else
202  {
203  // Perform a linear interpolation.
204  color[0] = (t * r2) / 255;
205  color[1] = (t * g2) / 255;
206  color[2] = (t * b2) / 255;
207  }
208 }
#define CAST_S32
Definition: cast.h:30

References CAST_S32, anonymous_namespace{palettedb.cpp}::mColors, and DyeColor::value.

Referenced by Theme::getProgressColor().

◆ getColor() [2/2]

void DyePalette::getColor ( double  intensity,
int(&)  color[3] 
) const

Gets a pixel color depending on its intensity.

Definition at line 210 of file dyepalette.cpp.

212 {
213  // Nothing to do here
214  if (mColors.empty())
215  return;
216 
217  // Force range
218  if (intensity > 1.0)
219  intensity = 1.0;
220  else if (intensity < 0.0)
221  intensity = 0.0;
222 
223  // Scale up
224  intensity *= static_cast<double>(mColors.size() - 1);
225 
226  // Color indices
227  const int i = CAST_S32(floor(intensity));
228  const int j = CAST_S32(ceil(intensity));
229  const DyeColor &colorI = mColors[i];
230 
231  if (i == j)
232  {
233  // Exact color.
234  color[0] = colorI.value[0];
235  color[1] = colorI.value[1];
236  color[2] = colorI.value[2];
237  return;
238  }
239 
240  intensity -= i;
241  const double rest = 1 - intensity;
242  const DyeColor &colorJ = mColors[j];
243 
244  // Perform the interpolation.
245  color[0] = CAST_S32(rest * colorI.value[0] +
246  intensity * colorJ.value[0]);
247  color[1] = CAST_S32(rest * colorI.value[1] +
248  intensity * colorJ.value[1]);
249  color[2] = CAST_S32(rest * colorI.value[2] +
250  intensity * colorJ.value[2]);
251 }

References CAST_S32, anonymous_namespace{palettedb.cpp}::mColors, and DyeColor::value.

◆ hexDecode()

unsigned int DyePalette::hexDecode ( const signed char  c)
static

Definition at line 140 of file dyepalette.cpp.

141 {
142  if ('0' <= c && c <= '9')
143  return c - '0';
144  else if ('A' <= c && c <= 'F')
145  return c - 'A' + 10;
146  else if ('a' <= c && c <= 'f')
147  return c - 'a' + 10;
148  else
149  return 0;
150 }

Referenced by DyePalette().

◆ hexToColor()

void DyePalette::hexToColor ( const std::string &  hexStr,
const uint8_t  blockSize,
DyeColor color 
)
static

Definition at line 125 of file dyepalette.cpp.

128 {
129  for (size_t i = 0, colorIdx = 0;
130  i < blockSize && colorIdx < 4;
131  i += 2, colorIdx ++)
132  {
133  color.value[colorIdx] = CAST_U8((
134  hexDecode(hexStr[i]) << 4)
135  + hexDecode(hexStr[i + 1]));
136  }
137  color.update();
138 }
void update()
Definition: dyecolor.h:68

References CAST_U8.

Referenced by DyePalette().

◆ initFunctions()

void DyePalette::initFunctions ( )
static

Definition at line 253 of file dyepalette.cpp.

254 {
255 #ifdef SIMD_SUPPORTED
256  const uint32_t flags = Cpu::getFlags();
257  if ((flags & Cpu::FEATURE_AVX2) != 0U)
258  {
259  funcReplaceSColor = &DyePalette::replaceSColorAvx2;
260  funcReplaceSColorAvx2 = &DyePalette::replaceSColorAvx2;
261  funcReplaceSColorSse2 = &DyePalette::replaceSColorSse2;
262  funcReplaceAColor = &DyePalette::replaceAColorAvx2;
263  funcReplaceAColorAvx2 = &DyePalette::replaceAColorAvx2;
264  funcReplaceAColorSse2 = &DyePalette::replaceAColorSse2;
265 
266 #ifdef USE_OPENGL
267  funcReplaceSOGLColor = &DyePalette::replaceSOGLColorAvx2;
268  funcReplaceSOGLColorAvx2 = &DyePalette::replaceSOGLColorAvx2;
269  funcReplaceSOGLColorSse2 = &DyePalette::replaceSOGLColorSse2;
270  funcReplaceAOGLColor = &DyePalette::replaceAOGLColorAvx2;
271  funcReplaceAOGLColorAvx2 = &DyePalette::replaceAOGLColorAvx2;
272  funcReplaceAOGLColorSse2 = &DyePalette::replaceAOGLColorSse2;
273 #endif // USE_OPENGL
274  }
275  else if ((flags & Cpu::FEATURE_SSE2) != 0U)
276  {
277  funcReplaceSColor = &DyePalette::replaceSColorSse2;
278  funcReplaceSColorAvx2 = &DyePalette::replaceSColorSse2;
279  funcReplaceSColorSse2 = &DyePalette::replaceSColorSse2;
280  funcReplaceAColor = &DyePalette::replaceAColorSse2;
281  funcReplaceAColorAvx2 = &DyePalette::replaceAColorSse2;
282  funcReplaceAColorSse2 = &DyePalette::replaceAColorSse2;
283 
284 #ifdef USE_OPENGL
285  funcReplaceSOGLColor = &DyePalette::replaceSOGLColorSse2;
286  funcReplaceSOGLColorAvx2 = &DyePalette::replaceSOGLColorSse2;
287  funcReplaceSOGLColorSse2 = &DyePalette::replaceSOGLColorSse2;
288  funcReplaceAOGLColor = &DyePalette::replaceAOGLColorSse2;
289  funcReplaceAOGLColorAvx2 = &DyePalette::replaceAOGLColorSse2;
290  funcReplaceAOGLColorSse2 = &DyePalette::replaceAOGLColorSse2;
291 #endif // USE_OPENGL
292  }
293  else
294 #endif // SIMD_SUPPORTED
295  {
302 
303 #ifdef USE_OPENGL
310 #endif // USE_OPENGL
311  }
312 }
static DyeFunctionPtr funcReplaceAOGLColorSse2
Definition: dyepalette.h:171
static DyeFunctionPtr funcReplaceSColorAvx2
Definition: dyepalette.h:177
void replaceAColorDefault(uint32_t *pixels, const int bufSize) const
static DyeFunctionPtr funcReplaceAColorSse2
Definition: dyepalette.h:179
static DyeFunctionPtr funcReplaceSColor
Definition: dyepalette.h:175
void replaceAOGLColorDefault(uint32_t *pixels, const int bufSize) const
static DyeFunctionPtr funcReplaceAColor
Definition: dyepalette.h:178
static DyeFunctionPtr funcReplaceSOGLColor
Definition: dyepalette.h:167
void replaceSOGLColorDefault(uint32_t *pixels, const int bufSize) const
void replaceSColorDefault(uint32_t *pixels, const int bufSize) const
static DyeFunctionPtr funcReplaceSOGLColorSse2
Definition: dyepalette.h:168
static DyeFunctionPtr funcReplaceSColorSse2
Definition: dyepalette.h:176
static DyeFunctionPtr funcReplaceAOGLColorAvx2
Definition: dyepalette.h:172
static DyeFunctionPtr funcReplaceAOGLColor
Definition: dyepalette.h:170
static DyeFunctionPtr funcReplaceSOGLColorAvx2
Definition: dyepalette.h:169
static DyeFunctionPtr funcReplaceAColorAvx2
Definition: dyepalette.h:180
uint32_t getFlags()
Definition: cpu.cpp:176
@ FEATURE_AVX2
Definition: cpu.h:39
@ FEATURE_SSE2
Definition: cpu.h:34

References Cpu::FEATURE_AVX2, Cpu::FEATURE_SSE2, funcReplaceAColor, funcReplaceAColorAvx2, funcReplaceAColorSse2, funcReplaceAOGLColor, funcReplaceAOGLColorAvx2, funcReplaceAOGLColorSse2, funcReplaceSColor, funcReplaceSColorAvx2, funcReplaceSColorSse2, funcReplaceSOGLColor, funcReplaceSOGLColorAvx2, funcReplaceSOGLColorSse2, Cpu::getFlags(), replaceAColorDefault(), replaceAOGLColorDefault(), replaceSColorDefault(), and replaceSOGLColorDefault().

Referenced by Client::gameInit(), and main().

◆ replaceAColorDefault()

void DyePalette::replaceAColorDefault ( uint32_t *  pixels,
const int  bufSize 
) const

replace colors for SDL for A dye.

Definition at line 40 of file dyepalette_replaceacolor.cpp.

42 {
43  STD_VECTOR<DyeColor>::const_iterator it_end = mColors.end();
44  const size_t sz = mColors.size();
45  if ((sz == 0U) || (pixels == nullptr))
46  return;
47  if ((sz % 2) != 0U)
48  -- it_end;
49 
50  for (const uint32_t *const p_end = pixels + CAST_SIZE(bufSize);
51  pixels != p_end;
52  ++pixels)
53  {
54  uint8_t *const p = reinterpret_cast<uint8_t *>(pixels);
55  const unsigned int data = *pixels;
56 
57  STD_VECTOR<DyeColor>::const_iterator it = mColors.begin();
58  while (it != it_end)
59  {
60  const DyeColor &col = *it;
61  ++ it;
62  const DyeColor &col2 = *it;
63 
64 #if SDL_BYTEORDER == SDL_BIG_ENDIAN
65  const unsigned int coldata = (col.value[3] << 24U)
66  | (col.value[2] << 16U)
67  | (col.value[1] << 8U)
68  | (col.value[0]);
69 #else // SDL_BYTEORDER == SDL_BIG_ENDIAN
70  const unsigned int coldata = (col.value[3])
71  | (col.value[2] << 8U)
72  | (col.value[1] << 16U) |
73  (col.value[0] << 24U);
74 #endif // SDL_BYTEORDER == SDL_BIG_ENDIAN
75 
76  if (data == coldata)
77  {
78  p[3] = col2.value[0];
79  p[2] = col2.value[1];
80  p[1] = col2.value[2];
81  p[0] = col2.value[3];
82  break;
83  }
84 
85  ++ it;
86  }
87  }
88 }
uint32_t data

References CAST_SIZE, data, anonymous_namespace{palettedb.cpp}::mColors, and DyeColor::value.

Referenced by initFunctions().

◆ replaceAOGLColorDefault()

void DyePalette::replaceAOGLColorDefault ( uint32_t *  pixels,
const int  bufSize 
) const

replace colors for OpenGL for A dye.

Definition at line 42 of file dyepalette_replaceaoglcolor.cpp.

44 {
45  STD_VECTOR<DyeColor>::const_iterator it_end = mColors.end();
46  const size_t sz = mColors.size();
47  if (sz == 0U || pixels == nullptr)
48  return;
49  if ((sz % 2) != 0U)
50  -- it_end;
51 
52  for (const uint32_t *const p_end = pixels + CAST_SIZE(bufSize);
53  pixels != p_end;
54  ++pixels)
55  {
56  uint8_t *const p = reinterpret_cast<uint8_t *>(pixels);
57  const unsigned int data = *pixels;
58 
59  STD_VECTOR<DyeColor>::const_iterator it = mColors.begin();
60  while (it != it_end)
61  {
62  const DyeColor &col = *it;
63  ++ it;
64  const DyeColor &col2 = *it;
65 
66 #if SDL_BYTEORDER == SDL_BIG_ENDIAN
67  const unsigned int coldata = (col.value[0] << 24U)
68  | (col.value[1] << 16U)
69  | (col.value[2] << 8U)
70  | col.value[3];
71 #else // SDL_BYTEORDER == SDL_BIG_ENDIAN
72 
73  const unsigned int coldata = (col.value[0])
74  | (col.value[1] << 8U)
75  | (col.value[2] << 16U)
76  | (col.value[3] << 24U);
77 #endif // SDL_BYTEORDER == SDL_BIG_ENDIAN
78 
79  if (data == coldata)
80  {
81  p[0] = col2.value[0];
82  p[1] = col2.value[1];
83  p[2] = col2.value[2];
84  p[3] = col2.value[3];
85  break;
86  }
87 
88  ++ it;
89  }
90  }
91 }

References CAST_SIZE, data, anonymous_namespace{palettedb.cpp}::mColors, and DyeColor::value.

Referenced by initFunctions().

◆ replaceSColorDefault()

void DyePalette::replaceSColorDefault ( uint32_t *  pixels,
const int  bufSize 
) const

replace colors for SDL for S dye.

Definition at line 40 of file dyepalette_replacescolor.cpp.

42 {
43  STD_VECTOR<DyeColor>::const_iterator it_end = mColors.end();
44  const size_t sz = mColors.size();
45  if (sz == 0U || pixels == nullptr)
46  return;
47  if ((sz % 2) != 0U)
48  -- it_end;
49 
50  for (const uint32_t *const p_end = pixels + CAST_SIZE(bufSize);
51  pixels != p_end;
52  ++ pixels)
53  {
54  uint8_t *const p = reinterpret_cast<uint8_t *>(pixels);
55 #if SDL_BYTEORDER == SDL_BIG_ENDIAN
56  const unsigned int data = (*pixels) & 0x00ffffffU;
57 #else // SDL_BYTEORDER == SDL_BIG_ENDIAN
58 
59  const unsigned int data = (*pixels) & 0xffffff00U;
60 #endif // SDL_BYTEORDER == SDL_BIG_ENDIAN
61 
62  STD_VECTOR<DyeColor>::const_iterator it = mColors.begin();
63  while (it != it_end)
64  {
65  const DyeColor &col = *it;
66  ++ it;
67  const DyeColor &col2 = *it;
68 
69 #if SDL_BYTEORDER == SDL_BIG_ENDIAN
70  const unsigned int coldata = (col.value[2] << 16U)
71  | (col.value[1] << 8U) | (col.value[0]);
72 #else // SDL_BYTEORDER == SDL_BIG_ENDIAN
73 
74  const unsigned int coldata = (col.value[2] << 8U)
75  | (col.value[1] << 16U) | (col.value[0] << 24U);
76 #endif // SDL_BYTEORDER == SDL_BIG_ENDIAN
77 
78  if (data == coldata)
79  {
80  p[3] = col2.value[0];
81  p[2] = col2.value[1];
82  p[1] = col2.value[2];
83  break;
84  }
85 
86  ++ it;
87  }
88  }
89 }

References CAST_SIZE, data, anonymous_namespace{palettedb.cpp}::mColors, and DyeColor::value.

Referenced by initFunctions().

◆ replaceSOGLColorDefault()

void DyePalette::replaceSOGLColorDefault ( uint32_t *  pixels,
const int  bufSize 
) const

replace colors for OpenGL for S dye.

Definition at line 42 of file dyepalette_replacesoglcolor.cpp.

44 {
45  STD_VECTOR<DyeColor>::const_iterator it_end = mColors.end();
46  const size_t sz = mColors.size();
47  if ((sz == 0U) || (pixels == nullptr))
48  return;
49  if ((sz % 2) != 0U)
50  -- it_end;
51 
52  for (const uint32_t *const p_end = pixels + CAST_SIZE(bufSize);
53  pixels != p_end;
54  ++pixels)
55  {
56  uint8_t *const p = reinterpret_cast<uint8_t *>(pixels);
57 #if SDL_BYTEORDER == SDL_BIG_ENDIAN
58  const unsigned int data = (*pixels) & 0xffffff00;
59 #else // SDL_BYTEORDER == SDL_BIG_ENDIAN
60 
61  const unsigned int data = (*pixels) & 0x00ffffff;
62 #endif // SDL_BYTEORDER == SDL_BIG_ENDIAN
63 
64  STD_VECTOR<DyeColor>::const_iterator it = mColors.begin();
65  while (it != it_end)
66  {
67  const DyeColor &col = *it;
68  ++ it;
69  const DyeColor &col2 = *it;
70 
71 #if SDL_BYTEORDER == SDL_BIG_ENDIAN
72  const unsigned int coldata = (col.value[0] << 24)
73  | (col.value[1] << 16) | (col.value[2] << 8);
74 #else // SDL_BYTEORDER == SDL_BIG_ENDIAN
75 
76  const unsigned int coldata = (col.value[0])
77  | (col.value[1] << 8) | (col.value[2] << 16);
78 #endif // SDL_BYTEORDER == SDL_BIG_ENDIAN
79 
80  if (data == coldata)
81  {
82  p[0] = col2.value[0];
83  p[1] = col2.value[1];
84  p[2] = col2.value[2];
85  break;
86  }
87 
88  ++ it;
89  }
90  }
91 }

References CAST_SIZE, data, anonymous_namespace{palettedb.cpp}::mColors, and DyeColor::value.

Referenced by initFunctions().

Field Documentation

◆ funcReplaceAColor

DyeFunctionPtr DyePalette::funcReplaceAColor = 0
static

Definition at line 178 of file dyepalette.h.

Referenced by initFunctions().

◆ funcReplaceAColorAvx2

DyeFunctionPtr DyePalette::funcReplaceAColorAvx2 = 0
static

Definition at line 180 of file dyepalette.h.

Referenced by initFunctions().

◆ funcReplaceAColorSse2

DyeFunctionPtr DyePalette::funcReplaceAColorSse2 = 0
static

Definition at line 179 of file dyepalette.h.

Referenced by initFunctions().

◆ funcReplaceAOGLColor

DyeFunctionPtr DyePalette::funcReplaceAOGLColor = 0
static

Definition at line 170 of file dyepalette.h.

Referenced by initFunctions().

◆ funcReplaceAOGLColorAvx2

DyeFunctionPtr DyePalette::funcReplaceAOGLColorAvx2 = 0
static

Definition at line 172 of file dyepalette.h.

Referenced by initFunctions().

◆ funcReplaceAOGLColorSse2

DyeFunctionPtr DyePalette::funcReplaceAOGLColorSse2 = 0
static

Definition at line 171 of file dyepalette.h.

Referenced by initFunctions().

◆ funcReplaceSColor

DyeFunctionPtr DyePalette::funcReplaceSColor = 0
static

Definition at line 175 of file dyepalette.h.

Referenced by initFunctions().

◆ funcReplaceSColorAvx2

DyeFunctionPtr DyePalette::funcReplaceSColorAvx2 = 0
static

Definition at line 177 of file dyepalette.h.

Referenced by initFunctions().

◆ funcReplaceSColorSse2

DyeFunctionPtr DyePalette::funcReplaceSColorSse2 = 0
static

Definition at line 176 of file dyepalette.h.

Referenced by initFunctions().

◆ funcReplaceSOGLColor

DyeFunctionPtr DyePalette::funcReplaceSOGLColor = 0
static

Definition at line 167 of file dyepalette.h.

Referenced by initFunctions().

◆ funcReplaceSOGLColorAvx2

DyeFunctionPtr DyePalette::funcReplaceSOGLColorAvx2 = 0
static

Definition at line 169 of file dyepalette.h.

Referenced by initFunctions().

◆ funcReplaceSOGLColorSse2

DyeFunctionPtr DyePalette::funcReplaceSOGLColorSse2 = 0
static

Definition at line 168 of file dyepalette.h.

Referenced by initFunctions().

◆ mColors

std::vector<DyeColor> DyePalette::mColors
private

Definition at line 185 of file dyepalette.h.

Referenced by DyePalette().


The documentation for this class was generated from the following files: