annotate examples/menu/main.c @ 308:9e1d72eca57b

Seperate mb_animated_menu from the demo program
author wycc
date Sun, 22 Feb 2009 11:52:56 +0800
parents b6891068109f
children 6e164a9dd46c
rev   line source
296
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
1 /*! \file
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
2 *
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
3 * This is the demo program for the animated menu. We will use to test the MBAF API.
297
e885dc875f30 Implement animation menu
wycc
parents: 296
diff changeset
4 * We need to have group item1-item9 in the SVG file. Initially, we will show
e885dc875f30 Implement animation menu
wycc
parents: 296
diff changeset
5 * item1-item8 only. When a up/down key is pressed, we will draw the next item in item9 and
e885dc875f30 Implement animation menu
wycc
parents: 296
diff changeset
6 * add two words to move item1-item9 smoothly. The first word move items to the 3/4 position
e885dc875f30 Implement animation menu
wycc
parents: 296
diff changeset
7 * fastly. The second will move it from 3/4 to the final position slowly to make retard effect.
e885dc875f30 Implement animation menu
wycc
parents: 296
diff changeset
8 *
e885dc875f30 Implement animation menu
wycc
parents: 296
diff changeset
9 * If we press another key before the second words finish, we will delete the word and replace
e885dc875f30 Implement animation menu
wycc
parents: 296
diff changeset
10 * it with a word to move it fastly to the final position and then we will repeat the procedure
e885dc875f30 Implement animation menu
wycc
parents: 296
diff changeset
11 * to add another two words to move it to the next position.
296
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
12 */
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
13 #include <stdio.h>
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
14 #include <mb.h>
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
15 #include <string.h>
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
16 #include "menu.h"
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
17 #include "mbapp.h"
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
18
302
8b45e7b374b8 Rewrite the menu as a widget style
wycc
parents: 299
diff changeset
19
306
c981e561ac37 * Keep the font name as the original case.
wycc
parents: 305
diff changeset
20 typedef struct _mb_animated_menu {
302
8b45e7b374b8 Rewrite the menu as a widget style
wycc
parents: 299
diff changeset
21 char **titles;
8b45e7b374b8 Rewrite the menu as a widget style
wycc
parents: 299
diff changeset
22 int *menus_y;
8b45e7b374b8 Rewrite the menu as a widget style
wycc
parents: 299
diff changeset
23 int *items;
8b45e7b374b8 Rewrite the menu as a widget style
wycc
parents: 299
diff changeset
24 int top;
8b45e7b374b8 Rewrite the menu as a widget style
wycc
parents: 299
diff changeset
25 int cur;
8b45e7b374b8 Rewrite the menu as a widget style
wycc
parents: 299
diff changeset
26 int max;
8b45e7b374b8 Rewrite the menu as a widget style
wycc
parents: 299
diff changeset
27 int ready;
306
c981e561ac37 * Keep the font name as the original case.
wycc
parents: 305
diff changeset
28 int speed;
302
8b45e7b374b8 Rewrite the menu as a widget style
wycc
parents: 299
diff changeset
29 MBApp *app;
8b45e7b374b8 Rewrite the menu as a widget style
wycc
parents: 299
diff changeset
30 mb_sprite_t *sprite;
8b45e7b374b8 Rewrite the menu as a widget style
wycc
parents: 299
diff changeset
31 mb_obj_t **objects;
8b45e7b374b8 Rewrite the menu as a widget style
wycc
parents: 299
diff changeset
32 mb_obj_t *lightbar;
306
c981e561ac37 * Keep the font name as the original case.
wycc
parents: 305
diff changeset
33 void (*callback)(struct _mb_animated_menu *m, int sel);
302
8b45e7b374b8 Rewrite the menu as a widget style
wycc
parents: 299
diff changeset
34 } mb_animated_menu_t;
8b45e7b374b8 Rewrite the menu as a widget style
wycc
parents: 299
diff changeset
35
296
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
36 char *menus[] = {
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
37 "Item 1",
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
38 "Item 2",
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
39 "Item 3",
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
40 "Item 4",
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
41 "Item 5",
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
42 "Item 6",
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
43 "Item 7",
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
44 "Item 8",
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
45 "Item 9",
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
46 "Item 10",
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
47 "Item 11",
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
48 "Item 12",
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
49 "Item 13",
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
50 "Item 14",
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
51 "Item 15",
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
52 "Item 16",
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
53 "Item 17",
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
54 "Item 18",
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
55 };
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
56
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
57 typedef struct {
302
8b45e7b374b8 Rewrite the menu as a widget style
wycc
parents: 299
diff changeset
58 mb_animated_menu_t *m;
296
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
59 }MyAppData;
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
60
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
61 MBApp *myApp;
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
62
302
8b45e7b374b8 Rewrite the menu as a widget style
wycc
parents: 299
diff changeset
63
306
c981e561ac37 * Keep the font name as the original case.
wycc
parents: 305
diff changeset
64
c981e561ac37 * Keep the font name as the original case.
wycc
parents: 305
diff changeset
65 void myselect(mb_animated_menu_t *m, int select)
c981e561ac37 * Keep the font name as the original case.
wycc
parents: 305
diff changeset
66 {
c981e561ac37 * Keep the font name as the original case.
wycc
parents: 305
diff changeset
67 printf("menu %d is selected\n", select);
c981e561ac37 * Keep the font name as the original case.
wycc
parents: 305
diff changeset
68 }
c981e561ac37 * Keep the font name as the original case.
wycc
parents: 305
diff changeset
69
c981e561ac37 * Keep the font name as the original case.
wycc
parents: 305
diff changeset
70
296
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
71 MyApp_InitContent()
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
72 {
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
73 MyAppData *data = MBAPP_DATA(myApp,MyAppData);
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
74 subject_t *key = MBAPP_keySubject(myApp);
297
e885dc875f30 Implement animation menu
wycc
parents: 296
diff changeset
75 char name[255];
e885dc875f30 Implement animation menu
wycc
parents: 296
diff changeset
76 coord_t *l;
e885dc875f30 Implement animation menu
wycc
parents: 296
diff changeset
77 int i;
e885dc875f30 Implement animation menu
wycc
parents: 296
diff changeset
78 mb_sprite_t *sprite=myApp->rootsprite;
296
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
79
302
8b45e7b374b8 Rewrite the menu as a widget style
wycc
parents: 299
diff changeset
80 data->m = mb_animated_menu_new(myApp,myApp->rootsprite,"item",menus);
306
c981e561ac37 * Keep the font name as the original case.
wycc
parents: 305
diff changeset
81 mb_animated_menu_set_callback(data->m, myselect);
296
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
82 }
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
83
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
84 int main(int argc, char * const argv[]) {
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
85 subject_t *subject;
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
86 mb_obj_t *button;
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
87 MyAppData data;
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
88 mb_timeval_t tmo,interval;
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
89
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
90 if (argc > 1)
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
91 myApp = MBApp_Init(argv[1]);
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
92 else
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
93 myApp = MBApp_Init("list");
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
94 MBApp_setData(myApp,&data);
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
95 MyApp_InitContent();
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
96
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
97 MBApp_loop(myApp);
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
98
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
99 return 0;
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
100 }
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
101
2e97e8082d83 * Fix the symbol definition code which does not assume the id is the same as the mbname.
wycc
parents:
diff changeset
102 /* vim: set ts=4 */