[Xfce4-commits] [panel-plugins/xfce4-hardware-monitor-plugin] 12/29: Column visualisation maxes from value history, fixed max monitors excluded from max calculations
noreply at xfce.org
noreply at xfce.org
Mon Dec 18 12:45:43 CET 2017
This is an automated email from the git hooks/post-receive script.
o m e g a p h i l p u s h e d a c o m m i t t o b r a n c h m a s t e r
in repository panel-plugins/xfce4-hardware-monitor-plugin.
commit 4f9d1af74bbd03417115f9b8e0ac6e5d5c91317d
Author: OmegaPhil <OmegaPhil at startmail.com>
Date: Fri Nov 24 21:58:26 2017 +0000
Column visualisation maxes from value history, fixed max monitors excluded from max calculations
---
src/column-view.cpp | 60 +++++++++++++++++++++++++++++++++++++++--------------
src/curve-view.cpp | 26 +++++++++++------------
src/ui.glade | 49 +++++++++++++++++++++++--------------------
3 files changed, 84 insertions(+), 51 deletions(-)
diff --git a/src/column-view.cpp b/src/column-view.cpp
index 241f0fc..86999fe 100644
--- a/src/column-view.cpp
+++ b/src/column-view.cpp
@@ -38,14 +38,15 @@ class ColumnGraph
public:
ColumnGraph(Monitor *monitor, unsigned int color);
- void update(unsigned int max_samples); // gather info from monitor
- void draw(Gnome::Canvas::Canvas &canvas, // redraw columns on canvas
- Plugin *plugin, int width, int height);
+ void update(unsigned int max_samples); // Gather info from monitor
+ void draw(Gnome::Canvas::Canvas &canvas, // Redraw columns on canvas
+ Plugin *plugin, int width, int height, double max);
+ double get_max_value(); // Used to get overall max across columns
Monitor *monitor;
private:
- // a pixbuf is used for the columns
+ // A pixbuf is used for the columns
std::auto_ptr<Gnome::Canvas::Pixbuf> columns;
ValueHistory value_history;
@@ -67,8 +68,8 @@ void ColumnGraph::update(unsigned int max_samples)
remaining_draws = CanvasView::draw_iterations;
}
-void ColumnGraph::draw(Gnome::Canvas::Canvas &canvas,
- Plugin *plugin, int width, int height)
+void ColumnGraph::draw(Gnome::Canvas::Canvas &canvas, Plugin *plugin, int width,
+ int height, double max)
{
if (remaining_draws <= 0)
return;
@@ -80,15 +81,17 @@ void ColumnGraph::draw(Gnome::Canvas::Canvas &canvas,
ValueHistory::iterator vi = value_history.values.begin(),
vend = value_history.values.end();
- if (vi == vend) // there must be at least one point
+ // There must be at least one point
+ if (vi == vend)
return;
- // make sure we got a pixbuf and that it has the right size
+ // Make sure we got a pixbuf and that it has the right size
Glib::RefPtr<Gdk::Pixbuf> pixbuf;
if (columns.get() == 0)
pixbuf = Gdk::Pixbuf::create(Gdk::COLORSPACE_RGB, true, 8, width, height);
- else {
+ else
+ {
pixbuf = columns->property_pixbuf();
// but perhaps the dimensions have changed
@@ -98,11 +101,17 @@ void ColumnGraph::draw(Gnome::Canvas::Canvas &canvas,
pixbuf->fill(color & 0xFFFFFF00);
- double max = monitor->max();
+ /* Use the actual maxima associated with all columns in the view, unless
+ * the monitor has a fixed max (variable maxes should not normally be used
+ * with monitors like the CPU usage monitor, although the user can configure
+ * this nowadays) */
+ if (monitor->fixed_max())
+ max = monitor->max();
+
if (max <= 0)
max = 0.0000001;
- // start from right
+ // Start from right
double l = width - ColumnView::pixels_per_sample
+ ColumnView::pixels_per_sample * time_offset;
@@ -121,7 +130,7 @@ void ColumnGraph::draw(Gnome::Canvas::Canvas &canvas,
{
PixelPosition pos = get_position(pixbuf, x, t);
- // anti-aliasing effect; if we are partly on a pixel, scale alpha down
+ // Anti-aliasing effect; if we are partly on a pixel, scale alpha down
double scale = 1.0;
if (x < l)
scale -= l - std::floor(l);
@@ -138,13 +147,20 @@ void ColumnGraph::draw(Gnome::Canvas::Canvas &canvas,
l -= ColumnView::pixels_per_sample;
} while (++vi != vend);
- // update columns
+ // Update columns
if (columns.get() == 0)
columns.reset(new Gnome::Canvas::Pixbuf(*canvas.root(), 0, 0, pixbuf));
else
columns->property_pixbuf() = pixbuf;
}
+double ColumnGraph::get_max_value()
+{
+ /* Used as part of determination of the max value for all columns in
+ * the view */
+ return value_history.get_max_value();
+}
+
//
// class ColumnView
@@ -167,9 +183,10 @@ void ColumnView::do_update()
{
CanvasView::do_update();
- // update each column graph
+ // Update each column graph
for (column_iterator i = columns.begin(), end = columns.end(); i != end; ++i)
- // one extra because of animation
+
+ // One extra because of animation
(*i)->update(width() / pixels_per_sample + 1);
}
@@ -253,6 +270,17 @@ void ColumnView::do_detach(Monitor *monitor)
void ColumnView::do_draw_loop()
{
+ double max = 0;
+
+ /* Obtain maximum value of all columns in the view, ignoring any monitors with
+ * fixed maxes (their graphs are not supposed to be scaled) */
+ for (column_iterator i = columns.begin(), end = columns.end(); i != end; ++i)
+ {
+ if (!(*i)->monitor->fixed_max() && (*i)->get_max_value() > max)
+ max = (*i)->get_max_value();
+ }
+
+ // Drawing the columns with the unified max value
for (column_iterator i = columns.begin(), end = columns.end(); i != end; ++i)
- (*i)->draw(*canvas, plugin, width(), height());
+ (*i)->draw(*canvas, plugin, width(), height(), max);
}
diff --git a/src/curve-view.cpp b/src/curve-view.cpp
index 296d879..50dd1f6 100644
--- a/src/curve-view.cpp
+++ b/src/curve-view.cpp
@@ -108,8 +108,9 @@ void Curve::draw(Gnome::Canvas::Canvas &canvas, int width, int height,
line->property_width_units() = line_width;
/* Use the actual maxima associated with all curves in the view, unless
- * the monitor has a fixed max (variable maxes should not be used with
- * monitors like the CPU usage monitor) */
+ * the monitor has a fixed max (variable maxes should not normally be used
+ * with monitors like the CPU usage monitor, although the user can configure
+ * this nowadays) */
if (monitor->fixed_max())
max = monitor->max();
@@ -266,7 +267,7 @@ void CurveView::do_detach(Monitor *monitor)
void CurveView::do_draw_loop()
{
- double max = 0, tmp_max = 0;
+ double max = 0, fixed_max = 0;
Glib::ustring max_formatted, max_formatted_compact, monitor_data,
monitor_data_compact, text_overlay_format_string, tag_string,
separator_string = plugin->get_viewer_text_overlay_separator();
@@ -274,20 +275,19 @@ void CurveView::do_draw_loop()
monitor_data_needed = false, monitor_data_compact_needed = false,
text_overlay_enabled = plugin->get_viewer_text_overlay_enabled();
- /* Obtain maximum value of all curves in the view, respecting individual
- * curve/monitor's fixed maxes if present */
+ /* Obtain maximum value of all curves in the view, separately tracking fixed
+ * maxes incase all monitors are fixed. Graphs with fixed monitors are not
+ * supposed to be scaled, but the text overlay still needs to refer to a max
+ * if there are no normal monitors present */
for (curve_iterator i = curves.begin(), end = curves.end(); i != end; ++i)
{
- if ((*i)->monitor->fixed_max())
- {
- tmp_max = ((*i)->get_max_value() < (*i)->monitor->fixed_max()) ?
- (*i)->get_max_value() : (*i)->monitor->fixed_max();
- if (tmp_max > max)
- max = tmp_max;
- }
- else if ((*i)->get_max_value() > max)
+ if (!(*i)->monitor->fixed_max() && (*i)->get_max_value() > max)
max = (*i)->get_max_value();
+ else if ((*i)->monitor->fixed_max() && (*i)->monitor->max() > fixed_max)
+ fixed_max = (*i)->monitor->max();
}
+ if (max == 0 && fixed_max > 0)
+ max = fixed_max;
// If the text overlay is enabled, detecting all information required to output
if (text_overlay_enabled)
diff --git a/src/ui.glade b/src/ui.glade
index 3a4f46e..8f6b5f0 100644
--- a/src/ui.glade
+++ b/src/ui.glade
@@ -467,8 +467,8 @@ taken by the monitor</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip_text" translatable="yes">Resulting visualisation is fixed
-to a maximum value of 100%</property>
+ <property name="tooltip_text" translatable="yes">Resulting time-based visualisation
+is fixed to a maximum value of 100%</property>
<property name="draw_indicator">True</property>
</object>
<packing>
@@ -667,8 +667,9 @@ taken by the monitor</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip_text" translatable="yes">Resulting visualisation is fixed to a
-user-specified maximum value</property>
+ <property name="tooltip_text" translatable="yes">Resulting time-based visualisation
+is fixed to a user-specified maximum
+value</property>
<property name="draw_indicator">True</property>
</object>
<packing>
@@ -950,9 +951,9 @@ taken by the monitor</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip_text" translatable="yes">Resulting visualisation is fixed
-to a maximum value based on
-the size of the volume</property>
+ <property name="tooltip_text" translatable="yes">Resulting time-based visualisation
+is fixed to a maximum value based
+on the size of the volume</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
</object>
@@ -1225,8 +1226,9 @@ taken by the monitor</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip_text" translatable="yes">Resulting visualisation is fixed
-to a user-specified maximum value</property>
+ <property name="tooltip_text" translatable="yes">Resulting time-based visualisation
+is fixed to a user-specified
+maximum value</property>
<property name="draw_indicator">True</property>
</object>
<packing>
@@ -1437,9 +1439,9 @@ taken by the monitor</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip_text" translatable="yes">Resulting visualisation is fixed
-to a maximum value based on
-the amount of swap available</property>
+ <property name="tooltip_text" translatable="yes">Resulting time-based visualisation
+is fixed to a maximum value based
+on the amount of swap available</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
</object>
@@ -1636,8 +1638,8 @@ taken by the monitor</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip_text" translatable="yes">Resulting visualisation is fixed
-to a maximum value based on
+ <property name="tooltip_text" translatable="yes">Resulting time-based visualisation
+is fixed to a maximum value based on
the amount of RAM available</property>
<property name="active">True</property>
<property name="draw_indicator">True</property>
@@ -1929,8 +1931,8 @@ taken by the monitor</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip_text" translatable="yes">Resulting visualisation is fixed
-to a user-specified maximum value</property>
+ <property name="tooltip_text" translatable="yes">Resulting time-based visualisation
+is fixed to a user-specified maximum value</property>
<property name="draw_indicator">True</property>
</object>
<packing>
@@ -2227,8 +2229,9 @@ taken by the monitor</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip_text" translatable="yes">Resulting visualisation is fixed
-to a user-specified maximum value</property>
+ <property name="tooltip_text" translatable="yes">Resulting time-based visualisation
+is fixed to a user-specified maximum
+value</property>
<property name="draw_indicator">True</property>
</object>
<packing>
@@ -2451,8 +2454,9 @@ taken by the monitor</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip_text" translatable="yes">Resulting visualisation is fixed
-to a user-specified maximum value</property>
+ <property name="tooltip_text" translatable="yes">Resulting time-based visualisation
+is fixed to a user-specified maximum
+value</property>
<property name="draw_indicator">True</property>
</object>
<packing>
@@ -3021,8 +3025,9 @@ taken by the monitor</property>
<property name="visible">True</property>
<property name="can_focus">True</property>
<property name="receives_default">False</property>
- <property name="tooltip_text" translatable="yes">Resulting visualisation is fixed
-to a user-specified maximum value</property>
+ <property name="tooltip_text" translatable="yes">Resulting time-based visualisation
+is fixed to a user-specified maximum
+value</property>
<property name="draw_indicator">True</property>
</object>
<packing>
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the Xfce4-commits
mailing list