Enlightenment CVS committal Author : raster Project : e17 Module : apps/e
Dir : e17/apps/e/src/bin Modified Files: Makefile.am e_config.c e_config.h e_includes.h e_ipc.c e_ipc.h e_main.c e_remote_main.c Log Message: shorns' font fixme work.. so we can all work on it :) =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/Makefile.am,v retrieving revision 1.19 retrieving revision 1.20 diff -u -3 -r1.19 -r1.20 --- Makefile.am 15 Mar 2005 10:25:47 -0000 1.19 +++ Makefile.am 2 Apr 2005 16:40:30 -0000 1.20 @@ -43,8 +43,8 @@ e_xinerama.h \ e_table.h \ e_layout.h \ -e_test.h - +e_test.h \ +e_font.h enlightenment_SOURCES = \ e_main.c \ @@ -81,6 +81,7 @@ e_table.c \ e_layout.c \ e_test.c \ +e_font.c \ $(ENLIGHTENMENTHEADERS) enlightenment_LDFLAGS = -export-dynamic @e_libs@ @dlopen_libs@ =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_config.c,v retrieving revision 1.26 retrieving revision 1.27 diff -u -3 -r1.26 -r1.27 --- e_config.c 24 Mar 2005 08:30:44 -0000 1.26 +++ e_config.c 2 Apr 2005 16:40:30 -0000 1.27 @@ -26,6 +26,8 @@ static E_Config_DD *_e_config_edd = NULL; static E_Config_DD *_e_config_module_edd = NULL; static E_Config_DD *_e_config_binding_edd = NULL; +static E_Config_DD *_e_config_font_fallback_edd = NULL; +static E_Config_DD *_e_config_font_default_edd = NULL; /* externally accessible functions */ int @@ -49,6 +51,24 @@ E_CONFIG_VAL(D, T, modifiers, INT); E_CONFIG_VAL(D, T, action, INT); + _e_config_font_default_edd = E_CONFIG_DD_NEW("E_Font_Default", + E_Font_Default); +#undef T +#undef D +#define T E_Font_Default +#define D _e_config_font_default_edd + E_CONFIG_VAL(D, T, text_class, STR); + E_CONFIG_VAL(D, T, font, STR); + E_CONFIG_VAL(D, T, size, INT); + + _e_config_font_fallback_edd = E_CONFIG_DD_NEW("E_Font_Fallback", + E_Font_Fallback); +#undef T +#undef D +#define T E_Font_Fallback +#define D _e_config_font_fallback_edd + E_CONFIG_VAL(D, T, name, STR); + _e_config_edd = E_CONFIG_DD_NEW("E_Config", E_Config); #undef T #undef D @@ -68,6 +88,8 @@ E_CONFIG_VAL(D, T, zone_desks_y_count, INT); E_CONFIG_LIST(D, T, modules, _e_config_module_edd); E_CONFIG_LIST(D, T, bindings, _e_config_binding_edd); + E_CONFIG_LIST(D, T, font_fallbacks, _e_config_font_fallback_edd); + E_CONFIG_LIST(D, T, font_defaults, _e_config_font_default_edd); e_config = e_config_domain_load("e", _e_config_edd); if (!e_config) @@ -143,6 +165,30 @@ eb->action = E_BINDING_ACTION_MENU; e_config->bindings = evas_list_append(e_config->bindings, eb); } + { + E_Font_Fallback* eff; + + eff = E_NEW(E_Font_Fallback, 1); + eff->name = strdup("Kochi-Gothic"); + e_config->font_fallbacks = evas_list_append(e_config->font_fallbacks, + eff); + + eff = E_NEW(E_Font_Fallback, 1); + eff->name = strdup("Baekmuk-Dotum"); + e_config->font_fallbacks = evas_list_append(e_config->font_fallbacks, + eff); + + } + { + E_Font_Default* efd; + + efd = E_NEW(E_Font_Fallback, 1); + efd->text_class = strdup("title_bar"); + efd->font = strdup("Vera"); + efd->size = 10; + e_config->font_defaults = evas_list_append(e_config->font_defaults, efd); + + } e_config_save_queue(); } @@ -180,12 +226,34 @@ e_config->bindings = evas_list_remove_list(e_config->bindings, e_config->bindings); E_FREE(eb); } + while (e_config->font_fallbacks) + { + E_Font_Fallback *eff; + + eff = e_config->font_fallbacks->data; + e_config->font_fallbacks = evas_list_remove_list(e_config->font_fallbacks, e_config->font_fallbacks); + E_FREE(eff->name); + E_FREE(eff); + } + while (e_config->font_defaults) + { + E_Font_Default *efd; + + efd = e_config->font_defaults->data; + e_config->font_defaults = evas_list_remove_list(e_config->font_defaults, e_config->font_defaults); + E_FREE(efd->text_class); + E_FREE(efd->font); + E_FREE(efd); + } + E_FREE(e_config->desktop_default_background); E_FREE(e_config); } E_CONFIG_DD_FREE(_e_config_edd); E_CONFIG_DD_FREE(_e_config_module_edd); E_CONFIG_DD_FREE(_e_config_binding_edd); + E_CONFIG_DD_FREE(_e_config_font_default_edd); + E_CONFIG_DD_FREE(_e_config_font_fallback_edd); return 1; } =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_config.h,v retrieving revision 1.11 retrieving revision 1.12 diff -u -3 -r1.11 -r1.12 --- e_config.h 11 Mar 2005 13:09:06 -0000 1.11 +++ e_config.h 2 Apr 2005 16:40:30 -0000 1.12 @@ -64,6 +64,8 @@ int use_virtual_roots; Evas_List *modules; Evas_List *bindings; + Evas_List *font_fallbacks; + Evas_List *font_defaults; }; struct _E_Config_Module =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_includes.h,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- e_includes.h 15 Mar 2005 10:26:05 -0000 1.9 +++ e_includes.h 2 Apr 2005 16:40:31 -0000 1.10 @@ -33,3 +33,4 @@ #include "e_xinerama.h" #include "e_table.h" #include "e_layout.h" +#include "e_font.h" =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_ipc.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- e_ipc.c 17 Mar 2005 01:30:50 -0000 1.9 +++ e_ipc.c 2 Apr 2005 16:40:31 -0000 1.10 @@ -213,6 +213,253 @@ bg, strlen(bg) + 1); } break; + case E_IPC_OP_FONT_AVAILABLE_LIST: + { + Evas_List *fonts_available, *l; + int bytes; + char *font_name, *data, *p; + + bytes = 0; + fonts_available = e_font_available_list(); + printf("ipc font av: %d\n", fonts_available); + for (l = fonts_available; l; l = l->next) + { + font_name = evas_list_data(l); + bytes += strlen(font_name) + 1; + } + + data = malloc(bytes); + p = data; + for (l = fonts_available; l; l = l->next) + { + font_name = evas_list_data(l); + strcpy(p, font_name); + p += strlen(font_name); + *p = 0; + p++; + } + ecore_ipc_client_send(e->client, + E_IPC_DOMAIN_REPLY, + E_IPC_OP_FONT_AVAILABLE_LIST_REPLY, + 0/*ref*/, 0/*ref_to*/, 0/*response*/, + data, bytes); + + e_font_available_list_free(fonts_available); + free(data); + } + break; + case E_IPC_OP_FONT_APPLY: + { + e_font_apply(); + } + break; + case E_IPC_OP_FONT_FALLBACK_CLEAR: + { + e_font_fallback_clear(); + } + break; + case E_IPC_OP_FONT_FALLBACK_APPEND: + { + char * font_name; + font_name = malloc(e->size + 1); + font_name[e->size] = 0; + memcpy(font_name, e->data, e->size); + e_font_fallback_append(font_name); + free(font_name); + + e_config_save_queue(); + } + break; + case E_IPC_OP_FONT_FALLBACK_PREPEND: + { + char * font_name; + font_name = malloc(e->size + 1); + font_name[e->size] = 0; + memcpy(font_name, e->data, e->size); + e_font_fallback_prepend(font_name); + free(font_name); + + e_config_save_queue(); + } + break; + case E_IPC_OP_FONT_FALLBACK_LIST: + { + Evas_List *fallbacks, *l; + int bytes; + E_Font_Fallback *eff; + char *data, *p; + + bytes = 0; + fallbacks = e_font_fallback_list(); + for (l = fallbacks; l; l = l->next) + { + eff = evas_list_data(l); + bytes += strlen(eff->name) + 1; + } + data = malloc(bytes); + p = data; + for (l = fallbacks; l; l = l->next) + { + eff = evas_list_data(l); + strcpy(p, eff->name); + p += strlen(eff->name); + *p = 0; + p++; + } + ecore_ipc_client_send(e->client, + E_IPC_DOMAIN_REPLY, + E_IPC_OP_FONT_FALLBACK_LIST_REPLY, + 0/*ref*/, 0/*ref_to*/, 0/*response*/, + data, bytes); + free(data); + + } + break; + case E_IPC_OP_FONT_FALLBACK_REMOVE: + { + char * font_name; + font_name = malloc(e->size + 1); + font_name[e->size] = 0; + memcpy(font_name, e->data, e->size); + e_font_fallback_remove(font_name); + free(font_name); + + e_config_save_queue(); + } + break; + case E_IPC_OP_FONT_DEFAULT_SET: + { + char * p; + char * font_name; + char * text_class; + int font_size; + + + p = e->data; + + /* Make sure our data is packed for us <str>0<str>0 */ + if( p[e->size - 1] != 0) { + break; + } + + text_class = strdup(p); + + p += strlen(text_class) + 1; + font_name = strdup(p); + + p += strlen(font_name) + 1; + font_size = atoi(p); + + e_font_default_set(text_class, font_name, font_size); + + free(font_name); + free(text_class); + + e_config_save_queue(); + } + break; + case E_IPC_OP_FONT_DEFAULT_GET: + { + int bytes; + E_Font_Default *efd; + char *data, *p, *text_class; + + text_class = malloc(e->size + 1); + text_class[e->size] = 0; + memcpy(text_class, e->data, e->size); + + efd = e_font_default_get (text_class); + + free(text_class); + + bytes = 0; + if (efd) { + bytes += strlen(efd->text_class) + 1; + bytes += strlen(efd->font) + 1; + bytes++; /* efd->size */ + } + + data = malloc(bytes); + p = data; + + if (efd) { + strcpy(p, efd->text_class); + p += strlen(efd->text_class); + *p = 0; + p++; + + strcpy(p, efd->font); + p += strlen(efd->font); + *p = 0; + p++; + + /* FIXME: should this be packed like this (int to char) ? */ + *p = (char) efd->size; + p++; + } + + ecore_ipc_client_send(e->client, + E_IPC_DOMAIN_REPLY, + E_IPC_OP_FONT_DEFAULT_GET_REPLY, + 0/*ref*/, 0/*ref_to*/, 0/*response*/, + data, bytes); + free(data); + } + break; + case E_IPC_OP_FONT_DEFAULT_REMOVE: + { + char * text_class; + text_class = malloc(e->size + 1); + text_class[e->size] = 0; + memcpy(text_class, e->data, e->size); + e_font_default_remove(text_class); + free(text_class); + + e_config_save_queue(); + } + break; + case E_IPC_OP_FONT_DEFAULT_LIST: + { + Evas_List *defaults, *l; + int bytes; + E_Font_Default *efd; + char *data, *p; + + bytes = 0; + defaults = e_font_default_list(); + for (l = defaults; l; l = l->next) + { + efd = l->data; + bytes += strlen(efd->text_class) + 1; + bytes += strlen(efd->font) + 1; + bytes++; /* efd->size */ + } + data = malloc(bytes); + p = data; + for (l =defaults; l; l = l->next) + { + efd = l->data; + strcpy(p, efd->text_class); + p += strlen(efd->text_class); + *p = 0; + p++; + strcpy(p, efd->font); + p += strlen(efd->font); + *p = 0; + p++; + /* FIXME: should this be packed like this (int to char) ? */ + *p = (char) efd->size; + p++; + } + ecore_ipc_client_send(e->client, + E_IPC_DOMAIN_REPLY, + E_IPC_OP_FONT_DEFAULT_LIST_REPLY, + 0/*ref*/, 0/*ref_to*/, 0/*response*/, + data, bytes); + free(data); + + } + break; case E_IPC_OP_RESTART: { restart = 1; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_ipc.h,v retrieving revision 1.8 retrieving revision 1.9 diff -u -3 -r1.8 -r1.9 --- e_ipc.h 17 Mar 2005 01:30:50 -0000 1.8 +++ e_ipc.h 2 Apr 2005 16:40:37 -0000 1.9 @@ -23,6 +23,21 @@ E_IPC_OP_BG_SET, E_IPC_OP_BG_GET, E_IPC_OP_BG_GET_REPLY, + E_IPC_OP_FONT_AVAILABLE_LIST, + E_IPC_OP_FONT_AVAILABLE_LIST_REPLY, + E_IPC_OP_FONT_APPLY, + E_IPC_OP_FONT_FALLBACK_CLEAR, + E_IPC_OP_FONT_FALLBACK_APPEND, + E_IPC_OP_FONT_FALLBACK_PREPEND, + E_IPC_OP_FONT_FALLBACK_LIST, + E_IPC_OP_FONT_FALLBACK_LIST_REPLY, + E_IPC_OP_FONT_FALLBACK_REMOVE, + E_IPC_OP_FONT_DEFAULT_SET, + E_IPC_OP_FONT_DEFAULT_GET, + E_IPC_OP_FONT_DEFAULT_GET_REPLY, + E_IPC_OP_FONT_DEFAULT_REMOVE, + E_IPC_OP_FONT_DEFAULT_LIST, + E_IPC_OP_FONT_DEFAULT_LIST_REPLY, E_IPC_OP_RESTART, E_IPC_OP_LAST } E_Ipc_Op; =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_main.c,v retrieving revision 1.58 retrieving revision 1.59 diff -u -3 -r1.58 -r1.59 --- e_main.c 1 Apr 2005 16:12:29 -0000 1.58 +++ e_main.c 2 Apr 2005 16:40:37 -0000 1.59 @@ -224,6 +224,9 @@ } _e_main_shutdown_push(ecore_evas_shutdown); + + /*** Finished loading subsystems, Loading WM Specifics ***/ + /* setup directories we will be using for configurations sotrage etc. */ if (!_e_main_dirs_init()) { @@ -250,9 +253,15 @@ /* setup edje to animate @ e_config->framerate frames per sec. */ edje_frametime_set(1.0 / e_config->framerate); - /* FIXME: this is just appending Kochi if Vera doesnt have it. We need - * a full config support subsystem for this */ - edje_fontset_append_set("Kochi-Gothic,Baekmuk-Dotum"); + + /* init font system */ + if (!e_font_init()) + { + e_error_message_show("Enlightenment cannot set up its font system."); + _e_main_shutdown(-1); + } + _e_main_shutdown_push(e_font_shutdown); + e_font_apply(); e_canvas_recache(); /* setup init status window/screen */ @@ -379,7 +388,7 @@ return 0; } -/* FIXME: make save to delete within a callback */ +/* FIXME: make safe to delete within a callback */ E_Before_Idler * e_main_idler_before_add(int (*func) (void *data), void *data, int once) { =================================================================== RCS file: /cvsroot/enlightenment/e17/apps/e/src/bin/e_remote_main.c,v retrieving revision 1.9 retrieving revision 1.10 diff -u -3 -r1.9 -r1.10 --- e_remote_main.c 17 Mar 2005 01:30:50 -0000 1.9 +++ e_remote_main.c 2 Apr 2005 16:40:37 -0000 1.10 @@ -36,10 +36,12 @@ #define SIMPLE_REQ 0 #define SIMPLE_STR_REQ 1 #define FULL_FUNC 2 +#define MULTI_STR_REQ 3 #define OREQ(opt, desc, ipc, rep) {opt, desc, 0, rep, SIMPLE_REQ, ipc, NULL} #define OSTR(opt, desc, ipc, rep) {opt, desc, 1, rep, SIMPLE_STR_REQ, ipc, NULL} #define OFNC(opt, desc, param, fn, rep) {opt, desc, param, rep, SIMPLE_FUNC, 0, fn} +#define OMUL(opt, desc, ipc, rep, argc) {opt, desc, argc, rep, MULTI_STR_REQ, ipc, NULL} E_IPC_Opt_Handler handlers[] = { @@ -49,6 +51,17 @@ OSTR("-module-disable", "Disable module OPT1 if not disabled", E_IPC_OP_MODULE_DISABLE, 0), OREQ("-module-list", "List all loaded modules and their states", E_IPC_OP_MODULE_LIST, 1), OSTR("-bg-set", "Set the background edje file to be OPT1", E_IPC_OP_BG_SET, 0), + OSTR("-font-fallback-remove", "Remove OPT1 from the fontset", E_IPC_OP_FONT_FALLBACK_REMOVE, 0), + OSTR("-font-fallback-prepend", "Prepend OPT1 to the fontset", E_IPC_OP_FONT_FALLBACK_PREPEND, 0), + OSTR("-font-fallback-append", "Append OPT1 to the fontset", E_IPC_OP_FONT_FALLBACK_APPEND, 0), + OREQ("-font-apply", "Apply changes made to the font system", E_IPC_OP_FONT_APPLY, 0), + OREQ("-font-fallback-list", "List the fallback fonts in order", E_IPC_OP_FONT_FALLBACK_LIST, 1), + OREQ("-font-available-list", "List available fonts", E_IPC_OP_FONT_AVAILABLE_LIST, 1), + OREQ("-font-fallback-clear", "Clear font fallback list", E_IPC_OP_FONT_FALLBACK_CLEAR, 0), + OSTR("-font-default-get", "List the default font associated with OPT1", E_IPC_OP_FONT_DEFAULT_GET, 1), + OSTR("-font-default-remove", "Remove the default text class OPT1", E_IPC_OP_FONT_DEFAULT_REMOVE, 0), + OREQ("-font-default-list", "List all configured text classes", E_IPC_OP_FONT_DEFAULT_LIST, 1), + OMUL("-font-default-set", "Set textclass (OPT1) font (OPT2) and size (OPT3)", E_IPC_OP_FONT_DEFAULT_SET, 0, 3), OREQ("-restart", "Restart E17", E_IPC_OP_RESTART, 0) }; @@ -196,8 +209,10 @@ ecore_app_args_get(&argc, &argv); for (i = 1; i < argc; i++) { - char *v; + char *v, *p; int j; + int k; + int data_size; for (j = 0; j < (int)(sizeof(handlers) / sizeof(E_IPC_Opt_Handler)); j++) { @@ -231,6 +246,29 @@ 0/*ref*/, 0/*ref_to*/, 0/*response*/, v, strlen(v)); break; + case MULTI_STR_REQ: + /* pack up the data "<str>0<str>0" */ + data_size = 0; + for(k = 0; k < handler->num_params; k++) { + data_size += strlen(argv[ i + 1 + k ]); + data_size++; /* NULL Pad */ + } + v = malloc(data_size); + p = v; + for(k = 0; k < handler->num_params; k++) { + strcpy(p, argv[ i + 1 + k]); + p += strlen(argv[ i + 1 + k]); + *p = 0; + p++; + } + ecore_ipc_server_send(_e_ipc_server, + E_IPC_DOMAIN_REQUEST, + handler->simple_request_id, + 0/*ref*/, 0/*ref_to*/, 0/*response*/, + v, data_size); + free(v); + + break; case FULL_FUNC: handler->func(argv + i + 1); break; @@ -257,7 +295,7 @@ Ecore_Ipc_Event_Server_Del *e; e = event; - return 1; + return 1; } static int @@ -300,6 +338,107 @@ else printf("REPLY: MODULE NONE\n"); break; + case E_IPC_OP_FONT_FALLBACK_LIST_REPLY: + if (e->data) + { + char *p; + + p = e->data; + while (p < (char *)(e->data + e->size)) + { + char *name; + + name = p; + p += strlen(name); + if (p < (char *)(e->data + e->size)) + { + printf("REPLY: FALLBACK NAME=\"%s\"\n", name); + } + p++; + } + } + else + printf("REPLY: FALLBACK NONE\n"); + break; + case E_IPC_OP_FONT_AVAILABLE_LIST_REPLY: + if (e->data) + { + char *p; + + p = e->data; + while (p < (char *)(e->data + e->size)) + { + char *name; + name = p; + p += strlen(name); + if (p < (char *)(e->data + e->size)) + { + printf("REPLY: AVAILABLE NAME=\"%s\"\n", name); + } + p++; + } + } + else + printf("REPLY: AVAILABLE NONE\n"); + break; + case E_IPC_OP_FONT_DEFAULT_GET_REPLY: + if (e->data) + { + char *text_class, *name; + char *p; + char size; + + p = e->data; + + text_class = p; + p += strlen(text_class) + 1; + if (p < (char *)(e->data + e->size)) + { + name = p; + p += strlen(name) + 1; + if (p < (char *)(e->data + e->size)) + { + size = *p; + printf("REPLY: DEFAULT TEXT_CLASS=\"%s\" NAME=\"%s\" SIZE=%i\n", + text_class, name, (int)size); + p++; + + } + } + } + else + printf("REPLY: DEFAULT NONE\n"); + break; + case E_IPC_OP_FONT_DEFAULT_LIST_REPLY: + if (e->data) + { + char *text_class, *name; + char *p; + char size; + + p = e->data; + + while (p < (char *)(e->data + e->size)) + { + text_class = p; + p += strlen(text_class) + 1; + if (p < (char *)(e->data + e->size)) + { + name = p; + p += strlen(name) + 1; + if (p < (char *)(e->data + e->size)) + { + size = *p; + printf("REPLY: DEFAULT TEXT_CLASS=\"%s\" NAME=\"%s\" SIZE=%i\n", + text_class, name, (int)size); + p++; + } + } + } + } + else + printf("REPLY: DEFAULT NONE\n"); + break; default: break; } ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs