1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72
|
//##########################################################################
//# #
//# CLOUDCOMPARE #
//# #
//# This program is free software; you can redistribute it and/or modify #
//# it under the terms of the GNU General Public License as published by #
//# the Free Software Foundation; version 2 or later of the License. #
//# #
//# This program is distributed in the hope that it will be useful, #
//# but WITHOUT ANY WARRANTY; without even the implied warranty of #
//# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
//# GNU General Public License for more details. #
//# #
//# COPYRIGHT: EDF R&D / TELECOM ParisTech (ENST-TSI) #
//# #
//##########################################################################
#ifndef CC_POINT_PICKING_GENERIC_INTERFACE_HEADER
#define CC_POINT_PICKING_GENERIC_INTERFACE_HEADER
//Local
#include "ccOverlayDialog.h"
#include "ccCommon.h"
#include "ccPickingListener.h"
//CCLib
#include <CCGeom.h>
//system
#include <vector>
class ccGLWindow;
class ccPointCloud;
class ccHObject;
class ccPickingHub;
/** Generic interface for any dialog/graphical interactor that relies on point picking.
**/
class ccPointPickingGenericInterface : public ccOverlayDialog, public ccPickingListener
{
Q_OBJECT
public:
//! Default constructor
explicit ccPointPickingGenericInterface(ccPickingHub* pickingHub, QWidget* parent = nullptr);
//! Destructor
~ccPointPickingGenericInterface() override = default;
//inherited from ccOverlayDialog
bool linkWith(ccGLWindow* win) override;
bool start() override;
void stop(bool state) override;
//! Inherited from ccPickingListener
void onItemPicked(const PickedItem& pi) override;
protected:
//! Generic method to process picked points
/** \param cloud picked point cloud
\param pointIndex point index in cloud
\param x picked pixel X position
\param y picked pixel Y position
**/
virtual void processPickedPoint(ccPointCloud* cloud, unsigned pointIndex, int x, int y) = 0;
//! Picking hub
ccPickingHub* m_pickingHub;
};
#endif
|