r176 - trunk/src/target/OM-2007/applications/openmoko-chordmaster
mickey at gta01.hmw-consulting.de
mickey at gta01.hmw-consulting.de
Thu Nov 2 14:32:03 CET 2006
Author: mickey
Date: 2006-11-02 13:32:02 +0000 (Thu, 02 Nov 2006)
New Revision: 176
Modified:
trunk/src/target/OM-2007/applications/openmoko-chordmaster/fretboard-widget.c
Log:
chordmaster: calculate and show barree
Modified: trunk/src/target/OM-2007/applications/openmoko-chordmaster/fretboard-widget.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-chordmaster/fretboard-widget.c 2006-11-02 13:17:39 UTC (rev 175)
+++ trunk/src/target/OM-2007/applications/openmoko-chordmaster/fretboard-widget.c 2006-11-02 13:32:02 UTC (rev 176)
@@ -37,7 +37,10 @@
GdkGC* gc = gdk_gc_new( widget->window );
- const gchar* frets = CHORD_FRETBOARD(widget)->frets;
+ gchar* frets = NULL;
+ if ( CHORD_FRETBOARD(widget)->frets )
+ frets = g_strdup( CHORD_FRETBOARD(widget)->frets );
+
gdk_gc_set_line_attributes(gc, 2, GDK_LINE_SOLID, GDK_CAP_ROUND, GDK_JOIN_MITER );
// background
@@ -108,17 +111,31 @@
}
// barree
- gint barree = 0;
- gint max = 0;
+ gint maxfinger = 0;
+ gint minfinger = 10;
+
for ( int i = 0; i < 6; ++i )
{
+ if ( frets[i] == 'x' || frets[i] == 'X' || frets[i] == '0' ) continue;
+ gint position = frets[i] - 0x30;
+ if ( position > maxfinger ) maxfinger = position;
+ if ( position < minfinger ) minfinger = position;
+ }
+ if ( maxfinger > 5 )
+ {
+ for ( int i = 0; i < 6; ++i )
+ {
+ if ( frets[i] == 'x' || frets[i] == 'X' || frets[i] == '0' ) continue;
+ frets[i] = ( frets[i]-= minfinger);
+ }
+ gchar barree = 0x30 + minfinger;
+ GdkColor barreecolor = { 0, 0xee <<8, 0x22 <<8, 0x44 <<8 };
+ pango_layout_set_text( layout, &barree, 1 );
+ gdk_gc_set_rgb_fg_color( gc, &barreecolor );
+ //FIXME take font size into account
+ gdk_draw_layout( widget->window, gc, 25, 260, layout );
+ }
-
- gint position = ( frets[5-i] - 0x30 );
-
- gint position = ( frets[5-i] - 0x30 );
-
-
// finger positions
for ( int i = 0; i < 6; ++i )
{
@@ -134,6 +151,7 @@
-1, -1,
GDK_RGB_DITHER_MAX, 0, 0);
}
+ g_free( frets );
return TRUE;
}
More information about the commitlog
mailing list