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 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
//##########################################################################
//# #
//# CLOUDCOMPARE PLUGIN: qSRA #
//# #
//# 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 #
//# #
//##########################################################################
#ifndef QSRA_MAP_GL_WINDOW_HEADER
#define QSRA_MAP_GL_WINDOW_HEADER
//qCC
#include <ccGLWindow.h>
//qCC_db
#include <ccScalarField.h>
//! 2D map display window
class ccMapWindow : public ccGLWindow
{
public:
//! Default constructor
explicit ccMapWindow(ccGLWindowParent* parent = 0)
: ccGLWindow(0, parent, true)
, m_sfForRampDisplay(0)
, m_showSF(true)
{}
//! Destructor
virtual ~ccMapWindow()
{
setAssociatedScalarField(0);
}
//! Sets associated scalar-field
/** This scalar field will be used for color ramp display.
**/
void setAssociatedScalarField(ccScalarField* sf)
{
if (m_sfForRampDisplay != sf)
{
if (m_sfForRampDisplay)
m_sfForRampDisplay->release();
m_sfForRampDisplay = sf;
if (m_sfForRampDisplay)
m_sfForRampDisplay->link();
}
}
//! Whether to show associated SF or not
void showSF(bool state) { m_showSF = state; }
//! Returns whether associated SF should be shown or not
bool sfShown() const { return m_showSF; }
//! Returns associated scalar field
ccScalarField* getAssociatedScalarField() const { return m_sfForRampDisplay; }
//inherited fro ccGLWindow
virtual void getContext(CC_DRAW_CONTEXT& context)
{
ccGLWindow::getContext(context);
if (m_showSF)
{
//override sf that will be used for color ramp display
context.sfColorScaleToDisplay = m_sfForRampDisplay;
}
}
protected:
//! Associated scalar field
ccScalarField* m_sfForRampDisplay;
//! Whether to show or not the associated SF
bool m_showSF;
};
#endif
|