Я пишу свой собственный класс LookupTable, который получает на входе
- карта ключевых точек и соответствующих значений RGB
OR
- 3 канала (красный, зеленый, синий), и в каждом канале есть ключевые точки для этого канала и соответствующие значения в этих ключевых точках для красного, зеленого и синего цветов.
Класс LookupTable может быть построен по-разному, из разных структур данных. Я храню 3 внутренние структуры данных:
1. map<point, pixel>
2. vector<pixel>
3. struct my{
map<float, value> red;
map<float, value> green;
map<float, value> blue; }
Класс LookupTable может быть построен из 1
или 3
, а 2
всегда вычисляется, поэтому "зависит" от них.
Проблемы:
- как узнать, из какой структуры данных (
1
или3
) мне следует рассчитывать2
? - если сначала заполнено
1
, затем заполнено3
, как отслеживать, что происходит в моем классе? Шаблон наблюдателя кажется излишним ... - простое решение - использовать несколько логических значений - нехорошо, сложно поддерживать и добавлять новые представления данных в будущем, даже я это понимаю.
- Идеально,
construct(map<point, pixel>)
OR
construct(struct my)
нужно выполнить только один раз, а в другой раз он вызывается - просто верните значение
(Эти методы используются вместо конструкторов, которые являются частными)