summaryrefslogtreecommitdiffstats
path: root/src/widgets/paint-selector.cpp
diff options
context:
space:
mode:
authorValentin Ionita <valentin.ionita1201@gmail.com>2019-08-19 18:38:08 +0000
committerTavmjong Bah <tavmjong@free.fr>2019-08-19 18:38:08 +0000
commitdaf25233fe9b7713f0b5c3c6f1b42b3fac8abb1c (patch)
tree2143be1f81e30ef55be7a548bebe6734c3533248 /src/widgets/paint-selector.cpp
parentreduce usage of desktop coordinates (#341) (diff)
downloadinkscape-daf25233fe9b7713f0b5c3c6f1b42b3fac8abb1c.tar.gz
inkscape-daf25233fe9b7713f0b5c3c6f1b42b3fac8abb1c.zip
Add paint server dialog. Currently handles patterns and hatches. GSOC 2019.
Diffstat (limited to 'src/widgets/paint-selector.cpp')
-rw-r--r--src/widgets/paint-selector.cpp31
1 files changed, 29 insertions, 2 deletions
diff --git a/src/widgets/paint-selector.cpp b/src/widgets/paint-selector.cpp
index b640ee22f..e1a6c2b5b 100644
--- a/src/widgets/paint-selector.cpp
+++ b/src/widgets/paint-selector.cpp
@@ -35,6 +35,7 @@
#include "io/sys.h"
+#include "object/sp-hatch.h"
#include "object/sp-linear-gradient.h"
#include "object/sp-mesh-gradient.h"
#include "object/sp-pattern.h"
@@ -83,6 +84,7 @@ static void sp_paint_selector_set_mode_gradient(SPPaintSelector *psel, SPPaintSe
static void sp_paint_selector_set_mode_mesh(SPPaintSelector *psel, SPPaintSelector::Mode mode);
#endif
static void sp_paint_selector_set_mode_pattern(SPPaintSelector *psel, SPPaintSelector::Mode mode);
+static void sp_paint_selector_set_mode_hatch(SPPaintSelector *psel, SPPaintSelector::Mode mode);
static void sp_paint_selector_set_mode_swatch(SPPaintSelector *psel, SPPaintSelector::Mode mode);
static void sp_paint_selector_set_mode_unset(SPPaintSelector *psel);
@@ -404,6 +406,9 @@ void SPPaintSelector::setMode(Mode mode)
case MODE_PATTERN:
sp_paint_selector_set_mode_pattern(this, mode);
break;
+ case MODE_HATCH:
+ sp_paint_selector_set_mode_hatch(this, mode);
+ break;
case MODE_SWATCH:
sp_paint_selector_set_mode_swatch(this, mode);
break;
@@ -658,7 +663,7 @@ static void sp_paint_selector_set_mode_color(SPPaintSelector *psel, SPPaintSelec
{
using Inkscape::UI::Widget::ColorNotebook;
- if ((psel->mode == SPPaintSelector::MODE_SWATCH)
+ if ((psel->mode == SPPaintSelector::MODE_SWATCH)
|| (psel->mode == SPPaintSelector::MODE_GRADIENT_LINEAR)
|| (psel->mode == SPPaintSelector::MODE_GRADIENT_RADIAL) ) {
SPGradientSelector *gsel = getGradientFromData(psel);
@@ -1197,7 +1202,7 @@ ink_pattern_menu_populate_menu(GtkWidget *combo, SPDocument *doc)
// find and load patterns.svg
if (patterns_doc == nullptr) {
- char *patterns_source = g_build_filename(INKSCAPE_PATTERNSDIR, "patterns.svg", NULL);
+ char *patterns_source = g_build_filename(INKSCAPE_PAINTDIR, "patterns.svg", NULL);
if (Inkscape::IO::file_test(patterns_source, G_FILE_TEST_IS_REGULAR)) {
patterns_doc = SPDocument::createNewDoc(patterns_source, FALSE);
}
@@ -1378,6 +1383,26 @@ static void sp_paint_selector_set_mode_pattern(SPPaintSelector *psel, SPPaintSel
#endif
}
+static void sp_paint_selector_set_mode_hatch(SPPaintSelector *psel, SPPaintSelector::Mode mode)
+{
+ if (mode == SPPaintSelector::MODE_HATCH) {
+ sp_paint_selector_set_style_buttons(psel, psel->unset);
+ }
+
+ gtk_widget_set_sensitive(psel->style, TRUE);
+
+ if (psel->mode == SPPaintSelector::MODE_HATCH) {
+ /* Already have hatch menu, for the moment unset */
+ } else {
+ sp_paint_selector_clear_frame(psel);
+
+ gtk_label_set_markup(GTK_LABEL(psel->label), _("<b>Hatch fill</b>"));
+ }
+#ifdef SP_PS_VERBOSE
+ g_print("Hatch req\n");
+#endif
+}
+
gboolean SPPaintSelector::isSeparator (GtkTreeModel *model, GtkTreeIter *iter, gpointer /*data*/) {
gboolean sep = FALSE;
@@ -1534,6 +1559,8 @@ SPPaintSelector::Mode SPPaintSelector::getModeForStyle(SPStyle const & style, Fi
#endif
} else if (SP_IS_PATTERN(server)) {
mode = MODE_PATTERN;
+ } else if (SP_IS_HATCH(server)) {
+ mode = MODE_HATCH;
} else {
g_warning( "file %s: line %d: Unknown paintserver", __FILE__, __LINE__ );
mode = MODE_NONE;