PDA

View Full Version : Can't compile example from text book. 3 errors.



eiger3970
03-02-2013, 11:26 PM
Hi,
my code below is similar to an example on a previous page in the text book which compiles.
For 1 error reason, this text book example has a lot of mistakes that won't compile and I need some help to fix it.
1 error:
main.cpp: In function ‘void polyline(GLint, GLint, GLint, GLint)’:
main.cpp:50:9: error: ‘ptCtr’ was not declared in this scope


Code:

#include <GL/glut.h>

GLsizei winWidth = 400, winHeight = 300; // Initial display-window size.
GLint endPtCtr = 0; // Initialise line endpoint counter.

class scrPt
{
public:
GLint x, y;
};

void init (void)
{
glClearColor (0.0, 0.0, 1.0, 1.0) // Set display-window colour to blue.

glMatrixMode (GL_PROJECTION);
gluOrtho2D (0.0, 200.0, 0.0, 150.0);
}

void displayFcn (void)
{
glClear (GL_COLOR_BUFFER_BIT);
}

void winReshapeFcn (GLint newWidth, GLint newHeight)
{
/* Reset viewport and projection parameters. */
glViewport (0, 0, newWidth, newHeight);
glMatrixMode (GL_PROJECTION);
glLoadIdentity ( );
gluOrtho2D (0.0, GLdouble (newWidth), 0.0, GLdouble (newHeight));

/* Reset display-window size parameters. */
winWidth = newWidth;
winHeight = newHeight;
}

void drawLineSegment (scrPt endPt1, scrPt endPt2)
{
glBegin (GL_LINES);
glVertex2i (endPt1.x, endPt1.y);
glVertex2i (endPt2.x, endPt2.y);
glEnd( );
}

void polyline (GLint button, GLint action, GLint xMouse, GLint yMouse)
{
static scrPt endPt1, endPt2;

if (ptCtr == 0)
{
if (button == GLUT_LEFT_BUTTON && action == GLUT_DOWN)
{
endPt1.x = xMouse;
endPt1.y = winHeight - yMouse;
ptCtr = 1;
}
else
if (button == GLUT_RIGHT_BUTTON) // Quit the program.
exit (0);
}
else
if (button == GLUT_LEFT_BUTTON && action == GLUT_DOWN)
{
endPt2.x = xMouse;
endPt2.y = winHeight - yMouse;
drawLineSegment (endPt1, endPt2);

endPt1 = endPt2;
}
else
if (button = GLUT_RIGHT_BUTTON) // Quit the program.
exit (0);

glFlush ( );
}

void main (int argc, char** argv)
{
glutInit (&argc, argv);
glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB);
glutInitWindowPosition (100, 100);
glutInitWindowSize (winWidth, winHeight);
glutCreateWindow ("Draw Interactive Polyline");

init ( );
glutDisplayFunc (displayFcn);
glutReshapeFunc (winReshapeFcn);
glutMouseFunc (polyline);

glutMainLoop ( );
}

tonyo_au
03-03-2013, 12:29 AM
A quick look it seems ptCtr should be endPtCtr - but the compiler is correct it is not defined.

Please enclose code is side "square-bracket code square-bracket" "square-bracket /code square-bracket" when posting

EDIT: I would be very doubtful about using a book with that many errors

Dark Photon
03-03-2013, 07:46 AM
Please enclose code is side "square-bracket code square-bracket" "square-bracket /code square-bracket" when posting

The tag is very useful for telling folks about VBulletin markup - discovered that a few months ago. For instance:


Please enclose code inside [noparse]
... blocks when posting (or use ... or ... if you want colorization as well).

tonyo_au
03-03-2013, 08:59 PM
Thanks for that