/* ================ glLabeledPoint ================ */ void glLabeledPoint(idVec4 &color, idVec3 &point, float size, const char *label) { qglColor3fv( color.ToFloatPtr() ); qglPointSize( size ); qglBegin( GL_POINTS ); qglVertex3fv( point.ToFloatPtr() ); qglEnd(); idVec3 v = point; v.x += 1; v.y += 1; v.z += 1; qglRasterPos3fv( v.ToFloatPtr() ); qglCallLists( strlen(label), GL_UNSIGNED_BYTE, label ); }
/* ============== Z_DrawGrid ============== */ void Z_DrawGrid (void) { float zz, zb, ze; int 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 qglColor3fv(g_qeglobals.d_savedinfo.colors[COLOR_GRIDMAJOR]); qglBegin (GL_LINES); qglVertex2f (0, zb); qglVertex2f (0, ze); for (zz=zb ; zz<ze ; zz+=64) { qglVertex2f (-w, zz); qglVertex2f (w, zz); } qglEnd (); // 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]) { qglColor3fv(g_qeglobals.d_savedinfo.colors[COLOR_GRIDMINOR]); qglBegin (GL_LINES); for (zz=zb ; zz<ze ; zz+=g_qeglobals.d_gridsize) { if ( ! ((int)zz & 63) ) continue; qglVertex2f (-w, zz); qglVertex2f (w, zz); } qglEnd (); } // draw coordinate text if needed qglColor3fv(g_qeglobals.d_savedinfo.colors[COLOR_GRIDTEXT]); for (zz=zb ; zz<ze ; zz+=64) { qglRasterPos2f (-w+1, zz); sprintf (text, "%i",(int)zz); qglCallLists (strlen(text), GL_UNSIGNED_BYTE, text); } }
void gtk_glwidget_print_char(char s) { qglListBase(font_list_base); qglCallLists(1, GL_UNSIGNED_BYTE, (unsigned char *) &s); }
void gtk_glwidget_print_string(const char *s) { qglListBase(font_list_base); qglCallLists(strlen(s), GL_UNSIGNED_BYTE, (unsigned char *)s); }
/* ============== CZWnd::Z_DrawGrid ============== */ void CZWnd::Z_DrawGrid( void ) { float zz, zb, ze; int w, h; char text[ 32 ]; w = z.width / 2 / z.scale; h = z.height / 2 / z.scale; // ---> sikk - Fixed Grid // int nSize = 1.0f / g_qeglobals.d_gridsize * 256; float fScale = 1.0f / g_qeglobals.d_gridsize * 8; int stepSize = g_qeglobals.d_gridsize * 8 * fScale / 2 / z.scale; if ( stepSize < g_qeglobals.d_gridsize * 8 ) { stepSize = g_qeglobals.d_gridsize * 8; } else { int i; for ( i = 1; i < stepSize; i <<= 1 ) {} stepSize = i; } // int stepSize = max( 64, g_qeglobals.d_gridsize ); // sikk - Larger Grid Sizes - Added // <--- sikk - Fixed Grid zb = z.origin[2] - h; if ( zb < region_mins[ 2 ] ) { zb = region_mins[ 2 ]; } zb = stepSize * floor( zb / stepSize ); // sikk - Larger Grid Sizes - was 64 ze = z.origin[2] + h; if ( ze > region_maxs[ 2 ] ) { ze = region_maxs[ 2 ]; } ze = stepSize * ceil( ze / stepSize ); // sikk - Larger Grid Sizes - was 64 // draw minor blocks if ( //z.scale > fScale && // sikk - Fixed grid g_qeglobals.d_showgrid && //g_qeglobals.d_gridsize * z.scale >= 4 && !g_qeglobals.d_savedinfo.colors[ COLOR_GRIDMINOR ].Compare( g_qeglobals.d_savedinfo.colors[ COLOR_GRIDBACK ] ) ) { qglColor3fv( g_qeglobals.d_savedinfo.colors[ COLOR_GRIDMINOR ].ToFloatPtr() ); qglBegin( GL_LINES ); for ( zz = zb; zz < ze; zz += stepSize / 8 ) { // ---> sikk - Fixed grid //if ( !( (int)zz & 63 ) ) { // continue; //} //<--- sikk - Fixed grid qglVertex2f( -w, zz ); qglVertex2f( w, zz ); } qglEnd(); } // draw major blocks qglBegin( GL_LINES ); qglColor3fv( g_qeglobals.d_savedinfo.colors[ COLOR_GRIDMAJOR ].ToFloatPtr() ); qglVertex2f( 0, zb ); qglVertex2f( 0, ze ); for ( zz = zb; zz < ze; zz += stepSize ) { // sikk - Larger Grid Sizes - was 64 if ( zz == 0 ) { qglColor3fv( g_qeglobals.d_savedinfo.colors[ COLOR_GRIDTEXT ].ToFloatPtr() ); } else { qglColor3fv( g_qeglobals.d_savedinfo.colors[ COLOR_GRIDMAJOR ].ToFloatPtr() ); } qglVertex2f( -w, zz ); qglVertex2f( w, zz ); } qglEnd(); // draw coordinate text if needed qglColor3fv( g_qeglobals.d_savedinfo.colors[ COLOR_GRIDTEXT ].ToFloatPtr() ); for ( zz = zb; zz < ze; zz += stepSize ) { qglRasterPos2f( -w + 1, zz ); sprintf( text, "%i", (int)zz ); qglCallLists( strlen( text ), GL_UNSIGNED_BYTE, text ); } }
/* ======================================================================================================================= ======================================================================================================================= */ void CNewTexWnd::OnPaint() { CPaintDC dc(this); // device context for painting int nOld = g_qeglobals.d_texturewin.m_nTotalHeight; //hdcTexture = GetDC(); if (!qwglMakeCurrent(dc.GetSafeHdc(), win32.hGLRC)) { common->Printf("ERROR: wglMakeCurrent failed..\n "); } else { const char *name; qglClearColor ( g_qeglobals.d_savedinfo.colors[COLOR_TEXTUREBACK][0], g_qeglobals.d_savedinfo.colors[COLOR_TEXTUREBACK][1], g_qeglobals.d_savedinfo.colors[COLOR_TEXTUREBACK][2], 0 ); qglViewport(0, 0, rectClient.Width(), rectClient.Height()); qglScissor(0, 0, rectClient.Width(), rectClient.Height()); qglMatrixMode(GL_PROJECTION); qglLoadIdentity(); qglClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); qglDisable(GL_DEPTH_TEST); qglDisable(GL_BLEND); qglOrtho(0, rectClient.Width(), origin.y - rectClient.Height(), origin.y, -100, 100); qglPolygonMode(GL_FRONT_AND_BACK, GL_FILL); // init stuff current.x = 8; current.y = -8; currentRow = 0; currentIndex = 0; while (1) { const idMaterial *mat = NextPos(); if (mat == NULL) { break; } int width = mat->GetEditorImage()->uploadWidth * ((float)g_PrefsDlg.m_nTextureScale / 100); int height = mat->GetEditorImage()->uploadHeight * ((float)g_PrefsDlg.m_nTextureScale / 100); // Is this texture visible? if ((draw.y - height - FONT_HEIGHT < origin.y) && (draw.y > origin.y - rectClient.Height())) { // if in use, draw a background qglLineWidth(1); qglColor3f(1, 1, 1); globalImages->BindNull(); qglBegin(GL_LINE_LOOP); qglVertex2f(draw.x - 1, draw.y + 1 - FONT_HEIGHT); qglVertex2f(draw.x - 1, draw.y - height - 1 - FONT_HEIGHT); qglVertex2f(draw.x + 1 + width, draw.y - height - 1 - FONT_HEIGHT); qglVertex2f(draw.x + 1 + width, draw.y + 1 - FONT_HEIGHT); qglEnd(); // Draw the texture float fScale = (g_PrefsDlg.m_bHiColorTextures == TRUE) ? ((float)g_PrefsDlg.m_nTextureScale / 100) : 1.0; mat->GetEditorImage()->Bind(); QE_CheckOpenGLForErrors(); qglColor3f(1, 1, 1); qglBegin(GL_QUADS); qglTexCoord2f(0, 0); qglVertex2f(draw.x, draw.y - FONT_HEIGHT); qglTexCoord2f(1, 0); qglVertex2f(draw.x + width, draw.y - FONT_HEIGHT); qglTexCoord2f(1, 1); qglVertex2f(draw.x + width, draw.y - FONT_HEIGHT - height); qglTexCoord2f(0, 1); qglVertex2f(draw.x, draw.y - FONT_HEIGHT - height); qglEnd(); // draw the selection border if ( !idStr::Icmp(g_qeglobals.d_texturewin.texdef.name, mat->GetName()) ) { qglLineWidth(3); qglColor3f(1, 0, 0); globalImages->BindNull(); qglBegin(GL_LINE_LOOP); qglVertex2f(draw.x - 4, draw.y - FONT_HEIGHT + 4); qglVertex2f(draw.x - 4, draw.y - FONT_HEIGHT - height - 4); qglVertex2f(draw.x + 4 + width, draw.y - FONT_HEIGHT - height - 4); qglVertex2f(draw.x + 4 + width, draw.y - FONT_HEIGHT + 4); qglEnd(); qglLineWidth(1); } // draw the texture name globalImages->BindNull(); qglColor3f(1, 1, 1); qglRasterPos2f(draw.x, draw.y - FONT_HEIGHT + 2); // don't draw the directory name for (name = mat->GetName(); *name && *name != '/' && *name != '\\'; name++) { ; } if (!*name) { name = mat->GetName(); } else { name++; } qglCallLists(strlen(name), GL_UNSIGNED_BYTE, name); //qglCallLists(va("%s -- %d, %d" strlen(name), GL_UNSIGNED_BYTE, name); } } g_qeglobals.d_texturewin.m_nTotalHeight = abs(draw.y) + 100; // reset the current texture globalImages->BindNull(); qglFinish(); qwglSwapBuffers(dc.GetSafeHdc()); TRACE("Texture Paint\n"); } if (g_PrefsDlg.m_bTextureScrollbar && (m_bNeedRange || g_qeglobals.d_texturewin.m_nTotalHeight != nOld)) { m_bNeedRange = false; SetScrollRange(SB_VERT, 0, g_qeglobals.d_texturewin.m_nTotalHeight, TRUE); } //ReleaseDC(hdcTexture); }