r1254 - trunk/src/target/OM-2007/applications/openmoko-keyboard/src
caowai_song at sita.openmoko.org
caowai_song at sita.openmoko.org
Tue Mar 6 10:13:21 CET 2007
Author: caowai_song
Date: 2007-03-06 10:13:13 +0100 (Tue, 06 Mar 2007)
New Revision: 1254
Modified:
trunk/src/target/OM-2007/applications/openmoko-keyboard/src/config-parser.c
trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-image.c
trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-key.c
trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-layout.c
trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-ui-xft-backend.c
trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-ui.c
trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard.h
Log:
The background, changer ground and pictures of each keys only save
as file name in the memory. They will be created when need, and
will be free after using.
Modified: trunk/src/target/OM-2007/applications/openmoko-keyboard/src/config-parser.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-keyboard/src/config-parser.c 2007-03-06 07:32:58 UTC (rev 1253)
+++ trunk/src/target/OM-2007/applications/openmoko-keyboard/src/config-parser.c 2007-03-06 09:13:13 UTC (rev 1254)
@@ -341,7 +341,6 @@
const char *tag,
const char **attr)
{
- MBKeyboardImage *img;
const char *val;
char buf[512];
Bool pushimage;
@@ -373,19 +372,16 @@
if (!util_file_readable(buf))
snprintf(buf, 512, "%s/.matchbox/%s", getenv("HOME"), val);
- img = mb_kbd_image_new (state->keyboard, buf);
}
else
{
- img = mb_kbd_image_new (state->keyboard, val);
+ snprintf(buf, 512, "%s", val);
}
- if (img == NULL)
- fprintf(stderr, "load img fail\n");
if (pushimage)
- mb_kbd_key_set_normal_image(state->current_key, img);
+ mb_kbd_key_set_normal_image(state->current_key, buf);
else
- mb_kbd_key_set_push_image(state->current_key, img);
+ mb_kbd_key_set_push_image(state->current_key, buf);
}
static void
@@ -684,7 +680,6 @@
config_handle_layout_background(MBKeyboardConfigState *state,
const char **attr)
{
- MBKeyboardImage *img;
const char *val;
char buf[512];
@@ -701,18 +696,14 @@
if (!util_file_readable(buf))
snprintf(buf, 512, "%s/.matchbox/%s", getenv("HOME"), val);
- img = mb_kbd_image_new (state->keyboard, buf);
+ mb_kbd_layout_set_background(state->current_layout, buf);
}
else
{
- img = mb_kbd_image_new (state->keyboard, val);
+ mb_kbd_layout_set_background(state->current_layout, val);
}
- if (img == NULL)
- fprintf(stderr, "load img fail\n");
- mb_kbd_layout_set_background(state->current_layout, img);
-
if (mb_kbd_layout_realsize(state->current_layout))
{
if ((val = attr_get_val("width", attr)) != NULL)
@@ -732,7 +723,6 @@
config_handle_layout_changerground(MBKeyboardConfigState *state,
const char **attr)
{
- MBKeyboardImage *img;
const char *val;
char buf[512];
@@ -753,18 +743,14 @@
if (!util_file_readable(buf))
snprintf(buf, 512, "%s/.matchbox/%s", getenv("HOME"), val);
- img = mb_kbd_image_new (state->keyboard, buf);
+ mb_kbd_layout_set_changerground(state->current_layout, buf);
}
else
{
- img = mb_kbd_image_new (state->keyboard, val);
+ mb_kbd_layout_set_changerground(state->current_layout, val);
}
- if (img == NULL)
- fprintf(stderr, "load img fail\n");
- mb_kbd_layout_set_changerground(state->current_layout, img);
-
if ((val = attr_get_val("width", attr)) != NULL)
{
if (atoi(val) > 0)
Modified: trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-image.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-image.c 2007-03-06 07:32:58 UTC (rev 1253)
+++ trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-image.c 2007-03-06 09:13:13 UTC (rev 1254)
@@ -212,6 +212,8 @@
free(data);
+ img->kbd = kbd;
+
return img;
}
@@ -236,7 +238,18 @@
void
mb_kbd_image_destroy (MBKeyboardImage *img)
{
+ MBKeyboardUI *ui;
/* ... */
+ if (img == NULL)
+ return;
+
+ ui = img->kbd->ui;
+
+ XRenderFreePicture(mb_kbd_ui_x_display(ui), img->xpic);
+
+ XFreePixmap(mb_kbd_ui_x_display(ui), img->xdraw);
+
+ free(img);
}
Modified: trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-key.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-key.c 2007-03-06 07:32:58 UTC (rev 1253)
+++ trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-key.c 2007-03-06 09:13:13 UTC (rev 1254)
@@ -73,8 +73,8 @@
boolean is_blank; /* 'blank' keys are spacers */
boolean extended; /* only show in landscape */
- MBKeyboardImage *normal_image; /* The normal image */
- MBKeyboardImage *push_image; /* The push down image */
+ char *normal_image; /* The normal image */
+ char *push_image; /* The push down image */
MBKeyboardStateType sets_kbdstate; /* needed */
};
@@ -102,24 +102,26 @@
}
void
-mb_kbd_key_set_normal_image(MBKeyboardKey *key, MBKeyboardImage *image)
+mb_kbd_key_set_normal_image(MBKeyboardKey *key,
+ const char *image)
{
- key->normal_image = image;
+ key->normal_image = strdup(image);
}
-MBKeyboardImage *
+const char *
mb_kbd_key_get_normal_image(MBKeyboardKey *key)
{
return key->normal_image;
}
void
-mb_kbd_key_set_push_image(MBKeyboardKey *key, MBKeyboardImage *image)
+mb_kbd_key_set_push_image(MBKeyboardKey *key,
+ const char *image)
{
- key->push_image = image;
+ key->push_image = strdup(image);
}
-MBKeyboardImage *
+const char *
mb_kbd_key_get_push_image(MBKeyboardKey *key)
{
return key->push_image;
Modified: trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-layout.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-layout.c 2007-03-06 07:32:58 UTC (rev 1253)
+++ trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-layout.c 2007-03-06 09:13:13 UTC (rev 1254)
@@ -26,15 +26,15 @@
List *rows;
/* background image and changer background */
- MBKeyboardImage *background;
+ char *background;
- MBKeyboardImage *changerground;
- int changer_x, changer_y, changer_w, changer_h;
+ char *changerground;
+ int changer_x, changer_y, changer_w, changer_h;
/* real size */
- Bool realsize;
- int width;
- int height;
+ Bool realsize;
+ int width;
+ int height;
/* layout type */
MBKeyboardLayoutType type;
@@ -70,12 +70,12 @@
/* background image */
void
mb_kbd_layout_set_background(MBKeyboardLayout *layout,
- MBKeyboardImage *background)
+ const char *background)
{
- layout->background = background;
+ layout->background = strdup(background);
}
-MBKeyboardImage *
+const char *
mb_kbd_layout_get_background(MBKeyboardLayout *layout)
{
return layout->background;
@@ -84,12 +84,12 @@
/* changer image */
void
mb_kbd_layout_set_changerground(MBKeyboardLayout *layout,
- MBKeyboardImage *changerground)
+ const char *changerground)
{
- layout->changerground = changerground;
+ layout->changerground = strdup(changerground);
}
-MBKeyboardImage *
+const char *
mb_kbd_layout_get_changerground(MBKeyboardLayout *layout)
{
return layout->changerground;
Modified: trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-ui-xft-backend.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-ui-xft-backend.c 2007-03-06 07:32:58 UTC (rev 1253)
+++ trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-ui-xft-backend.c 2007-03-06 09:13:13 UTC (rev 1254)
@@ -121,6 +121,7 @@
MBKeyboard *kbd;
MBKeyboardImage *image;
+ const char *image_name;
if (mb_kbd_key_is_blank(key)) /* spacer */
return;
@@ -156,11 +157,13 @@
}
if (mb_kbd_key_is_held(kbd, key))
- image = mb_kbd_key_get_push_image(key);
+ image_name = mb_kbd_key_get_push_image(key);
else
- image = mb_kbd_key_get_normal_image(key);
+ image_name = mb_kbd_key_get_normal_image(key);
- if(image)
+ image = mb_kbd_image_new(kbd, image_name);
+
+ if(image != NULL)
{
XRenderComposite(xdpy,
PictOpOver,
@@ -168,6 +171,9 @@
None,
XftDrawPicture (xft_backend->xft_backbuffer),
0, 0, 0, 0, rect.x, rect.y, rect.width, rect.height);
+
+ mb_kbd_image_destroy(image);
+ image = NULL;
}
else
{
@@ -310,12 +316,16 @@
MBKeyboardImage *image;
MBKeyboardLayout *layout;
+ const char *image_name;
+
xft_backend = (MBKeyboardUIBackendXft*)mb_kbd_ui_backend(ui);
layout = mb_kbd_get_selected_layout(mb_kbd_ui_kbd(ui));
- image = mb_kbd_layout_get_background(layout);
+ image_name = mb_kbd_layout_get_background(layout);
+ image = mb_kbd_image_new(mb_kbd_ui_kbd(ui), image_name);
+
/* Background */
if (image == NULL)
{
@@ -347,26 +357,33 @@
None,
XftDrawPicture(xft_backend->xft_backbuffer),
0, 0, 0, 0, 0, 0, w, h);
+
+ mb_kbd_image_destroy(image);
}
if (mb_kbd_layout_realsize(layout))
{
- if ((image = mb_kbd_layout_get_changerground(layout)) != NULL)
- {
- int x, y, w, h;
+ image_name = mb_kbd_layout_get_changerground(layout);
+ printf("changer background=%s\n", image_name);
+ if ((image = mb_kbd_image_new(mb_kbd_ui_kbd(ui), image_name)) != NULL)
+ {
+ int x, y, w, h;
- x = mb_kbd_layout_get_changerground_x(layout);
- y = mb_kbd_layout_get_changerground_y(layout);
- w = mb_kbd_layout_get_changerground_w(layout);
- h = mb_kbd_layout_get_changerground_h(layout);
+ x = mb_kbd_layout_get_changerground_x(layout);
+ y = mb_kbd_layout_get_changerground_y(layout);
+ w = mb_kbd_layout_get_changerground_w(layout);
+ h = mb_kbd_layout_get_changerground_h(layout);
- XRenderComposite(mb_kbd_ui_x_display(ui),
- PictOpOver,
- mb_kbd_image_render_picture(image),
- None,
- XftDrawPicture(xft_backend->xft_backbuffer),
- 0, 0, 0, 0, x, y, w, h);
- }
+ XRenderComposite(mb_kbd_ui_x_display(ui),
+ PictOpOver,
+ mb_kbd_image_render_picture(image),
+ None,
+ XftDrawPicture(xft_backend->xft_backbuffer),
+ 0, 0, 0, 0, x, y, w, h);
+
+ mb_kbd_image_destroy(image);
+ fprintf(stderr, "print changer background\n");
+ }
}
}
Modified: trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-ui.c
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-ui.c 2007-03-06 07:32:58 UTC (rev 1253)
+++ trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard-ui.c 2007-03-06 09:13:13 UTC (rev 1254)
@@ -340,17 +340,7 @@
max_h = mb_kbd_image_height (img);
}
}
- if (mb_kbd_key_get_normal_image(key))
- {
- MBKeyboardImage *img = mb_kbd_key_get_normal_image(key);
- if (mb_kbd_image_width (img) > max_w)
- max_w = mb_kbd_image_width (img);
-
- if (mb_kbd_image_height (img) > max_h)
- max_h = mb_kbd_image_height (img);
- }
-
*width = max_w;
*height = max_h;
}
@@ -530,23 +520,6 @@
}
*width = max_row_width;
-
- if (mb_kbd_layout_get_background(layout) != NULL)
- {
- MBKeyboardImage *img;
- int img_wid;
- int img_hei;
-
- img = mb_kbd_layout_get_background(layout);
- img_wid = mb_kbd_image_width(img);
- img_hei = mb_kbd_image_height(img);
-
- if (img_wid > *width)
- *width = img_wid;
-
- if (img_hei > *height)
- *height = img_hei;
- }
}
void
Modified: trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard.h
===================================================================
--- trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard.h 2007-03-06 07:32:58 UTC (rev 1253)
+++ trunk/src/target/OM-2007/applications/openmoko-keyboard/src/matchbox-keyboard.h 2007-03-06 09:13:13 UTC (rev 1254)
@@ -357,9 +357,9 @@
void
mb_kbd_layout_set_background(MBKeyboardLayout *layout,
- MBKeyboardImage *background);
+ const char *background);
-MBKeyboardImage *
+const char *
mb_kbd_layout_get_background(MBKeyboardLayout *layout);
void
@@ -399,9 +399,9 @@
void
mb_kbd_layout_set_changerground(MBKeyboardLayout *layout,
- MBKeyboardImage *changerground);
+ const char *changerground);
-MBKeyboardImage *
+const char *
mb_kbd_layout_get_changerground(MBKeyboardLayout *layout);
void
@@ -476,15 +476,17 @@
mb_kbd_key_new(MBKeyboard *kbd);
void
-mb_kbd_key_set_normal_image(MBKeyboardKey *key, MBKeyboardImage *image);
+mb_kbd_key_set_normal_image(MBKeyboardKey *key,
+ const char *image);
-MBKeyboardImage *
+const char *
mb_kbd_key_get_normal_image(MBKeyboardKey *key);
void
-mb_kbd_key_set_push_image(MBKeyboardKey *key, MBKeyboardImage *image);
+mb_kbd_key_set_push_image(MBKeyboardKey *key,
+ const char *image);
-MBKeyboardImage *
+const char *
mb_kbd_key_get_push_image(MBKeyboardKey *key);
void
More information about the commitlog
mailing list