Much, see ChangeLog

This commit is contained in:
Matthew Allum 2005-05-14 10:19:39 +00:00
parent 24cefa8d2a
commit 3838ffe065
18 changed files with 354 additions and 115 deletions

View File

@ -1,3 +1,34 @@
2005-05-14 mallum,,, <mallum@openedhand.com>
* 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,,, <mallum@openedhand.com> 2005-05-11 mallum,,, <mallum@openedhand.com>
* clutter/cltr-video.c: (got_buffering), (cltr_video_new), * clutter/cltr-video.c: (got_buffering), (cltr_video_new),

33
clutter/cltr-animator.c Normal file
View File

@ -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)
{
}

View File

@ -95,6 +95,7 @@ cltr_button_new_with_pixbuf(Pixbuf *pixb)
button = CLTR_BUTTON(cltr_button_new(-1, -1)); button = CLTR_BUTTON(cltr_button_new(-1, -1));
return CLTR_WIDGET(button);
} }
static void static void
@ -191,7 +192,8 @@ cltr_button_handle_xkeyevent(CltrButton *button, XKeyEvent *xkeyev)
break; break;
default: default:
/* ??? */ /* ??? */
} break;
}
if (button->state != old_state) if (button->state != old_state)
{ {
@ -203,7 +205,7 @@ cltr_button_handle_xkeyevent(CltrButton *button, XKeyEvent *xkeyev)
{ {
/* Evil - need to centralise focus management */ /* Evil - need to centralise focus management */
ClutterMainContext *ctx = CLTR_CONTEXT(); 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); cltr_button_handle_xkeyevent(button, &xev->xkey);
break; break;
} }
return TRUE;
} }
@ -251,7 +255,7 @@ cltr_button_paint(CltrWidget *widget)
widget->y, widget->y,
widget->x + widget->width, widget->x + widget->width,
widget->y + widget->height, widget->y + widget->height,
widget->width/30, 2, 5,
NULL); NULL);
glDisable(GL_BLEND); glDisable(GL_BLEND);

View File

@ -25,9 +25,6 @@ cltr_init(int *argc, char ***argv)
GLX_RED_SIZE, 1, GLX_RED_SIZE, 1,
GLX_GREEN_SIZE, 1, GLX_GREEN_SIZE, 1,
GLX_BLUE_SIZE, 1, GLX_BLUE_SIZE, 1,
*/ */
0 0
}; };
@ -38,7 +35,8 @@ cltr_init(int *argc, char ***argv)
if (!g_thread_supported ()) if (!g_thread_supported ())
g_thread_init (NULL); g_thread_init (NULL);
// XInitThreads ();
/* XInitThreads (); */
if ((CltrCntx.xdpy = XOpenDisplay(getenv("DISPLAY"))) == NULL) 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); 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(); cltr_events_init();
return 1; return 1;
@ -82,3 +84,11 @@ cltr_display_height(void)
return DisplayHeight(ctx->xdpy, ctx->xscreen); return DisplayHeight(ctx->xdpy, ctx->xscreen);
} }
PixbufPixel*
cltr_core_get_color(CltrNamedColor col)
{
ClutterMainContext *ctx = CLTR_CONTEXT();
return &ctx->colors[col];
}

View File

@ -11,75 +11,98 @@ cltr_glu_set_color(PixbufPixel *p)
glColor4ub(p->r, p->b, p->g, p->a); glColor4ub(p->r, p->b, p->g, p->a);
} }
#if 0 void
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
cltr_glu_rounded_rect(int x1, cltr_glu_rounded_rect(int x1,
int y1, int y1,
int x2, int x2,
int y2, int y2,
int line_width,
int radius, int radius,
PixbufPixel *col) 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 i = 0;
double gap = 0.05; double gap = 0.05;

View File

@ -6,12 +6,21 @@
void void
cltr_glu_set_color(PixbufPixel *p); cltr_glu_set_color(PixbufPixel *p);
void void
cltr_glu_rounded_rect(int x1, cltr_glu_rounded_rect(int x1,
int y1, int y1,
int x2, int x2,
int y2, int y2,
int line_width,
int radius, int radius,
PixbufPixel *col); PixbufPixel *col);
void
cltr_glu_rounded_rect_filled(int x1,
int y1,
int x2,
int y2,
int radius,
PixbufPixel *col);
#endif #endif

View File

@ -36,11 +36,11 @@ cltr_label_new(const char *text,
if (width && height) if (width && height)
{ {
PixbufPixel bg = { 0xff, 0xff, 0xff, 0x00 }; PixbufPixel bg = { 0x00, 0x00, 0x00, 0x00 };
label->text = strdup(text); label->text = strdup(text);
label->pixb = pixbuf_new(width, height); label->pixb = pixbuf_new(width, height);
pixbuf_fill_rect(label->pixb, 0, 0, -1, -1, &bg); pixbuf_fill_rect(label->pixb, 0, 0, -1, -1, &bg);
font_draw(font, font_draw(font,
@ -113,10 +113,11 @@ cltr_label_paint(CltrWidget *widget)
glEnable(GL_TEXTURE_2D); glEnable(GL_TEXTURE_2D);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glEnable(GL_BLEND); 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_texture_render_to_gl_quad(label->texture,
cltr_widget_abs_x(widget), cltr_widget_abs_x(widget),
@ -125,6 +126,7 @@ cltr_label_paint(CltrWidget *widget)
cltr_widget_abs_y2(widget)); cltr_widget_abs_y2(widget));
glDisable(GL_BLEND); glDisable(GL_BLEND);
glDisable(GL_TEXTURE_2D); glDisable(GL_TEXTURE_2D);
glPopMatrix(); glPopMatrix();

View File

@ -1,7 +1,7 @@
#include "cltr-list.h" #include "cltr-list.h"
#include "cltr-private.h" #include "cltr-private.h"
#define ANIM_FPS 200 #define ANIM_FPS 50
#define FPS_TO_TIMEOUT(t) (1000/(t)) #define FPS_TO_TIMEOUT(t) (1000/(t))
typedef struct CltrListCell typedef struct CltrListCell
@ -39,7 +39,7 @@ distfunc(CltrList *list, int d)
int maxdist = list->widget.height; int maxdist = list->widget.height;
d = (maxdist-ABS(d)) ; 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* CltrListCell*
@ -48,9 +48,9 @@ cltr_list_cell_new(CltrList *list)
CltrListCell *cell = NULL; CltrListCell *cell = NULL;
ClutterFont *font; ClutterFont *font;
gchar buf[24]; 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)); 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); g_snprintf(&buf[0], 24, "%i %i %i", rand()%10, rand()%10, rand()%10);
font_draw(font, cell->pixb, buf, 10, 10, &font_pixel); font_draw(font, cell->pixb, buf, 10, 10, &font_pixel);
cell->texture = cltr_texture_new(cell->pixb); cell->texture = cltr_texture_new(cell->pixb);
@ -98,9 +96,9 @@ cltr_list_show(CltrWidget *widget)
{ {
CltrList *list = CLTR_LIST(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; i<n_items; i++) for (i=0; i<n_items; i++)
{ {
@ -174,7 +172,7 @@ cltr_list_animate(CltrList *list)
if (next_active->rect.y < list->active_cell_y) if (next_active->rect.y < list->active_cell_y)
{ {
cell_top->rect.y += 2; cell_top->rect.y += 10;
} }
else else
{ {
@ -196,7 +194,7 @@ cltr_list_animate(CltrList *list)
if (next_active->rect.y > list->active_cell_y) if (next_active->rect.y > list->active_cell_y)
{ {
cell_top->rect.y -= 2; cell_top->rect.y -= 10;
} }
else else
{ {
@ -228,12 +226,14 @@ cltr_list_timeout_cb(gpointer data)
} }
} }
static void static void
cltr_list_paint(CltrWidget *widget) cltr_list_paint(CltrWidget *widget)
{ {
GList *cell_item = NULL; GList *cell_item = NULL;
CltrList *list = CLTR_LIST(widget); CltrList *list = CLTR_LIST(widget);
CltrListCell *cell = NULL; CltrListCell *cell = NULL;
PixbufPixel col = { 0xff, 0, 0, 0xff };
int last; int last;
@ -249,28 +249,64 @@ cltr_list_paint(CltrWidget *widget)
while (cell_item) while (cell_item)
{ {
float scale = 0.0;
cell = (CltrListCell *)cell_item->data; cell = (CltrListCell *)cell_item->data;
col.r = 0xff; col.g = 0; col.b = 0; col.a = 0xff;
cell->rect.y = last; cell->rect.y = last;
if (cell->rect.y + cell->rect.height >= 0) if (cell->rect.y + cell->rect.height >= 0)
{ {
cell->rect.width = list->cell_width * distfunc(list, cell->rect.y - list->active_cell_y); scale = distfunc(list, cell->rect.y - list->active_cell_y);
cell->rect.height = list->cell_height * 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 = (list->widget.width - cell->rect.width) / 2;
cell->rect.x = 0;
} }
last = cell->rect.y + cell->rect.height; last = cell->rect.y + cell->rect.height;
if (last > 0 && cell->rect.y < list->widget.width) /* crappy clip */ 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_texture_render_to_gl_quad(cell->texture,
cltr_rect_x1(cell->rect), cltr_rect_x1(cell->rect) + 100,
cltr_rect_y1(cell->rect), cltr_rect_y1(cell->rect) + 10,
cltr_rect_x2(cell->rect), cltr_rect_x2(cell->rect) - 100,
cltr_rect_y2(cell->rect)); cltr_rect_y2(cell->rect) - 10);
} }
cell_item = g_list_next(cell_item); cell_item = g_list_next(cell_item);

View File

@ -44,6 +44,7 @@ static gboolean
cltr_overlay_handle_xevent (CltrWidget *widget, XEvent *xev) cltr_overlay_handle_xevent (CltrWidget *widget, XEvent *xev)
{ {
return FALSE;
} }
static void static void
@ -53,12 +54,12 @@ cltr_overlay_paint(CltrWidget *widget)
glColor4f(0.5, 0.5, 0.5, 1.0); glColor4f(0.5, 0.5, 0.5, 1.0);
cltr_glu_rounded_rect(widget->x, cltr_glu_rounded_rect_filled(widget->x,
widget->y, widget->y,
widget->x + widget->width, widget->x + widget->width,
widget->y + widget->height, widget->y + widget->height,
widget->width/30, widget->width/30,
NULL); NULL);
glDisable(GL_BLEND); glDisable(GL_BLEND);

View File

@ -75,6 +75,8 @@ struct ClutterMainContext
CltrWidget *window; CltrWidget *window;
GAsyncQueue *internal_event_q; GAsyncQueue *internal_event_q;
PixbufPixel colors[CLTR_N_COLS];
}; };
ClutterMainContext CltrCntx; ClutterMainContext CltrCntx;

View File

@ -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_WRAP_T, GL_CLAMP);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_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, glTexImage2D(GL_TEXTURE_2D, 0, /*GL_COMPRESSED_RGBA_ARB*/ GL_RGBA,
texture->width, texture->width,

View File

@ -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); glColor4f(1.0, 1.0, 1.0, 1.0);
glEnable(GL_TEXTURE_2D); 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); cltr_texture_lock(video->frame_texture);
@ -884,7 +886,9 @@ cltr_video_paint(CltrWidget *widget)
glDisable(GL_TEXTURE_2D); 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); // glRecti(100, 100, 600, 600);
} }

View File

@ -30,6 +30,15 @@ typedef enum CltrDirection
} }
CltrDirection; CltrDirection;
typedef enum CltrNamedColor
{
CLTR_COL_BG = 0,
CLTR_COL_BDR,
CLTR_COL_FG,
CLTR_N_COLS
}
CltrNamedColor;
typedef struct CltrRect typedef struct CltrRect
{ {
int x, y, width, height; int x, y, width, height;

View File

@ -117,6 +117,8 @@ draw_layout_on_pixbuf (PangoLayout *layout,
for (i = start_x ; i < end_x; i++) for (i = start_x ; i < end_x; i++)
{ {
PixbufPixel pixel; PixbufPixel pixel;
#if 0
int tr1, tg1, tb1, tr2, tg2, tb2; int tr1, tg1, tb1, tr2, tg2, tb2;
int a = (*b * color->a + 0x80) >> 8; int a = (*b * color->a + 0x80) >> 8;
@ -145,7 +147,12 @@ draw_layout_on_pixbuf (PangoLayout *layout,
tb1 = (255 - a) * pixel.a + 0x80; tb1 = (255 - a) * pixel.a + 0x80;
tb2 = a * color->a + 0x80; tb2 = a * color->a + 0x80;
pixel.a = ((tb1 + (tb1 >> 8)) >> 8) + ((tb2 + (tb2 >> 8)) >> 8); 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); pixbuf_set_pixel (pixb, i, j, &pixel);
b++; b++;
} }

View File

@ -1,4 +1,4 @@
noinst_PROGRAMS = scratch photos player noinst_PROGRAMS = scratch photos player select
scratch_SOURCES = scratch.c scratch_SOURCES = scratch.c
scratch_CFLAGS = $(CLTR_CFLAGS) $(GST_CFLAGS) $(GCONF_CFLAGS) scratch_CFLAGS = $(CLTR_CFLAGS) $(GST_CFLAGS) $(GCONF_CFLAGS)
@ -24,4 +24,12 @@ player_LDFLAGS = \
$(GCONF_LIBS) \ $(GCONF_LIBS) \
$(top_builddir)/clutter/libclutter.la $(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

View File

@ -53,9 +53,7 @@ main (int argc, char *argv[])
{ {
CltrWidget *win, *video, *label; CltrWidget *win, *video, *label;
CltrFont *font; CltrFont *font;
PixbufPixel col = { 0xff, 0xff, 0xff, 0x66 }; PixbufPixel col = { 0x66, 0x00, 0x00, 0x99 };
pixel_set_vals(&col, 0x00, 0x00, 0x00, 0x99);
cltr_init (&argc, &argv); cltr_init (&argc, &argv);
@ -64,7 +62,7 @@ main (int argc, char *argv[])
exit (-1); exit (-1);
} }
font = font_new("Sans bold 96"); font = font_new("Baubau 72");
win = cltr_window_new(800, 600); win = cltr_window_new(800, 600);
@ -74,9 +72,9 @@ main (int argc, char *argv[])
cltr_widget_add_child(win, video, 0, 0); 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); cltr_window_on_xevent(CLTR_WINDOW(win), handle_xevent, video);

View File

@ -84,11 +84,8 @@ main(int argc, char **argv)
cltr_widget_add_child(win, test2, 400, 300); 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), test);
cltr_window_focus_widget(CLTR_WINDOW(win), list);
cltr_widget_show_all(win); cltr_widget_show_all(win);

65
examples/select.c Normal file
View File

@ -0,0 +1,65 @@
#include <clutter/cltr.h>
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();
}