Visual Servoing Platform version 3.5.0
vpDisplay.h
1/****************************************************************************
2 *
3 * ViSP, open source Visual Servoing Platform software.
4 * Copyright (C) 2005 - 2019 by Inria. All rights reserved.
5 *
6 * This software is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 * See the file LICENSE.txt at the root directory of this source
11 * distribution for additional information about the GNU GPL.
12 *
13 * For using ViSP with software that can not be combined with the GNU
14 * GPL, please contact Inria about acquiring a ViSP Professional
15 * Edition License.
16 *
17 * See http://visp.inria.fr for more information.
18 *
19 * This software was developed at:
20 * Inria Rennes - Bretagne Atlantique
21 * Campus Universitaire de Beaulieu
22 * 35042 Rennes Cedex
23 * France
24 *
25 * If you have questions regarding the use of this file, please contact
26 * Inria at visp@inria.fr
27 *
28 * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE
29 * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
30 *
31 * Description:
32 * Image display.
33 *
34 * Authors:
35 * Eric Marchand
36 * Fabien Spindler
37 *
38 *****************************************************************************/
39
40#ifndef vpDisplay_h
41#define vpDisplay_h
42
43#include <sstream>
44#include <string>
45#include <list>
46
47#include <visp3/core/vpCameraParameters.h>
48#include <visp3/core/vpColor.h>
49#include <visp3/core/vpHomogeneousMatrix.h>
50#include <visp3/core/vpImage.h>
51#include <visp3/core/vpImagePoint.h>
52#include <visp3/core/vpMouseButton.h>
53#include <visp3/core/vpRect.h>
54
177class VISP_EXPORT vpDisplay
178{
179public:
182 typedef enum {
183 SCALE_AUTO,
186 SCALE_2,
188 SCALE_3,
190 SCALE_4,
192 SCALE_5,
194 SCALE_6,
196 SCALE_7,
198 SCALE_8,
200 SCALE_9,
202 SCALE_10,
204 SCALE_DEFAULT
206 } vpScaleType;
207
208protected:
215 unsigned int m_width;
216 unsigned int m_height;
217 std::string m_title;
218 unsigned int m_scale;
220
221 void setScale(vpScaleType scaleType, unsigned int width, unsigned int height);
222
223public:
224 vpDisplay();
225 vpDisplay(const vpDisplay &d);
226 virtual ~vpDisplay();
227
230 unsigned int computeAutoScale(unsigned int width, unsigned int height);
235 unsigned int getDownScalingFactor() { return m_scale; }
240 inline unsigned int getHeight() const { return m_height; }
245 inline unsigned int getWidth() const { return m_width; }
246
251 int getWindowXPosition() const { return m_windowXPosition; }
256 int getWindowYPosition() const { return m_windowYPosition; }
257
263 inline bool isInitialised() { return m_displayHasBeenInitialized; }
264 virtual void setDownScalingFactor(unsigned int scale);
265 virtual void setDownScalingFactor(vpScaleType scaleType);
267
268#ifndef DOXYGEN_SHOULD_SKIP_THIS
275 virtual void clearDisplay(const vpColor &color = vpColor::white) = 0;
279 virtual void closeDisplay() = 0;
280
290 virtual void displayArrow(const vpImagePoint &ip1, const vpImagePoint &ip2, const vpColor &color = vpColor::white,
291 unsigned int w = 4, unsigned int h = 2, unsigned int thickness = 1) = 0;
303 virtual void displayCharString(const vpImagePoint &ip, const char *text, const vpColor &color = vpColor::green) = 0;
313 virtual void displayCircle(const vpImagePoint &center, unsigned int radius, const vpColor &color, bool fill = false,
314 unsigned int thickness = 1) = 0;
322 virtual void displayCross(const vpImagePoint &ip, unsigned int size, const vpColor &color,
323 unsigned int thickness = 1) = 0;
331 virtual void displayDotLine(const vpImagePoint &ip1, const vpImagePoint &ip2, const vpColor &color,
332 unsigned int thickness = 1) = 0;
340 virtual void displayLine(const vpImagePoint &ip1, const vpImagePoint &ip2, const vpColor &color,
341 unsigned int thickness = 1) = 0;
342
354 virtual void displayImage(const vpImage<unsigned char> &I) = 0;
355
367 virtual void displayImage(const vpImage<vpRGBa> &I) = 0;
368
369 virtual void displayImageROI(const vpImage<unsigned char> &I, const vpImagePoint &iP, unsigned int width,
370 unsigned int height) = 0;
371 virtual void displayImageROI(const vpImage<vpRGBa> &I, const vpImagePoint &iP, unsigned int width,
372 unsigned int height) = 0;
373
380 virtual void displayPoint(const vpImagePoint &ip, const vpColor &color, unsigned int thickness = 1) = 0;
381
396 virtual void displayRectangle(const vpImagePoint &topLeft, unsigned int width, unsigned int height,
397 const vpColor &color, bool fill = false, unsigned int thickness = 1) = 0;
411 virtual void displayRectangle(const vpImagePoint &topLeft, const vpImagePoint &bottomRight, const vpColor &color,
412 bool fill = false, unsigned int thickness = 1) = 0;
426 virtual void displayRectangle(const vpRect &rectangle, const vpColor &color, bool fill = false,
427 unsigned int thickness = 1) = 0;
428
433 virtual void flushDisplay() = 0;
434
439 virtual void flushDisplayROI(const vpImagePoint &iP, unsigned int width, unsigned int height) = 0;
440
441 /* Simple interface with the mouse event */
442
458 virtual bool getClick(bool blocking = true) = 0;
459
475 virtual bool getClick(vpImagePoint &ip, bool blocking = true) = 0;
494 virtual bool getClick(vpImagePoint &ip, vpMouseButton::vpMouseButtonType &button, bool blocking = true) = 0;
517 virtual bool getClickUp(vpImagePoint &ip, vpMouseButton::vpMouseButtonType &button, bool blocking = true) = 0;
518
534 virtual bool getKeyboardEvent(bool blocking = true) = 0;
554 virtual bool getKeyboardEvent(std::string &key, bool blocking = true) = 0;
565 virtual bool getPointerMotionEvent(vpImagePoint &ip) = 0;
566
577 virtual bool getPointerPosition(vpImagePoint &ip) = 0;
578
582 virtual unsigned int getScreenHeight() = 0;
587 virtual void getScreenSize(unsigned int &width, unsigned int &height) = 0;
591 virtual unsigned int getScreenWidth() = 0;
592
601 virtual void init(vpImage<unsigned char> &I, int x = -1, int y = -1, const std::string &title = "") = 0;
611 virtual void init(vpImage<vpRGBa> &I, int x = -1, int y = -1, const std::string &title = "") = 0;
612
673 virtual void init(unsigned int width, unsigned int height, int x = -1, int y = -1, const std::string &title = "") = 0;
674
688 virtual void setFont(const std::string &font) = 0;
693 virtual void setTitle(const std::string &title) = 0;
701 virtual void setWindowPosition(int x, int y) = 0;
703#endif // ifndef DOXYGEN_SHOULD_SKIP_THIS
704
709 static void close(vpImage<unsigned char> &I);
710 static void display(const vpImage<unsigned char> &I);
711 static void displayArrow(const vpImage<unsigned char> &I, const vpImagePoint &ip1, const vpImagePoint &ip2,
712 const vpColor &color = vpColor::white, unsigned int w = 4, unsigned int h = 2,
713 unsigned int thickness = 1);
714 static void displayArrow(const vpImage<unsigned char> &I, int i1, int j1, int i2, int j2,
715 const vpColor &color = vpColor::white, unsigned int w = 4, unsigned int h = 2,
716 unsigned int thickness = 1);
717 static void displayCamera(const vpImage<unsigned char> &I, const vpHomogeneousMatrix &cMo,
718 const vpCameraParameters &cam, double size, const vpColor &color, unsigned int thickness);
719 static void displayCharString(const vpImage<unsigned char> &I, const vpImagePoint &ip, const char *string,
720 const vpColor &color);
721 static void displayCharString(const vpImage<unsigned char> &I, int i, int j, const char *string,
722 const vpColor &color);
723 static void displayCircle(const vpImage<unsigned char> &I, const vpImagePoint &center, unsigned int radius,
724 const vpColor &color, bool fill = false, unsigned int thickness = 1);
725 static void displayCircle(const vpImage<unsigned char> &I, int i, int j, unsigned int radius, const vpColor &color,
726 bool fill = false, unsigned int thickness = 1);
727 static void displayCross(const vpImage<unsigned char> &I, const vpImagePoint &ip, unsigned int size,
728 const vpColor &color, unsigned int thickness = 1);
729 static void displayCross(const vpImage<unsigned char> &I, int i, int j, unsigned int size, const vpColor &color,
730 unsigned int thickness = 1);
731 static void displayDotLine(const vpImage<unsigned char> &I, const vpImagePoint &ip1, const vpImagePoint &ip2,
732 const vpColor &color, unsigned int thickness = 1);
733 static void displayDotLine(const vpImage<unsigned char> &I, int i1, int j1, int i2, int j2, const vpColor &color,
734 unsigned int thickness = 1);
735 static void displayDotLine(const vpImage<unsigned char> &I, const std::vector<vpImagePoint> &ips,
736 bool closeTheShape, const vpColor &color, unsigned int thickness = 1);
737 static void displayDotLine(const vpImage<unsigned char> &I, const std::list<vpImagePoint> &ips,
738 bool closeTheShape, const vpColor &color, unsigned int thickness = 1);
739 static void displayEllipse(const vpImage<unsigned char> &I, const vpImagePoint &center, const double &coef1,
740 const double &coef2, const double &coef3, bool use_normalized_centered_moments, const vpColor &color,
741 unsigned int thickness = 1, bool display_center = false, bool display_arc = false);
742 static void displayEllipse(const vpImage<unsigned char> &I, const vpImagePoint &center, const double &coef1,
743 const double &coef2, const double &coef3, const double &smallalpha, const double &highalpha,
744 bool use_normalized_centered_moments, const vpColor &color, unsigned int thickness = 1,
745 bool display_center = false, bool display_arc = false);
746 static void displayFrame(const vpImage<unsigned char> &I, const vpHomogeneousMatrix &cMo,
747 const vpCameraParameters &cam, double size, const vpColor &color = vpColor::none,
748 unsigned int thickness = 1, const vpImagePoint &offset = vpImagePoint(0, 0));
749 static void displayLine(const vpImage<unsigned char> &I, const vpImagePoint &ip1, const vpImagePoint &ip2,
750 const vpColor &color, unsigned int thickness = 1, bool segment = true);
751 static void displayLine(const vpImage<unsigned char> &I, int i1, int j1, int i2, int j2, const vpColor &color,
752 unsigned int thickness = 1, bool segment = true);
753 static void displayLine(const vpImage<unsigned char> &I, const std::vector<vpImagePoint> &ips,
754 bool closeTheShape, const vpColor &color, unsigned int thickness = 1);
755 static void displayLine(const vpImage<unsigned char> &I, const std::list<vpImagePoint> &ips,
756 bool closeTheShape, const vpColor &color, unsigned int thickness = 1);
757 static void displayPoint(const vpImage<unsigned char> &I, const vpImagePoint &ip, const vpColor &color,
758 unsigned int thickness = 1);
759 static void displayPoint(const vpImage<unsigned char> &I, int i, int j, const vpColor &color,
760 unsigned int thickness = 1);
761 static void displayPolygon(const vpImage<unsigned char> &I, const std::vector<vpImagePoint> &vip,
762 const vpColor &color, unsigned int thickness = 1, bool closed = true);
763 static void displayRectangle(const vpImage<unsigned char> &I, const vpImagePoint &topLeft, unsigned int width,
764 unsigned int height, const vpColor &color, bool fill = false,
765 unsigned int thickness = 1);
766 static void displayRectangle(const vpImage<unsigned char> &I, const vpImagePoint &topLeft,
767 const vpImagePoint &bottomRight, const vpColor &color, bool fill = false,
768 unsigned int thickness = 1);
769 static void displayRectangle(const vpImage<unsigned char> &I, const vpRect &rectangle, const vpColor &color,
770 bool fill = false, unsigned int thickness = 1);
771 static void displayRectangle(const vpImage<unsigned char> &I, const vpImagePoint &center, float angle,
772 unsigned int width, unsigned int height, const vpColor &color,
773 unsigned int thickness = 1);
774 static void displayRectangle(const vpImage<unsigned char> &I, int i, int j, unsigned int width, unsigned int height,
775 const vpColor &color, bool fill = false, unsigned int thickness = 1);
776 static void displayRectangle(const vpImage<unsigned char> &I, unsigned int i, unsigned int j, float angle,
777 unsigned int width, unsigned int height, const vpColor &color,
778 unsigned int thickness = 1);
779 static void displayROI(const vpImage<unsigned char> &I, const vpRect &roi);
780 static void displayText(const vpImage<unsigned char> &I, const vpImagePoint &ip, const std::string &s,
781 const vpColor &color);
782 static void displayText(const vpImage<unsigned char> &I, int i, int j, const std::string &s, const vpColor &color);
783
784 static void flush(const vpImage<unsigned char> &I);
785 static void flushROI(const vpImage<unsigned char> &I, const vpRect &roi);
786
787 static bool getClick(const vpImage<unsigned char> &I, bool blocking = true);
788 static bool getClick(const vpImage<unsigned char> &I, vpImagePoint &ip, bool blocking = true);
789 static bool getClick(const vpImage<unsigned char> &I, vpImagePoint &ip, vpMouseButton::vpMouseButtonType &button,
790 bool blocking = true);
791 static bool getClick(const vpImage<unsigned char> &I, vpMouseButton::vpMouseButtonType &button, bool blocking = true);
792 static bool getClickUp(const vpImage<unsigned char> &I, vpImagePoint &ip, vpMouseButton::vpMouseButtonType &button,
793 bool blocking = true);
794 static bool getClickUp(const vpImage<unsigned char> &I, vpMouseButton::vpMouseButtonType &button,
795 bool blocking = true);
796 static unsigned int getDownScalingFactor(const vpImage<unsigned char> &I);
797 static void getImage(const vpImage<unsigned char> &Is, vpImage<vpRGBa> &Id);
798 static bool getKeyboardEvent(const vpImage<unsigned char> &I, bool blocking = true);
799 static bool getKeyboardEvent(const vpImage<unsigned char> &I, std::string &key, bool blocking = true);
800 static bool getKeyboardEvent(const vpImage<unsigned char> &I, char *key, bool blocking = true);
801 static bool getPointerMotionEvent(const vpImage<unsigned char> &I, vpImagePoint &ip);
802 static bool getPointerPosition(const vpImage<unsigned char> &I, vpImagePoint &ip);
803
804 static void setBackground(const vpImage<unsigned char> &I, const vpColor &color);
805 static void setFont(const vpImage<unsigned char> &I, const std::string &font);
806 static void setTitle(const vpImage<unsigned char> &I, const std::string &windowtitle);
807 static void setWindowPosition(const vpImage<unsigned char> &I, int winx, int winy);
809
814 static void close(vpImage<vpRGBa> &I);
815 static void display(const vpImage<vpRGBa> &I);
816 static void displayArrow(const vpImage<vpRGBa> &I, const vpImagePoint &ip1, const vpImagePoint &ip2,
817 const vpColor &color = vpColor::white, unsigned int w = 4, unsigned int h = 2,
818 unsigned int thickness = 1);
819 static void displayArrow(const vpImage<vpRGBa> &I, int i1, int j1, int i2, int j2,
820 const vpColor &color = vpColor::white, unsigned int w = 4, unsigned int h = 2,
821 unsigned int thickness = 1);
822 static void displayCamera(const vpImage<vpRGBa> &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam,
823 double size, const vpColor &color, unsigned int thickness);
824 static void displayCharString(const vpImage<vpRGBa> &I, const vpImagePoint &ip, const char *string,
825 const vpColor &color);
826 static void displayCharString(const vpImage<vpRGBa> &I, int i, int j, const char *string, const vpColor &color);
827 static void displayCircle(const vpImage<vpRGBa> &I, const vpImagePoint &center, unsigned int radius,
828 const vpColor &color, bool fill = false, unsigned int thickness = 1);
829 static void displayCircle(const vpImage<vpRGBa> &I, int i, int j, unsigned int radius, const vpColor &color,
830 bool fill = false, unsigned int thickness = 1);
831 static void displayCross(const vpImage<vpRGBa> &I, const vpImagePoint &ip, unsigned int size, const vpColor &color,
832 unsigned int thickness = 1);
833 static void displayCross(const vpImage<vpRGBa> &I, int i, int j, unsigned int size, const vpColor &color,
834 unsigned int thickness = 1);
835 static void displayDotLine(const vpImage<vpRGBa> &I, const vpImagePoint &ip1, const vpImagePoint &ip2,
836 const vpColor &color, unsigned int thickness = 1);
837 static void displayDotLine(const vpImage<vpRGBa> &I, int i1, int j1, int i2, int j2, const vpColor &color,
838 unsigned int thickness = 1);
839 static void displayDotLine(const vpImage<vpRGBa> &I, const std::vector<vpImagePoint> &ips, bool closeTheShape,
840 const vpColor &color, unsigned int thickness = 1);
841 static void displayDotLine(const vpImage<vpRGBa> &I, const std::list<vpImagePoint> &ips, bool closeTheShape,
842 const vpColor &color, unsigned int thickness = 1);
843 static void displayEllipse(const vpImage<vpRGBa> &I, const vpImagePoint &center, const double &coef1,
844 const double &coef2, const double &coef3, bool use_centered_moments, const vpColor &color,
845 unsigned int thickness = 1, bool display_center = false, bool display_arc = false);
846 static void displayEllipse(const vpImage<vpRGBa> &I, const vpImagePoint &center, const double &coef1,
847 const double &coef2, const double &coef3, const double &theta1, const double &theta2,
848 bool use_centered_moments, const vpColor &color, unsigned int thickness = 1,
849 bool display_center = false, bool display_arc = false);
850 static void displayFrame(const vpImage<vpRGBa> &I, const vpHomogeneousMatrix &cMo, const vpCameraParameters &cam,
851 double size, const vpColor &color = vpColor::none, unsigned int thickness = 1,
852 const vpImagePoint &offset = vpImagePoint(0, 0));
853 static void displayLine(const vpImage<vpRGBa> &I, const vpImagePoint &ip1, const vpImagePoint &ip2,
854 const vpColor &color, unsigned int thickness = 1, bool segment = true);
855 static void displayLine(const vpImage<vpRGBa> &I, int i1, int j1, int i2, int j2, const vpColor &color,
856 unsigned int thickness = 1, bool segment = true);
857 static void displayLine(const vpImage<vpRGBa> &I, const std::vector<vpImagePoint> &ips, bool closeTheShape,
858 const vpColor &color, unsigned int thickness = 1);
859 static void displayLine(const vpImage<vpRGBa> &I, const std::list<vpImagePoint> &ips, bool closeTheShape,
860 const vpColor &color, unsigned int thickness = 1);
861 static void displayPoint(const vpImage<vpRGBa> &I, const vpImagePoint &ip, const vpColor &color,
862 unsigned int thickness = 1);
863 static void displayPoint(const vpImage<vpRGBa> &I, int i, int j, const vpColor &color, unsigned int thickness = 1);
864 static void displayPolygon(const vpImage<vpRGBa> &I, const std::vector<vpImagePoint> &vip, const vpColor &color,
865 unsigned int thickness = 1, bool closed = true);
866 static void displayRectangle(const vpImage<vpRGBa> &I, const vpImagePoint &topLeft, unsigned int width,
867 unsigned int height, const vpColor &color, bool fill = false,
868 unsigned int thickness = 1);
869 static void displayRectangle(const vpImage<vpRGBa> &I, const vpImagePoint &topLeft, const vpImagePoint &bottomRight,
870 const vpColor &color, bool fill = false, unsigned int thickness = 1);
871 static void displayRectangle(const vpImage<vpRGBa> &I, const vpRect &rectangle, const vpColor &color,
872 bool fill = false, unsigned int thickness = 1);
873 static void displayRectangle(const vpImage<vpRGBa> &I, const vpImagePoint &center, float angle, unsigned int width,
874 unsigned int height, const vpColor &color, unsigned int thickness = 1);
875 static void displayRectangle(const vpImage<vpRGBa> &I, int i, int j, unsigned int width, unsigned int height,
876 const vpColor &color, bool fill = false, unsigned int thickness = 1);
877 static void displayRectangle(const vpImage<vpRGBa> &I, unsigned int i, unsigned int j, float angle,
878 unsigned int width, unsigned int height, const vpColor &color,
879 unsigned int thickness = 1);
880 static void displayROI(const vpImage<vpRGBa> &I, const vpRect &roi);
881 static void displayText(const vpImage<vpRGBa> &I, const vpImagePoint &ip, const std::string &s, const vpColor &color);
882 static void displayText(const vpImage<vpRGBa> &I, int i, int j, const std::string &s, const vpColor &color);
883
884 static void flush(const vpImage<vpRGBa> &I);
885 static void flushROI(const vpImage<vpRGBa> &I, const vpRect &roi);
886
887 static bool getClick(const vpImage<vpRGBa> &I, bool blocking = true);
888 static bool getClick(const vpImage<vpRGBa> &I, vpImagePoint &ip, bool blocking = true);
889 static bool getClick(const vpImage<vpRGBa> &I, vpImagePoint &ip, vpMouseButton::vpMouseButtonType &button,
890 bool blocking = true);
891 static bool getClick(const vpImage<vpRGBa> &I, vpMouseButton::vpMouseButtonType &button, bool blocking = true);
892 static bool getClickUp(const vpImage<vpRGBa> &I, vpImagePoint &ip, vpMouseButton::vpMouseButtonType &button,
893 bool blocking = true);
894 static bool getClickUp(const vpImage<vpRGBa> &I, vpMouseButton::vpMouseButtonType &button, bool blocking = true);
895 static unsigned int getDownScalingFactor(const vpImage<vpRGBa> &I);
896 static void getImage(const vpImage<vpRGBa> &Is, vpImage<vpRGBa> &Id);
897 static bool getKeyboardEvent(const vpImage<vpRGBa> &I, bool blocking = true);
898 static bool getKeyboardEvent(const vpImage<vpRGBa> &I, std::string &key, bool blocking = true);
899 static bool getKeyboardEvent(const vpImage<vpRGBa> &I, char *key, bool blocking = true);
900 static bool getPointerMotionEvent(const vpImage<vpRGBa> &I, vpImagePoint &ip);
901 static bool getPointerPosition(const vpImage<vpRGBa> &I, vpImagePoint &ip);
902
903 static void setBackground(const vpImage<vpRGBa> &I, const vpColor &color);
904 static void setFont(const vpImage<vpRGBa> &I, const std::string &font);
905 static void setTitle(const vpImage<vpRGBa> &I, const std::string &windowtitle);
906 static void setWindowPosition(const vpImage<vpRGBa> &I, int winx, int winy);
908
909private:
911 virtual void getImage(vpImage<vpRGBa> &I) = 0;
912};
913
914#endif
Generic class defining intrinsic camera parameters.
Class to define RGB colors available for display functionnalities.
Definition: vpColor.h:158
static const vpColor white
Definition: vpColor.h:212
static const vpColor none
Definition: vpColor.h:229
static const vpColor green
Definition: vpColor.h:220
Class that defines generic functionnalities for display.
Definition: vpDisplay.h:178
unsigned int m_height
Definition: vpDisplay.h:216
vpScaleType m_scaleType
Definition: vpDisplay.h:219
unsigned int m_width
Definition: vpDisplay.h:215
int getWindowXPosition() const
Definition: vpDisplay.h:251
bool isInitialised()
Definition: vpDisplay.h:263
int m_windowXPosition
display position
Definition: vpDisplay.h:212
std::string m_title
Definition: vpDisplay.h:217
int m_windowYPosition
display position
Definition: vpDisplay.h:214
unsigned int m_scale
Definition: vpDisplay.h:218
int getWindowYPosition() const
Definition: vpDisplay.h:256
unsigned int getHeight() const
Definition: vpDisplay.h:240
bool m_displayHasBeenInitialized
display has been initialized
Definition: vpDisplay.h:210
unsigned int getDownScalingFactor()
Definition: vpDisplay.h:235
unsigned int getWidth() const
Definition: vpDisplay.h:245
Implementation of an homogeneous matrix and operations on such kind of matrices.
Class that defines a 2D point in an image. This class is useful for image processing and stores only ...
Definition: vpImagePoint.h:88
Defines a rectangle in the plane.
Definition: vpRect.h:80