On-Screen Display (OSD) Support in libxine-java

xine-lib provides support for dynamic On-Screen-Display interfaces. The xine hacker guide explains the underlying concepts. libxine-java (current SVN version only) provides the XineOSD class for this. To create an XineOSD instance call the createOSD method of the XineController.

Example: Draw some text and a cross over the video.

final int width  = 320;
final int height = 240;

// create OSD renderer
XineOSD osd = controller.createOSD(0, 0, width, height);

/* set sans serif 24 font */
osd.setFont("sans", 24);

/* copy pre-defined colors for white, black border, transparent background to
   starting at the index used by the first text palette */
osd.setTextPalette(XineLibConstants.XINE_TEXTPALETTE_WHITE_BLACK_TRANSPARENT,
 XineLibConstants.XINE_OSD_TEXT1);

/* copy pre-defined colors for white, no border, translucid background to
   starting at the index used by the second text palette */
osd.setTextPalette(XineLibConstants.XINE_TEXTPALETTE_WHITE_NONE_TRANSLUCID,
 XineLibConstants.XINE_OSD_TEXT2);

osd.drawText( 0, 100, "white text, black border", XineLibConstants.XINE_OSD_TEXT1);
osd.drawText( 0, 130, "white text, no border", XineLibConstants.XINE_OSD_TEXT2);

osd.drawLine( 0, 0,  width-1, height-1, 10);
osd.drawLine(width-1, 0, 0 , height-1, 10);

osd.show(0); /* 0 stands for 'now' */