1 9638 erwannc --- control-center-2.16.1/capplets/font/main.c Thu Nov 2 16:28:24 2006 2 9638 erwannc +++ ../SUNWgnome-desktop-prefs-2.16.1/control-center-2.16.1/capplets/font/main.c Thu Nov 2 16:55:48 2006 3 9638 erwannc @@ -337,6 +337,102 @@ 4 9638 erwannc 5 9638 erwannc static GSList *font_pairs = NULL; 6 9638 erwannc 7 9638 erwannc +#ifdef FT_CONFIG_ADD_FULL_HINTING 8 9638 erwannc +static gboolean 9 9638 erwannc +display_full_hinting_dialog (GtkWidget *parent, 10 9638 erwannc + FontPair *pair, 11 9638 erwannc + const char *key, 12 9638 erwannc + const char *value) 13 9638 erwannc +{ 14 9638 erwannc + gboolean display_dialog = FALSE; 15 9638 erwannc + gboolean antialiasing_changed = FALSE; 16 9638 erwannc + 17 9638 erwannc + if (pair && (pair->antialiasing != ANTIALIAS_NONE) && (pair->hinting == HINT_FULL)) 18 9638 erwannc + { 19 9638 erwannc + display_dialog = TRUE; 20 9638 erwannc + antialiasing_changed = TRUE; 21 9638 erwannc + } 22 9638 erwannc + 23 9638 erwannc + if (key && value) 24 9638 erwannc + { 25 9638 erwannc + Hinting hinting; 26 9638 erwannc + Antialiasing antialiasing; 27 9638 erwannc + 28 9638 erwannc + if ((strcmp (key, FONT_HINTING_KEY) == 0) && (strcmp (value, "full") == 0)) 29 9638 erwannc + { 30 9638 erwannc + font_render_get_gconf (&antialiasing, &hinting); 31 9638 erwannc + if (antialiasing != ANTIALIAS_NONE) 32 9638 erwannc + display_dialog = TRUE; 33 9638 erwannc + } 34 9638 erwannc + if ((strcmp (key, FONT_ANTIALIASING_KEY) == 0) && (strcmp (value, "none") != 0)) 35 9638 erwannc + { /* check if hinting is set to full (monochrome case for example)*/ 36 9638 erwannc + font_render_get_gconf (&antialiasing, &hinting); 37 9638 erwannc + if (hinting == HINT_FULL && antialiasing == ANTIALIAS_NONE) 38 9638 erwannc + { 39 9638 erwannc + display_dialog = TRUE; 40 9638 erwannc + antialiasing_changed = TRUE; 41 9638 erwannc + } 42 9638 erwannc + } 43 9638 erwannc + } 44 9638 erwannc + 45 9638 erwannc + if (display_dialog) 46 9638 erwannc + { 47 9638 erwannc + gint result; 48 9638 erwannc + Hinting hinting; 49 9638 erwannc + Antialiasing antialiasing; 50 9638 erwannc + GtkWidget *dialog; 51 9638 erwannc + static gboolean displayed_and_rejected = FALSE; 52 9638 erwannc + 53 9638 erwannc + 54 9638 erwannc + font_render_get_gconf (&antialiasing, &hinting); 55 9638 erwannc + 56 9638 erwannc + /*if the hinting is already set to FULL don't ask again */ 57 9638 erwannc + if (hinting == HINT_FULL && 58 9638 erwannc + ((antialiasing == ANTIALIAS_GRAYSCALE) || (antialiasing == ANTIALIAS_RGBA))) 59 9638 erwannc + return TRUE; 60 9638 erwannc + 61 9638 erwannc + if (hinting == HINT_FULL && antialiasing == ANTIALIAS_NONE && !antialiasing_changed) 62 9638 erwannc + return TRUE; 63 9638 erwannc + 64 9638 erwannc + dialog = gtk_message_dialog_new (GTK_WINDOW(gtk_widget_get_toplevel (parent)), 65 9638 erwannc + GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT, 66 9638 erwannc + GTK_MESSAGE_QUESTION, 67 9638 erwannc + GTK_BUTTONS_OK_CANCEL, 68 9638 erwannc + NULL); 69 9638 erwannc + 70 9638 erwannc + gtk_window_set_title (GTK_WINDOW (dialog), "License Agreement"); 71 9638 erwannc + 72 9638 erwannc + gtk_message_dialog_set_markup (GTK_MESSAGE_DIALOG (dialog), 73 9638 erwannc + "Enabling full hinting may require " 74 9638 erwannc + "a license from Apple Computer. " 75 9638 erwannc + "If you have obtained such a license or " 76 9638 erwannc + "have determined that you do not need " 77 9638 erwannc + "one, click Ok to activate full hinting." 78 9638 erwannc + "\n\nFurther information available at :\n" 79 9668 erwannc + "http://freetype.sourceforge.net/" 80 9638 erwannc + "patents.html"); 81 9638 erwannc + 82 9638 erwannc + 83 9638 erwannc + result = gtk_dialog_run (GTK_DIALOG (dialog)); 84 9638 erwannc + 85 9638 erwannc + gtk_widget_destroy (dialog); 86 9638 erwannc + 87 9638 erwannc + switch (result) 88 9638 erwannc + { 89 9638 erwannc + case GTK_RESPONSE_CANCEL: 90 9638 erwannc + displayed_and_rejected = TRUE; 91 9638 erwannc + return FALSE; 92 9638 erwannc + break; 93 9638 erwannc + default: 94 9638 erwannc + break; 95 9638 erwannc + } 96 9638 erwannc + } 97 9638 erwannc + 98 9638 erwannc + return TRUE; 99 9638 erwannc +} 100 9638 erwannc +#endif 101 9638 erwannc + 102 9638 erwannc + 103 9638 erwannc static void 104 9638 erwannc font_render_load (void) 105 9638 erwannc { 106 9638 erwannc @@ -380,7 +476,12 @@ 107 9638 erwannc font_radio_toggled (GtkToggleButton *toggle_button, 108 9638 erwannc FontPair *pair) 109 9638 erwannc { 110 9638 erwannc - if (!in_change) { 111 9638 erwannc +#ifdef FT_CONFIG_ADD_FULL_HINTING 112 9638 erwannc + if (!in_change && 113 9638 erwannc + display_full_hinting_dialog (GTK_WIDGET (toggle_button), pair, NULL, NULL)) { 114 9638 erwannc +#else 115 9638 erwannc + if (!in_change) { 116 9638 erwannc +#endif 117 9638 erwannc GConfClient *client = gconf_client_get_default (); 118 9638 erwannc 119 9638 erwannc gconf_client_set_string (client, FONT_ANTIALIASING_KEY, 120 9638 erwannc @@ -389,7 +490,6 @@ 121 9638 erwannc gconf_client_set_string (client, FONT_HINTING_KEY, 122 9638 erwannc gconf_enum_to_string (hint_enums, pair->hinting), 123 9638 erwannc NULL); 124 9638 erwannc - 125 9638 erwannc g_object_unref (client); 126 9638 erwannc } 127 9638 erwannc 128 9638 erwannc @@ -699,7 +799,14 @@ 129 9638 erwannc { 130 9638 erwannc EnumGroup *group = item->group; 131 9638 erwannc 132 9638 erwannc - if (!in_change) { 133 9638 erwannc +#ifdef FT_CONFIG_ADD_FULL_HINTING 134 9638 erwannc + if (!in_change && 135 9638 erwannc + display_full_hinting_dialog (GTK_WIDGET(toggle_button), NULL, 136 9638 erwannc + group->gconf_key, 137 9638 erwannc + gconf_enum_to_string (group->enums, item->value))) { 138 9638 erwannc +#else 139 9638 erwannc + if (!in_change) { 140 9638 erwannc +#endif 141 9638 erwannc gconf_client_set_string (group->client, group->gconf_key, 142 9638 erwannc gconf_enum_to_string (group->enums, item->value), 143 9638 erwannc NULL); 144