diff --git a/ChangeLog b/ChangeLog index e9ad5fd8c..c4164e80c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,34 @@ +2005-05-14 mallum,,, + + * clutter/cltr-animator.c: + Add initial outline + * clutter/cltr-button.c: (cltr_button_new_with_pixbuf), + (cltr_button_handle_xkeyevent), (cltr_button_handle_xevent), + (cltr_button_paint): + various tweaks/experimentation + * clutter/cltr-core.c: (cltr_init), (cltr_display_height): + * clutter/cltr-glu.c: (cltr_glu_set_color): + * clutter/cltr-glu.h: + Add unfilled rect call. + * clutter/cltr-label.c: (cltr_label_new), (cltr_label_paint): + * clutter/cltr-list.c: (distfunc), (cltr_list_cell_new), + (cltr_list_show), (cltr_list_animate), (cltr_list_paint): + update list a little. + * clutter/cltr-overlay.c: (cltr_overlay_handle_xevent), + (cltr_overlay_paint): + * clutter/cltr-private.h: + * clutter/cltr-texture.c: (cltr_texture_realize): + * clutter/cltr-video.c: (cltr_video_paint): + * clutter/cltr.h: + * clutter/fonts.c: (draw_layout_on_pixbuf): + Fix font alpha blending + * examples/Makefile.am: + * examples/player.c: (main): + * examples/scratch.c: (main): + tweaks. + * examples/select.c: + new example + 2005-05-11 mallum,,, * clutter/cltr-video.c: (got_buffering), (cltr_video_new), diff --git a/clutter/cltr-animator.c b/clutter/cltr-animator.c new file mode 100644 index 000000000..0bfc8fbe3 --- /dev/null +++ b/clutter/cltr-animator.c @@ -0,0 +1,33 @@ +#include "cltr.h" +#include "cltr-private.h" + +typedef void (*CltrAnimatorFinishFunc) (CltrAnimator *anim, void *userdata) ; + +struct CltrAnimator +{ + CltrWidget *widget; + gint fps; + int steps; +}; + + +CltrAnimator* +cltr_animator_new(CltrWidget *widget) +{ + +} + +void +cltr_animator_set_args(CltrAnimator *anim) +{ + +} + +void +cltr_animator_run(CltrAnimator *anim, + CltrAnimatorFinishFunc *finish_callback + gpointer *finish_data) +{ + +} + diff --git a/clutter/cltr-button.c b/clutter/cltr-button.c index d23019541..cb26477d5 100644 --- a/clutter/cltr-button.c +++ b/clutter/cltr-button.c @@ -95,6 +95,7 @@ cltr_button_new_with_pixbuf(Pixbuf *pixb) button = CLTR_BUTTON(cltr_button_new(-1, -1)); + return CLTR_WIDGET(button); } static void @@ -191,7 +192,8 @@ cltr_button_handle_xkeyevent(CltrButton *button, XKeyEvent *xkeyev) break; default: /* ??? */ - } + break; + } if (button->state != old_state) { @@ -203,7 +205,7 @@ cltr_button_handle_xkeyevent(CltrButton *button, XKeyEvent *xkeyev) { /* Evil - need to centralise focus management */ ClutterMainContext *ctx = CLTR_CONTEXT(); - cltr_window_focus_widget(ctx->window, next_focus); + cltr_window_focus_widget(CLTR_WIDGET(ctx->window), next_focus); } } @@ -221,6 +223,8 @@ cltr_button_handle_xevent (CltrWidget *widget, XEvent *xev) cltr_button_handle_xkeyevent(button, &xev->xkey); break; } + + return TRUE; } @@ -251,7 +255,7 @@ cltr_button_paint(CltrWidget *widget) widget->y, widget->x + widget->width, widget->y + widget->height, - widget->width/30, + 2, 5, NULL); glDisable(GL_BLEND); diff --git a/clutter/cltr-core.c b/clutter/cltr-core.c index 7938e16d6..d4294cbbf 100644 --- a/clutter/cltr-core.c +++ b/clutter/cltr-core.c @@ -25,9 +25,6 @@ cltr_init(int *argc, char ***argv) GLX_RED_SIZE, 1, GLX_GREEN_SIZE, 1, GLX_BLUE_SIZE, 1, - - - */ 0 }; @@ -38,7 +35,8 @@ cltr_init(int *argc, char ***argv) if (!g_thread_supported ()) g_thread_init (NULL); - // XInitThreads (); + + /* XInitThreads (); */ if ((CltrCntx.xdpy = XOpenDisplay(getenv("DISPLAY"))) == NULL) { @@ -62,6 +60,10 @@ cltr_init(int *argc, char ***argv) CltrCntx.gl_context = glXCreateContext(CltrCntx.xdpy, vinfo, 0, True); + pixel_set_vals(&CltrCntx.colors[CLTR_COL_BG], 0xff, 0xff, 0xff, 0xff ); + pixel_set_vals(&CltrCntx.colors[CLTR_COL_BDR],0xff, 0xff, 0xff, 0xff ); + pixel_set_vals(&CltrCntx.colors[CLTR_COL_FG], 0xff, 0xff, 0xff, 0xff ); + cltr_events_init(); return 1; @@ -82,3 +84,11 @@ cltr_display_height(void) return DisplayHeight(ctx->xdpy, ctx->xscreen); } + +PixbufPixel* +cltr_core_get_color(CltrNamedColor col) +{ + ClutterMainContext *ctx = CLTR_CONTEXT(); + + return &ctx->colors[col]; +} diff --git a/clutter/cltr-glu.c b/clutter/cltr-glu.c index 3b1384b16..e658570e8 100644 --- a/clutter/cltr-glu.c +++ b/clutter/cltr-glu.c @@ -11,75 +11,98 @@ cltr_glu_set_color(PixbufPixel *p) glColor4ub(p->r, p->b, p->g, p->a); } -#if 0 -void -DrawRoundedSquare(float LineWidth, - float x, - float y, - float radius, - float width, - float height, - float r, - float b, - float g) -{ - double ang=0; - - glColor3f(r, b, g); - glLineWidth(LineWidth); - - glBegin(GL_LINES); - glVertex2f(x, y + radius); - glVertex2f(x, y + height - radius); /* Left Line */ - - glVertex2f(x + radius, y); - glVertex2f(x + width - radius, y); /* Top Line */ - - glVertex2f(x + width, y + radius); - glVertex2f(x + width, y + height - radius); /* Right Line */ - - glVertex2f(x + radius, y + height); - glVertex2f(x + width - radius, y + height);//Bottom Line - glEnd(); - - float cX= x+radius, cY = y+radius; - glBegin(GL_LINE_STRIP); - for(ang = PI; ang <= (1.5*PI); ang = ang + 0.05) - { - glVertex2d(radius* cos(ang) + cX, radius * sin(ang) + cY); //Top Left - } - cX = x+width-radius; - glEnd(); - glBegin(GL_LINE_STRIP); - for(ang = (1.5*PI); ang <= (2 * PI); ang = ang + 0.05) - { - glVertex2d(radius* cos(ang) + cX, radius * sin(ang) + cY); //Top Right - } - glEnd(); - glBegin(GL_LINE_STRIP); - cY = y+height-radius; - for(ang = 0; ang <= (0.5*PI); ang = ang + 0.05) - { - glVertex2d(radius* cos(ang) + cX, radius * sin(ang) + cY); //Bottom Right - } - glEnd(); - glBegin(GL_LINE_STRIP); - cX = x+radius; - for(ang = (0.5*PI); ang <= PI; ang = ang + 0.05) - { - glVertex2d(radius* cos(ang) + cX, radius * sin(ang) + cY);//Bottom Left - } - glEnd(); -} -#endif - -void +void cltr_glu_rounded_rect(int x1, int y1, int x2, int y2, + int line_width, int radius, PixbufPixel *col) +{ + double ang = 0; + int width = x2-x1, height = y2-y1; + float cX = x1+radius, cY = y1+radius; + + if (col) + cltr_glu_set_color(col); + + glLineWidth(line_width); + + glBegin(GL_LINES); + glVertex2f(x1, y1 + radius); + glVertex2f(x1, y1 + height - radius); /* Left Line */ + + glVertex2f(x1 + radius, y1); + glVertex2f(x1 + width - radius, y1); /* Top Line */ + + glVertex2f(x1 + width, y1 + radius); + glVertex2f(x1 + width, y1 + height - radius); /* Right Line */ + + glVertex2f(x1 + radius, y1 + height); + glVertex2f(x1 + width - radius, y1 + height); /* Bottom Line */ + glEnd(); + + /* corners */ + + glBegin(GL_LINE_STRIP); + + /* Top Left */ + for(ang = PI; ang <= (1.5*PI); ang = ang + 0.05) + { + glVertex2d(radius* cos(ang) + cX, radius * sin(ang) + cY); + } + + glEnd(); + + /* Top Right */ + + cX = x1 + width-radius; + + glBegin(GL_LINE_STRIP); + + for(ang = (1.5*PI); ang <= (2 * PI); ang = ang + 0.05) + { + glVertex2d(radius* cos(ang) + cX, radius * sin(ang) + cY); + } + + glEnd(); + + glBegin(GL_LINE_STRIP); + + cY = y1 + height-radius; + + /* Bottom Right */ + + for(ang = 0; ang <= (0.5*PI); ang = ang + 0.05) + { + glVertex2d(radius* cos(ang) + cX, radius * sin(ang) + cY); + } + + glEnd(); + + glBegin(GL_LINE_STRIP); + + cX = x1 + radius; + + /* Bottom Left */ + + for(ang = (0.5*PI); ang <= PI; ang = ang + 0.05) + { + glVertex2d(radius* cos(ang) + cX, radius * sin(ang) + cY); + + } + glEnd(); + +} + +void +cltr_glu_rounded_rect_filled(int x1, + int y1, + int x2, + int y2, + int radius, + PixbufPixel *col) { double i = 0; double gap = 0.05; diff --git a/clutter/cltr-glu.h b/clutter/cltr-glu.h index 6f0c01f11..3d5de1570 100644 --- a/clutter/cltr-glu.h +++ b/clutter/cltr-glu.h @@ -6,12 +6,21 @@ void cltr_glu_set_color(PixbufPixel *p); -void +void cltr_glu_rounded_rect(int x1, int y1, int x2, int y2, + int line_width, int radius, PixbufPixel *col); +void +cltr_glu_rounded_rect_filled(int x1, + int y1, + int x2, + int y2, + int radius, + PixbufPixel *col); + #endif diff --git a/clutter/cltr-label.c b/clutter/cltr-label.c index b9550c75e..764f2c6e6 100644 --- a/clutter/cltr-label.c +++ b/clutter/cltr-label.c @@ -36,11 +36,11 @@ cltr_label_new(const char *text, if (width && height) { - PixbufPixel bg = { 0xff, 0xff, 0xff, 0x00 }; + PixbufPixel bg = { 0x00, 0x00, 0x00, 0x00 }; label->text = strdup(text); label->pixb = pixbuf_new(width, height); - + pixbuf_fill_rect(label->pixb, 0, 0, -1, -1, &bg); font_draw(font, @@ -113,10 +113,11 @@ cltr_label_paint(CltrWidget *widget) glEnable(GL_TEXTURE_2D); - glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glEnable(GL_BLEND); - /* glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_BLEND); */ + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glColor4f(1.0, 1.0, 1.0, 1.0); cltr_texture_render_to_gl_quad(label->texture, cltr_widget_abs_x(widget), @@ -125,6 +126,7 @@ cltr_label_paint(CltrWidget *widget) cltr_widget_abs_y2(widget)); glDisable(GL_BLEND); + glDisable(GL_TEXTURE_2D); glPopMatrix(); diff --git a/clutter/cltr-list.c b/clutter/cltr-list.c index f17ca72c2..174868ccf 100644 --- a/clutter/cltr-list.c +++ b/clutter/cltr-list.c @@ -1,7 +1,7 @@ #include "cltr-list.h" #include "cltr-private.h" -#define ANIM_FPS 200 +#define ANIM_FPS 50 #define FPS_TO_TIMEOUT(t) (1000/(t)) typedef struct CltrListCell @@ -39,7 +39,7 @@ distfunc(CltrList *list, int d) int maxdist = list->widget.height; d = (maxdist-ABS(d)) ; - return ( exp( (float)d/maxdist * 2.0 ) / exp(2.0) ); + return ( exp( (float)d/maxdist * 0.8 ) / exp(0.8) ) ; } CltrListCell* @@ -48,9 +48,9 @@ cltr_list_cell_new(CltrList *list) CltrListCell *cell = NULL; ClutterFont *font; gchar buf[24]; - PixbufPixel pixel = { 255, 20, 20, 255 }, font_pixel = { 255, 255, 255, 200 }; + PixbufPixel pixel = { 0xff, 0, 0, 0 }, font_pixel = { 255, 255, 255, 255}; - font = font_new ("Sans Bold 96"); + font = font_new ("Sans Bold 48"); cell = g_malloc0(sizeof(CltrListCell)); @@ -60,8 +60,6 @@ cltr_list_cell_new(CltrList *list) g_snprintf(&buf[0], 24, "%i %i %i", rand()%10, rand()%10, rand()%10); - - font_draw(font, cell->pixb, buf, 10, 10, &font_pixel); cell->texture = cltr_texture_new(cell->pixb); @@ -98,9 +96,9 @@ cltr_list_show(CltrWidget *widget) { CltrList *list = CLTR_LIST(widget); - int n_items = 50, i; + int n_items = 20, i; - list->active_cell_y = 100; + list->active_cell_y = (widget->height / 2) - (list->cell_height/2); for (i=0; irect.y < list->active_cell_y) { - cell_top->rect.y += 2; + cell_top->rect.y += 10; } else { @@ -196,7 +194,7 @@ cltr_list_animate(CltrList *list) if (next_active->rect.y > list->active_cell_y) { - cell_top->rect.y -= 2; + cell_top->rect.y -= 10; } else { @@ -228,12 +226,14 @@ cltr_list_timeout_cb(gpointer data) } } + static void cltr_list_paint(CltrWidget *widget) { GList *cell_item = NULL; CltrList *list = CLTR_LIST(widget); CltrListCell *cell = NULL; + PixbufPixel col = { 0xff, 0, 0, 0xff }; int last; @@ -249,28 +249,64 @@ cltr_list_paint(CltrWidget *widget) while (cell_item) { + float scale = 0.0; + cell = (CltrListCell *)cell_item->data; + col.r = 0xff; col.g = 0; col.b = 0; col.a = 0xff; + cell->rect.y = last; if (cell->rect.y + cell->rect.height >= 0) { - cell->rect.width = list->cell_width * distfunc(list, cell->rect.y - list->active_cell_y); - cell->rect.height = list->cell_height * distfunc(list, cell->rect.y - list->active_cell_y); + scale = distfunc(list, cell->rect.y - list->active_cell_y); + + cell->rect.width = list->cell_width * scale; + cell->rect.height = list->cell_height * scale; - /* cell->rect.x = (list->widget.width - cell->rect.width) / 6; */ - cell->rect.x = 0; + cell->rect.x = (list->widget.width - cell->rect.width) / 2; } last = cell->rect.y + cell->rect.height; if (last > 0 && cell->rect.y < list->widget.width) /* crappy clip */ { + glDisable(GL_TEXTURE_2D); + + if (cell_item == list->active_cell && list->state == CLTR_LIST_STATE_BROWSE) + col.b = 0xff; + else + col.b = 0x00; + + cltr_glu_rounded_rect_filled(cltr_rect_x1(cell->rect), + cltr_rect_y1(cell->rect) + (5.0 * scale), + cltr_rect_x2(cell->rect), + cltr_rect_y2(cell->rect) - (5.0 * scale), + 10, + &col); + + col.r = 0xff; col.g = 0xff; col.b = 0xff; col.a = 0xff; + + /* + cltr_glu_rounded_rect(cltr_rect_x1(cell->rect) + 10, + cltr_rect_y1(cell->rect) + 12, + cltr_rect_x2(cell->rect) - 10, + cltr_rect_y2(cell->rect) - 12, + 10, + &col); + */ + + glEnable(GL_TEXTURE_2D); + + glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + glColor4f(1.0, 1.0, 1.0, 1.0); + cltr_texture_render_to_gl_quad(cell->texture, - cltr_rect_x1(cell->rect), - cltr_rect_y1(cell->rect), - cltr_rect_x2(cell->rect), - cltr_rect_y2(cell->rect)); + cltr_rect_x1(cell->rect) + 100, + cltr_rect_y1(cell->rect) + 10, + cltr_rect_x2(cell->rect) - 100, + cltr_rect_y2(cell->rect) - 10); } cell_item = g_list_next(cell_item); diff --git a/clutter/cltr-overlay.c b/clutter/cltr-overlay.c index 5865900bf..c8d65207a 100644 --- a/clutter/cltr-overlay.c +++ b/clutter/cltr-overlay.c @@ -44,6 +44,7 @@ static gboolean cltr_overlay_handle_xevent (CltrWidget *widget, XEvent *xev) { + return FALSE; } static void @@ -53,12 +54,12 @@ cltr_overlay_paint(CltrWidget *widget) glColor4f(0.5, 0.5, 0.5, 1.0); - cltr_glu_rounded_rect(widget->x, - widget->y, - widget->x + widget->width, - widget->y + widget->height, - widget->width/30, - NULL); + cltr_glu_rounded_rect_filled(widget->x, + widget->y, + widget->x + widget->width, + widget->y + widget->height, + widget->width/30, + NULL); glDisable(GL_BLEND); diff --git a/clutter/cltr-private.h b/clutter/cltr-private.h index 0fb88948b..e6164d820 100644 --- a/clutter/cltr-private.h +++ b/clutter/cltr-private.h @@ -75,6 +75,8 @@ struct ClutterMainContext CltrWidget *window; GAsyncQueue *internal_event_q; + + PixbufPixel colors[CLTR_N_COLS]; }; ClutterMainContext CltrCntx; diff --git a/clutter/cltr-texture.c b/clutter/cltr-texture.c index c918b0377..f07d2ce11 100644 --- a/clutter/cltr-texture.c +++ b/clutter/cltr-texture.c @@ -292,7 +292,7 @@ cltr_texture_realize(CltrTexture *texture) glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); glTexImage2D(GL_TEXTURE_2D, 0, /*GL_COMPRESSED_RGBA_ARB*/ GL_RGBA, texture->width, diff --git a/clutter/cltr-video.c b/clutter/cltr-video.c index 766af5fe1..b0c75ebcc 100644 --- a/clutter/cltr-video.c +++ b/clutter/cltr-video.c @@ -864,13 +864,15 @@ cltr_video_paint(CltrWidget *widget) } - glEnable(GL_BLEND); + // glEnable(GL_BLEND); + + // glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glColor4f(1.0, 1.0, 1.0, 1.0); glEnable(GL_TEXTURE_2D); - glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); + // glTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_DECAL); cltr_texture_lock(video->frame_texture); @@ -884,7 +886,9 @@ cltr_video_paint(CltrWidget *widget) glDisable(GL_TEXTURE_2D); - glColor4f(1.0, 1.0, 1.0, 0.5); + // glDisable(GL_BLEND); + + // glColor4f(1.0, 1.0, 1.0, 0.5); // glRecti(100, 100, 600, 600); } diff --git a/clutter/cltr.h b/clutter/cltr.h index 5ba2955ed..7367129a2 100644 --- a/clutter/cltr.h +++ b/clutter/cltr.h @@ -30,6 +30,15 @@ typedef enum CltrDirection } CltrDirection; +typedef enum CltrNamedColor +{ + CLTR_COL_BG = 0, + CLTR_COL_BDR, + CLTR_COL_FG, + CLTR_N_COLS +} +CltrNamedColor; + typedef struct CltrRect { int x, y, width, height; diff --git a/clutter/fonts.c b/clutter/fonts.c index f3b265fc6..dc767260b 100644 --- a/clutter/fonts.c +++ b/clutter/fonts.c @@ -117,6 +117,8 @@ draw_layout_on_pixbuf (PangoLayout *layout, for (i = start_x ; i < end_x; i++) { PixbufPixel pixel; + +#if 0 int tr1, tg1, tb1, tr2, tg2, tb2; int a = (*b * color->a + 0x80) >> 8; @@ -145,7 +147,12 @@ draw_layout_on_pixbuf (PangoLayout *layout, tb1 = (255 - a) * pixel.a + 0x80; tb2 = a * color->a + 0x80; pixel.a = ((tb1 + (tb1 >> 8)) >> 8) + ((tb2 + (tb2 >> 8)) >> 8); - +#endif + pixel.r = color->r; + pixel.g = color->g; + pixel.b = color->b; + pixel.a = (( *b * color->a ) >> 8 ); + pixbuf_set_pixel (pixb, i, j, &pixel); b++; } diff --git a/examples/Makefile.am b/examples/Makefile.am index 256fd1950..5aa71c0ee 100644 --- a/examples/Makefile.am +++ b/examples/Makefile.am @@ -1,4 +1,4 @@ -noinst_PROGRAMS = scratch photos player +noinst_PROGRAMS = scratch photos player select scratch_SOURCES = scratch.c scratch_CFLAGS = $(CLTR_CFLAGS) $(GST_CFLAGS) $(GCONF_CFLAGS) @@ -24,4 +24,12 @@ player_LDFLAGS = \ $(GCONF_LIBS) \ $(top_builddir)/clutter/libclutter.la +select_SOURCES = select.c +select_CFLAGS = $(CLTR_CFLAGS) $(GST_CFLAGS) $(GCONF_CFLAGS) +select_LDFLAGS = \ + $(CLTR_LIBS) \ + $(GST_LIBS) \ + $(GCONF_LIBS) \ + $(top_builddir)/clutter/libclutter.la + diff --git a/examples/player.c b/examples/player.c index 416fd60a4..6b8bc6178 100644 --- a/examples/player.c +++ b/examples/player.c @@ -53,9 +53,7 @@ main (int argc, char *argv[]) { CltrWidget *win, *video, *label; CltrFont *font; - PixbufPixel col = { 0xff, 0xff, 0xff, 0x66 }; - - pixel_set_vals(&col, 0x00, 0x00, 0x00, 0x99); + PixbufPixel col = { 0x66, 0x00, 0x00, 0x99 }; cltr_init (&argc, &argv); @@ -64,7 +62,7 @@ main (int argc, char *argv[]) exit (-1); } - font = font_new("Sans bold 96"); + font = font_new("Baubau 72"); win = cltr_window_new(800, 600); @@ -74,9 +72,9 @@ main (int argc, char *argv[]) cltr_widget_add_child(win, video, 0, 0); - label = cltr_label_new("hello world", font, &col); + label = cltr_label_new("Clutter", font, &col); - cltr_widget_add_child(win, label, 100, 300); + cltr_widget_add_child(win, label, 10, 400); cltr_window_on_xevent(CLTR_WINDOW(win), handle_xevent, video); diff --git a/examples/scratch.c b/examples/scratch.c index 49606ba85..6e564ef92 100644 --- a/examples/scratch.c +++ b/examples/scratch.c @@ -84,11 +84,8 @@ main(int argc, char **argv) cltr_widget_add_child(win, test2, 400, 300); */ - list = cltr_list_new(640,480,640, 160); - cltr_widget_add_child(win, list, 0, 0); - - cltr_window_focus_widget(CLTR_WINDOW(win), list); + cltr_window_focus_widget(CLTR_WINDOW(win), test); cltr_widget_show_all(win); diff --git a/examples/select.c b/examples/select.c new file mode 100644 index 000000000..1cf763679 --- /dev/null +++ b/examples/select.c @@ -0,0 +1,65 @@ +#include + +int +usage(char *progname) +{ + fprintf(stderr, "Usage ... check source for now\n"); + exit(-1); +} + +int +main(int argc, char **argv) +{ + int i; + CltrWidget *win = NULL, *list = NULL; + CltrFont *font = NULL; + PixbufPixel col = { 0xff, 0, 0, 0xff }; + + gchar *img_path = NULL; + gboolean want_fullscreen = FALSE; + gint cols = 3; + + cltr_init(&argc, &argv); + + for (i = 1; i < argc; i++) + { + if (!strcmp ("--image-path", argv[i]) || !strcmp ("-i", argv[i])) + { + if (++i>=argc) usage (argv[0]); + img_path = argv[i]; + continue; + } + if (!strcmp ("--cols", argv[i]) || !strcmp ("-c", argv[i])) + { + if (++i>=argc) usage (argv[0]); + cols = atoi(argv[i]); + continue; + } + if (!strcmp ("-fs", argv[i]) || !strcmp ("--fullscreen", argv[i])) + { + want_fullscreen = TRUE; + continue; + } + if (!strcmp("--help", argv[i]) || !strcmp("-h", argv[i])) + { + usage(argv[0]); + } + + usage(argv[0]); + } + + win = cltr_window_new(800, 600); + + if (want_fullscreen) + cltr_window_set_fullscreen(CLTR_WINDOW(win)); + + list = cltr_list_new(800, 600, 800, 600/5); + + cltr_widget_add_child(win, list, 0, 0); + + cltr_window_focus_widget(CLTR_WINDOW(win), list); + + cltr_widget_show_all(win); + + cltr_main_loop(); +}