| 
									
										
										
										
											2008-07-12 17:40:22 +00:00
										 |  |  | // Copyright (C) 2003-2008 Dolphin Project.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // This program is free software: you can redistribute it and/or modify
 | 
					
						
							|  |  |  | // it under the terms of the GNU General Public License as published by
 | 
					
						
							|  |  |  | // the Free Software Foundation, version 2.0.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // This program is distributed in the hope that it will be useful,
 | 
					
						
							|  |  |  | // but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
					
						
							|  |  |  | // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
					
						
							|  |  |  | // GNU General Public License 2.0 for more details.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // A copy of the GPL 2.0 should have been included with the program.
 | 
					
						
							|  |  |  | // If not, see http://www.gnu.org/licenses/
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | // Official SVN repository and contact information can be found at
 | 
					
						
							|  |  |  | // http://code.google.com/p/dolphin-emu/
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "Globals.h"
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifdef _WIN32
 | 
					
						
							|  |  |  | #include <windows.h>
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-08-06 21:07:31 +00:00
										 |  |  | #ifdef MACOSX
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <OpenGL/gl.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #else
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-12 17:40:22 +00:00
										 |  |  | #include <GL/gl.h>
 | 
					
						
							| 
									
										
										
										
											2008-08-06 21:07:31 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | #endif
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-12 17:40:22 +00:00
										 |  |  | #include <string.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include "rasterfont.h"
 | 
					
						
							|  |  |  | // globals
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | GLubyte rasters[][13] = { | 
					
						
							|  |  |  |     {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x36, 0x36, 0x36, 0x36},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x00, 0x66, 0x66, 0xff, 0x66, 0x66, 0xff, 0x66, 0x66, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x18, 0x7e, 0xff, 0x1b, 0x1f, 0x7e, 0xf8, 0xd8, 0xff, 0x7e, 0x18},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x0e, 0x1b, 0xdb, 0x6e, 0x30, 0x18, 0x0c, 0x76, 0xdb, 0xd8, 0x70},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7f, 0xc6, 0xcf, 0xd8, 0x70, 0x70, 0xd8, 0xcc, 0xcc, 0x6c, 0x38},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1c, 0x0c, 0x0e},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x0c, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0c},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x30, 0x18, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x18, 0x30},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x00, 0x00, 0x99, 0x5a, 0x3c, 0xff, 0x3c, 0x5a, 0x99, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0xff, 0xff, 0x18, 0x18, 0x18, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x30, 0x18, 0x1c, 0x1c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x60, 0x60, 0x30, 0x30, 0x18, 0x18, 0x0c, 0x0c, 0x06, 0x06, 0x03, 0x03},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x3c, 0x66, 0xc3, 0xe3, 0xf3, 0xdb, 0xcf, 0xc7, 0xc3, 0x66, 0x3c},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78, 0x38, 0x18},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xff, 0xc0, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x03, 0xe7, 0x7e},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7e, 0xe7, 0x03, 0x03, 0x07, 0x7e, 0x07, 0x03, 0x03, 0xe7, 0x7e},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0xff, 0xcc, 0x6c, 0x3c, 0x1c, 0x0c},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7e, 0xe7, 0x03, 0x03, 0x07, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xff},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7e, 0xe7, 0xc3, 0xc3, 0xc7, 0xfe, 0xc0, 0xc0, 0xc0, 0xe7, 0x7e},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0c, 0x06, 0x03, 0x03, 0x03, 0xff},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7e, 0xe7, 0xc3, 0xc3, 0xe7, 0x7e, 0xe7, 0xc3, 0xc3, 0xe7, 0x7e},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7e, 0xe7, 0x03, 0x03, 0x03, 0x7f, 0xe7, 0xc3, 0xc3, 0xe7, 0x7e},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x38, 0x38, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x30, 0x18, 0x1c, 0x1c, 0x00, 0x00, 0x1c, 0x1c, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x06, 0x0c, 0x18, 0x30, 0x60, 0xc0, 0x60, 0x30, 0x18, 0x0c, 0x06},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x60, 0x30, 0x18, 0x0c, 0x06, 0x03, 0x06, 0x0c, 0x18, 0x30, 0x60},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x18, 0x00, 0x00, 0x18, 0x18, 0x0c, 0x06, 0x03, 0xc3, 0xc3, 0x7e},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x3f, 0x60, 0xcf, 0xdb, 0xd3, 0xdd, 0xc3, 0x7e, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0x66, 0x3c, 0x18},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7e, 0xe7, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe7, 0x7e},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xfc, 0xce, 0xc7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc7, 0xce, 0xfc},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xc0, 0xc0, 0xc0, 0xc0, 0xff},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfc, 0xc0, 0xc0, 0xc0, 0xff},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7e, 0xe7, 0xc3, 0xc3, 0xcf, 0xc0, 0xc0, 0xc0, 0xc0, 0xe7, 0x7e},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xff, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7e},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7c, 0xee, 0xc6, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06, 0x06},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xc3, 0xc6, 0xcc, 0xd8, 0xf0, 0xe0, 0xf0, 0xd8, 0xcc, 0xc6, 0xc3},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xff, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xdb, 0xff, 0xff, 0xe7, 0xc3},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xc7, 0xc7, 0xcf, 0xcf, 0xdf, 0xdb, 0xfb, 0xf3, 0xf3, 0xe3, 0xe3},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7e, 0xe7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xe7, 0x7e},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x3f, 0x6e, 0xdf, 0xdb, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0x66, 0x3c},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xc3, 0xc6, 0xcc, 0xd8, 0xf0, 0xfe, 0xc7, 0xc3, 0xc3, 0xc7, 0xfe},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7e, 0xe7, 0x03, 0x03, 0x07, 0x7e, 0xe0, 0xc0, 0xc0, 0xe7, 0x7e},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0xff},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7e, 0xe7, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xc3, 0xe7, 0xff, 0xff, 0xdb, 0xdb, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xc3, 0x66, 0x66, 0x3c, 0x3c, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0xc3},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0xc3},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xff, 0xc0, 0xc0, 0x60, 0x30, 0x7e, 0x0c, 0x06, 0x03, 0x03, 0xff},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x3c, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x3c},  | 
					
						
							|  |  |  |     {0x00, 0x03, 0x03, 0x06, 0x06, 0x0c, 0x0c, 0x18, 0x18, 0x30, 0x30, 0x60, 0x60},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x3c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x3c},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0x66, 0x3c, 0x18},  | 
					
						
							|  |  |  |     {0xff, 0xff, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x38, 0x30, 0x70},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7f, 0xc3, 0xc3, 0x7f, 0x03, 0xc3, 0x7e, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xfe, 0xc3, 0xc3, 0xc3, 0xc3, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7e, 0xc3, 0xc0, 0xc0, 0xc0, 0xc3, 0x7e, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7f, 0xc3, 0xc3, 0xc3, 0xc3, 0x7f, 0x03, 0x03, 0x03, 0x03, 0x03},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7f, 0xc0, 0xc0, 0xfe, 0xc3, 0xc3, 0x7e, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x30, 0x30, 0x30, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x33, 0x1e},  | 
					
						
							|  |  |  |     {0x7e, 0xc3, 0x03, 0x03, 0x7f, 0xc3, 0xc3, 0xc3, 0x7e, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xc3, 0xfe, 0xc0, 0xc0, 0xc0, 0xc0},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x00, 0x00, 0x18, 0x00},  | 
					
						
							|  |  |  |     {0x38, 0x6c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x0c, 0x00, 0x00, 0x0c, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xc6, 0xcc, 0xf8, 0xf0, 0xd8, 0xcc, 0xc6, 0xc0, 0xc0, 0xc0, 0xc0},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7e, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x78},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xdb, 0xfe, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xfc, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7c, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x7c, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0xc0, 0xc0, 0xc0, 0xfe, 0xc3, 0xc3, 0xc3, 0xc3, 0xfe, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x03, 0x03, 0x03, 0x7f, 0xc3, 0xc3, 0xc3, 0xc3, 0x7f, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xc0, 0xc0, 0xc0, 0xc0, 0xc0, 0xe0, 0xfe, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xfe, 0x03, 0x03, 0x7e, 0xc0, 0xc0, 0x7f, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x1c, 0x36, 0x30, 0x30, 0x30, 0x30, 0xfc, 0x30, 0x30, 0x30, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x7e, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0xc6, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x18, 0x3c, 0x3c, 0x66, 0x66, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xc3, 0xe7, 0xff, 0xdb, 0xc3, 0xc3, 0xc3, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xc3, 0x66, 0x3c, 0x18, 0x3c, 0x66, 0xc3, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0xc0, 0x60, 0x60, 0x30, 0x18, 0x3c, 0x66, 0x66, 0xc3, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xff, 0x60, 0x30, 0x18, 0x0c, 0x06, 0xff, 0x00, 0x00, 0x00, 0x00},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x0f, 0x18, 0x18, 0x18, 0x38, 0xf0, 0x38, 0x18, 0x18, 0x18, 0x0f},  | 
					
						
							|  |  |  |     {0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0xf0, 0x18, 0x18, 0x18, 0x1c, 0x0f, 0x1c, 0x18, 0x18, 0x18, 0xf0},  | 
					
						
							|  |  |  |     {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x8f, 0xf1, 0x60, 0x00, 0x00, 0x00}  | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | RasterFont::RasterFont() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     // set GL modes
 | 
					
						
							|  |  |  |     glPixelStorei(GL_UNPACK_ALIGNMENT, 1); | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     // create the raster font
 | 
					
						
							|  |  |  |     fontOffset = glGenLists (128); | 
					
						
							|  |  |  |     for (int i = 32; i < 127; i++) { | 
					
						
							|  |  |  |         glNewList(i+fontOffset, GL_COMPILE); | 
					
						
							|  |  |  |         glBitmap(8, 13, 0.0f, 2.0f, 10.0f, 0.0f, rasters[i-32]); | 
					
						
							|  |  |  |         glEndList(); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | RasterFont::~RasterFont() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     glDeleteLists(fontOffset, 128); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void RasterFont::printString(const char *s, double x, double y, double z) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     // go to the right spot
 | 
					
						
							|  |  |  |     glRasterPos3d(x, y, z); | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     glPushAttrib (GL_LIST_BIT); | 
					
						
							|  |  |  |     glListBase(fontOffset); | 
					
						
							|  |  |  |     glCallLists((GLsizei)strlen(s), GL_UNSIGNED_BYTE, (GLubyte *) s); | 
					
						
							|  |  |  |     glPopAttrib (); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void RasterFont::printCenteredString(const char *s, double y, int screen_width, double z) | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  |     int length = (int)strlen(s); | 
					
						
							|  |  |  |     int x = int(screen_width/2.0 - (length/2.0)*char_width); | 
					
						
							|  |  |  |      | 
					
						
							|  |  |  |     printString(s, x, y, z); | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-08-09 09:16:59 +00:00
										 |  |  | void RasterFont::printMultilineText(const char *text, double start_x, double start_y, double z, int bbWidth, int bbHeight) | 
					
						
							| 
									
										
										
										
											2008-08-08 22:04:02 +00:00
										 |  |  | { | 
					
						
							| 
									
										
										
										
											2008-08-08 22:17:03 +00:00
										 |  |  | 	double x=start_x; | 
					
						
							| 
									
										
										
										
											2008-08-08 22:04:02 +00:00
										 |  |  | 	double y=start_y; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	static char temp[1024]; | 
					
						
							|  |  |  | 	char* t = temp; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	while(*text) | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		if(*text=='\n') | 
					
						
							|  |  |  | 		{ | 
					
						
							|  |  |  | 			*t=0; | 
					
						
							|  |  |  | 			printString(temp,x,y,z); | 
					
						
							|  |  |  | 			y-=char_height * 2.0f / bbHeight; | 
					
						
							| 
									
										
										
										
											2008-08-08 22:17:03 +00:00
										 |  |  | 			x=start_x; | 
					
						
							| 
									
										
										
										
											2008-08-08 22:04:02 +00:00
										 |  |  | 			t=temp; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		else if(*text=='\r') | 
					
						
							|  |  |  | 		{ | 
					
						
							|  |  |  | 			t=temp; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		else if(*text=='\t') | 
					
						
							|  |  |  | 		{ | 
					
						
							|  |  |  | 			//todo: add tabs every something like 4*char_width
 | 
					
						
							| 
									
										
										
										
											2008-08-08 22:17:03 +00:00
										 |  |  | 			*t=0; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			int cpos = strlen(temp); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			int newpos = cpos+4&(~3); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			printString(temp,x,y,z); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			x =start_x + (char_width*newpos) * 2.0f / bbWidth; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 			t=temp; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-08-08 22:04:02 +00:00
										 |  |  | 			*(t++)=' '; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		else | 
					
						
							|  |  |  | 		{ | 
					
						
							|  |  |  | 			*(t++)=*text; | 
					
						
							|  |  |  | 		} | 
					
						
							|  |  |  | 		text++; | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | 	if(t!=text) | 
					
						
							|  |  |  | 	{ | 
					
						
							|  |  |  | 		*t=0; | 
					
						
							|  |  |  | 		printString(temp,x,y,z); | 
					
						
							|  |  |  | 	} | 
					
						
							|  |  |  | } |