Click here to Skip to main content
15,896,493 members
Articles / Desktop Programming / MFC

Basic Curves And Surfaces Modeler

Rate me:
Please Sign up or sign in to vote.
4.17/5 (40 votes)
18 Apr 2012CPOL3 min read 248.9K   16.4K   117  
A basic demo of modeling curves and surfaces in OpenGL.
//############################################################################

//  Author:	Sharjith Nair
//  Email:	sharjith_ssn@hotmail.com

// Program:	OpenGL, C++ MFC Surface Modeler Demo Application

//							Important Notice:

//	This Idea and the Application is Copyright(c) Sharjith Nair 2002, 2003.
//	You can freely use it as long as you credit me for it.

//	No guarantee/warranty is given on this app and I will not be responsible 
//	for any damage to you, your property or any other person from using it.
//	USE IT ON YOUR OWN RISK.

//	Thankyou
//	Sharjith Nair.

//#############################################################################

// GLFont.h: interface for the CGLFont class.
//
// Idea And Part Of Code Taken From
// OpenGL SuperBible 2nd Ed
// OpenGL raster font demo from Chapter 7.
// 
// Original Code Written by Michael Sweet.
//
// Modified By N Sharjith Into C++ Code

//////////////////////////////////////////////////////////////////////

#if !defined(AFX_GLFONT_H__B9B714C5_7F4D_452D_A20F_B773A9CB0BF3__INCLUDED_)
#define AFX_GLFONT_H__B9B714C5_7F4D_452D_A20F_B773A9CB0BF3__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "VKGraphic.h"

#include "GLObject.h"
#include "Point3D.h"

class CPoint3D;

enum TextAlign { CENTER = 0, LEFT, RIGHT };

class CGLFont : public CGLObject  
{
public:
	VKGRAPHIC_API CGLFont(const string&, const CPoint3D&, const char *tf = "MS Sans Serif", int ht = 16,
		            int wt = 0, DWORD it = 0, const TextAlign& = LEFT);
	VKGRAPHIC_API virtual ~CGLFont();
	VKGRAPHIC_API void DrawString();
	VKGRAPHIC_API virtual CGLObject* Copy() const;
	VKGRAPHIC_API virtual void DefineDisplay();
	VKGRAPHIC_API virtual void Display(const GLDisplayMode& = GLWIREFRAME);
	VKGRAPHIC_API virtual void Hilight(const GLDisplayMode&);
private:
	void ComputeBoundLimits();
private:
	GLuint base;        /* Display list number of first character */
    int    fwidths[256]; /* Width of each character in pixels */
    int    fheight;      /* Height of characters */
	CPoint3D itsPosition;
	TextAlign itsAlignment;
	const char *typeface; // I - Font specification
	int height;           // I - Font height/size in pixels
	int weight;           // I - Weight of font (bold, etc)
	DWORD italic;
	const char* str;
	std::string itsStr;
};

#endif // !defined(AFX_GLFONT_H__B9B714C5_7F4D_452D_A20F_B773A9CB0BF3__INCLUDED_)

By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


Written By
Product Manager Mahindra & Mahindra
India India
Sharjith is a Mechanical Engineer with strong passion for Automobiles, Aircrafts and Software development.

Comments and Discussions