I want to render some text on a canvas using WebGL, which API of WebGL should be used?
Note: "text" can be either plain text or HTML snippet with CSS style
Most demos that I've seen that do text of any sort (like a FPS counter) simply create an HTML element with the text they want and position it over the canvas. This would probably be a good approach for most text that you would want to show "in" a canvas (ie: menus).
The only exception would be if you want the text to be an actual part of the 3d scene (like, say, text on a billboard), in which case the methodologies wouldn't be any different than rendering text in standard OpenGL. You can find a very good robust example here: http://dmedia.dprogramming.com/?n=Tutorials.TextRendering1
There's also a WebGL tutorial about text here.
For WebGL-rendered text, you can write text to a canvas "2d" context, then create a texture from the canvas. Denny Koch does that in his EnergizeGL framework.
Related
I would like to generate some diagram style graphics using SVG and use text in the diagrams. My problem is, how to know the size of the text in advance to be able to adjust the rest of the layout accordingly. To make this explicit: I'm not talking about SVG in a browser. I would like to work with fixed units and generate PDF for printing for example. So if I use a 12pt font, it should also be printed as 12pt font.
To have a more concrete example: Lets assume I have the three strings "bla", "blablub" and "blubblablub". I would like to print them in a given 12pt font, determine the string size and enclosing boxes and draw the biggest sized box around all of them. The idea is to have equally sized boxed around all, based on the longest text.
Could somebody give me a hint how to do that or why it is not possible? Searching for this topic, I only get some JavaScript tricks in the browser, which usually involves rendering the text and then re-rendering everything again.
How do I write text like this over a curve like bezier, bspline etc. using pygame or python 3?
If you know the angles you want to display the text at, you could create images for each letter and then use pygame.transform.rotate on the letter to create a new, rotated image.
Pygame text functions are limited to monochrome text rendering in a straightline, using the font's hinting.
Cairo (and PyCairo) however, offer heavy duty drawing and text rendering APIs -
so you probably will have to learn how make your curved text in Cairo, and transfer the cairo image to a Pygame surface for your game.
There is a wiki page on how to transfer images between both here: http://pygame.org/wiki/CairoPygame - I am not sure if Cairo's API alone contemplates curved text, but it can render SVG - so you can create your curved text in SVG, render it in cairo, and paste it in Pygame.
I'm looking for a cross-platform rich text widget that supports non-trivial markup including the following, and I wonder if Tk's text widget can be extended to do them:
set text background color
draw lines over and under text
draw borders around text
decorate content by overlaying lines and shapes (e.g., filled circles)
indicate items in a gutter
To give you an idea, look at the middle pane here:
I read a little about tags, but they seem to be limited to the basics like font, color, etc. I also read about drawing text on the canvas widget, but it looks like standard text editor-like text selection, flow, etc. would be lost.
Thanks very much.
In short, you can only do what you've read in the documentation (assuming you've read authoritative documentation).
Specifically, the text widget does not do all that you asked. You cannot do the following:
draw lines over and under text. You can use custom fonts with the overstrike and underline attributes turned on but there's no way to add lines over a widget, and you have no control on the visual attributes of the overstrike or underline
decorate content by overlaying lines and shapes (e.g., filled circles)
You can set text background and foreground colors, draw borders around the text, and put items in a gutter. For the latter you would need to use a canvas as the gutter.
Note that if you use a canvas rather than a text widget you can do all of those things (read: the text items of the canvas can be editable), but it would require a large amount of work to implement all of the bindings necessary to use it as an editor. For more information on this approach, see http://effbot.org/zone/editing-canvas-text-items.htm
I've setup a drawing utility with Raphael.js. The user can draw shapes, paths and enter text. Once a user adds text -> Paper.text() to the svg the svg goes into a selectable state. Meaning, if I add text and switch to the pen tool, moving the pen around the svg will cause adjacent dom elements to go into their ::selection state.
So I'd like to convert the text to a path to prevent this from happening. I don't see anything like this in the documentation.
if you use print() instead of text() for text printing, then the text will be a raphael path object. (print() use a cufon javascript font that renders to a raphael path).
Try tweaking the pointer-events property on the text elements with .attr(). none might fit your needs. There are some good background info links on MDN.
.attr({pointer-events: none})
Is there any program that can convert a file into an animated gif by taking the bytes (whatever I see on an editor is seen) and producing them on frames? Im trying to change a large script I wrote into an image so that if I run it, it looks like as if the code is scrolling. I would use photoshop, if I knew how to use it. Even then, the code is really big, so I dont want to be doing it frame by frame.
Whatever you see on the editor screen is ... a screenfull, so why not a screen capture program like http://www.faststone.org/FSCaptureDetail.htm
However, I suspect that you want to convert the entire file to a gif, since you talk of scrolling. Is that so?
If so, be aware that animated GIFs are limited to 8 frames, so you might want to convert to another movie format.
You could, for instance, Google for "text to MPEG". If nothing does it directly, get something that adds subtitles & make your video a solid white background *or match your webpage).
Maybe simpler is something like this ...
A Scrolling Text Applet - Now Free. - Provide an animated look and feel to your web pages. Scrolling Text is a Java applet that will automatically size itself to the available area given to it by the HTML form via the WIDTH and HEIGHT properties of the APPLET tag. There are many configurable features of this applet including title, colors, font size and style, border width and color, graphics, background images etc.
Configurable parameters including;
Background Color - Define your desired background color
Title - If you want a stationary title then include this parameter
Font Size and Style - All text can have it's own Font size and style
Text Color - Specify the color of the text with this one
Border Width and Color - If you require a border then define it with these 2 parameters
Scroll Speed - Customise the Scroll Speed
Display Time - Vary the Display time of each page
This applet is easy to implement and configure and along with the example and help files you should have no trouble implementing your own customised Scrolling Text in your web pages. No understanding of java programming is required, everything is adjusted by parameters in the HTML tags.
Now FREE.
+1 for an interesting question.