Revision: 1398
http://geeqie.svn.sourceforge.net/geeqie/?rev=1398&view=rev
Author: zas_
Date: 2009-02-21 10:29:13 +0000 (Sat, 21 Feb 2009)
Log Message:
-----------
Add grid to bar histogram, simplify the code and draw horizontal lines too.
Modified Paths:
--------------
trunk/src/histogram.c
trunk/src/image-overlay.c
Modified: trunk/src/histogram.c
===================================================================
--- trunk/src/histogram.c 2009-02-19 17:36:38 UTC (rev 1397)
+++ trunk/src/histogram.c 2009-02-21 10:29:13 UTC (rev 1398)
@@ -41,9 +41,11 @@
struct _Histogram {
gint histogram_chan;
gint histogram_logmode;
+ guint histogram_vgrid; /* number of vertical divisions, 0 for none */
+ guint histogram_hgrid; /* number of horizontal divisions, 0 for none */
+
};
-
Histogram *histogram_new(void)
{
Histogram *histogram;
@@ -51,6 +53,8 @@
histogram = g_new0(Histogram, 1);
histogram->histogram_chan = options->histogram.last_channel_mode;
histogram->histogram_logmode = options->histogram.last_log_mode;
+ histogram->histogram_vgrid = 5;
+ histogram->histogram_hgrid = 3;
return histogram;
}
@@ -166,6 +170,44 @@
return NULL;
}
+static void histogram_vgrid(Histogram *histogram, GdkPixbuf *pixbuf, gint x,
gint y, gint width, gint height)
+{
+ static gint c = 160;
+ static gint alpha = 250;
+ guint i;
+ float add;
+
+ if (histogram->histogram_vgrid == 0) return;
+
+ add = width / (float)histogram->histogram_vgrid;
+
+ for (i = 1; i < histogram->histogram_vgrid; i++)
+ {
+ gint xpos = x + (int)(i * add + 0.5);
+
+ pixbuf_draw_line(pixbuf, x, y, width, height, xpos, y, xpos, y
+ height, c, c, c, alpha);
+ }
+}
+
+static void histogram_hgrid(Histogram *histogram, GdkPixbuf *pixbuf, gint x,
gint y, gint width, gint height)
+{
+ static gint c = 160;
+ static gint alpha = 250;
+ guint i;
+ float add;
+
+ if (histogram->histogram_hgrid == 0) return;
+
+ add = height / (float)histogram->histogram_hgrid;
+
+ for (i = 1; i < histogram->histogram_hgrid; i++)
+ {
+ gint ypos = y + (int)(i * add + 0.5);
+
+ pixbuf_draw_line(pixbuf, x, y, width, height, x, ypos, x +
width, ypos, c, c, c, alpha);
+ }
+}
+
gint histogram_draw(Histogram *histogram, const HistMap *histmap, GdkPixbuf
*pixbuf, gint x, gint y, gint width, gint height)
{
/* FIXME: use the coordinates correctly */
@@ -174,6 +216,10 @@
gdouble logmax;
if (!histogram || !histmap) return 0;
+
+ /* Draw the grid */
+ histogram_vgrid(histogram, pixbuf, x, y, width, height);
+ histogram_hgrid(histogram, pixbuf, x, y, width, height);
for (i = 0; i < 1024; i++) {
#if 0
Modified: trunk/src/image-overlay.c
===================================================================
--- trunk/src/image-overlay.c 2009-02-19 17:36:38 UTC (rev 1397)
+++ trunk/src/image-overlay.c 2009-02-21 10:29:13 UTC (rev 1398)
@@ -640,21 +640,8 @@
gint x = 5;
gint y = height - HISTOGRAM_HEIGHT - 5;
gint w = width - 10;
- float xoffset = 0;
- gint subdiv = 5;
- gint c = 160;
- gint alpha = 250;
- gint i;
- float add = w / (float)subdiv;
- for (i = 0; i < subdiv; i++)
- {
- gint d = (i > 0 ? 0 : 1);
-
- pixbuf_set_rect(pixbuf, x + xoffset + 0.5, y,
add + d + 0.5, HISTOGRAM_HEIGHT, c, c, c, alpha, d, 1, 1, 1);
- xoffset += add+d;
- }
-
+ pixbuf_set_rect_fill(pixbuf, x, y, w, HISTOGRAM_HEIGHT,
220, 220, 220, 210);
histogram_draw(osd->histogram, histmap, pixbuf, x, y,
w, HISTOGRAM_HEIGHT);
}
pixbuf_draw_layout(pixbuf, layout, imd->pr, 5, 5, 0, 0, 0, 255);
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Open Source Business Conference (OSBC), March 24-25, 2009, San Francisco, CA
-OSBC tackles the biggest issue in open source: Open Sourcing the Enterprise
-Strategies to boost innovation and cut costs with open source participation
-Receive a $600 discount off the registration fee with the source code: SFAD
http://p.sf.net/sfu/XcvMzF8H
_______________________________________________
Geeqie-svn mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/geeqie-svn