Thread: [PyOpenGL-Users] true type fonts
Brought to you by:
mcfletch
From: Sean R. <mrr...@ya...> - 2003-01-12 03:09:17
|
Here is some code I used to get true type font working. This took a while to figure out... handle = 55 def createFont(fontName, fontSize): props = {"name":fontName, "height":(int)(fontSize), "charset":0, "weight":1, "pitch and family":18} pf = win32ui.CreateFont( props ) hdc = wglGetCurrentDC() pdc = win32ui.CreateDCFromHandle(hdc) old = pdc.SelectObject(pf) result = wglUseFontBitmaps(hdc , 0, 255, handle) if not result: print "ERROR!" pdc.SelectObject(old) def drawText(text, pos, color): glColor4ub( color[0], color[1], color[2], color[3] ) glRasterPos2i(position[0], position[1]) glListBase(handle) glCallLists(text) This fails on some machines though, when trying to create the truetype font... I dunno why. --------------------------------- "I'm not as interested in being witty as I am in being clear", Scott Meyers Sean Riley MrR...@ya... |
From: Champ H. <cha...@be...> - 2003-05-23 14:54:37
|
Hello, I'm looking for a way to display "nice" font text on my OpenGL scene (a simple 2D function plot). So far I used the "glutBitmapCharacter()" function but I'm not satisfied with it for I at least need greek letters. I know the existence of GLTT (http://gltt.sourceforge.net/index.html) and OGLFT (http://oglft.sourceforge.net) and I would like to wrap them (if possible) using swig. Unfortunately, my comprehension of swig is too low for that task : I do not how to cope with nested class in GLTT (class FTGlyphVectorizer) and OGLFT start with a namespace definition, both c++ features that are difficult to handle with swig. So my questions are : - is it possible to wrap these libraries ? - did someone managed to wrap these or equivalent libraries ? - is there another solution to my problem ? Thanks, Bernard |
From: Mike C. F. <mcf...@ro...> - 2003-05-23 16:21:40
|
https://sourceforge.net/tracker/index.php?func=detail&aid=452946&group_id=5988&atid=355988 is the feature request currently in the hopper. Note that, if you're using PyGame as your hosting context, it has the sdl_ttf module available to do TrueType raster fonts with anti-aliasing. You can find sample code in the Python cookbook here: http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/115418 Alternately, if you're willing to do platform-specific code, see OpenGLContext.scenegraph.text.wglfont.WGLBitmapFont , which uses wglUseFontBitmapsW to create pixmap fonts similar to those in the PyGame recipe. The WGLOutlineFont class in the same module uses wglUseFontOutlinesW to create polygonal text. See the tracker page for discussion of issues relating to licensing and the like. I've got decent font support on my radar, but at the moment, all the approaches available seem far less than ideal. Enjoy, Mike Champ Hippy wrote: >Hello, > >I'm looking for a way to display "nice" font text on my OpenGL scene >(a simple 2D function plot). So far I used the "glutBitmapCharacter()" >function but I'm not satisfied with it for I at least need greek letters. > >I know the existence of GLTT (http://gltt.sourceforge.net/index.html) >and OGLFT (http://oglft.sourceforge.net) and I would like to wrap them >(if possible) using swig. Unfortunately, my comprehension of swig is >too low for that task : I do not how to cope with nested class in GLTT >(class FTGlyphVectorizer) and OGLFT start with a namespace definition, >both c++ features that are difficult to handle with swig. > >So my questions are : >- is it possible to wrap these libraries ? >- did someone managed to wrap these or equivalent libraries ? >- is there another solution to my problem ? > >Thanks, > >Bernard > > >------------------------------------------------------- >This SF.net email is sponsored by: ObjectStore. >If flattening out C++ or Java code to make your application fit in a >relational database is painful, don't do it! Check out ObjectStore. >Now part of Progress Software. http://www.objectstore.net/sourceforge >_______________________________________________ >PyOpenGL Homepage >http://pyopengl.sourceforge.net >_______________________________________________ >PyOpenGL-Users mailing list >PyO...@li... >https://lists.sourceforge.net/lists/listinfo/pyopengl-users > > > -- _______________________________________ Mike C. Fletcher Designer, VR Plumber, Coder http://members.rogers.com/mcfletch/ |
From: Mike C. F. <mcf...@ro...> - 2003-01-12 06:17:45
|
This is taken from OpenGLContext/tests/glprint.py , the major difference I can see is that it generates the display-lists before trying to fill them with wglUseFontBitmaps(...) self.base = glGenLists(96) # Storage For 96 Characters wgldc = wglGetCurrentDC() dc = win32ui.CreateDCFromHandle( wgldc ) ## pitch and family value f = win32ui.CreateFont( { 'italic': None, #use of None is required, 0 doesn't work 'underline': None, #use of None is required, 0 doesn't work 'name': 'Times New Roman', 'weight': 700, 'height': 20, } ) dc.SelectObject( f ) wglUseFontBitmaps(wgldc, 32, 96, self.base) # Builds 96 Characters Starting At Character 32 # f is deleted here, if it is deleted before the display-lists # are created they will just use the default font! I only have one machine to test on, so it's possible that too will fail on some machines, but I'm pretty sure you want the glGelLists call regardless. You can also find sample code in NeHe tutorials #13 and #14, and the OpenGLContext/scenegraph/text package. Also note that there's no decent way to get font metrics that I've found for the bitmap versions of fonts using WGL. If anyone finds one I'd like to include that functionality in OpenGLContext/scenegraph/text. Good luck, Mike Sean Riley wrote: >Here is some code I used to get true type font working. This took a while to >figure out... > >handle = 55 > >def createFont(fontName, fontSize): > props = {"name":fontName, > "height":(int)(fontSize), > "charset":0, "weight":1, > "pitch and family":18} > > pf = win32ui.CreateFont( props ) > hdc = wglGetCurrentDC() > pdc = win32ui.CreateDCFromHandle(hdc) > > old = pdc.SelectObject(pf) > result = wglUseFontBitmaps(hdc , 0, 255, handle) > if not result: > print "ERROR!" > pdc.SelectObject(old) > >def drawText(text, pos, color): > glColor4ub( color[0], color[1], color[2], color[3] ) > glRasterPos2i(position[0], position[1]) > glListBase(handle) > glCallLists(text) > >This fails on some machines though, when trying to create the truetype >font... I >dunno why. > >--------------------------------- >"I'm not as interested in being witty as I am in being clear", Scott Meyers >Sean Riley >MrR...@ya... > > |