diff options
Diffstat (limited to 'qt')
-rw-r--r-- | qt/ScintillaEditBase/PlatQt.cpp | 32 | ||||
-rw-r--r-- | qt/ScintillaEditBase/PlatQt.h | 1 |
2 files changed, 33 insertions, 0 deletions
diff --git a/qt/ScintillaEditBase/PlatQt.cpp b/qt/ScintillaEditBase/PlatQt.cpp index 37fc409f7..a8553e658 100644 --- a/qt/ScintillaEditBase/PlatQt.cpp +++ b/qt/ScintillaEditBase/PlatQt.cpp @@ -390,6 +390,38 @@ void SurfaceImpl::AlphaRectangle(PRectangle rc, } } +void SurfaceImpl::AlphaRectangle(PRectangle rc, XYPOSITION cornerSize, FillStroke fillStroke) +{ + QColor qFill = QColorFromColourAlpha(fillStroke.fill.colour); + QBrush brushFill(qFill); + GetPainter()->setBrush(brushFill); + if (fillStroke.fill.colour == fillStroke.stroke.colour) { + painter->setPen(Qt::NoPen); + QRectF rect = QRectFFromPRect(rc); + if (cornerSize > 0.0f) { + // A radius of 1 shows no curve so add 1 + qreal radius = cornerSize+1; + GetPainter()->drawRoundedRect(rect, radius, radius); + } else { + GetPainter()->fillRect(rect, brushFill); + } + } else { + QColor qOutline = QColorFromColourAlpha(fillStroke.stroke.colour); + QPen penOutline(qOutline); + penOutline.setWidthF(fillStroke.stroke.width); + GetPainter()->setPen(penOutline); + + QRectF rect = QRectFFromPRect(rc.Inset(fillStroke.stroke.width / 2)); + if (cornerSize > 0.0f) { + // A radius of 1 shows no curve so add 1 + qreal radius = cornerSize+1; + GetPainter()->drawRoundedRect(rect, radius, radius); + } else { + GetPainter()->drawRect(rect); + } + } +} + void SurfaceImpl::GradientRectangle(PRectangle rc, const std::vector<ColourStop> &stops, GradientOptions options) { QRectF rect = QRectFFromPRect(rc); QLinearGradient linearGradient; diff --git a/qt/ScintillaEditBase/PlatQt.h b/qt/ScintillaEditBase/PlatQt.h index 173bd53d5..257dbda56 100644 --- a/qt/ScintillaEditBase/PlatQt.h +++ b/qt/ScintillaEditBase/PlatQt.h @@ -109,6 +109,7 @@ public: ColourDesired back) override; void AlphaRectangle(PRectangle rc, int cornerSize, ColourDesired fill, int alphaFill, ColourDesired outline, int alphaOutline, int flags) override; + void AlphaRectangle(PRectangle rc, XYPOSITION cornerSize, FillStroke fillStroke) override; void GradientRectangle(PRectangle rc, const std::vector<ColourStop> &stops, GradientOptions options) override; void DrawRGBAImage(PRectangle rc, int width, int height, const unsigned char *pixelsImage) override; |