CS430 Computer Graphics - PowerPoint PPT Presentation

About This Presentation
Title:

CS430 Computer Graphics

Description:

argv[0] = dummyString; //hook up the pointer. int argc =1; //to satisfy glutInit() glutInit(&argc, argv); glutInitDisplayMode(GLUT_SINGLE |GLUT_RGB) ... – PowerPoint PPT presentation

Number of Views:41
Avg rating:3.0/5.0
Slides: 15
Provided by: ChiChe7
Learn more at: https://cs.winona.edu
Category:

less

Transcript and Presenter's Notes

Title: CS430 Computer Graphics


1
CS430 Computer Graphics
  • Case Study
  • Canvas Class

2
canvas.h
  • include ltGl/glut.hgt
  • class Point2
  • public
  • Point2() x y 0.0f //constructor1
  • Point2(float xx, float yy) x xx y yy
    //constructor2
  • void set(float xx, float yy) x xx y yy
  • float getX() return x
  • float getY() return y
  • void draw() glBegin(GL_POINTS)//draw this
    point
  • glVertex2f((GLfloat)x,(GLfloat)y)
  • glEnd()
  • glFlush()
  • private
  • float x,y

3
class IntRect public IntRect() l 0 r
100 b 0 t 100 //constructors IntRect(int
left, int right, int bottom, int top) l left
r right b bottom t top void set(int
left, int right, int bottom, int top) l left
r right b bottom t top int getL()
return l int getR() return r int getT()
return t int getB() return b void draw()
glRecti((GLint)l, (GLint)b, (GLint)r, (GLint)t)
glFlush() //draw this rectangle
using OpenGL private int l,r,b,t
4
class RealRect public RealRect() l 0.0f r
100.0f b 0.0f t 100.0f//constructors Re
alRect(float left, float right, float bottom,
float top) l left r right b bottom t
top void set(float left, float right, float
bottom, float top) l left r right b
bottom t top float getL() return
l float getR() return r float getT()
return t float getB() return b void
draw(void) glRectf((GLdouble)l,(GLdouble)b,(GLdou
ble)r,(GLdouble)t) glFlush()
// draw this rectangle using OpenGL private floa
t l,r,b,t
5
class Canvas public Canvas(int width, int
height, charwindowTitle) //constructor void
setWindow(float l, float r, float b, float
t) void setViewport(int l, int r, int b, int
t) void clearScreen() glClear(GL_COLOR_BUFFER_B
IT) void setBackgroundColor(float r, float g,
float b) glClearColor(r, g, b, 0.0) void
setColor(float r, float g, float b) glColor3f(r,
g, b) void lineTo(float x, float y) void
lineTo(Point2 p) void moveTo(float x, float
y) void moveTo(Point2 p) void moveRel(float
dx, float dy) void lineRel(float dx, float
dy) //others later
6
private Point2 CP//current position in the
world IntRect viewport//the current
window RealRect window//the current
viewport //others later
7
CanvasCanvas(int width, int height,
charwindowTitle) char argv1 //dummy
argument list for glutInit() char dummyString 8
argv0 dummyString //hook up the
pointer int argc 1 //to satisfy
glutInit() glutInit(argc, argv) glutInitDispla
yMode(GLUT_SINGLE GLUT_RGB) glutInitWindowSize(
width, height) glutInitWindowPosition(20,
20) glutCreateWindow(windowTitle) //open the
screen window setWindow(0, (float)width, 0,
(float)height) //default world
window setViewport(0, width, 0, height)
//default viewport CP.set(0.0f, 0.0f)
//initialize the CP to (0,0)
8
void CanvasmoveTo(float x, float
y) CP.set(x, y) void CanvasmoveTo(Point2
p) CP.set(p.getX(), p.getY())
9
void CanvaslineTo (float x, float y) glBegin
(GL_LINES) glVertex2f ((GLfloat)CP.getX(),
(GLfloat)CP.getY()) glVertex2f ((GLfloat)x,
(GLfloat)y) //draw the line glEnd() CP.set
(x, y)//update the CP glFlush()
10
void CanvaslineTo (Point2 p) glBegin
(GL_LINES) glVertex2f ((GLfloat)CP.getX(),
(GLfloat)CP.getY()) glVertex2f
((GLfloat)p.getX(), (GLfloat)p.getY()) //draw
the line glEnd() CP.set (p.getX(), p.getY())
//update the CP glFlush()
11
void CanvassetWindow (float l,float r,float
b,float t) glMatrixMode (GL_PROJECTION) glLoa
dIdentity() gluOrtho2D ((GLdouble)l,
(GLdouble)r, (GLdouble)b, (GLdouble)t) window.se
t (l, r, b, t) void CanvassetViewport (int
l, int r, int b, int t) glViewport ((GLint)l,
(GLint)b, (GLint)(r - l), (GLint)(t -
b)) viewport.set (l, r, b, t)
12
void Canvas moveRel(float dx, float
dy) CP.set(CP.getX() dx, CP.getY()
dy) void Canvas lineRel(float dx, float
dy) float x CP.getX() dx, y CP.getY()
dy lineTo(x, y) CP.set(x, y)
13
Example Using canvas.h
  • include "canvas.h"
  • Canvas cvs(640,480,"try out Canvas") //global
    canvas object
  • void display(void)
  • cvs.clearScreen()//clear screen
  • cvs.setWindow(-10.0,10.0,-10.0,10.0)
  • cvs.setViewport(10,460,10,460)
  • cvs.moveTo(0,-10.0)//draw a line
  • cvs.lineTo(0,10.0)
  • cvs.moveTo(-10.0, 0)
  • cvs.lineTo(10.0, 0)
  • RealRect box(-2.0,8.0,-1.0,9.0)//construct a
    box
  • box.draw()//draw the box
  • IntRect box2(-8, -3, -9, 12)
  • box2.draw()

14
Example Using canvas.h (contd)
  • //ltltltltltltltltltltltltltltltltltltltltltmaingtgtgtgtgtgtgtgtgtgtgtgtgtgtgtgtgtgtgtgt
  • void main(void)
  • //the window is opened in the Canvas constructor
  • cvs.setBackgroundColor(1.0,1.0,1.0)
    //background is white
  • cvs.setColor(0.0,0.0,0.0) //set drawing color
  • glutDisplayFunc(display)
  • glutMainLoop()
  • // FIGURE 3.26 Typical usage of the Canvas class.
Write a Comment
User Comments (0)
About PowerShow.com