Visual Servoing Platform version 3.5.0
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
68 : m_displayHasBeenInitialized(d.m_displayHasBeenInitialized), m_windowXPosition(d.m_windowXPosition),
69 m_windowYPosition(d.m_windowYPosition), m_width(d.m_width), m_height(d.m_height), m_title(d.m_title),
70 m_scale(d.m_scale), m_scaleType(d.m_scaleType)
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
231void 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
246unsigned 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
259void vpDisplay::setScale(vpScaleType scaleType, unsigned int width, unsigned int height)
260{
261 switch (scaleType) {
264 break;
267 break;
270 break;
273 break;
276 break;
279 break;
282 break;
285 break;
288 break;
291 break;
294 break;
295 }
296}
297
325{
327 m_scaleType = scaleType;
328}
Class that defines generic functionnalities for display.
Definition: vpDisplay.h:178
vpScaleType m_scaleType
Definition: vpDisplay.h:219
virtual void setDownScalingFactor(unsigned int scale)
Definition: vpDisplay.cpp:231
virtual ~vpDisplay()
Definition: vpDisplay.cpp:77
static void getImage(const vpImage< unsigned char > &Is, vpImage< vpRGBa > &Id)
Definition: vpDisplay.cpp:144
unsigned int m_scale
Definition: vpDisplay.h:218
@ SCALE_AUTO
Definition: vpDisplay.h:183
@ SCALE_DEFAULT
Definition: vpDisplay.h:204
bool m_displayHasBeenInitialized
display has been initialized
Definition: vpDisplay.h:210
unsigned int computeAutoScale(unsigned int width, unsigned int height)
Definition: vpDisplay.cpp:246
void setScale(vpScaleType scaleType, unsigned int width, unsigned int height)
Definition: vpDisplay.cpp:259
static void convert(const vpImage< unsigned char > &src, vpImage< vpRGBa > &dest)
vpDisplay * display
Definition: vpImage.h:144