QPixmap Renderer::renderSymbolOn(QPixmap pixmap, int symbol, int color, int max, SymbolType type) const { // We use a smaller size of symbol in Mathdoku and Killer // Sudoku, to allow space for the cage labels. int size = m_mathdokuStyle ? (pixmap.width()+1)*3/4 : pixmap.width(); int offset = m_mathdokuStyle ? (pixmap.width()+7)/8 : 0; QPixmap symbolPixmap = renderSymbol(symbol, size, max, type); if(color) { // TODO this does not work, need some other way, maybe hardcode color into NumberType QPainter p(&symbolPixmap); p.setCompositionMode(QPainter::CompositionMode_Multiply); p.setBrush(QBrush(QColor(128,128,128,255))); p.drawRect(0, 0, size, size); p.setCompositionMode(QPainter::CompositionMode_DestinationOver); p.drawPixmap(0, 0, pixmap); p.end(); return symbolPixmap; } else { QPainter p(&pixmap); p.drawPixmap(offset, offset, symbolPixmap); p.end(); return pixmap; } }
void KmlRenderer::renderTruetypeSymbol(imageObj *img, double x, double y, symbolObj *symbol, symbolStyleObj *style) { renderSymbol(img, x, y, symbol, style); }