FillOpacity minor changes: (#3515)

* Make FillOpacityDialog's preview depend on the tool
        * Destroy leaked cairo_surface
        * Add minimal value for stroke filling alpha
upstream-master
Benjamin Hennion 4 years ago committed by GitHub
parent 3944a49db1
commit 8b40a3293d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      src/control/Control.cpp
  2. 23
      src/gui/dialog/FillOpacityDialog.cpp
  3. 3
      src/gui/dialog/FillOpacityDialog.h
  4. 2
      ui/fillOpacity.glade

@ -976,7 +976,7 @@ void Control::selectFillAlpha(bool pen) {
alpha = toolHandler->getHighlighterFill();
}
FillOpacityDialog dlg(gladeSearchPath, alpha);
FillOpacityDialog dlg(gladeSearchPath, alpha, pen);
dlg.show(getGtkWindow());
if (dlg.getResultAlpha() == -1) {

@ -1,7 +1,7 @@
#include "FillOpacityDialog.h"
FillOpacityDialog::FillOpacityDialog(GladeSearchpath* gladeSearchPath, int alpha):
GladeGui(gladeSearchPath, "fillOpacity.glade", "fillOpacityDialog") {
FillOpacityDialog::FillOpacityDialog(GladeSearchpath* gladeSearchPath, int alpha, bool pen):
GladeGui(gladeSearchPath, "fillOpacity.glade", "fillOpacityDialog"), pen(pen) {
GtkWidget* scaleAlpha = get("scaleAlpha");
gtk_range_set_value(GTK_RANGE(scaleAlpha), static_cast<int>(alpha / 255.0 * 100));
@ -28,8 +28,7 @@ void FillOpacityDialog::setPreviewImage(int alpha) {
cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
cairo_set_source_rgb(cr, 255, 255, 255);
cairo_rectangle(cr, 0, 0, PREVIEW_WIDTH, PREVIEW_WIDTH);
cairo_fill(cr);
cairo_paint(cr);
cairo_set_operator(cr, CAIRO_OPERATOR_OVER);
cairo_set_source_rgba(cr, 0, 0x80 / 255.0, 0, alpha / 255.0);
@ -37,17 +36,21 @@ void FillOpacityDialog::setPreviewImage(int alpha) {
PREVIEW_HEIGTH - PREVIEW_BORDER * 2);
cairo_fill(cr);
cairo_set_line_width(cr, 5);
cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
cairo_set_source_rgb(cr, 0, 0x80 / 255.0, 0);
cairo_rectangle(cr, PREVIEW_BORDER, PREVIEW_BORDER, PREVIEW_WIDTH - PREVIEW_BORDER * 2,
PREVIEW_HEIGTH - PREVIEW_BORDER * 2);
cairo_stroke(cr);
if (pen) {
cairo_set_line_width(cr, 5);
cairo_set_operator(cr, CAIRO_OPERATOR_SOURCE);
cairo_set_source_rgb(cr, 0, 0x80 / 255.0, 0);
cairo_rectangle(cr, PREVIEW_BORDER, PREVIEW_BORDER, PREVIEW_WIDTH - PREVIEW_BORDER * 2,
PREVIEW_HEIGTH - PREVIEW_BORDER * 2);
cairo_stroke(cr);
}
cairo_destroy(cr);
GtkWidget* preview = get("imgPreview");
gtk_image_set_from_surface(GTK_IMAGE(preview), surface);
cairo_surface_destroy(surface);
}
auto FillOpacityDialog::getResultAlpha() const -> int { return resultAlpha; }

@ -15,7 +15,7 @@
class FillOpacityDialog: public GladeGui {
public:
FillOpacityDialog(GladeSearchpath* gladeSearchPath, int alpha);
FillOpacityDialog(GladeSearchpath* gladeSearchPath, int alpha, bool pen);
virtual ~FillOpacityDialog();
public:
@ -28,4 +28,5 @@ private:
private:
int resultAlpha = -1;
bool pen;
};

@ -3,7 +3,7 @@
<interface>
<requires lib="gtk+" version="3.0"/>
<object class="GtkAdjustment" id="adjustment1">
<property name="lower">1</property>
<property name="lower">5</property>
<property name="upper">100</property>
<property name="step-increment">1</property>
<property name="page-increment">10</property>

Loading…
Cancel
Save