00001
00002
00003
00004 #include <iostream>
00005 #include "video_base.h"
00006
00008 void
00009 video_base::render_string( real_t &x, real_t &y, const gl::ttf *font,
00010 real_t size, const std::string& text )
00011 {
00012
00013 assert( font );
00014
00015
00016 real_t scale = m_width / 1024.0;
00017 x *= scale;
00018 y *= scale;
00019 size *= scale;
00020
00021
00022 if( m_2d_enabled > 0 ) {
00023
00024 font->render_string( x, y, size, text );
00025 } else {
00026
00027 enable_2d( );
00028
00029
00030 font->render_string( x, y, size, text );
00031
00032
00033 disable_2d( );
00034 }
00035
00036
00037 scale = 1 / scale;
00038 x *= scale;
00039 y *= scale;
00040 }
00041
00043 void
00044 video_base::render_shadowed_string( real_t &x, real_t &y, const gl::ttf *font,
00045 real_t size, real_t shadow, const std::string& text )
00046 {
00047
00048 assert( font );
00049
00050
00051 real_t scale = m_width / 1024.0;
00052 x *= scale;
00053 y *= scale;
00054 size *= scale;
00055 shadow *= scale;
00056
00057
00058 real_t x_save = x;
00059 real_t y_save = y;
00060
00061
00062 float color[ 4 ];
00063 glGetFloatv( GL_CURRENT_COLOR, color );
00064
00065
00066 if( m_2d_enabled > 0 ) {
00067
00068 x += shadow; y -= shadow;
00069 glColor4f( 0.0, 0.0, 0.0, 0.9 );
00070 font->render_string( x, y, size, text );
00071
00072
00073 x = x_save; y = y_save;
00074 glColor4fv( color );
00075 font->render_string( x, y, size, text );
00076 } else {
00077
00078 enable_2d( );
00079
00080
00081 x += shadow; y -= shadow;
00082 glColor4f( 0.0, 0.0, 0.0, 0.9 );
00083 font->render_string( x, y, size, text );
00084
00085
00086 x = x_save; y = y_save;
00087 glColor4fv( color );
00088 font->render_string( x, y, size, text );
00089
00090
00091 disable_2d( );
00092 }
00093
00094
00095 scale = 1 / scale;
00096 x *= scale;
00097 y *= scale;
00098 }
00099
00101 void
00102 video_base::render_image( const rectf& rect, const gl::texture& texture )
00103 {
00104
00105 assert( texture );
00106
00107
00108 real_t scale = m_width / 1024.0;
00109 rectf r = rect;
00110 r.scale( scale );
00111
00112
00113 if( m_2d_enabled > 0 ) {
00114
00115 gl::render_image( r, texture );
00116 } else {
00117
00118 enable_2d( );
00119
00120
00121 gl::render_image( r, texture );
00122
00123
00124 disable_2d( );
00125 }
00126 }