[gnome-builder/wip/chergert/hover] omnigutter: add mixed color for countpoint



commit 47e42026b4a19167db0d9622d8abf5705952f155
Author: Christian Hergert <chergert redhat com>
Date:   Mon Jul 2 21:02:48 2018 -0700

    omnigutter: add mixed color for countpoint
    
    This allows us to look slightly different when doing countpoints from
    regular breakpoints.

 src/libide/sourceview/ide-omni-gutter-renderer.c | 44 ++++++++++++++++--------
 1 file changed, 29 insertions(+), 15 deletions(-)
---
diff --git a/src/libide/sourceview/ide-omni-gutter-renderer.c 
b/src/libide/sourceview/ide-omni-gutter-renderer.c
index 9ee9f62d5..f877690a5 100644
--- a/src/libide/sourceview/ide-omni-gutter-renderer.c
+++ b/src/libide/sourceview/ide-omni-gutter-renderer.c
@@ -105,7 +105,7 @@ struct _IdeOmniGutterRenderer
     GdkRGBA fg;
     GdkRGBA bg;
     gboolean bold;
-  } text, current, bkpt;
+  } text, current, bkpt, ctpt;
   GdkRGBA stopped_bg;
   struct {
     GdkRGBA add;
@@ -361,6 +361,18 @@ reload_style_colors (IdeOmniGutterRenderer *self,
   if (!style_get_is_bold (scheme, "current-line-number", &self->current.bold))
     self->current.bold = TRUE;
 
+  /* These gutter:: prefix values come from Builder's style-scheme xml
+   * files, but other style schemes may also support them now too.
+   */
+  if (!get_style_rgba (scheme, "gutter::added-line", FOREGROUND, &self->changes.add))
+    gdk_rgba_parse (&self->changes.add, "#8ae234");
+
+  if (!get_style_rgba (scheme, "gutter::changed-line", FOREGROUND, &self->changes.change))
+    gdk_rgba_parse (&self->changes.change, "#fcaf3e");
+
+  if (!get_style_rgba (scheme, "gutter::removed-line", FOREGROUND, &self->changes.remove))
+    gdk_rgba_parse (&self->changes.remove, "#ef2929");
+
   /*
    * These debugger:: prefix values come from Builder's style-scheme xml
    * as well as in the IdeBuffer class. Other style schemes may also
@@ -371,24 +383,23 @@ reload_style_colors (IdeOmniGutterRenderer *self,
 
   if (!get_style_rgba (scheme, "debugger::breakpoint", FOREGROUND, &self->bkpt.fg))
     get_style_rgba (scheme, "selection", FOREGROUND, &self->bkpt.fg);
-
   if (!get_style_rgba (scheme, "debugger::breakpoint", BACKGROUND, &self->bkpt.bg))
     get_style_rgba (scheme, "selection", BACKGROUND, &self->bkpt.bg);
-
   if (!style_get_is_bold (scheme, "debugger::breakpoint", &self->bkpt.bold))
     self->bkpt.bold = FALSE;
 
-  /* These gutter:: prefix values come from Builder's style-scheme xml
-   * files, but other style schemes may also support them now too.
-   */
-  if (!get_style_rgba (scheme, "gutter::added-line", FOREGROUND, &self->changes.add))
-    gdk_rgba_parse (&self->changes.add, "#8ae234");
-
-  if (!get_style_rgba (scheme, "gutter::changed-line", FOREGROUND, &self->changes.change))
-    gdk_rgba_parse (&self->changes.change, "#fcaf3e");
-
-  if (!get_style_rgba (scheme, "gutter::removed-line", FOREGROUND, &self->changes.remove))
-    gdk_rgba_parse (&self->changes.remove, "#ef2929");
+  /* Slight different color for countpoint, fallback to mix(selection,diff:add) */
+  if (!get_style_rgba (scheme, "debugger::countpoint", FOREGROUND, &self->ctpt.fg))
+    get_style_rgba (scheme, "selection", FOREGROUND, &self->ctpt.fg);
+  if (!get_style_rgba (scheme, "debugger::countpoint", BACKGROUND, &self->ctpt.bg))
+    {
+      get_style_rgba (scheme, "selection", BACKGROUND, &self->ctpt.bg);
+      self->ctpt.bg.red = (self->ctpt.bg.red + self->changes.add.red) / 2.0;
+      self->ctpt.bg.green = (self->ctpt.bg.green + self->changes.add.green) / 2.0;
+      self->ctpt.bg.blue = (self->ctpt.bg.blue + self->changes.add.blue) / 2.0;
+    }
+  if (!style_get_is_bold (scheme, "debugger::countpoint", &self->ctpt.bold))
+    self->ctpt.bold = FALSE;
 }
 
 static void
@@ -886,7 +897,10 @@ draw_breakpoint_bg (IdeOmniGutterRenderer        *self,
   cairo_line_to (cr, area.x, dzl_cairo_rectangle_y2 (&area));
   cairo_close_path (cr);
 
-  rgba = self->bkpt.bg;
+  if (info->is_countpoint)
+    rgba = self->ctpt.bg;
+  else
+    rgba = self->bkpt.bg;
 
   /*
    * Tweak the brightness based on if we are in pre-light and


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]