Differences between revisions 4 and 5
Revision 4 as of 2008-07-17 01:21:54
Size: 1502
Comment:
Revision 5 as of 2008-07-17 01:22:37
Size: 1500
Comment:
Deletions are marked like this. Additions are marked like this.
Line 16: Line 16:
Note that the EMFTGL has default values for all of its parameters. Note that in general you want to limit the number of times you call the setter functions, because they cause FTGL to regenerate a FTFont class and this is not a trivial expense. Note that the EMFTGL has default values for all of its parameters and that in general you want to limit the number of times you call the setter functions, because they cause FTGL to regenerate a FTFont class and this is not a trivial expense.

Using FTGL in python in EMAN2

Programmers have to create an instance of an EMFTGL object, for instance as a member variable:

self.font_renderer = EMFTGL()
self.font_renderer.set_face_size(16)
self.font_renderer.set_using_display_lists(True)
self.font_renderer.set_depth(32) # only applicable if font mode is EXTRUDE
self.font_renderer.set_font_mode(FTGLFontMode.TEXTURE) # or EXTRUDE, or PIMAP
#self.font_renderer.set_font_file_name("/usr/share/fonts/dejavu/DejaVuSerif-Bold.ttf")

Note that the EMFTGL has default values for all of its parameters and that in general you want to limit the number of times you call the setter functions, because they cause FTGL to regenerate a FTFont class and this is not a trivial expense.

Then to render text use a command similar to the following in your paint function:

self.font_renderer.render_string("Important Information")

To get the bounding box of the string use:

bbox = self.font_renderer.bounding_box("Important Information")

As an example, if you want to rotate the font as though it is centered on the origin you might use

message = "Important Information"
rotation = 45
rot_axis = [1,0,0]
bbox = self.font_renderer.bounding_box(message)
        
glTranslate(-(bbox[0]-bbox[3])/2,-(bbox[1]-bbox[4])/2,-(bbox[2]-bbox[5])/2)
glRotate(rotation,*rot_axis)
glTranslate((bbox[0]-bbox[3])/2,(bbox[1]-bbox[4])/2,(bbox[2]-bbox[5])/2)
self.font_renderer.render_string(message)

Eman2UsingFTGL (last edited 2022-02-18 00:29:09 by TunayDurmaz)