Exemplo n.º 1
0
static int        _ogrLoadCell(const char *filename, S52_loadLayer_cb loadLayer_cb, S52_loadObject_cb loadObject_cb)
{
    OGRDataSourceH hDS         = NULL;;
    OGRSFDriverH   hDriver     = NULL;

    PRINTF("DEBUG: starting to load cell (%s)\n", filename);

    hDS = OGROpen(filename, FALSE, &hDriver);

    if (NULL == hDS) {
        PRINTF("WARNING: file loading failed (%s)\n", filename);
        return FALSE;
    }

    if (NULL == loadLayer_cb) {
        PRINTF("ERROR: should be using default S52_loadLayer() callback\n");
        g_assert(0);
        return FALSE;
    }

    if (NULL == loadObject_cb) {
        PRINTF("ERROR: should be using default S52_loadObject_cb() callback\n");
        g_assert(0);
        return FALSE;
    }

    //_loadAux(hDS);
    int nLayer = OGR_DS_GetLayerCount(hDS);
    for (int iLayer=0; iLayer<nLayer; ++iLayer) {
        OGRLayerH       ogrlayer  = OGR_DS_GetLayer(hDS, iLayer);
        OGRFeatureDefnH defn      = OGR_L_GetLayerDefn(ogrlayer);
        const char     *layername = OGR_FD_GetName(defn);

#ifdef _MINGW
        // on Windows 32 the callback is broken
        S52_loadLayer(layername, ogrlayer, NULL);
#else
        //loadLayer_cb(layername, ogrlayer, NULL);
        loadLayer_cb(layername, ogrlayer, loadObject_cb);
#endif

    }

    //OGR_DS_Destroy(hDS);
    OGRReleaseDataSource(hDS);

    return TRUE;
}
Exemplo n.º 2
0
static void gv_S57_layer_setup(GvShapesLayer *layer, GvViewArea *view)
// load S57 --its in "wkt" OGC layer format
{
    //printf("start S52 gv_S57_layer_setup\n");

    if (NULL==layer || NULL==view) {
        PRINTF("ERROR: no GvShapesLayer or GvViewArea\n");
        return;
    }

#ifdef S52_USE_GLIB2
    //g_signal_connect(G_OBJECT(view), "gldraw",
    //                 G_CALLBACK(gv_S57_draw_layer),
    //                 G_OBJECT(view));
    //g_signal_connect(G_OBJECT(layer), "draw",
    //                 G_CALLBACK(gv_S57_draw_layer),
    //                 G_OBJECT(view));
    g_signal_connect(layer, "draw", gv_S57_draw_layer, view);

    //g_signal_connect(G_OBJECT(view), "button-release-event",
    //                 G_CALLBACK(_motion_handle_hint),
    //                 G_OBJECT(view));
    g_signal_connect(view, "button-release-event", _motion_handle_hint, view);


#else
    gtk_signal_connect_object(GTK_OBJECT(view), "gldraw",
                              GTK_SIGNAL_FUNC(gv_S57_draw_layer),
                              GTK_OBJECT(layer));

    gtk_signal_connect_object(GTK_OBJECT(view), "button-release-event",
                              GTK_SIGNAL_FUNC(_motion_handle_hint),
                              GTK_OBJECT(view));
#endif

    //printf("S52 name gv_S57_layer_setup\n");

    //char *name = (char *)gv_data_get_name(GV_DATA(layer));
    char *name = (char *)gv_data_get_name(layer);
    S52_loadLayer(name, (void *)layer);


    //printf("S52 fini gv_S57_layer_setup\n");

    return;
}
Exemplo n.º 3
0
static void gv_S57_layer_setup(GvShapesLayer *layer, GvViewArea *view)
// load S57 --its in "wkt" OGC layer format
{
    //printf("start S52 gv_S57_layer_setup\n");

    if (NULL==layer || NULL==view) {
        PRINTF("ERROR: no GvShapesLayer or GvViewArea\n");
        return;
    }

    g_signal_connect(layer, "draw", gv_S57_draw_layer, view);
    g_signal_connect(view, "button-release-event", _motion_handle_hint, view);

    //printf("S52 name gv_S57_layer_setup\n");

    //char *name = (char *)gv_data_get_name(GV_DATA(layer));
    char *name = (char *)gv_data_get_name(layer);
    S52_loadLayer(name, (void *)layer);


    //printf("S52 fini gv_S57_layer_setup\n");

    return;
}