summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJabiertxof <jabier.arraiza@marker.es>2019-06-19 16:37:13 +0000
committerJabier Arraiza <jabier.arraiza@marker.es>2019-07-08 21:04:14 +0000
commit17187618d32ef44dfde4aa192f2d33a135c28d07 (patch)
tree5a982cb9cbc71ba6bd8b5fdf62a591adeefed93a /src
parentAllow good render of multiples stylesheets (diff)
downloadinkscape-17187618d32ef44dfde4aa192f2d33a135c28d07.tar.gz
inkscape-17187618d32ef44dfde4aa192f2d33a135c28d07.zip
add improvements to color handling
Diffstat (limited to 'src')
-rw-r--r--src/inkscape.cpp58
-rw-r--r--src/inkscape.h2
-rw-r--r--src/io/resource.cpp2
-rw-r--r--src/ui/dialog/inkscape-preferences.cpp16
-rw-r--r--src/ui/icon-loader.cpp13
5 files changed, 59 insertions, 32 deletions
diff --git a/src/inkscape.cpp b/src/inkscape.cpp
index c93e734e6..47e66db52 100644
--- a/src/inkscape.cpp
+++ b/src/inkscape.cpp
@@ -379,10 +379,19 @@ Glib::ustring Application::get_symbolic_colors()
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
Glib::ustring themeiconname = prefs->getString("/theme/iconTheme");
int colorset = 0x2E3436ff;
- get_higlight_colors(colornamedsuccess, colornamedwarning, colornamederror);
+ int colorset_inverse = colorset ^ 0xffffff00;
+ int colorsetsuccess = 0x4AD589ff;
+ int colorsetwarning = 0xF57900ff;
+ int colorseterror = 0xcc0000ff;
+ get_higlight_colors(colorset, colorsetsuccess, colorsetwarning, colorseterror);
colorset = prefs->getInt("/theme/" + themeiconname + "/symbolicColor", colorset);
sp_svg_write_color(colornamed, sizeof(colornamed), colorset);
- int colorset_inverse = colorset ^ 0xffffff00;
+ colorsetsuccess = prefs->getInt("/theme/" + themeiconname + "/symbolicSuccessColor", colorsetsuccess);
+ sp_svg_write_color(colornamedsuccess, sizeof(colornamedsuccess), colorsetsuccess);
+ colorsetwarning = prefs->getInt("/theme/" + themeiconname + "/symbolicWarningColor", colorsetwarning);
+ sp_svg_write_color(colornamedwarning, sizeof(colornamedwarning), colorsetwarning);
+ colorseterror = prefs->getInt("/theme/" + themeiconname + "/symbolicErrorColor", colorseterror);
+ sp_svg_write_color(colornamederror, sizeof(colornamederror), colorseterror);
sp_svg_write_color(colornamed_inverse, sizeof(colornamed_inverse), colorset_inverse);
css_str += "*{-gtk-icon-palette: success ";
css_str += colornamedsuccess;
@@ -530,18 +539,15 @@ Application::~Application()
// gtk_main_quit ();
}
-void Application::get_higlight_colors(gchar *colornamedsuccess, gchar *colornamedwarning, gchar *colornamederror)
+void Application::get_higlight_colors(int &colorset, int &colorsetsuccess, int &colorsetwarning, int &colorseterror)
{
using namespace Inkscape::IO::Resource;
- int colorsetsuccess = 0x4AD589ff;
- int colorsetwarning = 0xF57900ff;
- int colorseterror = 0xcc0000ff;
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
Glib::ustring themeiconname = prefs->getString("/theme/iconTheme");
if (themeiconname == prefs->getString("/theme/defaultIconTheme")) {
themeiconname = "hicolor";
}
- Glib::ustring higlight = get_filename(ICONS, Glib::ustring(themeiconname + "/highlights.css").c_str(), false, false);
+ Glib::ustring higlight = get_filename(ICONS, Glib::ustring(themeiconname + "/highlights.css").c_str(), false, true);
if (!higlight.empty()) {
std::ifstream ifs(higlight);
std::string content((std::istreambuf_iterator<char>(ifs)), (std::istreambuf_iterator<char>()));
@@ -550,9 +556,9 @@ void Application::get_higlight_colors(gchar *colornamedsuccess, gchar *colorname
size_t endpos = content.find("}");
if (startpos != std::string::npos) {
result = content.substr(startpos, endpos - startpos);
- startpos = content.find("fill:");
- endpos = content.find(";");
- result = content.substr(startpos + 4, endpos - 1 - startpos + 4);
+ startpos = result.find("fill:");
+ endpos = result.find(";");
+ result = content.substr(startpos + 5, endpos - (startpos + 5));
Gdk::RGBA success_color = Gdk::RGBA(result);
SPColor success_color_sp(success_color.get_red(), success_color.get_green(), success_color.get_blue());
colorsetsuccess = success_color_sp.toRGBA32(1);
@@ -561,9 +567,9 @@ void Application::get_higlight_colors(gchar *colornamedsuccess, gchar *colorname
endpos = content.find("}");
if (startpos != std::string::npos) {
result = content.substr(startpos, endpos - startpos);
- startpos = content.find("fill:");
- endpos = content.find(";");
- result = content.substr(startpos + 4, endpos - 1 - startpos + 4);
+ startpos = result.find("fill:");
+ endpos = result.find(";");
+ result = content.substr(startpos + 5, endpos - (startpos + 5));
Gdk::RGBA warning_color = Gdk::RGBA(result);
SPColor warning_color_sp(warning_color.get_red(), warning_color.get_green(), warning_color.get_blue());
colorsetwarning = warning_color_sp.toRGBA32(1);
@@ -572,23 +578,25 @@ void Application::get_higlight_colors(gchar *colornamedsuccess, gchar *colorname
endpos = content.find("}");
if (startpos != std::string::npos) {
result = content.substr(startpos, endpos - startpos);
- startpos = content.find("fill:");
- endpos = content.find(";");
- result = content.substr(startpos + 4, endpos - 1 - startpos + 4);
+ startpos = result.find("fill:");
+ endpos = result.find(";");
+ result = content.substr(startpos + 5, endpos - (startpos + 5));
Gdk::RGBA error_color = Gdk::RGBA(result);
SPColor error_color_sp(error_color.get_red(), error_color.get_green(), error_color.get_blue());
colorseterror = error_color_sp.toRGBA32(1);
}
+ startpos = content.find(".base");
+ endpos = content.find("}");
+ if (startpos != std::string::npos) {
+ result = content.substr(startpos, endpos - startpos);
+ startpos = result.find("fill:");
+ endpos = result.find(";");
+ result = content.substr(startpos + 5, endpos - (startpos + 5));
+ Gdk::RGBA base_color = Gdk::RGBA(result);
+ SPColor base_color_sp(base_color.get_red(), base_color.get_green(), base_color.get_blue());
+ colorset = base_color_sp.toRGBA32(1);
+ }
}
- if (themeiconname == "hicolor") {
- themeiconname = prefs->getString("/theme/defaultIconTheme");
- }
- colorsetsuccess = prefs->getInt("/theme/" + themeiconname + "/symbolicSuccessColor", colorsetsuccess);
- sp_svg_write_color(colornamedsuccess, sizeof(colornamedsuccess), colorsetsuccess);
- colorsetwarning = prefs->getInt("/theme/" + themeiconname + "/symbolicWarningColor", colorsetwarning);
- sp_svg_write_color(colornamedwarning, sizeof(colornamedwarning), colorsetwarning);
- colorseterror = prefs->getInt("/theme/" + themeiconname + "/symbolicErrorColor", colorseterror);
- sp_svg_write_color(colornamederror, sizeof(colornamederror), colorseterror);
}
/**
diff --git a/src/inkscape.h b/src/inkscape.h
index 2f0b7ec8f..c9bff2cf3 100644
--- a/src/inkscape.h
+++ b/src/inkscape.h
@@ -141,7 +141,7 @@ public:
void selection_set (Inkscape::Selection * selection);
void readStyleSheets(bool forceupd = false);
Glib::ustring get_symbolic_colors();
- void get_higlight_colors(gchar *colornamedsuccess, gchar *colornamedwarning, gchar *colornamederror);
+ void get_higlight_colors(int &colorset, int &colorsetsuccess, int &colorsetwarning, int &colorseterror);
void eventcontext_set (Inkscape::UI::Tools::ToolBase * eventcontext);
// Moved document add/remove functions into public inkscape.h as they are used
diff --git a/src/io/resource.cpp b/src/io/resource.cpp
index e65bfce1c..9f0f0a4ae 100644
--- a/src/io/resource.cpp
+++ b/src/io/resource.cpp
@@ -179,7 +179,7 @@ Glib::ustring get_filename(Type type, char const *filename, bool localized, bool
} else if (file_test(sys_filename, G_FILE_TEST_EXISTS)) {
result = Glib::ustring(sys_filename);
g_info("Found resource file '%s' in system directory:\n\t%s", filename, result.c_str());
- } else {
+ } else if (!silent) {
if (localized) {
g_warning("Failed to find resource file '%s'. Looked in:\n\t%s\n\t%s\n\t%s\n\t%s",
filename, user_filename_localized, user_filename, sys_filename_localized, sys_filename);
diff --git a/src/ui/dialog/inkscape-preferences.cpp b/src/ui/dialog/inkscape-preferences.cpp
index 9b8e35384..b81f97cb7 100644
--- a/src/ui/dialog/inkscape-preferences.cpp
+++ b/src/ui/dialog/inkscape-preferences.cpp
@@ -684,9 +684,19 @@ void InkscapePreferences::symbolicCustomColorsReset()
{
Inkscape::Preferences *prefs = Inkscape::Preferences::get();
Glib::ustring themeiconname = prefs->getString("/theme/iconTheme");
- prefs->setInt("/theme/" + themeiconname + "/symbolicSuccessColor", 0);
- prefs->setInt("/theme/" + themeiconname + "/symbolicErrorColor", 0);
- prefs->setInt("/theme/" + themeiconname + "/symbolicWaringColor", 0);
+ int colorset = 0x2E3436ff;
+ int colorsetsuccess = 0x4AD589ff;
+ int colorsetwarning = 0xF57900ff;
+ int colorseterror = 0xcc0000ff;
+ INKSCAPE.get_higlight_colors(colorset, colorsetsuccess, colorsetwarning, colorseterror);
+ _symbolic_color.setRgba32(colorset);
+ _symbolic_success_color.setRgba32(colorsetsuccess);
+ _symbolic_warning_color.setRgba32(colorsetwarning);
+ _symbolic_error_color.setRgba32(colorseterror);
+ prefs->setInt("/theme/" + themeiconname + "/symbolicSuccessColor",colorset);
+ prefs->setInt("/theme/" + themeiconname + "/symbolicColor", colorsetsuccess);
+ prefs->setInt("/theme/" + themeiconname + "/symbolicErrorColor", colorsetwarning);
+ prefs->setInt("/theme/" + themeiconname + "/symbolicWaringColor", colorseterror);
symbolicCustomColors();
}
diff --git a/src/ui/icon-loader.cpp b/src/ui/icon-loader.cpp
index 337a53aa4..a1696083d 100644
--- a/src/ui/icon-loader.cpp
+++ b/src/ui/icon-loader.cpp
@@ -69,15 +69,24 @@ Glib::RefPtr<Gdk::Pixbuf> sp_get_icon_pixbuf(Glib::ustring icon_name, gint size)
Glib::ustring css_str = "";
if (!prefs->getBool("/theme/symbolicIconsDefaultColor", true)) {
using namespace Inkscape::IO::Resource;
+ int colorset = 0x2E3436ff;
+ int colorsetsuccess = 0x4AD589ff;
+ int colorsetwarning = 0xF57900ff;
+ int colorseterror = 0xcc0000ff;
gchar colornamed[64];
gchar colornamedsuccess[64];
gchar colornamedwarning[64];
gchar colornamederror[64];
Glib::ustring themeiconname = prefs->getString("/theme/iconTheme");
- INKSCAPE.get_higlight_colors(colornamedsuccess, colornamedwarning, colornamederror);
- int colorset = 0x2E3436ff;
+ INKSCAPE.get_higlight_colors(colorset, colorsetsuccess, colorsetwarning, colorseterror);
colorset = prefs->getInt("/theme/" + themeiconname + "/symbolicColor", colorset);
sp_svg_write_color(colornamed, sizeof(colornamed), colorset);
+ colorsetsuccess = prefs->getInt("/theme/" + themeiconname + "/symbolicSuccessColor", colorsetsuccess);
+ sp_svg_write_color(colornamedsuccess, sizeof(colornamedsuccess), colorsetsuccess);
+ colorsetwarning = prefs->getInt("/theme/" + themeiconname + "/symbolicWarningColor", colorsetwarning);
+ sp_svg_write_color(colornamedwarning, sizeof(colornamedwarning), colorsetwarning);
+ colorseterror = prefs->getInt("/theme/" + themeiconname + "/symbolicErrorColor", colorseterror);
+ sp_svg_write_color(colornamederror, sizeof(colornamederror), colorseterror);
_icon_pixbuf =
iconinfo.load_symbolic(Gdk::RGBA(colornamed), Gdk::RGBA(colornamedsuccess),
Gdk::RGBA(colornamedwarning), Gdk::RGBA(colornamederror), was_symbolic);