コード例 #1
0
ファイル: rbgdkvisual.c プロジェクト: tec/ruby-gnome2
static VALUE
rg_s_visuals(G_GNUC_UNUSED VALUE self)
{
    GList *list = gdk_list_visuals(), *cur;
    VALUE ary = rb_ary_new();

    for (cur = list; cur != NULL; cur = cur->next) {
        rb_ary_push(ary, GOBJ2RVAL((GdkVisual *)cur->data));
    }
    g_list_free(list);
    return ary;
}
コード例 #2
0
static void
gtku_gl_drawing_area_init (GtkuGLDrawingArea * self)
{
    GtkuGLDrawingAreaPrivate * priv = GTKU_GL_DRAWING_AREA_GET_PRIVATE (self);

    gtk_widget_set_double_buffered (GTK_WIDGET (self), FALSE);
    priv->dpy = NULL;
    priv->visual = NULL;
    priv->context = NULL;
#ifdef USE_VBLANK
    priv->vblank_watch = 0;
    priv->pipe[0] = -1;
    priv->thread = 0;
    priv->quit_thread = 0;
    priv->swap_requested = 0;
#endif

    XVisualInfo * vinfo = glXChooseVisual (GDK_DISPLAY (),
            GDK_SCREEN_XNUMBER (gdk_screen_get_default ()),
            attr_list);
    if (!vinfo) {
        fprintf (stderr, "Preferred visual not found, using default...\n");
        return;
    }
    VisualID desired_id = vinfo->visualid;
    XFree (vinfo);

    GList * visuals = gdk_list_visuals ();
    GList * vis;
    for (vis = visuals; vis; vis = vis->next) {
        Visual * xv = GDK_VISUAL_XVISUAL (vis->data);
        if (XVisualIDFromVisual (xv) == desired_id) {
            GdkColormap * colormap = gdk_colormap_new (vis->data, FALSE);
            gtk_widget_set_colormap (GTK_WIDGET (self), colormap);
            g_object_unref (G_OBJECT (colormap));
            break;
        }
    }
    g_list_free (visuals);
}
コード例 #3
0
ファイル: f690_gui.c プロジェクト: gregory-kononovitch/f642
int main(int argc, char *argv[]) {
    //
    GtkWidget *window;
    GtkWidget *fixed;
    GtkWidget *area;

    //
    gtk_init(&argc, &argv);

    // Window
    window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
    gtk_window_set_title(GTK_WINDOW(window), "gui");
    gtk_window_set_position(GTK_WINDOW(window), GTK_WIN_POS_CENTER);
    gtk_container_set_border_width(GTK_CONTAINER(window), 0);
    gtk_window_set_default_size(GTK_WINDOW(window), width, height);
    printf("window ok\n");

    // layout
    fixed = gtk_fixed_new();
    gtk_container_add(GTK_CONTAINER(window), fixed);
    printf("fixed ok\n");

    // Image
    GList *visuals = gdk_list_visuals();
    void tst(gpointer data, gpointer udata) {
        if (((GdkVisual*)data)->depth == 32)
        printf("visual :\n\ttype = %d\n\ttype = %d\n\tdepth = %d\n\tbits/rgb = %d\n\torder = %d\n\tred = %08X\n\tgreen = %08X\n\tblue = %08X\n"
                , ((GdkVisual*)data)->type
                , ((GdkVisual*)data)->colormap_size
                , ((GdkVisual*)data)->depth
                , ((GdkVisual*)data)->bits_per_rgb
                , ((GdkVisual*)data)->byte_order
                , ((GdkVisual*)data)->red_mask
                , ((GdkVisual*)data)->green_mask
                , ((GdkVisual*)data)->blue_mask
        );
    }
    g_list_foreach(visuals, &tst, NULL);
    GdkVisual *visu = gdk_visual_get_best_with_depth(32);
    ximg = gdk_image_new(GDK_IMAGE_SHARED, visu, width, height);
    printf("GdkImage : bytes/pix = %d, linesize = %d, bits/pix = %d ; type %d (mem = %p)\n"
            , ximg->bpp, ximg->bpl, ximg->bits_per_pixel
            , ximg->type, ximg->mem
    );
    // GdkPixbufAnimation
    //gtk_image_set_from_pixbuf

    //
    GdkColormap *dcm = gdk_colormap_new(visu, FALSE);
    // drawing area
    area = gtk_drawing_area_new();
    gdk_drawable_set_colormap(window, dcm);
    gdk_drawable_set_colormap(area, dcm);
    gtk_drawing_area_size(GTK_DRAWING_AREA(area), width, height);
    printf("area ok\n");

    //
    gtk_fixed_put(GTK_FIXED(fixed), area, 0, 0);
    printf("fixed ok\n");


    //
    bgra_alloc650(&bgra, width, height);
    bgra_origin650(&bgra, +width/2, +height/2);
    bgra_scale650(&bgra, 1, -1);
    printf("bgra alloc ok\n");
    maj();
    printf("bgra maj done, still (%p <- %p)\n", ximg->mem, bgra.data);
//    // Ximg
//    memcpy(ximg->mem, bgra.data, bgra.size);
//    printf("mcpy done\n");
    // Pixmap
    GdkColor bg;
    GdkColor fg;
    fg.pixel = 0xff000000;
    fg.red = 0;
    fg.green = 0;
    fg.blue = 0;
    bg.pixel = 0xff000000;
    bg.red = 0;
    bg.green = 0;
    bg.blue = 0;
    pixmap = gdk_pixmap_create_from_data(
            GTK_WINDOW(window)
            , bgra.data
            , width
            , height
            , 32
            , &fg
            , &bg
    );


//    img = gdk_pixbuf_new_from_data(
//              (guchar*)bgra.data
//            , GDK_COLORSPACE_RGB
//            , TRUE
//            , 8
//            , width
//            , height
//            , width << 2
//            , &pbd, NULL
//    );
//    printf("PixBuf new ok\n");

    //
    // Image
//    frame = gtk_image_new_from_pixbuf(img);
////    frame = gtimg;
//    gtk_fixed_put(GTK_FIXED(fixed), frame, 0, 0);
//    printf("fixed ok\n");


    // Events
    g_signal_connect(area, "expose-event", G_CALLBACK (on_expose_event), NULL);
//    g_signal_connect(frame, "expose-event", G_CALLBACK (on_expose_event), NULL);
    g_signal_connect(window, "delete-event", G_CALLBACK (delete_event), NULL);
    g_signal_connect(window, "destroy", G_CALLBACK (destroy), NULL);
    printf("signals ok\n");

    // Show
//    gtk_widget_show(area);
    gtk_widget_show(fixed);
    gtk_widget_show_all(window);
    printf("show ok\n");

    // Timer
    g_timeout_add(500, (GSourceFunc)time_handler, (gpointer)area);
    printf("timer ok\n");

    gtk_main();

    return 0;
}