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(); alpha = toolHandler->getHighlighterFill();
} }
FillOpacityDialog dlg(gladeSearchPath, alpha); FillOpacityDialog dlg(gladeSearchPath, alpha, pen);
dlg.show(getGtkWindow()); dlg.show(getGtkWindow());
if (dlg.getResultAlpha() == -1) { if (dlg.getResultAlpha() == -1) {

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

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

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

Loading…
Cancel
Save