[Commit] gwaterfall/src main.c,1.1,1.2 waterfall.c,1.3,1.4 waterfall.h,1.1,1.2

Noah Levitt commit@keithp.com
Sun, 27 Apr 2003 22:09:02 -0700


Committed by: nlevitt

Update of /local/src/CVS/gwaterfall/src
In directory home.keithp.com:/tmp/cvs-serv12833

Modified Files:
	main.c waterfall.c waterfall.h 
Log Message:
Add autohinting option.


Index: main.c
===================================================================
RCS file: /local/src/CVS/gwaterfall/src/main.c,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- main.c	28 Apr 2003 02:45:45 -0000	1.1
+++ main.c	28 Apr 2003 05:09:00 -0000	1.2
@@ -23,6 +23,7 @@
 
 static GtkWidget *page_label = NULL;
 static GtkWidget *style_combo = NULL;
+static GtkWidget *autohint_check_button = NULL;
 
 
 static void
@@ -46,15 +47,14 @@
   list = FcFontList (0, pattern, set);
   FcPatternDestroy (pattern);
 
-  g_assert (list->nfont > 0);
-
   for (i = 0;  i < list->nfont;  i++)
     {
       FcPatternGetString (list->fonts[i], FC_STYLE, 0, &style);
       styles = g_list_append (styles, style);
     }
 
-  gtk_combo_set_popdown_strings (GTK_COMBO (style_combo), styles);
+  if (styles)
+    gtk_combo_set_popdown_strings (GTK_COMBO (style_combo), styles);
   FcFontSetDestroy (list);
 }
 
@@ -116,6 +116,11 @@
       FcPatternGetString (list->fonts[i], FC_FAMILY, 0, &family_name);
       family_names = g_list_append (family_names, family_name);
     }
+  /*
+  family_names = g_list_append (family_names, "Serif");
+  family_names = g_list_append (family_names, "Sans");
+  family_names = g_list_append (family_names, "Monospace");
+  */
 
   family_names = g_list_sort (family_names, (GCompareFunc) FcStrCmpIgnoreCase);
   gtk_combo_set_popdown_strings (GTK_COMBO (combo), family_names);
@@ -150,6 +155,18 @@
 {
   waterfall_set_hint (waterfall, 
                       gtk_toggle_button_get_active (toggle_button));
+
+  gtk_widget_set_sensitive (autohint_check_button, 
+                            gtk_toggle_button_get_active (toggle_button));
+}
+
+
+static void
+autohint_toggled (GtkToggleButton *toggle_button,
+              Waterfall *waterfall)
+{
+  waterfall_set_autohint (waterfall, 
+                          gtk_toggle_button_get_active (toggle_button));
 }
 
 
@@ -410,7 +427,7 @@
                       construct_font_style_chooser (waterfall), 
                       FALSE, FALSE, 0);
 
-  check_button = gtk_check_button_new_with_mnemonic ("_Hinting");
+  check_button = gtk_check_button_new_with_label ("Hinting");
   gtk_widget_show (check_button);
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
                                 waterfall_get_hint (waterfall));
@@ -418,7 +435,17 @@
   g_signal_connect (G_OBJECT (check_button), "toggled",
                     G_CALLBACK (hint_toggled), waterfall);
 
-  check_button = gtk_check_button_new_with_mnemonic ("_Anti-Aliasing");
+  autohint_check_button = gtk_check_button_new_with_label ("Autohinting");
+  gtk_widget_show (autohint_check_button);
+  gtk_widget_set_sensitive (autohint_check_button, 
+                            waterfall_get_hint (waterfall));
+  gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (autohint_check_button),
+                                waterfall_get_autohint (waterfall));
+  gtk_box_pack_start (GTK_BOX (hbox), autohint_check_button, FALSE, FALSE, 0);
+  g_signal_connect (G_OBJECT (autohint_check_button), "toggled",
+                    G_CALLBACK (autohint_toggled), waterfall);
+
+  check_button = gtk_check_button_new_with_label ("Anti-Aliasing");
   gtk_widget_show (check_button);
   gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (check_button),
                                 waterfall_get_antialias (waterfall));

Index: waterfall.c
===================================================================
RCS file: /local/src/CVS/gwaterfall/src/waterfall.c,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -d -r1.3 -r1.4
--- waterfall.c	28 Apr 2003 03:18:26 -0000	1.3
+++ waterfall.c	28 Apr 2003 05:09:00 -0000	1.4
@@ -80,6 +80,7 @@
 
   FcPatternAddBool (pattern, FC_HINTING, waterfall->hint);
   FcPatternAddBool (pattern, FC_ANTIALIAS, waterfall->antialias);
+  FcPatternAddBool (pattern, FC_AUTOHINT, waterfall->autohint);
 
   match = XftFontMatch (GDK_DISPLAY (), gdk_x11_get_default_screen (), 
                         pattern, &result);
@@ -255,6 +256,7 @@
   waterfall->increment = 1.0;
   waterfall->hint = TRUE;
   waterfall->antialias = TRUE;
+  waterfall->autohint = FALSE;
   waterfall->page = -1;
 
   gtk_widget_set_events (GTK_WIDGET (waterfall), GDK_EXPOSURE_MASK);
@@ -399,6 +401,25 @@
   if (antialias != waterfall->antialias)
     {
       waterfall->antialias = antialias;
+      queue_redraw (waterfall);
+    }
+}
+
+
+gboolean
+waterfall_get_autohint (Waterfall *waterfall)
+{
+  return waterfall->autohint;
+}
+
+
+void
+waterfall_set_autohint (Waterfall *waterfall, 
+                        gboolean autohint)
+{
+  if (autohint != waterfall->autohint)
+    {
+      waterfall->autohint = autohint;
       queue_redraw (waterfall);
     }
 }

Index: waterfall.h
===================================================================
RCS file: /local/src/CVS/gwaterfall/src/waterfall.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- waterfall.h	28 Apr 2003 02:45:45 -0000	1.1
+++ waterfall.h	28 Apr 2003 05:09:00 -0000	1.2
@@ -55,6 +55,7 @@
 
   gboolean hint;
   gboolean antialias;
+  gboolean autohint;
 
   gint page;
 };
@@ -95,6 +96,9 @@
                          gint page);
 gboolean waterfall_is_page_empty (Waterfall *waterfall,
                                   gint page);
+gboolean waterfall_get_autohint (Waterfall *waterfall);
+void waterfall_set_autohint (Waterfall *waterfall, 
+                             gboolean autohint);
 
 
 G_END_DECLS