示例#1
0
文件: s52gtk3egl.c 项目: vadp/S52
int main (int argc, char** argv)
{
    gtk_init(&argc, &argv);

    _engine.window = GTK_WIDGET(gtk_window_new(GTK_WINDOW_TOPLEVEL));
    gtk_window_set_default_size(GTK_WINDOW(_engine.window), 800, 600);
    gtk_window_set_title(GTK_WINDOW(_engine.window), "OpenGL ES2 in GTK3 application");

    gtk_widget_show_all(_engine.window);

    _egl_init(&_engine);
    _s52_init(&_engine);

    gtk_widget_set_app_paintable     (_engine.window, TRUE );
    gtk_widget_set_double_buffered   (_engine.window, FALSE);
    gtk_widget_set_redraw_on_allocate(_engine.window, TRUE );

    g_signal_connect(G_OBJECT(_engine.window), "destroy",           G_CALLBACK(gtk_main_quit),     NULL);
    g_signal_connect(G_OBJECT(_engine.window), "draw",              G_CALLBACK(_s52_draw_cb),     &_engine);
    g_signal_connect(G_OBJECT(_engine.window), "key_release_event", G_CALLBACK(key_release_event), NULL);
    g_signal_connect(G_OBJECT(_engine.window), "configure_event",   G_CALLBACK(configure_event),   NULL);

    g_timeout_add(500, step, gtk_widget_get_window(_engine.window)); // 0.5 sec

    gtk_main();

    _s52_done(&_engine);
    _egl_done(&_engine);

    g_print("%s .. done\n", argv[0]);

    return 0;
}
示例#2
0
static gboolean _configure_event(GtkWidget         *widget,
                                GdkEventConfigure *event,
                                gpointer           data)
{
    (void)widget;
    (void)event;
    (void)data;


    //g_print("_configure_event\n");

    // FIXME: find the new screen size
    //GtkAllocation allocation;
    //gtk_widget_get_allocation(GTK_WIDGET(widget), &allocation);
    //_engine.width  = allocation.width;
    //_engine.height = allocation.height;


    //gtk_widget_get_allocation(GTK_WIDGET(_engine.window), &allocation);
    //gtk_widget_size_allocate(GTK_WIDGET(_engine.window), &allocation);

    //GtkRequisition requisition;
    //gtk_widget_get_child_requisition(widget, &requisition);

    //*
    if (TRUE == _engine.do_S52init) {
        g_print("s52egl:configure_event()\n");
        _egl_init(&_engine);
        _s52_init(&_engine);
        _engine.do_S52init = FALSE;
    }

    _s52_computeView(&_engine.state);
    S52_setView(_engine.state.cLat, _engine.state.cLon, _engine.state.rNM, _engine.state.north);
    S52_setViewPort(0, 0, _engine.width, _engine.height);

    _engine.do_S52draw = TRUE;
    //*/

    return TRUE;
}