Go to the documentation of this file.00001
00002 #ifdef VCL_NEEDS_PRAGMA_INTERFACE
00003 #pragma implementation
00004 #endif
00005
00006
00007
00008
00009 #include "vgui_rasterpos.h"
00010 #include <vnl/vnl_vector_fixed.h>
00011 #include <vnl/vnl_matrix_fixed.h>
00012 #include <vgui/vgui_matrix_state.h>
00013
00014
00015
00016 void vgui_rasterpos4dv(double const X[4])
00017 {
00018
00019
00020 vgui_matrix_state matrix_state;
00021
00022 GLint vp[4];
00023 glGetIntegerv(GL_VIEWPORT, vp);
00024
00025 vnl_matrix_fixed<double,4,4> T = vgui_matrix_state::total_transformation();
00026 vnl_vector_fixed<double,4> tmp = T * vnl_vector_fixed<double,4>(X);
00027 double rx = tmp[0]/tmp[3];
00028 double ry = tmp[1]/tmp[3];
00029
00030 glMatrixMode(GL_PROJECTION);
00031 glLoadIdentity();
00032
00033 glMatrixMode(GL_MODELVIEW);
00034 glLoadIdentity();
00035
00036
00037
00038
00039
00040
00041
00042
00043 glRasterPos2f(0,0);
00044 glBitmap(0,0,
00045 0,0,
00046 float(rx*vp[2]/2), float(ry*vp[3]/2),
00047 0);
00048 }
00049
00050
00051 void vgui_rasterpos2f(float x, float y)
00052 {
00053 double X[4]={x,y,0,1};
00054 vgui_rasterpos4dv(X);
00055 }
00056
00057
00058 void vgui_rasterpos2i(int x, int y)
00059 {
00060 double X[4]={double(x),double(y),0.0,1.0};
00061 vgui_rasterpos4dv(X);
00062 }
00063
00064
00065 bool vgui_rasterpos_valid()
00066 {
00067 GLboolean params;
00068 glGetBooleanv(GL_CURRENT_RASTER_POSITION_VALID, ¶ms);
00069 return params != GL_FALSE;
00070 }