implement assignment operator and copy constructor for all widgets existing

This commit is contained in:
ozantonkal
2013-07-09 14:12:49 +02:00
parent 195d60f4f8
commit 318b1c00a9
7 changed files with 193 additions and 57 deletions

View File

@@ -47,10 +47,11 @@ namespace temp_viz
bool wasStopped() const;
void showWidget(const String &id, const Widget &widget, const Affine3f &pose = Affine3f::Identity());
bool removeWidget(const String &id);
void removeWidget(const String &id);
Widget getWidget(const String &id) const;
bool setWidgetPose(const String &id, const Affine3f &pose);
bool updateWidgetPose(const String &id, const Affine3f &pose);
void setWidgetPose(const String &id, const Affine3f &pose);
void updateWidgetPose(const String &id, const Affine3f &pose);
Affine3f getWidgetPose(const String &id) const;
private:
Viz3d(const Viz3d&);

View File

@@ -31,6 +31,8 @@ namespace temp_viz
{
public:
Widget3D() {}
Widget3D(const Widget& other);
Widget3D& operator =(const Widget &other);
void setPose(const Affine3f &pose);
void updatePose(const Affine3f &pose);
@@ -49,6 +51,8 @@ namespace temp_viz
{
public:
Widget2D() {}
Widget2D(const Widget &other);
Widget2D& operator=(const Widget &other);
};
@@ -56,6 +60,8 @@ namespace temp_viz
{
public:
LineWidget(const Point3f &pt1, const Point3f &pt2, const Color &color = Color::white());
LineWidget(const Widget &other) : Widget3D(other) {}
LineWidget& operator=(const Widget &other);
void setLineWidth(float line_width);
float getLineWidth();
@@ -66,48 +72,64 @@ namespace temp_viz
public:
PlaneWidget(const Vec4f& coefs, double size = 1.0, const Color &color = Color::white());
PlaneWidget(const Vec4f& coefs, const Point3f& pt, double size = 1.0, const Color &color = Color::white());
PlaneWidget(const Widget& other) : Widget3D(other) {}
PlaneWidget& operator=(const Widget& other);
};
class CV_EXPORTS SphereWidget : public Widget3D
{
public:
SphereWidget(const cv::Point3f &center, float radius, int sphere_resolution = 10, const Color &color = Color::white());
SphereWidget(const Widget &other) : Widget3D(other) {}
SphereWidget& operator=(const Widget &other);
};
class CV_EXPORTS ArrowWidget : public Widget3D
{
public:
ArrowWidget(const Point3f& pt1, const Point3f& pt2, const Color &color = Color::white());
ArrowWidget(const Widget &other) : Widget3D(other) {}
ArrowWidget& operator=(const Widget &other);
};
class CV_EXPORTS CircleWidget : public Widget3D
{
public:
CircleWidget(const Point3f& pt, double radius, double thickness = 0.01, const Color &color = Color::white());
CircleWidget(const Widget& other) : Widget3D(other) {}
CircleWidget& operator=(const Widget &other);
};
class CV_EXPORTS CylinderWidget : public Widget3D
{
public:
CylinderWidget(const Point3f& pt_on_axis, const Point3f& axis_direction, double radius, int numsides = 30, const Color &color = Color::white());
CylinderWidget(const Widget& other) : Widget3D(other) {}
CylinderWidget& operator=(const Widget &other);
};
class CV_EXPORTS CubeWidget : public Widget3D
{
public:
CubeWidget(const Point3f& pt_min, const Point3f& pt_max, bool wire_frame = true, const Color &color = Color::white());
CubeWidget(const Widget& other) : Widget3D(other) {}
CubeWidget& operator=(const Widget &other);
};
class CV_EXPORTS CoordinateSystemWidget : public Widget3D
{
public:
CoordinateSystemWidget(double scale, const Affine3f& affine);
CoordinateSystemWidget(const Widget &other) : Widget3D(other) {}
CoordinateSystemWidget& operator=(const Widget &other);
};
class CV_EXPORTS TextWidget : public Widget2D
{
public:
TextWidget(const String &text, const Point2i &pos, int font_size = 10, const Color &color = Color::white());
TextWidget(const Widget& other) : Widget2D(other) {}
TextWidget& operator=(const Widget &other);
};
class CV_EXPORTS CloudWidget : public Widget3D
@@ -115,6 +137,9 @@ namespace temp_viz
public:
CloudWidget(InputArray _cloud, InputArray _colors);
CloudWidget(InputArray _cloud, const Color &color = Color::white());
CloudWidget(const Widget &other) : Widget3D(other) {}
CloudWidget& operator=(const Widget &other);
private:
struct CreateCloudWidget;
};
@@ -123,6 +148,9 @@ namespace temp_viz
{
public:
CloudNormalsWidget(InputArray _cloud, InputArray _normals, int level = 100, float scale = 0.02f, const Color &color = Color::white());
CloudNormalsWidget(const Widget &other) : Widget3D(other) {}
CloudNormalsWidget& operator=(const Widget &other);
private:
struct ApplyCloudNormals;
};