- Timestamp:
- Sep 22, 2016 1:33:36 PM (8 years ago)
- Location:
- geovis/trunk
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
geovis/trunk/Renderer.cpp
r6518 r6549 51 51 #include <osgEarth/ModelLayer> 52 52 #include <osgEarth/DateTime> 53 #include <osgEarth/TimeControl> 53 54 #ifdef USE_RTT_PICKER 54 55 #include <osgEarthUtil/RTTPicker> … … 1483 1484 TRACE("Image layer not found: %s", name); 1484 1485 } 1486 } 1487 1488 bool Renderer::layerHasSequence(const char *name) 1489 { 1490 if (!_map.valid()) { 1491 ERROR("No map"); 1492 return false; 1493 } 1494 osgEarth::ImageLayer *layer = _map->getImageLayerByName(name); 1495 if (layer != NULL) { 1496 osgEarth::SequenceControl *seq = layer->getSequenceControl(); 1497 if (seq == NULL) { 1498 TRACE("Image layer has no SequenceControl: %s", name); 1499 return false; 1500 } 1501 return seq->supportsSequenceControl(); 1502 } 1503 TRACE("Image layer not found: %s", name); 1504 return false; 1505 } 1506 1507 bool Renderer::sequencePause(const char *name) 1508 { 1509 if (!_map.valid()) { 1510 ERROR("No map"); 1511 return false; 1512 } 1513 osgEarth::ImageLayer *layer = _map->getImageLayerByName(name); 1514 if (layer != NULL) { 1515 osgEarth::SequenceControl *seq = layer->getSequenceControl(); 1516 if (seq == NULL || !seq->supportsSequenceControl()) { 1517 TRACE("Image layer has no SequenceControl: %s", name); 1518 return false; 1519 } 1520 seq->pauseSequence(); 1521 _needsRedraw = true; 1522 return true; 1523 } 1524 TRACE("Image layer not found: %s", name); 1525 return false; 1526 } 1527 1528 bool Renderer::sequencePlay(const char *name) 1529 { 1530 if (!_map.valid()) { 1531 ERROR("No map"); 1532 return false; 1533 } 1534 osgEarth::ImageLayer *layer = _map->getImageLayerByName(name); 1535 if (layer != NULL) { 1536 osgEarth::SequenceControl *seq = layer->getSequenceControl(); 1537 if (seq == NULL || !seq->supportsSequenceControl()) { 1538 TRACE("Image layer has no SequenceControl: %s", name); 1539 return false; 1540 } 1541 seq->playSequence(); 1542 _needsRedraw = true; 1543 return true; 1544 } 1545 TRACE("Image layer not found: %s", name); 1546 return false; 1547 } 1548 1549 bool Renderer::sequenceSeek(const char *name, unsigned int frame) 1550 { 1551 if (!_map.valid()) { 1552 ERROR("No map"); 1553 return false; 1554 } 1555 osgEarth::ImageLayer *layer = _map->getImageLayerByName(name); 1556 if (layer != NULL) { 1557 osgEarth::SequenceControl *seq = layer->getSequenceControl(); 1558 if (seq == NULL || !seq->supportsSequenceControl()) { 1559 TRACE("Image layer has no SequenceControl: %s", name); 1560 return false; 1561 } 1562 seq->seekToSequenceFrame(frame); 1563 _needsRedraw = true; 1564 return true; 1565 } 1566 TRACE("Image layer not found: %s", name); 1567 return false; 1485 1568 } 1486 1569 -
geovis/trunk/Renderer.h
r6518 r6549 291 291 292 292 void removeColorFilter(const char *name, int idx = -1); 293 294 // Sequence control 295 296 bool layerHasSequence(const char *name); 297 298 bool sequencePause(const char *name); 299 300 bool sequencePlay(const char *name); 301 302 bool sequenceSeek(const char *name, unsigned int frame); 293 303 294 304 // Elevation raster layers -
geovis/trunk/RendererCmd.cpp
r6528 r6549 1666 1666 opts.format() = format; 1667 1667 opts.transparent() = transparent; 1668 if (objc > 12) { 1669 char *times = Tcl_GetString(objv[12]); 1670 opts.times() = times; 1671 } 1672 if (objc > 13) { 1673 double frameSeconds; 1674 if (Tcl_GetDoubleFromObj(interp, objv[13], &frameSeconds) != TCL_OK) { 1675 return TCL_ERROR; 1676 } 1677 opts.secondsPerFrame() = frameSeconds; 1678 } 1668 1679 1669 1680 ret = g_renderer->addImageLayer(name, opts, pos, cache, coverage, shared, visible, minLOD, maxLOD); … … 3186 3197 3187 3198 static int 3199 MapSequencePauseOp(ClientData clientData, Tcl_Interp *interp, int objc, 3200 Tcl_Obj *const *objv) 3201 { 3202 const char *layer = Tcl_GetString(objv[3]); 3203 bool ret = g_renderer->sequencePause(layer); 3204 if (!ret) { 3205 Tcl_AppendResult(interp, "Layer \"", layer, 3206 "\" doesn't exist or has no sequence", (char *)NULL); 3207 return TCL_ERROR; 3208 } 3209 3210 return TCL_OK; 3211 } 3212 3213 static int 3214 MapSequencePlayOp(ClientData clientData, Tcl_Interp *interp, int objc, 3215 Tcl_Obj *const *objv) 3216 { 3217 const char *layer = Tcl_GetString(objv[3]); 3218 bool ret = g_renderer->sequencePause(layer); 3219 if (!ret) { 3220 Tcl_AppendResult(interp, "Layer \"", layer, 3221 "\" doesn't exist or has no sequence", (char *)NULL); 3222 return TCL_ERROR; 3223 } 3224 3225 return TCL_OK; 3226 } 3227 3228 static int 3229 MapSequenceSeekOp(ClientData clientData, Tcl_Interp *interp, int objc, 3230 Tcl_Obj *const *objv) 3231 { 3232 const char *layer = Tcl_GetString(objv[4]); 3233 int frame; 3234 if (Tcl_GetIntFromObj(interp, objv[3], &frame) != TCL_OK) { 3235 return TCL_ERROR; 3236 } 3237 bool ret = g_renderer->sequenceSeek(layer, (unsigned int)frame); 3238 if (!ret) { 3239 Tcl_AppendResult(interp, "Layer \"", layer, 3240 "\" doesn't exist or has no sequence", (char *)NULL); 3241 return TCL_ERROR; 3242 } 3243 3244 return TCL_OK; 3245 } 3246 3247 static CmdSpec mapSequenceOps[] = { 3248 {"pause", 2, MapSequencePauseOp, 4, 4, "layerName"}, 3249 {"play", 2, MapSequencePlayOp, 4, 4, "layerName"}, 3250 {"seek", 1, MapSequenceSeekOp, 5, 5, "frame layerName"}, 3251 }; 3252 static int nMapSequenceOps = NumCmdSpecs(mapSequenceOps); 3253 3254 static int 3255 MapSequenceOp(ClientData clientData, Tcl_Interp *interp, int objc, 3256 Tcl_Obj *const *objv) 3257 { 3258 Tcl_ObjCmdProc *proc; 3259 3260 proc = GetOpFromObj(interp, nMapSequenceOps, mapSequenceOps, 3261 CMDSPEC_ARG2, objc, objv, 0); 3262 if (proc == NULL) { 3263 return TCL_ERROR; 3264 } 3265 return (*proc) (clientData, interp, objc, objv); 3266 } 3267 3268 static int 3188 3269 MapSetPositionOp(ClientData clientData, Tcl_Interp *interp, int objc, 3189 3270 Tcl_Obj *const *objv) … … 3378 3459 {"reset", 1, MapResetOp, 6, 11, "type r g b ?profile xmin ymin xmax ymax?"}, 3379 3460 {"scalebar", 1, MapScaleBarOp, 3, 4, "bool ?units?"}, 3380 {"setpos", 1, MapSetPositionOp, 2, 4, "x y"}, 3461 {"sequence", 3, MapSequenceOp, 3, 0, "op ?params...?"}, 3462 {"setpos", 3, MapSetPositionOp, 2, 4, "x y"}, 3381 3463 {"terrain", 1, MapTerrainOp, 3, 0, "op ?params...?"}, 3382 3464 {"time", 1, MapTimeOp, 2, 6, "?hours? ?day? ?month? ?year?"}, -
geovis/trunk/geovis_protocol.txt
r6524 r6549 226 226 <coverage> = bool indicating if data should not be interpolated (true means 227 227 no interpolation) 228 map layer add <layerName> image wms <url> <cache> <coverage> <layers> <format> <transparent> 228 map layer add <layerName> image wms <url> <cache> <coverage> <layers> <format> <transparent> <?times?> <?frameSeconds?> 229 229 Add a WMS image layer from a URL + layer string 230 230 <url> = URL of WMS service … … 235 235 <format> = Image format to return (e.g. 'png') 236 236 <transparent> = bool 237 <times> = optional comma separated list of timestamps for WMS-T 238 <frameSeconds> = time in seconds to display each animated frame for WMS-T 237 239 map layer add <layerName> image tms <url> <cache> <coverage> 238 240 Add a TMS image layer from a URL
Note: See TracChangeset
for help on using the changeset viewer.