Fix -Wconversion warnings (and a few others) in QGLViewer

This commit is contained in:
Laurent Rineau 2018-06-05 14:22:26 +02:00
parent d108f920d2
commit 1f646405e8
5 changed files with 72 additions and 61 deletions

View File

@ -1948,7 +1948,7 @@ int unProject(GLdouble winx, GLdouble winy, GLdouble winz, GLdouble *modelview,
CGAL_INLINE_FUNCTION
Vec Camera::projectedCoordinatesOf(const Vec& src, const Frame* frame) const
{
GLdouble x,y,z;
GLdouble x = 0.f, y = 0.f, z = 0.f;
static GLint viewport[4];
getViewport(viewport);
@ -1990,7 +1990,7 @@ Vec Camera::projectedCoordinatesOf(const Vec& src, const Frame* frame) const
CGAL_INLINE_FUNCTION
Vec Camera::unprojectedCoordinatesOf(const Vec& src, const Frame* frame) const
{
GLdouble x,y,z;
GLdouble x = 0.f, y = 0.f, z = 0.f;
static GLint viewport[4];
getViewport(viewport);
unProject(src.x,src.y,src.z, modelViewMatrix_, projectionMatrix_, viewport, &x,&y,&z);
@ -2480,8 +2480,8 @@ void Camera::setFrustum(double frustum[6])
double B = (r+l)/(r-l);
double C = 2*n/(t-b);
double D = (t+b)/(t-b);
float E = -(f+n)/(f-n);
float F = -2*(f*n)/(f-n);
double E = -(f+n)/(f-n);
double F = -2*(f*n)/(f-n);
projectionMatrix_[0] = A; projectionMatrix_[4] = 0; projectionMatrix_[8] = B ; projectionMatrix_[12] = 0;
projectionMatrix_[1] = 0; projectionMatrix_[5] = C; projectionMatrix_[9] = D ; projectionMatrix_[13] = 0;
projectionMatrix_[2] = 0; projectionMatrix_[6] = 0; projectionMatrix_[10] = E ; projectionMatrix_[14] = F;
@ -2493,8 +2493,8 @@ void Camera::setFrustum(double frustum[6])
double B = -(r+l)/(r-l);
double C = 2/(t-b);
double D = -(t+b)/(t-b);
float E = -(f+n)/(f-n);
float F = -2/(f-n);
double E = -(f+n)/(f-n);
double F = -2/(f-n);
projectionMatrix_[0] = A; projectionMatrix_[1] = 0; projectionMatrix_[2] = 0 ; projectionMatrix_[3] = 0;
projectionMatrix_[4] = 0; projectionMatrix_[5] = C; projectionMatrix_[6] = 0 ; projectionMatrix_[7] = 0;
projectionMatrix_[8] = 0; projectionMatrix_[9] = 0; projectionMatrix_[10] = F ; projectionMatrix_[11] = 0;

View File

@ -1137,7 +1137,7 @@ void Frame::alignWithFrame(const Frame *const frame, bool move,
rotate(rotation().inverse() * Quaternion(axis, angle) * orientation());
// Try to align an other axis direction
unsigned short d = (index[1] + 1) % 3;
unsigned short d = (unsigned short)((index[1] + 1) % 3);
Vec dir((d == 0) ? 1.0 : 0.0, (d == 1) ? 1.0 : 0.0, (d == 2) ? 1.0 : 0.0);
dir = inverseTransformOf(dir);

View File

@ -56,14 +56,14 @@ private Q_SLOTS:
{
if(currentlyFocused == imgHeight
&& ratioCheckBox->isChecked())
{imgWidth->setValue(i*ratio);}
{imgWidth->setValue(int(i*ratio));}
}
void imgWidthValueChanged(int i)
{
if(currentlyFocused == imgWidth
&& ratioCheckBox->isChecked())
{imgHeight->setValue(i/ratio);}
{imgHeight->setValue(int(i/ratio));}
}
void onFocusChanged(QWidget*, QWidget* now)

View File

@ -218,7 +218,10 @@ public Q_SLOTS:
also setForegroundColor(). */
void setBackgroundColor(const QColor &color) {
backgroundColor_ = color;
glClearColor(color.redF(), color.greenF(), color.blueF(), color.alphaF());
glClearColor(GLclampf(color.redF()),
GLclampf(color.greenF()),
GLclampf(color.blueF()),
GLclampf(color.alphaF()));
}
/*! Sets the foregroundColor() of the viewer, used to draw visual hints. See
* also setBackgroundColor(). */

View File

@ -493,10 +493,10 @@ void CGAL::QGLViewer::postDraw() {
}
// Restore foregroundColor
float color[4];
color[0] = foregroundColor().red() / 255.0f;
color[1] = foregroundColor().green() / 255.0f;
color[2] = foregroundColor().blue() / 255.0f;
GLfloat color[4];
color[0] = GLfloat(foregroundColor().red()) / 255.0f;
color[1] = GLfloat(foregroundColor().green()) / 255.0f;
color[2] = GLfloat(foregroundColor().blue()) / 255.0f;
color[3] = 1.0f;
glMaterialfv(GL_FRONT_AND_BACK, GL_AMBIENT_AND_DIFFUSE, color);
glDisable(GL_LIGHTING);
@ -818,7 +818,7 @@ CGAL_INLINE_FUNCTION
void CGAL::QGLViewer::renderText(double x, double y, double z, const QString &str,
const QFont &font) {
const Vec proj = camera_->projectedCoordinatesOf(Vec(x, y, z));
renderText(proj.x, proj.y, str, font);
renderText(int(proj.x), int(proj.y), str, font);
}
#endif
@ -2817,7 +2817,7 @@ void CGAL::QGLViewer::getWheelActionBinding(MouseHandler handler, MouseAction ac
return;
}
key = ::Qt::Key(-1);
key = ::Qt::Key_unknown;
modifiers = ::Qt::NoModifier;
}
@ -3094,7 +3094,7 @@ void CGAL::QGLViewer::drawVisualHints() {
QMatrix4x4 mvMatrix;
for(int i=0; i < 16; i++)
{
mvMatrix.data()[i] = camera()->orientation().inverse().matrix()[i];
mvMatrix.data()[i] = float(camera()->orientation().inverse().matrix()[i]);
}
rendering_program.setUniformValue("mvp_matrix", mvpMatrix);
rendering_program.setUniformValue("color", QColor(::Qt::lightGray));
@ -3117,7 +3117,7 @@ void CGAL::QGLViewer::drawVisualHints() {
camera()->setType(CGAL::qglviewer::Camera::ORTHOGRAPHIC);
for(int i=0; i < 16; i++)
{
mvMatrix.data()[i] = camera()->orientation().inverse().matrix()[i];
mvMatrix.data()[i] = float(camera()->orientation().inverse().matrix()[i]);
}
mvpMatrix.setToIdentity();
mvpMatrix.ortho(-1,1,-1,1,-1,1);
@ -3151,8 +3151,8 @@ void CGAL::QGLViewer::drawVisualHints() {
std::vector<float> vertices;
for(int i=0; i< 4; ++i)
{
float x = (pow(-1, i)*(1-i/2));
float y = (pow(-1, i)*(i/2));
float x = float(std::pow(-1, i)*(1-i/2));
float y = float(std::pow(-1, i)*(i/2));
vertices.push_back(x);
vertices.push_back(y);
vertices.push_back(0);
@ -3168,8 +3168,10 @@ void CGAL::QGLViewer::drawVisualHints() {
mvpMatrix.ortho(-1,1,-1,1,-1,1);
size=30*devicePixelRatio();
rendering_program.setUniformValue("mvp_matrix", mvpMatrix);
glViewport((camera()->projectedCoordinatesOf(camera()->pivotPoint()).x-size/2)*devicePixelRatio(), (height() - camera()->projectedCoordinatesOf(camera()->pivotPoint()).y-size/2)*devicePixelRatio(), size, size);
glScissor ((camera()->projectedCoordinatesOf(camera()->pivotPoint()).x-size/2)*devicePixelRatio(), (height() - camera()->projectedCoordinatesOf(camera()->pivotPoint()).y-size/2)*devicePixelRatio(), size, size);
glViewport(GLint((camera()->projectedCoordinatesOf(camera()->pivotPoint()).x-size/2)*devicePixelRatio()),
GLint((height() - camera()->projectedCoordinatesOf(camera()->pivotPoint()).y-size/2)*devicePixelRatio()), size, size);
glScissor (GLint((camera()->projectedCoordinatesOf(camera()->pivotPoint()).x-size/2)*devicePixelRatio()),
GLint((height() - camera()->projectedCoordinatesOf(camera()->pivotPoint()).y-size/2)*devicePixelRatio()), size, size);
rendering_program.setUniformValue("color", QColor(::Qt::black));
glLineWidth(3.0);
glDrawArrays(GL_LINES, 0, static_cast<GLsizei>(4));
@ -3214,18 +3216,21 @@ CGAL_INLINE_FUNCTION
void CGAL::QGLViewer::drawArrow(double r,double R, int prec, CGAL::qglviewer::Vec from,
CGAL::qglviewer::Vec to, CGAL::qglviewer::Vec color,
std::vector<float> &data) {
using std::cos;
using std::sin;
using std::acos;
CGAL::qglviewer::Vec temp = to-from;
QVector3D dir = QVector3D(temp.x, temp.y, temp.z);
QVector3D dir = QVector3D(float(temp.x), float(temp.y), float(temp.z));
QMatrix4x4 mat;
mat.setToIdentity();
mat.translate(from.x, from.y, from.z);
mat.translate(float(from.x), float(from.y), float(from.z));
mat.scale(dir.length());
dir.normalize();
float angle = 0.0;
if(std::sqrt((dir.x()*dir.x()+dir.y()*dir.y())) > 1)
angle = 90.0f;
else
angle =acos(dir.y()/std::sqrt(dir.x()*dir.x()+dir.y()*dir.y()+dir.z()*dir.z()))*180.0/CGAL_PI;
angle = float(acos(dir.y()/std::sqrt(dir.lengthSquared()))*180.0/CGAL_PI);
QVector3D axis;
axis = QVector3D(dir.z(), 0, -dir.x());
@ -3268,7 +3273,7 @@ void CGAL::QGLViewer::drawArrow(double r,double R, int prec, CGAL::qglviewer::Ve
data.push_back((float)color.y);
data.push_back((float)color.z);
//point C1
D = (d+360/prec)*CGAL_PI/180.0;
D = float((d+360/prec)*CGAL_PI/180.0);
p = QVector4D(Rf* sin(D), 0.66f, Rf* cos(D), 1.f);
n = QVector4D(sin(D), sin(a), cos(D), 1.0);
pR = mat*p;
@ -3292,7 +3297,7 @@ void CGAL::QGLViewer::drawArrow(double r,double R, int prec, CGAL::qglviewer::Ve
for(int d = 0; d<360; d+= 360/prec)
{
//point A1
double D = d*CGAL_PI/180.0;
float D = float(d*CGAL_PI/180.0);
QVector4D p(rf*sin(D), 0.66f, rf*cos(D), 1.f);
QVector4D n(sin(D), 0.f, cos(D), 1.f);
QVector4D pR = mat*p;
@ -3304,9 +3309,9 @@ void CGAL::QGLViewer::drawArrow(double r,double R, int prec, CGAL::qglviewer::Ve
data.push_back(nR.x());
data.push_back(nR.y());
data.push_back(nR.z());
data.push_back(color.x);
data.push_back(color.y);
data.push_back(color.z);
data.push_back(float(color.x));
data.push_back(float(color.y));
data.push_back(float(color.z));
//point B1
p = QVector4D(rf * sin(D),0,rf*cos(D), 1.0);
n = QVector4D(sin(D), 0, cos(D), 1.0);
@ -3320,11 +3325,11 @@ void CGAL::QGLViewer::drawArrow(double r,double R, int prec, CGAL::qglviewer::Ve
data.push_back(nR.x());
data.push_back(nR.y());
data.push_back(nR.z());
data.push_back(color.x);
data.push_back(color.y);
data.push_back(color.z);
data.push_back(float(color.x));
data.push_back(float(color.y));
data.push_back(float(color.z));
//point C1
D = (d+360/prec)*CGAL_PI/180.0;
D = float((d+360/prec)*CGAL_PI/180.0);
p = QVector4D(rf * sin(D),0,rf*cos(D), 1.0);
n = QVector4D(sin(D), 0, cos(D), 1.0);
pR = mat*p;
@ -3335,11 +3340,11 @@ void CGAL::QGLViewer::drawArrow(double r,double R, int prec, CGAL::qglviewer::Ve
data.push_back(nR.x());
data.push_back(nR.y());
data.push_back(nR.z());
data.push_back(color.x);
data.push_back(color.y);
data.push_back(color.z);
data.push_back(float(color.x));
data.push_back(float(color.y));
data.push_back(float(color.z));
//point A2
D = (d+360/prec)*CGAL_PI/180.0;
D = float((d+360/prec)*CGAL_PI/180.0);
p = QVector4D(rf * sin(D),0,rf*cos(D), 1.0);
n = QVector4D(sin(D), 0, cos(D), 1.0);
@ -3351,9 +3356,9 @@ void CGAL::QGLViewer::drawArrow(double r,double R, int prec, CGAL::qglviewer::Ve
data.push_back(nR.x());
data.push_back(nR.y());
data.push_back(nR.z());
data.push_back((float)color.x);
data.push_back((float)color.y);
data.push_back((float)color.z);
data.push_back(float(color.x));
data.push_back(float(color.y));
data.push_back(float(color.z));
//point B2
p = QVector4D(rf * sin(D), 0.66f, rf*cos(D), 1.f);
n = QVector4D(sin(D), 0, cos(D), 1.0);
@ -3365,11 +3370,11 @@ void CGAL::QGLViewer::drawArrow(double r,double R, int prec, CGAL::qglviewer::Ve
data.push_back(nR.x());
data.push_back(nR.y());
data.push_back(nR.z());
data.push_back((float)color.x);
data.push_back((float)color.y);
data.push_back((float)color.z);
data.push_back(float(color.x));
data.push_back(float(color.y));
data.push_back(float(color.z));
//point C2
D = d*CGAL_PI/180.0;
D = float(d*CGAL_PI/180.0);
p = QVector4D(rf * sin(D), 0.66f, rf*cos(D), 1.f);
n = QVector4D(sin(D), 0.f, cos(D), 1.f);
pR = mat*p;
@ -3380,9 +3385,9 @@ void CGAL::QGLViewer::drawArrow(double r,double R, int prec, CGAL::qglviewer::Ve
data.push_back(nR.x());
data.push_back(nR.y());
data.push_back(nR.z());
data.push_back(color.x);
data.push_back(color.y);
data.push_back(color.z);
data.push_back(float(color.x));
data.push_back(float(color.y));
data.push_back(float(color.z));
}
}
@ -3403,7 +3408,7 @@ void CGAL::QGLViewer::drawAxis(qreal length) {
rendering_program_light.bind();
vaos[AXIS].bind();
vbos[Axis].bind();
vbos[Axis].allocate(data.data(), static_cast<int>(data.size()) * sizeof(float));
vbos[Axis].allocate(data.data(), static_cast<int>(data.size() * sizeof(float)));
rendering_program_light.enableAttributeArray("vertex");
rendering_program_light.setAttributeBuffer("vertex",GL_FLOAT,0,3,
static_cast<int>(9*sizeof(float)));
@ -3432,22 +3437,22 @@ void CGAL::QGLViewer::drawGrid(qreal size, int nbSubdivisions) {
std::vector<float> v_Grid;
for (int i=0; i<=nbSubdivisions; ++i)
{
const float pos = size*(2.0*i/nbSubdivisions-1.0);
const float pos = float(size*(2.0*i/nbSubdivisions-1.0));
v_Grid.push_back(pos);
v_Grid.push_back(-size);
v_Grid.push_back(0.0);
v_Grid.push_back(float(-size));
v_Grid.push_back(0.f);
v_Grid.push_back(pos);
v_Grid.push_back(+size);
v_Grid.push_back(0.0);
v_Grid.push_back(float(+size));
v_Grid.push_back(0.f);
v_Grid.push_back(-size);
v_Grid.push_back(float(-size));
v_Grid.push_back(pos);
v_Grid.push_back(0.0);
v_Grid.push_back(0.f);
v_Grid.push_back( size);
v_Grid.push_back( float(size));
v_Grid.push_back( pos);
v_Grid.push_back( 0.0);
v_Grid.push_back( 0.f);
}
rendering_program.bind();
vaos[GRID].bind();
@ -3471,7 +3476,7 @@ void CGAL::QGLViewer::drawGrid(qreal size, int nbSubdivisions) {
rendering_program_light.bind();
vaos[GRID_AXIS].bind();
vbos[Grid_axis].bind();
vbos[Grid_axis].allocate(d_axis.data(), static_cast<int>(d_axis.size()) * sizeof(float));
vbos[Grid_axis].allocate(d_axis.data(), static_cast<int>(d_axis.size() * sizeof(float)));
rendering_program_light.enableAttributeArray("vertex");
rendering_program_light.setAttributeBuffer("vertex",GL_FLOAT,0,3,
static_cast<int>(9*sizeof(float)));
@ -4013,7 +4018,10 @@ QImage* CGAL::QGLViewer::takeSnapshot( CGAL::qglviewer::SnapShotBackground back
for (int j=0; j<nbY; j++)
{
fbo.bind();
glClearColor(backgroundColor().redF(), backgroundColor().greenF(), backgroundColor().blueF(), alpha);
glClearColor(GLfloat(backgroundColor().redF()),
GLfloat(backgroundColor().greenF()),
GLfloat(backgroundColor().blueF()),
alpha);
double frustum[6];
frustum[0]= -xMin + i*deltaX;
frustum[1]= -xMin + (i+1)*deltaX ;