Make demos a bit more interesting.
authorbernie <bernie@38d2e660-2303-0410-9eaa-f027e97ec537>
Sat, 27 May 2006 17:16:38 +0000 (17:16 +0000)
committerbernie <bernie@38d2e660-2303-0410-9eaa-f027e97ec537>
Sat, 27 May 2006 17:16:38 +0000 (17:16 +0000)
git-svn-id: https://src.develer.com/svnoss/bertos/trunk@635 38d2e660-2303-0410-9eaa-f027e97ec537

app/demo/demo.c
app/demo/demo.mk

index f94496b6f93c8687f82583a80c1d67dde5c77243..a62251ba41a2ef25189e3592f1067becf3bac8e9 100755 (executable)
@@ -14,6 +14,9 @@
 
 /*#*
  *#* $Log$
+ *#* Revision 1.6  2006/05/27 17:16:38  bernie
+ *#* Make demos a bit more interesting.
+ *#*
  *#* Revision 1.5  2006/05/15 07:25:29  bernie
  *#* Move menu to gui/.
  *#*
 #include <icons/logo.h>
 #include <cfg/macros.h>
 
-
-/* SETTINGS SUBMENU ***************************/
-
-static struct MenuItem settings_items[] =
-{
-       { (const_iptr_t)"System",     0, (MenuHook)0,  (iptr_t)0 },
-       { (const_iptr_t)"Mouse",      0, (MenuHook)0,  (iptr_t)0 },
-       { (const_iptr_t)"Keyboard",   0, (MenuHook)0,  (iptr_t)0 },
-       { (const_iptr_t)"Networking", 0, (MenuHook)0,  (iptr_t)0 },
-       { (const_iptr_t)"Date & Time",0, (MenuHook)0,  (iptr_t)0 },
-       { (const_iptr_t)"Power Saving", MIF_TOGGLE, (MenuHook)0, (iptr_t)0 },
-       { (const_iptr_t)0, 0, NULL, (iptr_t)0 }
-};
-static struct Menu settings_menu = { settings_items, "Settings Menu", MF_STICKY | MF_SAVESEL, &lcd_bitmap, 0 };
-
-/*** DISPLAY MENU ****************************/
-
-static struct MenuItem display_items[] =
-{
-       { (const_iptr_t)"Background", 0, (MenuHook)0, (iptr_t)0 },
-       { (const_iptr_t)"Colors",     0, (MenuHook)0, (iptr_t)0 },
-       { (const_iptr_t)"Style",      0, (MenuHook)0, (iptr_t)0 },
-       { (const_iptr_t)"Icon Theme", 0, (MenuHook)0, (iptr_t)0 },
-       { (const_iptr_t)0, 0, NULL, (iptr_t)0 }
-};
-static struct Menu display_menu = { display_items, "Display Menu", MF_SAVESEL, &lcd_bitmap, 0 };
-
-
-/*** SETUP MENU ******************************/
-
-static struct MenuItem setup_items[] =
-{
-       { (const_iptr_t)"Setup 0", 0, (MenuHook)NULL, (iptr_t)0    },
-       { (const_iptr_t)"Setup 1", 0, (MenuHook)NULL, (iptr_t)0    },
-       { (const_iptr_t)"Setup 2", 0, (MenuHook)NULL, (iptr_t)0    },
-       { (const_iptr_t)"Setup 3", 0, (MenuHook)NULL, (iptr_t)0    },
-       { (const_iptr_t)0, 0, NULL, NULL }
-};
-static struct Menu setup_menu = { setup_items, "Setup Menu", MF_STICKY | MF_SAVESEL, &lcd_bitmap, 0 };
-
-
-/*** MAIN MENU *******************************/
-
-static struct MenuItem main_items[] =
-{
-       { (const_iptr_t)"Settings", 0, (MenuHook)menu_handle, (iptr_t)&settings_menu },
-       { (const_iptr_t)"Display", 0, (MenuHook)menu_handle, (iptr_t)&display_menu  },
-       { (const_iptr_t)"Setup",   0, (MenuHook)menu_handle, (iptr_t)&setup_menu    },
-       { (const_iptr_t)0, 0, NULL, (iptr_t)0 }
-};
-static struct Menu main_menu = { main_items, "Main Menu", MF_STICKY, &lcd_bitmap, 0 };
-
 static void magic(struct Bitmap *bitmap, coord_t x, coord_t y)
 {
        static const coord_t coords[] = { 120, 34, 90, 90, 30, 90, 0, 34, 60, 0, 90, 90, 0, 34, 120, 34, 30, 90, 60, 0 };
@@ -115,35 +66,38 @@ Window root_win;
 void schedule(void)
 {
 //     win_compose(&root_win);
-       lcd_blitBitmap(root_win.bitmap);
+       lcd_blitBitmap(&lcd_bitmap);
        emul_idle();
        usleep(10000);
 }
 
-void hello_world(void)
+void hello_world(Bitmap *bm)
 {
-       gfx_bitmapClear(&lcd_bitmap);
-       extern const Font font_10x20;
-       extern const Font font_helvB10;
-       extern const Font font_courB08;
-       extern const Font font_courB14;
-       extern const Font font_mono17;
-       extern const Font font_luBS14;
+    const Font *old_font = bm->font;
+
+       gfx_bitmapClear(bm);
+
+       /* Set big font */
        extern const Font font_ncenB18;
-       gfx_setFont(&lcd_bitmap, &font_luBS14);
+       gfx_setFont(bm, &font_ncenB18);
+
+       text_xprintf(bm, 1, 0, STYLEF_BOLD | TEXT_FILL | TEXT_CENTER,
+                       "Hello, world!");
 
-       text_xprintf(&lcd_bitmap, 1, 0, STYLEF_BOLD | TEXT_FILL | TEXT_CENTER, "Hello, world!");
        for (int i = 0; i < 1000; ++i)
        {
-               lcd_blitBitmap(&lcd_bitmap);
+               lcd_blitBitmap(bm);
                emul_idle();
        }
+
+       /* Restore old font */
+    gfx_setFont(bm, old_font);
 }
 
 /**
  * Show the splash screen
  */
-void bouncing_logo(void)
+void bouncing_logo(Bitmap *bm)
 {
        const long SPEED_SCALE = 1000;
        const long GRAVITY_ACCEL = 10;
@@ -168,29 +122,19 @@ void bouncing_logo(void)
                }
 
                /* Update graphics */
-               gfx_bitmapClear(&lcd_bitmap);
-               gfx_blitImage(&lcd_bitmap,
-                       (lcd_bitmap.width - project_grl_logo.width) / 2,
+               gfx_bitmapClear(bm);
+               gfx_blitImage(bm,
+                       (bm->width - project_grl_logo.width) / 2,
                        h / SPEED_SCALE,
                        &project_grl_logo);
-               lcd_blitBitmap(&lcd_bitmap);
+               lcd_blitBitmap(bm);
 
                timer_delay(10);
        }
 }
 
-int main(int argc, char *argv[])
+void win_demo(Bitmap *bm)
 {
-       emul_init(&argc, argv);
-       timer_init();
-       buz_init();
-       kbd_init();
-       lcd_init();
-       proc_init();
-
-       hello_world();
-       bouncing_logo();
-
        const coord_t small_left = 45, small_top = 30, small_width = 50, small_height = 30;
        const coord_t large_left = -10, large_top = 10, large_width = 85, large_height = 41;
 
@@ -199,7 +143,7 @@ int main(int argc, char *argv[])
        uint8_t small_raster[RASTER_SIZE(small_width, small_height)];
        uint8_t large_raster[RASTER_SIZE(large_width, large_height)];
 
-       win_create(&root_win,  &lcd_bitmap);
+       win_create(&root_win, bm);
 
        gfx_bitmapInit(&large_bm, large_raster, large_width, large_height);
        win_create(&large_win, &large_bm);
@@ -218,12 +162,13 @@ int main(int argc, char *argv[])
        coord_t ydir_small = +1;
        int raise_counter = 0;
        int i;
-       Bitmap *bm;
 
        for(;;)
        {
+               if (kbd_peek())
+                       break;
+
                /* Background animation */
-               bm = &lcd_bitmap;
                gfx_bitmapClear(bm);
 /*             gfx_setClipRect(bm, 0, 0, bm->width, bm->height);
                gfx_rectDraw(bm, 10, 10, bm->width-10, bm->height-10);
@@ -236,8 +181,6 @@ int main(int argc, char *argv[])
                if (y >= bm->height) ydir = -1;
                if (y <= -50)        ydir = +1;
 
-               menu_handle(&main_menu);
-
                /* Large window animation */
                bm = large_win.bitmap;
                gfx_bitmapClear(bm);
@@ -272,6 +215,72 @@ int main(int argc, char *argv[])
                emul_idle();
                usleep(10000);
        }
+}
+
+
+/* SETTINGS SUBMENU ***************************/
+
+static struct MenuItem settings_items[] =
+{
+       { (const_iptr_t)"System",     0, (MenuHook)0,  (iptr_t)0 },
+       { (const_iptr_t)"Mouse",      0, (MenuHook)0,  (iptr_t)0 },
+       { (const_iptr_t)"Keyboard",   0, (MenuHook)0,  (iptr_t)0 },
+       { (const_iptr_t)"Networking", 0, (MenuHook)0,  (iptr_t)0 },
+       { (const_iptr_t)"Date & Time",0, (MenuHook)0,  (iptr_t)0 },
+       { (const_iptr_t)"Power Saving", MIF_TOGGLE, (MenuHook)0, (iptr_t)0 },
+       { (const_iptr_t)0, 0, NULL, (iptr_t)0 }
+};
+static struct Menu settings_menu = { settings_items, "Settings Menu", MF_STICKY | MF_SAVESEL, &lcd_bitmap, 0 };
+
+/*** DISPLAY MENU ****************************/
+
+static struct MenuItem display_items[] =
+{
+       { (const_iptr_t)"Background", 0, (MenuHook)0, (iptr_t)0 },
+       { (const_iptr_t)"Colors",     0, (MenuHook)0, (iptr_t)0 },
+       { (const_iptr_t)"Style",      0, (MenuHook)0, (iptr_t)0 },
+       { (const_iptr_t)"Icon Theme", 0, (MenuHook)0, (iptr_t)0 },
+       { (const_iptr_t)0, 0, NULL, (iptr_t)0 }
+};
+static struct Menu display_menu = { display_items, "Display Menu", MF_SAVESEL, &lcd_bitmap, 0 };
+
+
+/*** SETUP MENU ******************************/
+
+static struct MenuItem setup_items[] =
+{
+       { (const_iptr_t)"S\xC8tup 0", 0, (MenuHook)NULL, (iptr_t)0    },
+       { (const_iptr_t)"Set\xDAp 1", 0, (MenuHook)NULL, (iptr_t)0    },
+       { (const_iptr_t)0, 0, NULL, NULL }
+};
+static struct Menu setup_menu = { setup_items, "Setup Menu", MF_STICKY | MF_SAVESEL, &lcd_bitmap, 0 };
+
+
+/*** MAIN MENU *******************************/
+
+static struct MenuItem main_items[] =
+{
+       { (const_iptr_t)"Flying Win", 0, (MenuHook)win_demo, (iptr_t)&lcd_bitmap },
+       { (const_iptr_t)"Settings", 0, (MenuHook)menu_handle, (iptr_t)&settings_menu },
+       { (const_iptr_t)"Display", 0, (MenuHook)menu_handle, (iptr_t)&display_menu  },
+       { (const_iptr_t)"Setup",   0, (MenuHook)menu_handle, (iptr_t)&setup_menu    },
+       { (const_iptr_t)0, 0, NULL, (iptr_t)0 }
+};
+static struct Menu main_menu = { main_items, "Main Menu", MF_STICKY, &lcd_bitmap, 0 };
+
+
+int main(int argc, char *argv[])
+{
+       emul_init(&argc, argv);
+       timer_init();
+       buz_init();
+       kbd_init();
+       lcd_init();
+       proc_init();
+
+       hello_world(&lcd_bitmap);
+       bouncing_logo(&lcd_bitmap);
+       menu_handle(&main_menu);
 
        emul_cleanup();
        return 0;
index f82e5b908eb6548c218e5df64dc236d90550ce96..18a881dab73e894e1fb48b389a8ca714ab95e410 100755 (executable)
@@ -8,6 +8,9 @@
 # Author: Bernardo Innocenti <bernie@develer.com>
 #
 # $Log$
+# Revision 1.4  2006/05/27 17:16:38  bernie
+# Make demos a bit more interesting.
+#
 # Revision 1.3  2006/05/15 07:21:24  bernie
 # Use pkg-config.
 #
@@ -43,6 +46,7 @@ demo_CSRC = \
        gfx/win.c \
        gfx/text.c \
        gfx/text_format.c \
+       gui/menu.c \
        fonts/helvB10.c \
        fonts/luBS14.c \
        fonts/ncenB18.c \
@@ -56,7 +60,6 @@ demo_CSRC = \
        mware/formatwr.c \
        mware/hex.c \
        mware/event.c \
-       mware/menu.c \
        mware/observer.c \
        mware/resource.c \
        mware/sprintf.c \
@@ -74,8 +77,8 @@ $(OBJDIR)/demo/drv/lcd_gfx_qt.o: drv/lcd_gfx_qt_moc.cpp
 
 EMUL_CFLAGS = $(shell pkg-config QtGui --cflags) -DQT_CLEAN_NAMESPACE -DQT3_SUPPORT
 EMUL_LDFLAGS = $(shell pkg-config QtGui --libs)
-demo_CFLAGS = -Os -D_QT=4 -D'ARCH=ARCH_EMUL' -Ihw $(EMUL_CFLAGS)
-demo_CXXFLAGS = -Os -D_QT=4 -D'ARCH=ARCH_EMUL' -Ihw $(EMUL_CFLAGS)
+demo_CFLAGS = -Os -D_QT=4 -D'ARCH=ARCH_EMUL' -Iapp/demo -Ihw $(EMUL_CFLAGS)
+demo_CXXFLAGS = -Os -D_QT=4 -D'ARCH=ARCH_EMUL' -Iapp/demo -Ihw $(EMUL_CFLAGS)
 demo_LDFLAGS = $(EMUL_LDFLAGS)
 
 # Debug stuff