I don't know an answer but I know there is a test that changes text color. You 
could look through those.

-ww

On Jun 28, 2012, at 1:15 PM, Roger Flores wrote:

> Is anyone able to look/run the code and change it so the text is drawn with a 
> color other than white?  Or are there docs that I missed?  Is this the right 
> list for this question or should is there a more appropriate one I should be 
> using?
> 
> 
> Appreciatively,
> -Roger
> 
> 
> On Tue, Jun 26, 2012 at 6:16 PM, Roger Flores <[email protected]> wrote:
> Here is my followup for anyone else that needs to draw text like a console.  
> The code I have is pasted at the bottom.
> 
> My goal was to pop up a 80x25 console window, and then draw black text, 
> colored text, underlined text, and inverted text to it.
> 
> 
> The code is mostly there except 1) I can't switch the window background from 
> black to white and 2) I can't change the text color either.
> 
> 
> On Wed, Jun 20, 2012 at 5:17 AM, Txema Vicente <[email protected]> wrote:
> Take a look at this classes:
> 
> document = pyglet.text.document.FormattedDocument()
> textbox = pyglet.text.layout.IncrementalTextLayout(document, w, h, 
> batch=batch)
> 
> 
> About 95% of the files in pyglet/text/* are about attributes and text layout. 
>  _GlyphBox.place() seems to be the code to do the color, back color and 
> underline via extending arrays of vertices/quads.  I don't know OpenGL well 
> enough but it seems like moving this into the text API would allow this to be 
> used by all.  I suspect that a line of text could involve 80 rectangles 
> (triangles?) plus 80 little line segments underneath to underline with this 
> method though.
> 
> If this is the only way pyglet supports colored text then I'd love the right 
> vertices code to paste in and get it done.  I was hoping though to just pass 
> in a color, when not none, like pyglet.font.GlyphString(text, glyphs, x, y, 
> black, white), or even better, have the colors in a context so they don't 
> have to keep being passed around when drawing lots of text.
> 
> 
> -Roger
> 
> console.py:
> import sys
> 
> import pyglet
> 
> 
> class Console():
> 
>         def __init__(self):
>                 self.font = pyglet.font.load('Arial', 14)  # substitute a 
> monospaced font in
>                 # get the font metrics (average width and height).  Use '0' 
> as average.
>                 text= '0'
>                 glyphs = self.font.get_glyphs(text)
>                 glyph_string = pyglet.font.GlyphString(text, glyphs)
>                 self.char_width = glyph_string.get_subwidth(0, 1)
>                 self.char_height = self.font.ascent - self.font.descent
>                 #self.char_width = 9
>                 #self.char_height = 14
>                 
>                 self.window = pyglet.window.Window(80 * self.char_width, 25 * 
> self.char_height, caption='console 80x25')
>                 pyglet.gl.glEnable( pyglet.gl.GL_TEXTURE_2D)
>                 
>                 
>         def handle_events(self):
>                 if self.window.has_exit:
>                         sys.exit()
>                         
>                 self.window.dispatch_events()
>                 
>                 
>         def draw(self):
>                 self.window.clear()  # how to clear to white instead of black?
>                 x = 0
>                 y = self.window.height
>                 
>                 # black text
>                 text= 'hello world'
>                 glyphs = self.font.get_glyphs(text)
>                 glyph_string = pyglet.font.GlyphString(text, glyphs, x, y - 
> self.font.ascent)
>                 glyph_string.draw()
>                 y = y - self.char_height
>                 
>                 # red text
>                 text= 'hello red world'
>                 glyphs = self.font.get_glyphs(text)
>                 glyph_string = pyglet.font.GlyphString(text, glyphs, x, y - 
> self.font.ascent)
>                 glyph_string.draw()  # how to set red?
>                 y = y - self.char_height
>                 
>                 # underlined text
>                 text= 'hello underlined world'
>                 glyphs = self.font.get_glyphs(text)
>                 glyph_string = pyglet.font.GlyphString(text, glyphs, x, y - 
> self.font.ascent)
>                 glyph_string.draw()  # how to underline?
>                 y = y - self.char_height
>                 
>                 # white text and black background
>                 text= 'hello inverted world'
>                 glyphs = self.font.get_glyphs(text)
>                 glyph_string = pyglet.font.GlyphString(text, glyphs, x, y - 
> self.font.ascent)
>                 glyph_string.draw()
>                 y = y - self.char_height
>                 
>                 self.window.flip()
>                 
>                 
> con = Console()
> 
> # It's preferable to use pyglet.app.run() to call your draw routine as 
> # needed (decorate the draw function).  But if that's not possible, handle 
> # events frequently, but without consuming all the CPU.
> while True:
>     con.handle_events()
>     con.draw()
> 
> 
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "pyglet-users" group.
> To post to this group, send email to [email protected].
> To unsubscribe from this group, send email to 
> [email protected].
> For more options, visit this group at 
> http://groups.google.com/group/pyglet-users?hl=en.

-- 
You received this message because you are subscribed to the Google Groups 
"pyglet-users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/pyglet-users?hl=en.

Reply via email to