37 virtual wxString name()
const
39 return wxT(
"Areas in alphabetical order");
42 virtual const char* icon()
const
44 return "images/16x16/sort_alphabet.png";
50 auto study = GetCurrentStudy();
53 pArray.reserve(study->areas.size());
54 const Data::Area::Map::iterator end = study->areas.end();
55 for (Data::Area::Map::iterator i = study->areas.begin(); i != end; ++i)
56 pArray.push_back(i->second);
60 virtual uint size()
const
62 return (uint)pArray.size();
67 return (i < pArray.size()) ? pArray[i] : NULL;
70 virtual uint areaIndex(uint i)
const
72 return pArray[i]->index;
76 Data::Area::Vector pArray;
87 virtual wxString name()
const
89 return wxT(
"Areas in reverse alphabetical order");
92 virtual const char* icon()
const
94 return "images/16x16/sort_alphabet_descending.png";
101 auto study = GetCurrentStudy();
104 pArray.reserve(study->areas.size());
105 const Data::Area::Map::reverse_iterator end = study->areas.rend();
106 for (Data::Area::Map::reverse_iterator i = study->areas.rbegin(); i != end; ++i)
107 pArray.push_back(i->second);
111 virtual uint size()
const
113 return (uint)pArray.size();
118 return (i < pArray.size()) ? pArray[i] : NULL;
121 virtual uint areaIndex(uint i)
const
123 return pArray[i]->index;
127 Data::Area::Vector pArray;
148 virtual wxString name()
const
150 return wxT(
"Areas ordered by theur color");
153 virtual const char* icon()
const
155 return "images/16x16/color.png";
158 virtual void reload()
162 auto study = GetCurrentStudy();
166 const Data::Area::Map::iterator end = study->areas.end();
167 for (Data::Area::Map::iterator i = study->areas.begin(); i != end; ++i)
168 pArray.push_back(i->second);
170 std::sort(pArray.begin(), pArray.end(),
SortColor());
171 pRegionStart.resize(pArray.size(), 0);
172 pRegionEnd.resize(pArray.size(), 0);
173 pRegionColor.resize(pArray.size());
174 pRegionColorIdentity.resize(pArray.size());
179 Yuni::CString<12, false> old;
181 wxColour colorIdentity;
182 const Data::Area::Vector::const_iterator end = pArray.end();
183 for (Data::Area::Vector::const_iterator i = pArray.begin(); i != end; ++i, ++j)
185 if (old != (*i)->ui->cacheColorHSV)
187 for (
int z = lastLevel; z < j; ++z)
188 pRegionEnd[z] = j - 1;
189 old = (*i)->ui->cacheColorHSV;
191 (
unsigned char)Yuni::Math::MinMax<int>((*i)->ui->color[0] + 35, 0, 255),
192 (
unsigned char)Yuni::Math::MinMax<int>((*i)->ui->color[1] + 35, 0, 255),
193 (
unsigned char)Yuni::Math::MinMax<int>((*i)->ui->color[2] + 35, 0, 255));
195 (
unsigned char)Yuni::Math::MinMax<int>((*i)->ui->color[0] - 35, 0, 255),
196 (
unsigned char)Yuni::Math::MinMax<int>((*i)->ui->color[1] - 35, 0, 255),
197 (
unsigned char)Yuni::Math::MinMax<int>((*i)->ui->color[2] - 35, 0, 255));
200 pRegionStart[j] = lastLevel;
201 pRegionColor[j] = color;
202 pRegionColorIdentity[j] = colorIdentity;
204 for (
int z = lastLevel; z < (int)pArray.size(); ++z)
205 pRegionEnd[z] = (
int)pArray.size() - 1;
210 virtual uint size()
const
212 return (uint)pArray.size();
217 return (i < pArray.size()) ? pArray[i] : NULL;
220 virtual Component::Datagrid::Renderer::IRenderer::CellStyle cellStyle(
int col,
int row)
const
222 return (col == row || (row >= pRegionStart[col] && row <= pRegionEnd[col]))
223 ? Component::Datagrid::Renderer::IRenderer::cellStyleCustom
224 : Component::Datagrid::Renderer::IRenderer::cellStyleDefault;
227 virtual wxColour cellBackgroundColor(
int col,
int row)
const
229 return (col == row) ? pRegionColorIdentity[col] : pRegionColor[col];
232 virtual wxColour cellTextColor(
int,
int)
const
234 return wxColour(0, 0, 0);
237 virtual uint areaIndex(uint i)
const
239 return pArray[i]->index;
243 Data::Area::Vector pArray;
244 std::vector<int> pRegionStart;
245 std::vector<int> pRegionEnd;
246 std::vector<wxColour> pRegionColor;
247 std::vector<wxColour> pRegionColorIdentity;