void QGLWidget::setColormap(const QGLColormap & c) { Q_D(QGLWidget); d->cmap = c; if (d->cmap.handle()) { // already have an allocated cmap d->updateColormap(); } else { LOGPALETTE *lpal = (LOGPALETTE *) malloc(sizeof(LOGPALETTE) +c.size()*sizeof(PALETTEENTRY)); lpal->palVersion = 0x300; lpal->palNumEntries = c.size(); d->cmap.setHandle(CreatePalette(lpal)); free(lpal); d->updateColormap(); } }
/*\internal Store color values in the given colormap. */ static void qStoreColors(HPALETTE cmap, const QGLColormap & cols) { QRgb color; PALETTEENTRY pe; for (int i = 0; i < cols.size(); i++) { color = cols.entryRgb(i); pe.peRed = qRed(color); pe.peGreen = qGreen(color); pe.peBlue = qBlue(color); pe.peFlags = 0; SetPaletteEntries(cmap, i, 1, &pe); } }