Visual Servoing Platform  version 3.3.0 under development (2020-02-17)
vpDisplay.cpp
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 #include <limits>
41 
42 #include <visp3/core/vpDisplay.h>
43 #include <visp3/core/vpDisplayException.h>
44 #include <visp3/core/vpImageConvert.h>
45 
46 #include <visp3/core/vpMath.h>
47 #include <visp3/core/vpMeterPixelConversion.h>
48 #include <visp3/core/vpPoint.h>
49 
59  : m_displayHasBeenInitialized(false), m_windowXPosition(0), m_windowYPosition(0), m_width(0), m_height(0), m_title(),
60  m_scale(1), m_scaleType(SCALE_DEFAULT)
61 {
62 }
63 
71 {
72 }
73 
78 
145 {
146  if (Isrc.display != NULL) {
147  (Isrc.display)->getImage(Idest);
148  } else {
149  vpImageConvert::convert(Isrc, Idest);
150  }
151 }
152 
218 {
219  if (Isrc.display != NULL) {
220  (Isrc.display)->getImage(Idest);
221  } else {
222  Idest = Isrc;
223  }
224 }
225 
231 void vpDisplay::setDownScalingFactor(unsigned int scale)
232 {
234  m_scale = scale;
235  else {
236  std::cout << "Warning: Cannot apply the down scaling factor " << scale
237  << " to the display window since the display is initialized yet..." << std::endl;
238  }
239 }
240 
246 unsigned int vpDisplay::computeAutoScale(unsigned int width, unsigned int height)
247 {
248  unsigned int screen_width, screen_height;
249  getScreenSize(screen_width, screen_height);
250  double wscale = (std::max)(1., ceil(2. * (double)width / (double)screen_width));
251  double hscale = (std::max)(1., ceil(2. * (double)height / (double)screen_height));
252  unsigned int scale = (unsigned int)(std::max)(1u, (std::max)((unsigned int)wscale, (unsigned int)hscale));
253  return scale;
254 }
255 
259 void vpDisplay::setScale(vpScaleType scaleType, unsigned int width, unsigned int height)
260 {
261  switch (scaleType) {
263  setDownScalingFactor(computeAutoScale(width, height));
264  break;
266  case vpDisplay::SCALE_1:
267  break;
268  case vpDisplay::SCALE_2:
270  break;
271  case vpDisplay::SCALE_3:
273  break;
274  case vpDisplay::SCALE_4:
276  break;
277  case vpDisplay::SCALE_5:
279  break;
280  case vpDisplay::SCALE_6:
282  break;
283  case vpDisplay::SCALE_7:
285  break;
286  case vpDisplay::SCALE_8:
288  break;
289  case vpDisplay::SCALE_9:
291  break;
292  case vpDisplay::SCALE_10:
294  break;
295  }
296 }
297 
325 {
327  m_scaleType = scaleType;
328 }
unsigned int m_height
Definition: vpDisplay.h:210
vpDisplay * display
Definition: vpImage.h:142
int m_windowYPosition
display position
Definition: vpDisplay.h:208
Class that defines generic functionnalities for display.
Definition: vpDisplay.h:171
unsigned int computeAutoScale(unsigned int width, unsigned int height)
Definition: vpDisplay.cpp:246
static void convert(const vpImage< unsigned char > &src, vpImage< vpRGBa > &dest)
virtual void setDownScalingFactor(unsigned int scale)
Definition: vpDisplay.cpp:231
bool m_displayHasBeenInitialized
display has been initialized
Definition: vpDisplay.h:204
int m_windowXPosition
display position
Definition: vpDisplay.h:206
unsigned int m_scale
Definition: vpDisplay.h:212
void setScale(vpScaleType scaleType, unsigned int width, unsigned int height)
Definition: vpDisplay.cpp:259
vpScaleType m_scaleType
Definition: vpDisplay.h:213
std::string m_title
Definition: vpDisplay.h:211
virtual ~vpDisplay()
Definition: vpDisplay.cpp:77
static void getImage(const vpImage< unsigned char > &Is, vpImage< vpRGBa > &Id)
Definition: vpDisplay.cpp:144
unsigned int m_width
Definition: vpDisplay.h:209