From 38d41bcf86b72899d4f284d07014e32474b1de0a Mon Sep 17 00:00:00 2001 From: kirtijindal14 Date: Tue, 14 Jul 2026 18:58:29 +0530 Subject: [PATCH] pointer changes --- modules/ptcloud/src/viz3d/viz3d.cpp | 39 +++++++-------------- modules/ptcloud/src/viz3d/viz3d_private.hpp | 11 +++--- 2 files changed, 17 insertions(+), 33 deletions(-) diff --git a/modules/ptcloud/src/viz3d/viz3d.cpp b/modules/ptcloud/src/viz3d/viz3d.cpp index 4cd27c0b74..d0bb9bdbf4 100644 --- a/modules/ptcloud/src/viz3d/viz3d.cpp +++ b/modules/ptcloud/src/viz3d/viz3d.cpp @@ -508,7 +508,7 @@ void showMesh(const String& win_name, const String& obj_name, InputArray verts, CV_Error(cv::Error::OpenGlNotSupported, "The library is compiled without OpenGL support"); #else Window* win = getWindow(win_name); - win->set(obj_name, new Mesh(verts, indices)); + win->set(obj_name, makePtr(verts, indices)); updateWindow(win_name); #endif } @@ -523,7 +523,7 @@ void showMesh(const String& win_name, const String& obj_name, InputArray verts) CV_Error(cv::Error::OpenGlNotSupported, "The library is compiled without OpenGL support"); #else Window* win = getWindow(win_name); - win->set(obj_name, new Mesh(verts)); + win->set(obj_name, makePtr(verts)); updateWindow(win_name); #endif } @@ -538,7 +538,7 @@ void showPoints(const String& win_name, const String& obj_name, InputArray point CV_Error(cv::Error::OpenGlNotSupported, "The library is compiled without OpenGL support"); #else Window* win = getWindow(win_name); - win->set(obj_name, new PointCloud(points)); + win->set(obj_name, makePtr(points)); updateWindow(win_name); #endif } @@ -599,7 +599,7 @@ void showLines(const String& win_name, const String& obj_name, InputArray points CV_Error(cv::Error::OpenGlNotSupported, "The library is compiled without OpenGL support"); #else Window* win = getWindow(win_name); - win->set(obj_name, new Lines(points)); + win->set(obj_name, makePtr(points)); updateWindow(win_name); #endif } @@ -614,7 +614,7 @@ void setObjectPosition(const String& win_name, const String& obj_name, const Vec CV_Error(cv::Error::OpenGlNotSupported, "The library is compiled without OpenGL support"); #else Window* win = getWindow(win_name); - Object* obj = win->get(obj_name); + Ptr obj = win->get(obj_name); if (!obj) CV_Error(cv::Error::StsObjectNotFound, "Object not found"); obj->setPosition(position); @@ -632,7 +632,7 @@ void setObjectRotation(const String& win_name, const String& obj_name, const Vec CV_Error(cv::Error::OpenGlNotSupported, "The library is compiled without OpenGL support"); #else Window* win = getWindow(win_name); - Object* obj = win->get(obj_name); + Ptr obj = win->get(obj_name); if (!obj) CV_Error(cv::Error::StsObjectNotFound, "Object not found"); obj->setRotation(rotation); @@ -761,24 +761,12 @@ Window::Window(const String& name_) Mat points_mat = Mat(Size(6, 6), CV_32F, points); - this->crosshair = new Lines(points_mat); + this->crosshair = makePtr(points_mat); this->shaders[this->crosshair->getShaderName()] = this->crosshair->buildShader(); this->crosshair->setShader(this->shaders[this->crosshair->getShaderName()]); - - this->grid = nullptr; } -Window::~Window() -{ - delete this->crosshair; - if (this->grid) - delete this->grid; - - for (auto obj : this->objects) - delete obj.second; -} - -Object* Window::get(const String& obj_name) +Ptr Window::get(const String& obj_name) { auto it = this->objects.find(obj_name); if (it == this->objects.end()) @@ -786,14 +774,12 @@ Object* Window::get(const String& obj_name) return it->second; } -void Window::set(const String& obj_name, Object* obj) +void Window::set(const String& obj_name, const Ptr& obj) { auto it = this->objects.find(obj_name); if (it != this->objects.end() && it->second != obj) { - delete it->second; - - if (obj == nullptr) + if (!obj) this->objects.erase(it); else it->second = obj; @@ -972,12 +958,11 @@ void Window::setGridVisible(bool visible) { if (this->grid) // already shown; don't overwrite (and leak) the existing grid return; - this->grid = new Lines(Mat(4096, 6, CV_32F), 0); + this->grid = makePtr(Mat(4096, 6, CV_32F), 0); this->grid->setShader(this->shaders[this->grid->getShaderName()]); } else if (this->grid) { - delete this->grid; this->grid = nullptr; } } @@ -993,7 +978,7 @@ void Window::draw() if (this->grid) { - static_cast(this->grid)->update(getGridVertices(this->view)); + static_cast(this->grid.get())->update(getGridVertices(this->view)); this->grid->draw(this->view, this->sun); } else diff --git a/modules/ptcloud/src/viz3d/viz3d_private.hpp b/modules/ptcloud/src/viz3d/viz3d_private.hpp index b5c1e8e068..c1774b11e7 100644 --- a/modules/ptcloud/src/viz3d/viz3d_private.hpp +++ b/modules/ptcloud/src/viz3d/viz3d_private.hpp @@ -95,10 +95,9 @@ class Window { public: Window(const String& name); - ~Window(); - Object* get(const String& obj_name); - void set(const String& obj_name, Object* obj); + Ptr get(const String& obj_name); + void set(const String& obj_name, const Ptr& obj); void setSun(const Vec3f& direction, const Vec3f& ambient, const Vec3f& diffuse); void setSky(const Vec3f& color); @@ -120,9 +119,9 @@ private: int l_mouse_x; int l_mouse_y; - Object* crosshair; - Object* grid; - std::map objects; + Ptr crosshair; + Ptr grid; + std::map> objects; std::map shaders; };