From: KANOU H. <ka...@kh...> - 2004-10-26 13:05:00
|
I customized X resources Gdraw.*.Font and noticed that there is no way to customize the font to use in layer palettes. These palette resembles a radio buttons, so I expected that Gdraw.GRadio.Font resource affects them. Actually not. The font request (size, weight and family) is hard coded in cvpalettes.c. I made this patch which is enough for my use (12pt gothic), but this is insufficient for a large font (labels will overlap). Is there a better way to set the font size (or should I shift all buttons and labels by the point size)? --- cvpalettes.c.orig Wed Sep 22 12:56:56 2004 +++ cvpalettes.c Tue Oct 26 21:48:28 2004 @@ -39,7 +39,9 @@ #include "splinefont.h" #include <ustring.h> #include <utype.h> +#include <gresource.h> +extern void *font_cvt(char *val, void *def); extern GDevEventMask input_em[]; extern const int input_em_cnt; @@ -1704,7 +1706,8 @@ GGadgetCreateData gcd[25]; GTextInfo label[25]; static GBox radio_box = { bt_none, bs_rect, 0, 0, 0, 0, 0,0,0,0, COLOR_DEFAULT,COLOR_DEFAULT }; - GFont *font; + char *radio_font; + GFont *font = NULL; FontRequest rq; int i, base; @@ -1734,11 +1737,16 @@ memset(&label,0,sizeof(label)); memset(&gcd,0,sizeof(gcd)); - memset(&rq,'\0',sizeof(rq)); - rq.family_name = helv; - rq.point_size = -12; - rq.weight = 400; - font = GDrawInstanciateFont(GDrawGetDisplayOfWindow(cvlayers),&rq); + radio_font = GResourceFindString("GRadio.Font"); + if (radio_font != NULL + font = (GFont *)font_cvt((void *)radio_font,NULL); + if (font == NULL) { + memset(&rq,'\0',sizeof(rq)); + rq.family_name = helv; + rq.point_size = -12; + rq.weight = 400; + GDrawInstanciateFont(GDrawGetDisplayOfWindow(cvlayers),&rq); + } for ( i=0; i<sizeof(label)/sizeof(label[0]); ++i ) label[i].font = font; |