diff --git a/Applications/VpView/vpVidtkTrackIO.cxx b/Applications/VpView/vpVidtkTrackIO.cxx index 5ddf62df..76c584f9 100644 --- a/Applications/VpView/vpVidtkTrackIO.cxx +++ b/Applications/VpView/vpVidtkTrackIO.cxx @@ -632,13 +632,14 @@ bool vpVidtkTrackIO::WriteTracks( double lat = 444.0; double lon = 444.0; - vidtk::image_object_sptr obj; + vidtk::image_object* obj= nullptr; vgl_box_2d imageBox; bool validObject = false; if (orig_state && !orig_state->latitude_longitude(lat, lon)) { - if (orig_state->image_object(obj)) + obj = orig_state->get_image_object(); + if (obj != nullptr) { validObject = true; imageBox = obj->get_bbox(); @@ -746,8 +747,7 @@ bool vpVidtkTrackIO::WriteTracks( new_obj->set_bbox(newBox); } - new_objs[0] = new_obj; - new_state->data_.set(vidtk::tracking_keys::img_objs, new_objs); + new_state->set_image_object(new_obj); track->add_state(new_state); } @@ -936,7 +936,7 @@ void vpVidtkTrackIO::ReadTrack( points.reserve(12); bool skippedInterpolationPointSinceLastInsert = false; - std::vector objs; + vidtk::image_object_sptr obj; for (const auto& trackState : trackHistory) { const auto frameNumber = trackState->time_.frame_number(); @@ -973,12 +973,13 @@ void vpVidtkTrackIO::ReadTrack( timeStamp.SetTime(trackState->time_.time()); } - if (trackState->data_.get(vidtk::tracking_keys::img_objs, objs)) + obj = trackState->get_image_object(); + if (obj != nullptr) { double lat, lon; if (!trackState->latitude_longitude(lat, lon)) { - const auto& world_loc = objs[0]->get_world_loc(); + const auto& world_loc = obj->get_world_loc(); lon = world_loc[0]; lat = world_loc[1]; } @@ -987,7 +988,7 @@ void vpVidtkTrackIO::ReadTrack( bool trackPointAvailable = true; double minY; double maxY; - const auto& vglBBox = objs[0]->get_bbox(); + const auto& vglBBox = obj->get_bbox(); double pt[4] = {0.0, 0.0, 0.0, 1.0}; vpFrame frameMetaData; if (this->StorageMode == TSM_TransformedGeoCoords) @@ -1005,7 +1006,7 @@ void vpVidtkTrackIO::ReadTrack( } else { - const auto& image_loc = objs[0]->get_image_loc(); + const auto& image_loc = obj->get_image_loc(); pt[0] = image_loc[0]; unsigned int imageMaxY = this->Reader.GetImageHeight() - 1; if (this->StorageMode == TSM_InvertedImageCoords) diff --git a/Libraries/VtkVgCore/vtkVgTrack.cxx b/Libraries/VtkVgCore/vtkVgTrack.cxx index 334f1efb..ffd1b5b2 100644 --- a/Libraries/VtkVgCore/vtkVgTrack.cxx +++ b/Libraries/VtkVgCore/vtkVgTrack.cxx @@ -397,6 +397,8 @@ void vtkVgTrack::InsertNextPoint(const vtkVgTimeStamp& timeStamp, vtkPoints* fromShellPoints, vtkIdType fromShellPtsStart) { + vtkDebugMacro("insert next point: " << timeStamp); + if (!this->Points) { vtkErrorMacro("Must set Points before inserting track points!"); @@ -709,6 +711,7 @@ void vtkVgTrack::SetPoint(const vtkVgTimeStamp& timeStamp, vtkPoints* fromShellPts, vtkIdType fromShellPtsStart) { + vtkDebugMacro("set point: " << timeStamp); // if not closed and after the last point, just use InsertNextPoint() if (!this->EndFrame.IsValid() && (this->Internal->PointIdMap.size() == 0 || diff --git a/Libraries/VvVidtk/vvAdaptVidtk.cxx b/Libraries/VvVidtk/vvAdaptVidtk.cxx index 185e85de..50c88d7c 100644 --- a/Libraries/VvVidtk/vvAdaptVidtk.cxx +++ b/Libraries/VvVidtk/vvAdaptVidtk.cxx @@ -18,12 +18,11 @@ QList vvAdapt(const vidtk::track_state& vs) { QList stateList; - std::vector objs; - if (vs.data_.get(vidtk::tracking_keys::img_objs, objs)) + vidtk::image_object* obj_sptr = vs.get_image_object(); + if (obj_sptr != nullptr) { - for (size_t i = 0; i < objs.size(); ++i) { - const vidtk::image_object& obj = *objs[i]; + const vidtk::image_object& obj = *obj_sptr; vvTrackState state; @@ -38,8 +37,8 @@ QList vvAdapt(const vidtk::track_state& vs) } // Set image point and box - const auto& img_loc = objs[i]->get_image_loc(); - const auto& bbox = objs[i]->get_bbox(); + const auto& img_loc = obj_sptr->get_image_loc(); + const auto& bbox = obj_sptr->get_bbox(); state.ImagePoint.X = img_loc[0]; state.ImagePoint.Y = img_loc[1]; state.ImageBox.TopLeft.X = bbox.min_x();