diff options
-rw-r--r-- | src/GLView.cc | 35 | ||||
-rw-r--r-- | src/GLView.h | 1 | ||||
-rw-r--r-- | src/QGLView.h | 1 |
3 files changed, 21 insertions, 16 deletions
diff --git a/src/GLView.cc b/src/GLView.cc index 1cfe82c..80ebdc2 100644 --- a/src/GLView.cc +++ b/src/GLView.cc @@ -363,6 +363,7 @@ void GLView::showSmallaxes() { // Fixme - this doesnt work in Vector Camera mode + float dpi = this->getDPI(); // Small axis cross in the lower left corner glDepthFunc(GL_ALWAYS); @@ -374,14 +375,14 @@ void GLView::showSmallaxes() glRotated(cam.object_rot.y(), 0.0, 1.0, 0.0); glRotated(cam.object_rot.z(), 0.0, 0.0, 1.0); - glLineWidth(1); + glLineWidth(dpi); glBegin(GL_LINES); glColor3d(1.0, 0.0, 0.0); - glVertex3d(0, 0, 0); glVertex3d(10, 0, 0); + glVertex3d(0, 0, 0); glVertex3d(10*dpi, 0, 0); glColor3d(0.0, 1.0, 0.0); - glVertex3d(0, 0, 0); glVertex3d(0, 10, 0); + glVertex3d(0, 0, 0); glVertex3d(0, 10*dpi, 0); glColor3d(0.0, 0.0, 1.0); - glVertex3d(0, 0, 0); glVertex3d(0, 0, 10); + glVertex3d(0, 0, 0); glVertex3d(0, 0, 10*dpi); glEnd(); GLdouble mat_model[16]; @@ -394,15 +395,15 @@ void GLView::showSmallaxes() glGetIntegerv(GL_VIEWPORT, viewport); GLdouble xlabel_x, xlabel_y, xlabel_z; - gluProject(12, 0, 0, mat_model, mat_proj, viewport, &xlabel_x, &xlabel_y, &xlabel_z); + gluProject(12*dpi, 0, 0, mat_model, mat_proj, viewport, &xlabel_x, &xlabel_y, &xlabel_z); xlabel_x = round(xlabel_x); xlabel_y = round(xlabel_y); GLdouble ylabel_x, ylabel_y, ylabel_z; - gluProject(0, 12, 0, mat_model, mat_proj, viewport, &ylabel_x, &ylabel_y, &ylabel_z); + gluProject(0, 12*dpi, 0, mat_model, mat_proj, viewport, &ylabel_x, &ylabel_y, &ylabel_z); ylabel_x = round(ylabel_x); ylabel_y = round(ylabel_y); GLdouble zlabel_x, zlabel_y, zlabel_z; - gluProject(0, 0, 12, mat_model, mat_proj, viewport, &zlabel_x, &zlabel_y, &zlabel_z); + gluProject(0, 0, 12*dpi, mat_model, mat_proj, viewport, &zlabel_x, &zlabel_y, &zlabel_z); zlabel_x = round(zlabel_x); zlabel_y = round(zlabel_y); glMatrixMode(GL_PROJECTION); @@ -419,18 +420,19 @@ void GLView::showSmallaxes() // r=g=b=0; // bgcol.getRgb(&r, &g, &b); // glColor3f((255.0f-r)/255.0f, (255.0f-g)/255.0f, (255.0f-b)/255.0f); + float d = 3*dpi; glColor3f(0.0f, 0.0f, 0.0f); glBegin(GL_LINES); // X Label - glVertex3d(xlabel_x-3, xlabel_y-3, 0); glVertex3d(xlabel_x+3, xlabel_y+3, 0); - glVertex3d(xlabel_x-3, xlabel_y+3, 0); glVertex3d(xlabel_x+3, xlabel_y-3, 0); + glVertex3d(xlabel_x-d, xlabel_y-d, 0); glVertex3d(xlabel_x+d, xlabel_y+d, 0); + glVertex3d(xlabel_x-d, xlabel_y+d, 0); glVertex3d(xlabel_x+d, xlabel_y-d, 0); // Y Label - glVertex3d(ylabel_x-3, ylabel_y-3, 0); glVertex3d(ylabel_x+3, ylabel_y+3, 0); - glVertex3d(ylabel_x-3, ylabel_y+3, 0); glVertex3d(ylabel_x, ylabel_y, 0); + glVertex3d(ylabel_x-d, ylabel_y-d, 0); glVertex3d(ylabel_x+d, ylabel_y+d, 0); + glVertex3d(ylabel_x-d, ylabel_y+d, 0); glVertex3d(ylabel_x, ylabel_y, 0); // Z Label - glVertex3d(zlabel_x-3, zlabel_y-3, 0); glVertex3d(zlabel_x+3, zlabel_y-3, 0); - glVertex3d(zlabel_x-3, zlabel_y+3, 0); glVertex3d(zlabel_x+3, zlabel_y+3, 0); - glVertex3d(zlabel_x-3, zlabel_y-3, 0); glVertex3d(zlabel_x+3, zlabel_y+3, 0); + glVertex3d(zlabel_x-d, zlabel_y-d, 0); glVertex3d(zlabel_x+d, zlabel_y-d, 0); + glVertex3d(zlabel_x-d, zlabel_y+d, 0); glVertex3d(zlabel_x+d, zlabel_y+d, 0); + glVertex3d(zlabel_x-d, zlabel_y-d, 0); glVertex3d(zlabel_x+d, zlabel_y+d, 0); // FIXME - depends on gimbal camera 'viewer distance'.. how to fix this // for VectorCamera? glEnd(); @@ -445,10 +447,11 @@ void GLView::showAxes() // FIXME: doesn't work under Vector Camera // Large gray axis cross inline with the model // FIXME: This is always gray - adjust color to keep contrast with background - glLineWidth(1); + float dpi = this->getDPI(); + glLineWidth(1*dpi); glColor3d(0.5, 0.5, 0.5); glBegin(GL_LINES); - double l = cam.viewer_distance/10; + double l = cam.viewer_distance*dpi/10; glVertex3d(-l, 0, 0); glVertex3d(+l, 0, 0); glVertex3d(0, -l, 0); diff --git a/src/GLView.h b/src/GLView.h index 165c634..bdd5538 100644 --- a/src/GLView.h +++ b/src/GLView.h @@ -54,6 +54,7 @@ public: virtual bool save(const char *filename) = 0; virtual std::string getRendererInfo() const = 0; + virtual float getDPI() { return 1.0f; } Renderer *renderer; Camera cam; diff --git a/src/QGLView.h b/src/QGLView.h index 12be085..7bd6415 100644 --- a/src/QGLView.h +++ b/src/QGLView.h @@ -40,6 +40,7 @@ public: else this->cam.projection = Camera::PERSPECTIVE; } std::string getRendererInfo() const; + float getDPI() { return this->devicePixelRatio(); } bool save(const char *filename); void resetView(); |