/* ============== Z_DrawGrid ============== */ void Z_DrawGrid( void ){ float zz, zb, ze; float w, h; char text[32]; w = ( z.width / 2 / z.scale ); h = ( z.height / 2 / z.scale ); zb = z.origin[2] - h; if ( zb < region_mins[2] ) { zb = region_mins[2]; } zb = 64 * floor( zb / 64 ); ze = z.origin[2] + h; if ( ze > region_maxs[2] ) { ze = region_maxs[2]; } ze = 64 * ceil( ze / 64 ); // draw major blocks glColor3fv( g_qeglobals.d_savedinfo.colors[COLOR_GRIDMAJOR] ); if ( g_qeglobals.d_showgrid ) { if ( g_qeglobals.d_gridsize < 128 ) { glBegin( GL_LINES ); glVertex2f( 0, zb ); glVertex2f( 0, ze ); for ( zz = zb ; zz < ze ; zz += 64 ) { glVertex2f( -w, zz ); glVertex2f( w, zz ); } glEnd(); } else { glBegin( GL_LINES ); glVertex2f( 0, zb ); glVertex2f( 0, ze ); for ( zz = zb ; zz < ze ; zz += 64 ) { // d_gridsize >= 128 .. it's an int for sure if ( ( (int)zz & ( (int)g_qeglobals.d_gridsize - 1 ) ) != 0 ) { continue; } glVertex2f( -w, zz ); glVertex2f( w, zz ); } glEnd(); } } // draw minor blocks if ( g_qeglobals.d_showgrid && g_qeglobals.d_gridsize * z.scale >= 4 && g_qeglobals.d_savedinfo.colors[COLOR_GRIDMINOR] != g_qeglobals.d_savedinfo.colors[COLOR_GRIDBACK] ) { glColor3fv( g_qeglobals.d_savedinfo.colors[COLOR_GRIDMINOR] ); glBegin( GL_LINES ); for ( zz = zb ; zz < ze ; zz += g_qeglobals.d_gridsize ) { if ( !( (int)zz & 63 ) ) { continue; } glVertex2f( -w, zz ); glVertex2f( w, zz ); } glEnd(); } // draw coordinate text if needed if ( g_qeglobals.d_savedinfo.show_coordinates ) { glColor3fv( g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT] ); int step = (int)( g_qeglobals.d_gridsize > 64 ? g_qeglobals.d_gridsize : 64 ); zb = z.origin[2] - h; if ( zb < region_mins[2] ) { zb = region_mins[2]; } zb = step * floor( zb / step ); for ( zz = zb ; zz < ze ; zz += step ) { glRasterPos2f( -w + ( 1 / z.scale ), zz ); sprintf( text, "%i",(int)zz ); gtk_glwidget_print_string( text ); } } }
void gtk_glwidget_print_char( char s ){ char str[2]; str[0] = s; str[1] = '\0'; gtk_glwidget_print_string( str ); }