1 /*M///////////////////////////////////////////////////////////////////////////////////////
2 //
3 // IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.
4 //
5 // By downloading, copying, installing or using the software you agree to this license.
6 // If you do not agree to this license, do not download, install,
7 // copy or use the software.
8 //
9 //
10 // License Agreement
11 // For Open Source Computer Vision Library
12 //
13 // Copyright (C) 2013, OpenCV Foundation, all rights reserved.
14 // Third party copyrights are property of their respective owners.
15 //
16 // Redistribution and use in source and binary forms, with or without modification,
17 // are permitted provided that the following conditions are met:
18 //
19 // * Redistribution's of source code must retain the above copyright notice,
20 // this list of conditions and the following disclaimer.
21 //
22 // * Redistribution's in binary form must reproduce the above copyright notice,
23 // this list of conditions and the following disclaimer in the documentation
24 // and/or other materials provided with the distribution.
25 //
26 // * The name of the copyright holders may not be used to endorse or promote products
27 // derived from this software without specific prior written permission.
28 //
29 // This software is provided by the copyright holders and contributors "as is" and
30 // any express or implied warranties, including, but not limited to, the implied
31 // warranties of merchantability and fitness for a particular purpose are disclaimed.
32 // In no event shall the Intel Corporation or contributors be liable for any direct,
33 // indirect, incidental, special, exemplary, or consequential damages
34 // (including, but not limited to, procurement of substitute goods or services;
35 // loss of use, data, or profits; or business interruption) however caused
36 // and on any theory of liability, whether in contract, strict liability,
37 // or tort (including negligence or otherwise) arising in any way out of
38 // the use of this software, even if advised of the possibility of such damage.
39 //
40 // Authors:
41 // * Ozan Tonkal, ozantonkal@gmail.com
42 // * Anatoly Baksheev, Itseez Inc. myname.mysurname <> mycompany.com
43 //
44 //M*/
45
46 #include "precomp.hpp"
47
Viz3d(const String & window_name)48 cv::viz::Viz3d::Viz3d(const String& window_name) : impl_(0) { create(window_name); }
49
Viz3d(const Viz3d & other)50 cv::viz::Viz3d::Viz3d(const Viz3d& other) : impl_(other.impl_)
51 {
52 if (impl_)
53 CV_XADD(&impl_->ref_counter, 1);
54 }
55
operator =(const Viz3d & other)56 cv::viz::Viz3d& cv::viz::Viz3d::operator=(const Viz3d& other)
57 {
58 if (this != &other)
59 {
60 release();
61 impl_ = other.impl_;
62 if (impl_)
63 CV_XADD(&impl_->ref_counter, 1);
64 }
65 return *this;
66 }
67
~Viz3d()68 cv::viz::Viz3d::~Viz3d() { release(); }
69
create(const String & window_name)70 void cv::viz::Viz3d::create(const String &window_name)
71 {
72 if (impl_)
73 release();
74
75 if (VizStorage::windowExists(window_name))
76 *this = VizStorage::get(window_name);
77 else
78 {
79 impl_ = new VizImpl(window_name);
80 impl_->ref_counter = 1;
81
82 // Register the window
83 VizStorage::add(*this);
84 }
85 }
86
release()87 void cv::viz::Viz3d::release()
88 {
89 if (impl_ && CV_XADD(&impl_->ref_counter, -1) == 1)
90 {
91 delete impl_;
92 impl_ = 0;
93 }
94
95 if (impl_ && impl_->ref_counter == 1)
96 VizStorage::removeUnreferenced();
97
98 impl_ = 0;
99 }
100
spin()101 void cv::viz::Viz3d::spin() { impl_->spin(); }
spinOnce(int time,bool force_redraw)102 void cv::viz::Viz3d::spinOnce(int time, bool force_redraw) { impl_->spinOnce(time, force_redraw); }
wasStopped() const103 bool cv::viz::Viz3d::wasStopped() const { return impl_->wasStopped(); }
close()104 void cv::viz::Viz3d::close() { impl_->close(); }
105
registerKeyboardCallback(KeyboardCallback callback,void * cookie)106 void cv::viz::Viz3d::registerKeyboardCallback(KeyboardCallback callback, void* cookie)
107 { impl_->registerKeyboardCallback(callback, cookie); }
108
registerMouseCallback(MouseCallback callback,void * cookie)109 void cv::viz::Viz3d::registerMouseCallback(MouseCallback callback, void* cookie)
110 { impl_->registerMouseCallback(callback, cookie); }
111
showWidget(const String & id,const Widget & widget,const Affine3d & pose)112 void cv::viz::Viz3d::showWidget(const String &id, const Widget &widget, const Affine3d &pose) { impl_->showWidget(id, widget, pose); }
removeWidget(const String & id)113 void cv::viz::Viz3d::removeWidget(const String &id) { impl_->removeWidget(id); }
getWidget(const String & id) const114 cv::viz::Widget cv::viz::Viz3d::getWidget(const String &id) const { return impl_->getWidget(id); }
removeAllWidgets()115 void cv::viz::Viz3d::removeAllWidgets() { impl_->removeAllWidgets(); }
116
showImage(InputArray image,const Size & window_size)117 void cv::viz::Viz3d::showImage(InputArray image, const Size& window_size) { impl_->showImage(image, window_size); }
118
setWidgetPose(const String & id,const Affine3d & pose)119 void cv::viz::Viz3d::setWidgetPose(const String &id, const Affine3d &pose) { impl_->setWidgetPose(id, pose); }
updateWidgetPose(const String & id,const Affine3d & pose)120 void cv::viz::Viz3d::updateWidgetPose(const String &id, const Affine3d &pose) { impl_->updateWidgetPose(id, pose); }
getWidgetPose(const String & id) const121 cv::Affine3d cv::viz::Viz3d::getWidgetPose(const String &id) const { return impl_->getWidgetPose(id); }
122
setCamera(const Camera & camera)123 void cv::viz::Viz3d::setCamera(const Camera &camera) { impl_->setCamera(camera); }
getCamera() const124 cv::viz::Camera cv::viz::Viz3d::getCamera() const { return impl_->getCamera(); }
setViewerPose(const Affine3d & pose)125 void cv::viz::Viz3d::setViewerPose(const Affine3d &pose) { impl_->setViewerPose(pose); }
getViewerPose()126 cv::Affine3d cv::viz::Viz3d::getViewerPose() { return impl_->getViewerPose(); }
127
resetCameraViewpoint(const String & id)128 void cv::viz::Viz3d::resetCameraViewpoint(const String &id) { impl_->resetCameraViewpoint(id); }
resetCamera()129 void cv::viz::Viz3d::resetCamera() { impl_->resetCamera(); }
130
convertToWindowCoordinates(const Point3d & pt,Point3d & window_coord)131 void cv::viz::Viz3d::convertToWindowCoordinates(const Point3d &pt, Point3d &window_coord) { impl_->convertToWindowCoordinates(pt, window_coord); }
converTo3DRay(const Point3d & window_coord,Point3d & origin,Vec3d & direction)132 void cv::viz::Viz3d::converTo3DRay(const Point3d &window_coord, Point3d &origin, Vec3d &direction) { impl_->converTo3DRay(window_coord, origin, direction); }
133
getWindowSize() const134 cv::Size cv::viz::Viz3d::getWindowSize() const { return impl_->getWindowSize(); }
setWindowSize(const Size & window_size)135 void cv::viz::Viz3d::setWindowSize(const Size &window_size) { impl_->setWindowSize(window_size); }
getWindowName() const136 cv::String cv::viz::Viz3d::getWindowName() const { return impl_->getWindowName(); }
saveScreenshot(const String & file)137 void cv::viz::Viz3d::saveScreenshot(const String &file) { impl_->saveScreenshot(file); }
setWindowPosition(const Point & window_position)138 void cv::viz::Viz3d::setWindowPosition(const Point& window_position) { impl_->setWindowPosition(window_position); }
setFullScreen(bool mode)139 void cv::viz::Viz3d::setFullScreen(bool mode) { impl_->setFullScreen(mode); }
setBackgroundColor(const Color & color,const Color & color2)140 void cv::viz::Viz3d::setBackgroundColor(const Color& color, const Color& color2) { impl_->setBackgroundColor(color, color2); }
141
setBackgroundTexture(InputArray image)142 void cv::viz::Viz3d::setBackgroundTexture(InputArray image) { impl_->setBackgroundTexture(image); }
setBackgroundMeshLab()143 void cv::viz::Viz3d::setBackgroundMeshLab() {impl_->setBackgroundMeshLab(); }
144
setRenderingProperty(const String & id,int property,double value)145 void cv::viz::Viz3d::setRenderingProperty(const String &id, int property, double value) { getWidget(id).setRenderingProperty(property, value); }
getRenderingProperty(const String & id,int property)146 double cv::viz::Viz3d::getRenderingProperty(const String &id, int property) { return getWidget(id).getRenderingProperty(property); }
147
setRepresentation(int representation)148 void cv::viz::Viz3d::setRepresentation(int representation) { impl_->setRepresentation(representation); }
149
setGlobalWarnings(bool enabled)150 void cv::viz::Viz3d::setGlobalWarnings(bool enabled) { vtkObject::SetGlobalWarningDisplay(enabled ? 1 : 0); }
151