diff options
author | Wildemann Stefan <stefan.wildemann@corpuls.com> | 2019-09-19 10:40:39 +0200 |
---|---|---|
committer | Wildemann Stefan <stefan.wildemann@corpuls.com> | 2019-09-19 14:56:38 +0200 |
commit | 41f3eae14f634a14572bef09c7ff67acb41b9a36 (patch) | |
tree | d44e92d33b18d0f106c50c0c7a63976ca60cf9bf | |
parent | a9a1375c7445b2f60bbd0e75cba70f14ca1c64ee (diff) | |
download | navit-qt5_transparency.tar.gz |
fix:graphics/qt5; Allow to draw transparent polygonsqt5_transparency
-rw-r--r-- | navit/graphics/qt5/graphics_qt5.cpp | 28 |
1 files changed, 5 insertions, 23 deletions
diff --git a/navit/graphics/qt5/graphics_qt5.cpp b/navit/graphics/qt5/graphics_qt5.cpp index 10784d6b3..cb9b4c456 100644 --- a/navit/graphics/qt5/graphics_qt5.cpp +++ b/navit/graphics/qt5/graphics_qt5.cpp @@ -408,13 +408,7 @@ static void draw_polygon(struct graphics_priv* gr, struct graphics_gc_priv* gc, polygon.putPoints(i, 1, p[i].x, p[i].y); gr->painter->setPen(*gc->pen); gr->painter->setBrush(*gc->brush); - /* if the polygon is transparent, we need to clear it first */ - if (!gc->brush->isOpaque()) { - QPainter::CompositionMode mode = gr->painter->compositionMode(); - gr->painter->setCompositionMode(QPainter::CompositionMode_Clear); - gr->painter->drawPolygon(polygon); - gr->painter->setCompositionMode(mode); - } + gr->painter->drawPolygon(polygon); } @@ -446,13 +440,6 @@ static void draw_polygon_with_holes (struct graphics_priv *gr, struct graphics_g if(hole_count > 0) path = path.subtracted(inner); - /* if the polygon is transparent, we need to clear it first */ - if (!gc->brush->isOpaque()) { - QPainter::CompositionMode mode = gr->painter->compositionMode(); - gr->painter->setCompositionMode(QPainter::CompositionMode_Clear); - gr->painter->drawPath(path); - gr->painter->setCompositionMode(mode); - } gr->painter->drawPath(path); } @@ -460,13 +447,6 @@ static void draw_rectangle(struct graphics_priv* gr, struct graphics_gc_priv* gc // dbg(lvl_debug,"gr=%p gc=%p %d,%d,%d,%d", gr, gc, p->x, p->y, w, h); if (gr->painter == NULL) return; - /* if the rectangle is transparent, we need to clear it first */ - if (!gc->brush->isOpaque()) { - QPainter::CompositionMode mode = gr->painter->compositionMode(); - gr->painter->setCompositionMode(QPainter::CompositionMode_Clear); - gr->painter->fillRect(p->x, p->y, w, h, *gc->brush); - gr->painter->setCompositionMode(mode); - } gr->painter->fillRect(p->x, p->y, w, h, *gc->brush); } @@ -647,9 +627,11 @@ static void draw_mode(struct graphics_priv* gr, enum draw_mode_num mode) { case draw_mode_begin: dbg(lvl_debug, "Begin drawing on context %p (use == %d)", gr, gr->use_count); gr->use_count++; - if (gr->painter == NULL) + if (gr->painter == NULL) { + if(gr->parent != NULL) + gr->pixmap->fill(QColor(0,0,0,0)); gr->painter = new QPainter(gr->pixmap); - else + } else dbg(lvl_debug, "drawing on %p already active", gr); break; case draw_mode_end: |