[Libufo-commits] ufo-0.5/src/gl ugl_graphics.cpp,1.14,1.15
Status: Beta
Brought to you by:
schmidtjf
|
From: Johannes S. <sch...@us...> - 2005-10-11 20:22:18
|
Update of /cvsroot/libufo/ufo-0.5/src/gl In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv4727/src/gl Modified Files: ugl_graphics.cpp Log Message: Added {set,get}LineWidth. Changed GL graphics to have an 0.5f offset for lines rasterization (removed general 3/8 pixel offset). Index: ugl_graphics.cpp =================================================================== RCS file: /cvsroot/libufo/ufo-0.5/src/gl/ugl_graphics.cpp,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -d -r1.14 -r1.15 *** ugl_graphics.cpp 15 Sep 2005 16:34:44 -0000 1.14 --- ugl_graphics.cpp 11 Oct 2005 20:22:06 -0000 1.15 *************** *** 125,129 **** 100 ); ! ugl_driver->glTranslatef(0.375, 0.375, 0); ugl_driver->glMatrixMode(GL_MODELVIEW); --- 125,129 ---- 100 ); ! //ugl_driver->glTranslatef(0.375, 0.375, 0); ugl_driver->glMatrixMode(GL_MODELVIEW); *************** *** 211,220 **** void ! UGL_Graphics::setEnabled(GCState state, bool b) { } bool UGL_Graphics::isEnabled(GCState state) const { ! return false; } --- 211,250 ---- void ! UGL_Graphics::setEnabled(GCState state, bool b) {/* ! static bool has_blend_enabled = false; ! if (state == LineAntialiasing) { ! if (b) { ! ugl_driver->glEnable(GL_LINE_SMOOTH); ! setEnabled(Blending, true); ! } else { ! ugl_driver->glDisable(GL_LINE_SMOOTH); ! if (has_blend_enabled) { ! setEnabled(Blending, false); ! } ! } ! } else if (state == Blending) { ! if (b) { ! if (!has_blend_enabled && !isEnabled(Blending)) { ! has_blend_enabled = true; ! } ! ugl_driver->glEnable(GL_BLEND); ! ugl_driver->glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); ! } else { ! ugl_driver->glEnable(GL_LINE_SMOOTH); ! has_blend_enabled = false; ! } ! }*/ } bool UGL_Graphics::isEnabled(GCState state) const { ! GLboolean ret[1]; ! ret[0] = 0; ! if (state == LineAntialiasing) { ! ugl_driver->glGetBooleanv(GL_LINE_SMOOTH, ret); ! } else if (state == Blending) { ! ugl_driver->glGetBooleanv(GL_BLEND, ret); ! } ! return ret[0]; } *************** *** 364,367 **** --- 394,409 ---- void + UGL_Graphics::setLineWidth(float width) { + ugl_driver->glLineWidth(width); + } + + float + UGL_Graphics::getLineWidth() const { + float ret[1]; + ugl_driver->glGetFloatv(GL_LINE_WIDTH, ret); + return ret[0]; + } + + void UGL_Graphics::drawString(const std::string & text, int x, int y) { m_font.getRenderer()->drawString(this, text.data(), text.length(), x, y); *************** *** 398,406 **** // basic drawing operations // ! void UGL_Graphics::drawRect(const URectangle & rect) { // -1 is correct, as lines are drawn like rectangles with // width 1 measured in y direction ugl_driver->glBegin(GL_LINE_LOOP); ugl_driver->glVertex2i(rect.x, rect.y); --- 440,449 ---- // basic drawing operations // ! static float add_width = 0.5f; void UGL_Graphics::drawRect(const URectangle & rect) { // -1 is correct, as lines are drawn like rectangles with // width 1 measured in y direction + ugl_driver->glTranslatef(add_width, add_width, 0); ugl_driver->glBegin(GL_LINE_LOOP); ugl_driver->glVertex2i(rect.x, rect.y); *************** *** 409,412 **** --- 452,456 ---- ugl_driver->glVertex2i(rect.x + rect.w - 1, rect.y); ugl_driver->glEnd(); + ugl_driver->glTranslatef(-add_width, -add_width, 0); } *************** *** 418,425 **** --- 462,471 ---- void UGL_Graphics::drawLine(const UPoint & p1, const UPoint & p2) { + ugl_driver->glTranslatef(add_width, add_width, 0); ugl_driver->glBegin(GL_LINES); ugl_driver->glVertex2i(p1.x, p1.y); ugl_driver->glVertex2i(p2.x, p2.y); ugl_driver->glEnd(); + ugl_driver->glTranslatef(-add_width, -add_width, 0); } void *************** *** 429,435 **** --- 475,483 ---- case Lines: glType = GL_LINES; + ugl_driver->glTranslatef(add_width, add_width, 0); break; case LineStrip: glType = GL_LINE_STRIP; + ugl_driver->glTranslatef(add_width, add_width, 0); break; case Triangles: *************** *** 439,442 **** --- 487,493 ---- glType = GL_TRIANGLE_STRIP; break; + case TriangleFan: + glType = GL_TRIANGLE_FAN; + break; default: glType = GL_LINE_STRIP; *************** *** 450,453 **** --- 501,514 ---- ugl_driver->glDrawArrays(glType, 0, buffer->getCount()); } + switch (type) { + case Lines: + glType = GL_LINES; + ugl_driver->glTranslatef(-add_width, -add_width, 0); + break; + case LineStrip: + glType = GL_LINE_STRIP; + ugl_driver->glTranslatef(-add_width, -add_width, 0); + break; + } } |