gchar *gis_http_fetch(GisHttp *http, const gchar *uri, const char *local,
GisCacheType mode, GisChunkCallback callback, gpointer user_data)
{
- g_debug("GisHttp: fetch - %.20s... >> %s/%s mode=%d",
+ g_debug("GisHttp: fetch - %s... >> %s/%s mode=%d",
uri, http->prefix, local, mode);
gchar *path = g_build_filename(g_get_user_cache_dir(), PACKAGE,
/* Do the cache if necessasairy */
if (!(mode == GIS_ONCE && g_file_test(path, G_FILE_TEST_EXISTS)) &&
mode != GIS_LOCAL) {
- g_debug("GisHttp: do_cache - Caching file %s", local);
+ g_debug("GisHttp: fetch - Caching file %s", local);
/* Open the file for writting */
gchar *part = path;
gis_viewer_project(GIS_VIEWER(opengl),
point->lat, point->lon, point->elev,
&px, &py, &pz);
+
gint win_width = GTK_WIDGET(opengl)->allocation.width;
gint win_height = GTK_WIDGET(opengl)->allocation.height;
py = win_height - py;
//g_debug("GisOpenGL: draw_object");
/* Skip out of range objects */
if (object->lod > 0) {
+ /* LOD test */
gdouble eye[3], obj[3];
gis_viewer_get_location(GIS_VIEWER(opengl), &eye[0], &eye[1], &eye[2]);
+ gdouble elev = eye[2];
lle2xyz(eye[0], eye[1], eye[2], &eye[0], &eye[1], &eye[2]);
lle2xyz(object->center.lat, object->center.lon, object->center.elev,
&obj[0], &obj[1], &obj[2]);
gdouble dist = distd(obj, eye);
if (object->lod < dist)
return;
+
+ /* Horizon testing */
+ gdouble c = EARTH_R+elev;
+ gdouble a = EARTH_R;
+ gdouble horizon = sqrt(c*c - a*a);
+ if (dist > horizon)
+ return;
}
/* Draw */