Win32 GDI PatBlt equivalent in Java (awt)?

Hello everyone,

In my game I’m using Swing/awt (think of a graphical rogue-like) and I draw hundreds of character glyphs of various size onto a canvas. To speed things up I’ve created BufferedImages for all possible sizes (4pt to 128pt) of each glyph. The different sizes are a must for what I’m trying to do. Then during paintComponent() I draw the glyph using Graphics2D.drawImage(BufferedImage, …).

This has worked pretty good (much faster than drawText) and I’m happy with the performance. Here’s my problem though.

I also want to be able to paint each glyph in different colors (e.g. shades due to lighting or using the same glyph but different color for different monsters). Ideally I would have a black and white bitmap for the glyph of a certain size and then I could combine it with the color I want and PatBlt it to the destination. PatBlt (of the Win32 GDI) would be perfect but I cannot find a Java equivalent. http://msdn.microsoft.com/en-us/library/87akx6s4.aspx

Note that my game is a windowed application and there are lots of auxiliary windows. Thus using a 2D framework is pretty much out of the question unless it can run in windowed mode. Swing/awt solutions are preferred.

Any ideas?

Have a look at an old version of the text renderer of JOGL. I remember that the first version uses a lot of Java2D/AWT things, you could modify it in order to use only plain Java without OpenGL.

Graphics2D.drawImage is overloaded. I think you’ll be able to do what you want if you use the overload which takes a BufferedImageOp.