mirror of
https://github.com/YACReader/yacreader
synced 2025-06-04 01:28:55 -04:00
Fix code formatting.
This commit is contained in:
parent
bcba08d344
commit
fb2684292b
@ -1065,15 +1065,11 @@ void YACReaderFlowGL::keyPressEvent(QKeyEvent *event)
|
|||||||
|
|
||||||
void YACReaderFlowGL::mousePressEvent(QMouseEvent *event)
|
void YACReaderFlowGL::mousePressEvent(QMouseEvent *event)
|
||||||
{
|
{
|
||||||
if(event->button() == Qt::LeftButton)
|
if (event->button() == Qt::LeftButton) {
|
||||||
{
|
|
||||||
QVector3D intersection = getPlaneIntersection(event->x(), event->y(), images[currentSelected]);
|
QVector3D intersection = getPlaneIntersection(event->x(), event->y(), images[currentSelected]);
|
||||||
if((intersection.x() > 0.5 && !flowRightToLeft) || (intersection.x() < -0.5 && flowRightToLeft))
|
if ((intersection.x() > 0.5 && !flowRightToLeft) || (intersection.x() < -0.5 && flowRightToLeft)) {
|
||||||
{
|
|
||||||
showNext();
|
showNext();
|
||||||
}
|
} else if ((intersection.x() < -0.5 && !flowRightToLeft) || (intersection.x() > 0.5 && flowRightToLeft)) {
|
||||||
else if((intersection.x() < -0.5 && !flowRightToLeft) || (intersection.x() > 0.5 && flowRightToLeft) )
|
|
||||||
{
|
|
||||||
showPrevious();
|
showPrevious();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -1086,12 +1082,50 @@ void YACReaderFlowGL::mouseDoubleClickEvent(QMouseEvent *event)
|
|||||||
{
|
{
|
||||||
QVector3D intersection = getPlaneIntersection(event->x(), event->y(), images[currentSelected]);
|
QVector3D intersection = getPlaneIntersection(event->x(), event->y(), images[currentSelected]);
|
||||||
|
|
||||||
if(intersection.x() < 0.5 && intersection.x() > -0.5)
|
if (intersection.x() < 0.5 && intersection.x() > -0.5) {
|
||||||
{
|
|
||||||
emit selected(centerIndex());
|
emit selected(centerIndex());
|
||||||
event->accept();
|
event->accept();
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QVector3D YACReaderFlowGL::getPlaneIntersection(int x, int y, YACReader3DImage plane)
|
||||||
|
{
|
||||||
|
// get viewport and matrices
|
||||||
|
// TODO: these should be cached!!!
|
||||||
|
GLint viewport[4];
|
||||||
|
QMatrix4x4 m_modelview;
|
||||||
|
QMatrix4x4 m_projection;
|
||||||
|
makeCurrent();
|
||||||
|
glGetIntegerv(GL_VIEWPORT, viewport);
|
||||||
|
glGetFloatv(GL_MODELVIEW_MATRIX, m_modelview.data());
|
||||||
|
glGetFloatv(GL_PROJECTION_MATRIX, m_projection.data());
|
||||||
doneCurrent();
|
doneCurrent();
|
||||||
|
|
||||||
|
//create the picking ray
|
||||||
|
QVector3D ray_origin(x * devicePixelRatio(), y * devicePixelRatio(), 0);
|
||||||
|
QVector3D ray_end(x * devicePixelRatio(), y * devicePixelRatio(), 1.0);
|
||||||
|
|
||||||
|
// TODO: These should be cached in the class
|
||||||
|
|
||||||
|
ray_origin = ray_origin.unproject(m_modelview, m_projection, QRect(viewport[0], viewport[1], viewport[2], viewport[3]));
|
||||||
|
ray_end = ray_end.unproject(m_modelview, m_projection, QRect(viewport[0], viewport[1], viewport[2], viewport[3]));
|
||||||
|
|
||||||
|
QVector3D ray_vector = ray_end - ray_origin;
|
||||||
|
|
||||||
|
//calculate the plane vectors
|
||||||
|
QVector3D plane_origin((plane.width / 2) * -1, -0.5, 0);
|
||||||
|
QVector3D plane_vektor_1 = QVector3D(plane.width / 2, -0.5, 0) - plane_origin;
|
||||||
|
QVector3D plane_vektor_2 = QVector3D((plane.width / 2) * -1, -0.5 * plane.height, 0) - plane_origin;
|
||||||
|
|
||||||
|
//get the intersection using Cramer's rule. We only x for the line, not the plane
|
||||||
|
double intersection_LES_determinant = ((plane_vektor_1.x() * plane_vektor_2.y() * (-1) * ray_vector.z()) + (plane_vektor_2.x() * (-1) * ray_vector.y() * plane_vektor_1.z()) + ((-1) * ray_vector.x() * plane_vektor_1.y() * plane_vektor_2.z()) - ((-1) * ray_vector.x() * plane_vektor_2.y() * plane_vektor_1.z()) - (plane_vektor_1.x() * (-1) * ray_vector.y() * plane_vektor_2.z()) - (plane_vektor_2.x() * plane_vektor_1.y() * (-1) * ray_vector.z()));
|
||||||
|
|
||||||
|
QVector3D det = ray_origin - plane_origin;
|
||||||
|
|
||||||
|
double intersection_ray_determinant = ((plane_vektor_1.x() * plane_vektor_2.y() * det.z()) + (plane_vektor_2.x() * det.y() * plane_vektor_1.z()) + (det.x() * plane_vektor_1.y() * plane_vektor_2.z()) - (det.x() * plane_vektor_2.y() * plane_vektor_1.z()) - (plane_vektor_1.x() * det.y() * plane_vektor_2.z()) - (plane_vektor_2.x() * plane_vektor_1.y() * det.z()));
|
||||||
|
|
||||||
|
//return the intersection point
|
||||||
|
return ray_origin + ray_vector * (intersection_ray_determinant / intersection_LES_determinant);
|
||||||
}
|
}
|
||||||
|
|
||||||
YACReaderComicFlowGL::YACReaderComicFlowGL(QWidget *parent, struct Preset p)
|
YACReaderComicFlowGL::YACReaderComicFlowGL(QWidget *parent, struct Preset p)
|
||||||
|
@ -266,6 +266,7 @@ public slots:
|
|||||||
void render();
|
void render();
|
||||||
|
|
||||||
//void paintEvent(QPaintEvent *event);
|
//void paintEvent(QPaintEvent *event);
|
||||||
|
QVector3D getPlaneIntersection(int x, int y, YACReader3DImage plane);
|
||||||
void mouseDoubleClickEvent(QMouseEvent *event);
|
void mouseDoubleClickEvent(QMouseEvent *event);
|
||||||
void mousePressEvent(QMouseEvent *event);
|
void mousePressEvent(QMouseEvent *event);
|
||||||
void wheelEvent(QWheelEvent *event);
|
void wheelEvent(QWheelEvent *event);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user