コード例 #1
0
ファイル: diz-graphics.cpp プロジェクト: chrislewisdev/DiZ
//This function outputs text to the screen of a specified font
void dizPrint(DIZ_FONT *font, const char *format, ...) {
	//Declare a buffer for our output text
	char text[256];
	//Declare a handle for our argument list
	va_list argList;

	//Double-check that we have an actual string to output
	if (format == NULL) {
		return;
	}

	//Start up our variable argument functions
	va_start(argList, format);
		//Use our argument list to format our string into our text[] array
		vsprintf_s(text, sizeof(text), format, argList);
	va_end(argList);

	//Push out our List attribute to prevent it interfering with anything else
	glPushAttrib(GL_LIST_BIT);
	//Check what type of font we're using
	if (font->info.type == DIZ_FONT_BITMAP) {
		//If it's a Bitmap, we account for the 32 skipped characters
		glListBase(font->base - 32);
	}else if (font->info.type == DIZ_FONT_OUTLINE) {
		//Otherwise we just set it to the normal base value for Outlines
		glListBase(font->base);
	}
	//Call the lists to output our text
	glCallLists(strlen(text), GL_UNSIGNED_BYTE, text);
	//Pop our List attribute back into place
	glPopAttrib();
}
コード例 #2
0
ファイル: DisplayList.hpp プロジェクト: WilstonOreo/Tomo
 void call(LISTS const& _lists) const
 {
   if (_lists.empty()) return;
   glListBase(id_);
   glCallLists(_lists.size(), type_id<typename LISTS::value_type>(),_lists.data());
   glListBase(0);
 }
コード例 #3
0
ファイル: TextRenderer.cpp プロジェクト: HaokeyoFry/NEWorld
	void glprint(int x, int y, string glstring){

		glBindTexture(GL_TEXTURE_2D, Font);
		glDisable(GL_DEPTH_TEST);
		glMatrixMode(GL_PROJECTION);
		glPushMatrix();
		glLoadIdentity();
		glOrtho(0, ww, wh, 0, -1.0, 1.0);
		glMatrixMode(GL_MODELVIEW);
		glPushMatrix();

		glLoadIdentity();
		glColor4f(0.5, 0.5, 0.5, a);
		glTranslated(x + 1, y + 1, 0);
		glListBase(gbe);
		glCallLists((GLsizei)glstring.length(), GL_UNSIGNED_BYTE, glstring.c_str());

		glLoadIdentity();
		glColor4f(r, g, b, a);
		glTranslated(x, y, 0);
		glListBase(gbe);
		glCallLists((GLsizei)glstring.length(), GL_UNSIGNED_BYTE, glstring.c_str());

		glPopMatrix();
		glMatrixMode(GL_PROJECTION);

		glPopMatrix();
		glMatrixMode(GL_MODELVIEW);

		glEnable(GL_DEPTH_TEST);
		glColor4f(1.0, 1.0, 1.0, 1.0);
	}
コード例 #4
0
ファイル: guiResources.c プロジェクト: cydvicious/rone
/**
 * Output text onto the GUI
 */
GLfloat textPrintf(const char *fmt, ...)
{
	unsigned int i;
	GLfloat length = 0;
	char text[256] = { 0 };
	va_list ap;

	if (fmt == NULL)
		return (-1);

	va_start(ap, fmt);
		vsprintf(text, fmt, ap);
	va_end(ap);

	for (i = 0; i < strlen(text); i++)
		length += gmf[(int) text[i]].gmfCellIncX;

	glPushMatrix();
		glScalef(textWidth, textHeight, 0);

		/* Translate for alignment */
		switch (alignment)
		{
		case ALIGN_RIGHT: {
			glTranslatef(-length, 0.0, 0.0);
			break;
		}
		case ALIGN_CENTER: {
			glTranslatef(-length / 2, 0.0, 0.0);
			break;
		}
		case ALIGN_LEFT:
		default: {
			break;
		}
		}

		glPushAttrib(GL_LIST_BIT);
		glPushMatrix();
			glListBase(base);
			glCallLists(strlen(text), GL_UNSIGNED_BYTE, text);
		glPopMatrix();

		if (textWidth != TEXT_LARGE)
			glLineWidth(LINE_WIDTH_SMALL);

		glPushMatrix();
			glListBase(baseOut);
			glCallLists(strlen(text), GL_UNSIGNED_BYTE, text);
		glPopMatrix();

		glLineWidth(LINE_WIDTH);

		glPopAttrib();
	glPopMatrix();

	return (length);
}
void CMy3D_view_FPbody_modelView::DrawCoordinate()
{
	// Clear the window with current clearing color

	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();
	glPushMatrix();

	glTranslatef(-DrawSpaceSize + 0.5f, -DrawSpaceSize + 0.8f, 0.0f);
	
	glRotatef(-45+OPRT->Get_xRot(), 0.0f, 1.0f, 0.0f);
	glRotatef(-45+OPRT->Get_yRot(), 1.0f, 0.0f, 0.0f);

	glClear(GL_COLOR_BUFFER_BIT);	
	// Set current drawing color to red
	//		   R	 G	   B
	glColor3f(0.0, 0.0, 0.0);
	glLineWidth(2.5);
	glBegin(GL_LINES);
        glVertex3f(0.0f,0.0f,0.0f);
        glVertex3f(DrawSpaceSize*0.2f,0.0f,0.0f);
	glEnd();
	
	glBegin(GL_LINES);
		glVertex3f(0.0f,0.0f,0.0f);
		glVertex3f(0.0f,DrawSpaceSize*0.2,0.0f);
		
	glEnd();

	glBegin(GL_LINES);
		glVertex3f(0.0f,0.0f,0.0f);
		glVertex3f(0.0f,0.0f,DrawSpaceSize*0.2f);
	glEnd();

	glLineWidth(1.0);
	glTranslatef(0.30f, 0.30f, 0.30f);
	glutWireCube(0.6); 

	glRasterPos3f(DrawSpaceSize*0.2f, 0.0f-0.3f, 0.0f-0.3f);
	glListBase(m_2DTextList);
	glCallLists(1, GL_UNSIGNED_BYTE ,"x");

	glRasterPos3f(0.0f-0.3, DrawSpaceSize*0.2f-0.2f, 0.0f-0.3f);
	glListBase(m_2DTextList);
	glCallLists(1, GL_UNSIGNED_BYTE ,"y");

	glRasterPos3f(0.0f-0.3, 0.0f-0.3f, DrawSpaceSize*0.2f);
	glListBase(m_2DTextList);
	glCallLists(1, GL_UNSIGNED_BYTE ,"z");

	glPopMatrix();
	glLoadIdentity();
}
コード例 #6
0
ファイル: glfont.cpp プロジェクト: conanhung/sofa_rc1
void glfntWriteBitmap(float x,float y,char *s)
{
	GLint CurBase;
	
	if (LettersDL==0) return;
	glRasterPos2f(x,y);
	
	glGetIntegerv(GL_LIST_BASE,&CurBase);
	glListBase(LettersDL);
	glCallLists(strlen(s),GL_UNSIGNED_BYTE,s);
	glListBase(CurBase);
}
コード例 #7
0
ファイル: bitmapFont.cpp プロジェクト: garfy7/Equalizer
void BitmapFont::draw( const std::string& text ) const
{
    const GLuint lists = _gl.getList( _key );
    LBASSERTINFO( lists != ObjectManager::INVALID,
                  "Font not initialized" );

    if( lists != ObjectManager::INVALID )
    {
        glListBase( lists );
        glCallLists( GLsizei( text.size( )), GL_UNSIGNED_BYTE, text.c_str( ));
        glListBase( 0 );
    }
}
コード例 #8
0
ファイル: handler_src_dst_ip.c プロジェクト: mkarir/flamingo
void handler_src_dst_ip_render_2d_scene(void)
{
	guint i;
	GLfloat unit_size = CUBE_SIZE  / (GLfloat) (viz->src_bound.max_x_coord - viz->src_bound.min_x_coord);

	// draw a square outline
	glCallList(GREY_2D_SQUARE_CALL_LIST);

	// draw a white square representing each range over our grey base
	for (i = 0; i < viz->num_src_ranges; ++i) {
		GLfloat x_coord = (GLfloat) ((viz->src_ranges[i].x_coord - viz->src_bound.min_x_coord) * unit_size) - 1.0;
		GLfloat y_coord = (GLfloat) ((viz->src_ranges[i].y_coord - viz->src_bound.min_y_coord) * unit_size) - 1.0;
		GLfloat width = (GLfloat) (viz->src_ranges[i].width * unit_size);

		glBegin(GL_QUAD_STRIP);
		glNormal3f(0.0, 0.0, 1.0);
		glColor3ub(255, 255, 255);

		glVertex2f(x_coord, y_coord);
		glVertex2f(x_coord, y_coord + width);
		glVertex2f(x_coord + width, y_coord);
		glVertex2f(x_coord + width, y_coord + width);

		glEnd();
	}

	// derive address based on the quadtree coordinates of our bounding box
	struct in_addr low_addr;
	struct in_addr high_addr;
	range_reverse_quadtree(&viz->src_bound, &low_addr, &high_addr);

	gchar *low_str = g_strdup_printf(" %s", inet_ntoa(low_addr));
	gchar *high_str = g_strdup_printf(" %s", inet_ntoa(high_addr));

	// lower address range label
	glColor3f(1.0, 1.0, 1.0);
	glRasterPos2f(-1.0, -1.0);
	glListBase(viz->font_list_2d);
	glCallLists(strlen(low_str), GL_UNSIGNED_BYTE, low_str);

	// higher address range label
	glRasterPos2f(1.0, 1.0);
	glListBase(viz->font_list_2d);
	glCallLists(strlen(high_str), GL_UNSIGNED_BYTE, high_str);

	g_free(low_str);
	g_free(high_str);

	// render all our nodes!
	g_tree_foreach(viz->nodes, handler_src_dst_ip_render_2d_node, NULL);
}
コード例 #9
0
ファイル: TextRenderer.cpp プロジェクト: 435886030/NEWorld
	void renderASCIIString(int x, int y, string glstring) {
		//glBindTexture(GL_TEXTURE_2D, Font);
		glPushMatrix();
		glLoadIdentity();
		glColor4f(0.5, 0.5, 0.5, a);
		glTranslated(x + 1, y + 1, 0);
		glListBase(gbe);
		glCallLists((GLsizei)glstring.length(), GL_UNSIGNED_BYTE, glstring.c_str());
		glLoadIdentity();
		glColor4f(r, g, b, a);
		glTranslated(x, y, 0);
		glListBase(gbe);
		glCallLists((GLsizei)glstring.length(), GL_UNSIGNED_BYTE, glstring.c_str());
		glPopMatrix();
	}
コード例 #10
0
ファイル: sv_font.c プロジェクト: lichsword/VideoGame
void printString(char * s)
{
	glPushAttrib(GL_LIST_BIT);
	glListBase(fontOffset);
	glCallLists(strlen(s), GL_UNSIGNED_BYTE, (GLubyte *) s);
	glPopAttrib();
}
コード例 #11
0
ファイル: gl_appdemo7_1.cpp プロジェクト: jinshizi/rushcodes
//--------------------------------------------------------------
// Name:			CGL_APP::Print - public
// Description:		Print a string onto the screen
// Arguments:		-iX, iY: Position on the screen to start printing
//					-vecColor: The color of the printed text
//					-szString: the string to be printed
// Return Value:	None
//--------------------------------------------------------------
void CGL_APP::Print( int iX, int iY, CVECTOR vecColor, char* szString, ... )
{
	va_list va;
	char	szParsedString[256];

	//make sure that the string actually exists
	if( szString==NULL )
		return;

	//parse the string
	va_start( va, szString );
	    vsprintf( szParsedString, szString, va );
	va_end( va );

	//set the color for the text
	glColor3f( vecColor[0], vecColor[1], vecColor[2] );

	glPushMatrix( );
		glLoadIdentity( );

		//position and render the text
		glRasterPos2d( iX, iY );
		glListBase( m_uiFont );
		glCallLists( strlen( szParsedString ), GL_UNSIGNED_BYTE, szParsedString );
	glPopMatrix( );
}
コード例 #12
0
ファイル: Lesson21.cpp プロジェクト: xtmacbook/OpenGL_NeHe
GLvoid glPrint(GLint x, GLint y, int set, const char *fmt, ...)	// Where The Printing Happens
{
	char		text[256];									// Holds Our String
	va_list		ap;											// Pointer To List Of Arguments

	if (fmt == NULL)										// If There's No Text
		return;												// Do Nothing

	va_start(ap, fmt);										// Parses The String For Variables
	    vsprintf(text, fmt, ap);							// And Converts Symbols To Actual Numbers
	va_end(ap);												// Results Are Stored In Text

	if (set>1)												// Did User Choose An Invalid Character Set?
	{
		set=1;												// If So, Select Set 1 (Italic)
	}
	glEnable(GL_TEXTURE_2D);								// Enable Texture Mapping
	glLoadIdentity();										// Reset The Modelview Matrix
	glTranslated(x,y,0);									// Position The Text (0,0 - Bottom Left)
	glListBase(base-32+(128*set));							// Choose The Font Set (0 or 1)

	if (set==0)												// If Set 0 Is Being Used Enlarge Font
	{
		glScalef(1.5f,2.0f,1.0f);							// Enlarge Font Width And Height
	}

	glCallLists(strlen(text),GL_UNSIGNED_BYTE, text);		// Write The Text To The Screen
	glDisable(GL_TEXTURE_2D);								// Disable Texture Mapping
}
コード例 #13
0
void CFont::printSubString(float xPosition,  float yPosition,
                           float width,      float height,
                           float r, float g, float b,
                           int   start, int end,
                           const String &string)
{
  if (start >= end)
    return;
    
  int stringLength =  string.getLength();
  if (stringLength  < end)
    return;
    
  glColor3f(r,g,b);
  fontTexture.activate();
  glEnable(GL_BLEND);
  glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
  
  glMatrixMode(GL_MODELVIEW);
  glPushMatrix();
  glTranslatef(xPosition, yPosition, 0);
  
  glListBase(fontBaseRange);
  glScalef(width, height,1.0f);
  glCallLists(end - start,GL_UNSIGNED_BYTE, string + start);
  glPopMatrix();
  glDisable(GL_BLEND);
  
  fontTexture.deactivate();
  glColor3f(1,1,1);
}
コード例 #14
0
ファイル: Lesson14.cpp プロジェクト: yangxt225/OpenGL
GLvoid glPrint(const char *fmt, ...)					// Custom GL "Print" Routine
{
    float		length=0;								// Used To Find The Length Of The Text
    char		text[256];								// Holds Our String
    va_list		ap;										// Pointer To List Of Arguments

    if (fmt == NULL)									// If There's No Text
        return;											// Do Nothing

    va_start(ap, fmt);									// Parses The String For Variables
    vsprintf(text, fmt, ap);						// And Converts Symbols To Actual Numbers
    va_end(ap);											// Results Are Stored In Text

    for (unsigned int loop=0; loop<strlen(text); loop++)	// Loop To Find Text Length
    {
        length+=gmf[text[loop]].gmfCellIncX;			// Increase Length By Each Characters Width
    }

    glTranslatef(-length/2,0.0f,0.0f);					// Center Our Text On The Screen

    glPushAttrib(GL_LIST_BIT);							// Pushes The Display List Bits
    glListBase(base);									// Sets The Base Character to 0
    glCallLists(strlen(text), GL_UNSIGNED_BYTE, text);	// Draws The Display List Text
    glPopAttrib();										// Pops The Display List Bits
}
コード例 #15
0
int main(void)
{
	int menu;
	FsOpenWindow(32, 32, winWidth, winHeight, 1); // 800x600 pixels, useDoubleBuffer=1

	int listBase;
	listBase=glGenLists(256);
	YsGlUseFontBitmap8x12(listBase);
	glListBase(listBase);

	glDisable(GL_DEPTH_TEST);
	glDisable(GL_LIGHTING);
	glDepthFunc(GL_ALWAYS);

	while(1)
	{
		menu=Menu();
		if(menu==1)
		{
			int score;
			score=Game();
			GameOver(score);
		}
		else if(menu==eStop)
		{
			break;
		}
	}

	return 0;
}
コード例 #16
0
ファイル: tester-viz-sdl.c プロジェクト: BennyKJohnson/rrrr
/* Print our GL text to the screen */
GLvoid glPrint( GLfloat cnt1, GLfloat cnt2, const char *fmt, ... )
{
    char text[256]; /* Holds our string */
    va_list ap;     /* Pointer to our list of elements */

    /* If there's no text, do nothing */
    if ( fmt == NULL )
    return;

    /* Position The Text On The Screen */
    glRasterPos2f( cnt1, cnt2 );

    /* Parses The String For Variables */
    va_start( ap, fmt );
      /* Converts Symbols To Actual Numbers */
      vsprintf( text, fmt, ap );
    va_end( ap );

    /* Pushes the Display List Bits */
    glPushAttrib( GL_LIST_BIT );

    /* Sets base character to 32 */
    glListBase( base - 32 );

    /* Draws the text */
    glCallLists( strlen( text ), GL_UNSIGNED_BYTE, text );

    /* Pops the Display List Bits */
    glPopAttrib( );
}
コード例 #17
0
ファイル: CoordSys.cpp プロジェクト: idle-git/fabathome
//---------------------------------------------------------------------------
void CCoordSys::Draw(CVec color)
//---------------------------------------------------------------------------
{
	//draw coordinate system axes
	glBegin(GL_LINES);
	glColor3d(color.x,color.y,color.z);
	glVertex3d(m_vecOrg);
	glVertex3d(m_vecOrg+m_vecDirX);
	glVertex3d(m_vecOrg);
	glVertex3d(m_vecOrg+m_vecDirY);
	glVertex3d(m_vecOrg);
	glVertex3d(m_vecOrg+m_vecDirZ);
	glEnd();

	glListBase(1000); 
	glColor3d(0,1,1);
	glRasterPos3d(m_vecOrg+m_vecDirX);
	glCallLists(1, GL_UNSIGNED_BYTE, "x");
	glRasterPos3d(m_vecOrg+m_vecDirY);
	glCallLists(1, GL_UNSIGNED_BYTE, "y");
	glRasterPos3d(m_vecOrg+m_vecDirZ);
	glCallLists(1, GL_UNSIGNED_BYTE, "z");

	m_vecOrg.DrawMarker();
}
コード例 #18
0
void glPrints(int x, int y, int winW,int winH,char *string)	// Where The Printing Happens
{
    glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA   );

    glBindTexture(GL_TEXTURE_2D, AsciiFontTexId);			// Select Our Font Texture
    glDisable(GL_DEPTH_TEST);							// Disables Depth Testing
    glMatrixMode(GL_PROJECTION);						// Select The Projection Matrix
    glPushMatrix();										// Store The Projection Matrix
    glLoadIdentity();									// Reset The Projection Matrix
    glOrtho(0,winW,0,winH,-1,1);							// Set Up An Ortho Screen
    glMatrixMode(GL_MODELVIEW);							// Select The Modelview Matrix
    glPushMatrix();										// Store The Modelview Matrix
    glLoadIdentity();									// Reset The Modelview Matrix

    glTranslated(x,y,0);								// Position The Text (0,0 - Bottom Left)

    glListBase(base-32);						// Choose The Font Set (0 or 1)
    glCallLists(strlen(string),GL_UNSIGNED_BYTE,string);// Write The Text To The Screen

    glMatrixMode(GL_PROJECTION);						// Select The Projection Matrix
    glPopMatrix();										// Restore The Old Projection Matrix
    glMatrixMode(GL_MODELVIEW);							// Select The Modelview Matrix
    glPopMatrix();										// Restore The Old Projection Matrix
    glEnable(GL_DEPTH_TEST);							// Enables Depth Testing
}
コード例 #19
0
ファイル: Font.cpp プロジェクト: n3on/revisy
 void BFont::print(float x, float y, const char* string)
 {
     glDisable(GL_TEXTURE_2D);
     glDisable(GL_LIGHTING);

     glMatrixMode(GL_PROJECTION);
     glPushMatrix();
     glLoadIdentity();
     glOrtho(0,0,400,400,0,1);

     glMatrixMode(GL_MODELVIEW);
     glLoadIdentity();

     glRasterPos2f(x,y);

     glListBase(this->m_listBase-32);
     glCallLists(strlen(string),GL_UNSIGNED_BYTE,string);

     glMatrixMode(GL_PROJECTION);
     glPopMatrix();

     glMatrixMode(GL_MODELVIEW);

     glEnable(GL_LIGHTING);
     glEnable(GL_TEXTURE_2D);
 }
コード例 #20
0
void RasterFont::printString(const char *s, double x, double y, double z)
{
	int length = (int)strlen(s);
	if (!length)
		return;
	if (length >= TEMP_BUFFER_SIZE)
		length = TEMP_BUFFER_SIZE - 1;

	// Sanitize string to avoid GL errors.
	char *s2 = temp_buffer;
	memcpy(s2, s, length);
	s2[length] = 0;
	for (int i = 0; i < length; i++)
	{
		if (s2[i] < 32 || s2[i] > 126)
			s2[i] = '!';
	}

	// go to the right spot
	glRasterPos3d(x, y, z);

	glPushAttrib (GL_LIST_BIT);
	glListBase(fontOffset);
	glCallLists((GLsizei)strlen(s2), GL_UNSIGNED_BYTE, (GLubyte *) s2);

	glPopAttrib();
}
コード例 #21
0
//------------------------------------------------------------------------------
// outputText() -- Text output routines
//------------------------------------------------------------------------------
void BitmapFont::outputText(const double x, const double y, const char* txt, const int n, const bool vf, const bool)
{
    // Make sure we have characters to print
    if (n <= 0) return;

    // Make sure we have a loaded font
    if (isNotLoaded()) {
        loadFont();
        if (isNotLoaded()) throw new ExpInvalidFont();
    }

    // Prepare the output text
    char cbuf[MSG_BUF_LEN];
    int nn = xferChars(cbuf,MSG_BUF_LEN,txt,n);
    if (nn <= 0) return;

    // Set the base
    glListBase(getBase());

    // output the text
    if (vf) {
        // Vertical text
        for (int i = 0; i < nn; i++) {
            glRasterPos2d( x, (y - float(i)*getLineSpacing()) );
            glCallLists(1, GL_UNSIGNED_BYTE, &cbuf[i]);
        }
    }
    else {
        // Normal text
        glRasterPos2d(x,y);
        glCallLists(nn, GL_UNSIGNED_BYTE, cbuf);
    }
}
コード例 #22
0
ファイル: xrotfontdemo.c プロジェクト: Distrotech/mesa-demos
static void redraw( Display *dpy, Window w )
{
   static const char *text = "  Rotated bitmap text";
   int i;

   glClear( GL_COLOR_BUFFER_BIT );

   /* triangle */
   glColor3f( 0.2, 0.2, 1.0 );
   glBegin(GL_TRIANGLES);
   glVertex2f( -0.8,  0.7 );
   glVertex2f( -0.8, -0.7 );
   glVertex2f(  0.8,  0.0 );
   glEnd();

   /* marker */
   glColor3f( 0, 1, 0 );
   glBegin(GL_POINTS);
   glVertex2f(0, 0);
   glEnd();

   /* text */
   glColor3f( 1, 1, 1 );

   for (i = 0; i < 4; i++) {
      glRasterPos2f(0, 0); 
      glListBase(FontBase[i]);
      glCallLists(strlen(text), GL_UNSIGNED_BYTE, (GLubyte *) text);
   }

   glXSwapBuffers( dpy, w );
}
コード例 #23
0
ファイル: GLText.cpp プロジェクト: RedRingRico/TERMED
	void GLText::PrintString( const float p_X, const float p_Y,
		const std::string &p_String, ... )
	{
		char Text[ 512 ] = { '\0' };
		char StringCopy[ 512 ] = { '\0' };
		va_list ListPointer;

		if( p_String.size( ) == 0 )
		{
			return;
		}

		strncpy( StringCopy, p_String.c_str( ), p_String.size( ) );

		va_start( ListPointer, StringCopy );
		vsprintf( Text, p_String.c_str( ), ListPointer );
		va_end( ListPointer );

		glMatrixMode( GL_PROJECTION );
		glLoadIdentity( );
		glOrtho( 0, m_ScreenWidth, m_ScreenHeight, 0, 0, 1 );
		glMatrixMode( GL_MODELVIEW );
		glLoadIdentity( );
		glTranslatef( 0.0f, 0.0f, -1.0f );

		glColor4f( m_Red, m_Green, m_Blue, m_Alpha );
		glRasterPos2f( p_X, p_Y );

		glPushAttrib( GL_LIST_BIT );
		glListBase( m_FontBase - 32 );
		glCallLists( p_String.size( ), GL_UNSIGNED_BYTE, Text );
		glPopAttrib( );
	}
コード例 #24
0
ファイル: glfem.c プロジェクト: EdwardNicol/Projet-LMECA1120
void glfemDrawMessage(int h, int v, char *s)
{
    // Les coordonnées négatives sont normalement admises :-)
    // On conserve le strint entier même si le début est off-screen

    int off;    
    glPushAttrib(GL_ALL_ATTRIB_BITS);   
    glDisable(GL_TEXTURE_2D);   
    glMatrixMode(GL_PROJECTION);
    glPushMatrix();
    glLoadIdentity();
    glOrtho (0.0, gRasterH, gRasterV, 0.0, -1.0, 1.0);
    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();
    glLoadIdentity();
    
    if (h < 0)   h = gRasterH + h - strlen(s)*10;
    if (v < 0)   v = gRasterV + v; 
    glRasterPos2i(h, v);    
    glListBase(fontOffset);
    
    if (h >= 0) {
      glRasterPos2i(h, v);
      glCallLists((GLsizei) strlen(s), GL_UNSIGNED_BYTE, (GLubyte *) s); }
    else { 
      off = (h-9)/10;
      glRasterPos2i(h - off*10, v);
      if (strlen(s)+off > 0) glCallLists((GLsizei) strlen(s)+off, GL_UNSIGNED_BYTE, (GLubyte *) &s[-off]); }
    
    glPopMatrix(); 
    glMatrixMode(GL_PROJECTION);
    glPopMatrix();
    glMatrixMode(GL_MODELVIEW);
    glPopAttrib ();
}
コード例 #25
0
ファイル: gutil.cpp プロジェクト: AltroCoin/altrocoin
void print_text(const char* string) {
	if(string==NULL) return;
	glPushAttrib(GL_LIST_BIT);
	glListBase(listBase);
	glCallLists((GLsizei)strlen(string), GL_UNSIGNED_BYTE, string);
	glPopAttrib();
}
コード例 #26
0
ファイル: graphics.cpp プロジェクト: BerryFry/CyberElegans
GLvoid glPrint(GLint x, GLint y, const char *fmt, ...)					// Custom GL "Print" Routine
{
	/*
	float		length=0;								// Used To Find The Length Of The Text
	char		text[256];								// Holds Our String
	va_list		ap;										// Pointer To List Of Arguments

	if (fmt == NULL)									// If There's No Text
		return;											// Do Nothing

	va_start(ap, fmt);									// Parses The String For Variables
	    vsprintf_s(text, fmt, ap);						// And Converts Symbols To Actual Numbers
	va_end(ap);											// Results Are Stored In Text

	for (unsigned int loop=0;loop<(strlen(text));loop++)	// Loop To Find Text Length
	{
		length+=gmf[text[loop]].gmfCellIncX;			// Increase Length By Each Characters Width
	}

	glTranslatef(x,y,0.0f);					// Center Our Text On The Screen

	glPushAttrib(GL_LIST_BIT);							// Pushes The Display List Bits
	glListBase(base);									// Sets The Base Character to 0
	glCallLists(strlen(text), GL_UNSIGNED_BYTE, text);	// Draws The Display List Text
	glPopAttrib();	
	*/
	// Pops The Display List Bits

	char		text[256];								// Holds Our String
	va_list		ap;										// Pointer To List Of Arguments

	if (fmt == NULL)									// If There's No Text
		return;											// Do Nothing

	va_start(ap, fmt);									// Parses The String For Variables
	    vsprintf(text, fmt, ap);						// And Converts Symbols To Actual Numbers
	va_end(ap);											// Results Are Stored In Text

	RECT window;												// Storage For Window Dimensions
	GetClientRect (g_window->hWnd,&window);						// Get Window Dimensions
	glMatrixMode(GL_PROJECTION);								// Select The Projection Matrix
	glDisable(GL_LIGHTING);
	glPushMatrix();												// Store The Projection Matrix
	glLoadIdentity();											// Reset The Projection Matrix
	glOrtho(0,window.right,0,window.bottom,0,1);				// Set Up An Ortho Screen
	//////////////////////////////////////////
	glTranslatef((GLfloat)x,(GLfloat)(window_height-y),-0.1f);	
	glPushAttrib(GL_LIST_BIT);							// Pushes The Display List Bits
	glListBase(base - 32);								// Sets The Base Character to 32
	glPushMatrix();
	glRasterPos2f(0.1f,0.1f);
	//glTranslatef(x,y,-1.0f);	
	glCallLists(strlen(text), GL_UNSIGNED_BYTE, text);	// Draws The Display List Text
	glPopMatrix();
	glPopAttrib();										// Pops The Display List Bits
	/////////////////////////////////////////
	glEnable(GL_LIGHTING);
	glPopMatrix();	
	glMatrixMode(GL_MODELVIEW);
}
コード例 #27
0
ファイル: GUIWindow.cpp プロジェクト: ckl1202/splotch
		void GUIWindow::PrintString(std::string str)
		{
			const char *ch;
			ch = str.c_str();
			glListBase(base);
			glCallLists(strlen(ch), GL_UNSIGNED_BYTE, (GLubyte *)ch);
		}
コード例 #28
0
ファイル: GUI_Laftfont.cpp プロジェクト: highattack30/xptools
void GUI_Laftfont::printgl(int x, int y, int z, const wchar_t *fmt, ...)
{
	wchar_t			text[2048];
	va_list			ap;
	size_t			str_len;

	if ((!listsFont) || (!fmt)) return;

	va_start(ap, fmt);
	#ifdef WIN32
		_vsnwprintf(text, 2048, fmt, ap);
	#else
		vswprintf(text, 2048, fmt, ap);
	#endif
	va_end(ap);
	str_len = wcslen(text);

	// should be in modelview mode
	glPushMatrix();
	glLoadIdentity();
	glEnable(GL_TEXTURE_2D);
	glListBase(listsFont);
	glTranslatef((float)x, (float)y, (float)z);
	glScalef(1.0f, -1.0f, 1.0f);
	#ifdef WIN32
		glCallLists((GLsizei)(str_len), GL_UNSIGNED_SHORT, text);
	#else
		glCallLists((GLsizei)(str_len), GL_UNSIGNED_INT, text);
	#endif
	glDisable(GL_TEXTURE_2D);
	glPopMatrix();

	return;
}
コード例 #29
0
ファイル: nehewidget.cpp プロジェクト: qanny/QtOpenGL
GLvoid nehewidget::glPrint(GLint x, GLint y, int set, const char *fmt, ...)
{
	char  text[256];      
	va_list  ap;       

	if (fmt == NULL)  
		return;        

	va_start(ap, fmt);       
	vsprintf(text, fmt, ap);      
	va_end(ap);        

	if (set>1)        
	{
		set=1;       
	}
	glEnable(GL_TEXTURE_2D);      
	glLoadIdentity();       
	glTranslated(x,y,0);       
	glListBase(base-32+(128*set));      

	if (set==0)        
	{
		glScalef(1.5f,2.0f,1.0f);     
	}

	glCallLists(strlen(text),GL_UNSIGNED_BYTE, text);   
	glDisable(GL_TEXTURE_2D);      
}
コード例 #30
0
ファイル: GUI_Laftfont.cpp プロジェクト: highattack30/xptools
void GUI_Laftfont::printgl(int x, int y, int z, const char *fmt, ...)
{
	char			text[2048];
	va_list			ap;
	size_t			str_len;

	if ((!listsFont) || (!fmt)) return;

	va_start(ap, fmt);
	vsnprintf(text, 2048, fmt, ap);
	va_end(ap);
	str_len = strlen(text);

	// should be in modelview mode
	glPushMatrix();
	glLoadIdentity();
	glEnable(GL_TEXTURE_2D);
	glListBase(listsFont);
	glTranslatef((float)x, (float)y, (float)z);
	glScalef(1.0f, -1.0f, 1.0f);
	glCallLists((GLsizei)(str_len), GL_BYTE, text);
	glDisable(GL_TEXTURE_2D);
	glPopMatrix();
	return;
}