std::vector<Image> ColorGradientList::pixmaps(const glm::uvec2 & size) const { std::vector<Image> pixmaps; for (const auto & pair : m_gradients) { const AbstractColorGradient * gradient = pair.second.get(); Image gradientData(size.x, size.y, gl::GL_RGB, gl::GL_UNSIGNED_INT); for (size_t i = 0; i < size.y; ++i) { gradient->fillPixelData(gradientData.data() + i * size.x * sizeof(std::uint32_t), size.x); } pixmaps.push_back(gradientData); } return pixmaps; }
void ColorGradientPreparation::fillPixmaps(std::vector<std::vector<unsigned char>> & pixmaps) const { pixmaps.clear(); for (const auto & pair : m_gradients.gradients()) { if (!m_whitelist.empty() && m_whitelist.count(pair.first) == 0) { continue; } const gloperate::AbstractColorGradient * gradient = pair.second; std::vector<unsigned char> gradientData(m_iconSize.first * m_iconSize.second * sizeof(std::uint32_t)); for (size_t i = 0; i < m_iconSize.second; ++i) { gradient->fillPixelData(gradientData.data()+i*m_iconSize.first*sizeof(std::uint32_t), m_iconSize.first); } pixmaps.push_back(gradientData); } }