You are on page 1of 9

#include <Windows.

h>
#include <gl/glut.h>
#include <fstream>
using namespace std;
char fileName[50];
//------------------------ draw from file ----------------------void drawPolylineFile(char * fileName) {
fstream inStream;
inStream.open(fileName, ios ::in);
// open the file
if(inStream.fail())
return;
GLint numpolys, numLines, x ,y;
inStream >> numpolys;
for(int j = 0; j < numpolys; j++)
{
inStream >> numLines;
glBegin(GL_LINE_LOOP);

// baca banyaknya polylines


// baca setiap poliline
// gambar polyline berik

utnya
for (int i = 0; i < numLines; i++)
{
inStream >> x >> y;
x, y pair berikutnya
glVertex2i(x, y);
}
glEnd();
}
//glFlush();
inStream.close();
}
void drawFill(){
glPointSize(1);
glLineWidth(3);
//batik
glColor3f(1,1,0.2);
glBegin(GL_LINE_LOOP);
glVertex2i(7,15);
glVertex2i(8,15);
glVertex2i(8,14);
glVertex2i(7,14);
glVertex2i(7,15);
glColor3f(0,0,0);
glBegin(GL_LINE_LOOP);
glVertex2i(6,14);
glVertex2i(6,13);
glVertex2i(7,13);
glVertex2i(7,14);
glVertex2i(6,14);
glVertex2i(7,14);
glVertex2i(7,13);
glVertex2i(8,13);
glVertex2i(8,14);
glVertex2i(7,14);
glVertex2i(8,14);

// baca

glVertex2i(8,13);
glVertex2i(9,13);
glVertex2i(9,14);
glVertex2i(8,14);
glColor3f(0,0,0);
glBegin(GL_LINE_LOOP);
glVertex2i(5,13);
glVertex2i(5,12);
glVertex2i(6,12);
glVertex2i(6,13);
glVertex2i(5,13);
glVertex2i(6,13);
glVertex2i(6,12);
glVertex2i(7,13);
glVertex2i(7,11);
glVertex2i(7,12);
glVertex2i(6,12);
glVertex2i(7,12);
glVertex2i(7,13);
glVertex2i(8,13);
glVertex2i(8,12);
glVertex2i(9,12);
glVertex2i(9,13);
glVertex2i(8,13);
glVertex2i(9,13);
glVertex2i(9,12);
glVertex2i(10,12);
glVertex2i(10,13);
glVertex2i(9,13);
glColor3f(0,0,0);
glBegin(GL_LINE_LOOP);
glVertex2i(4,12);
glVertex2i(4,11);
glVertex2i(5,11);
glVertex2i(5,12);
glVertex2i(4,12);
glVertex2i(5,12);
glVertex2i(5,11);
glVertex2i(6,11);
glVertex2i(6,12);
glVertex2i(5,12);
glVertex2i(6,12);
glVertex2i(6,11);
glVertex2i(7,11);
glVertex2i(7,12);
glVertex2i(6,12);
glVertex2i(7,12);
glVertex2i(6,12);
glVertex2i(7,12);
glVertex2i(7,11);
glVertex2i(8,11);
glVertex2i(8,12);
glVertex2i(7,12);
glVertex2i(8,12);
glVertex2i(8,11);
glVertex2i(9,11);
glVertex2i(9,12);
glVertex2i(8,12);

glVertex2i(9,12);
glVertex2i(9,11);
glVertex2i(10,11);
glVertex2i(10,12);
glVertex2i(9,12);
glVertex2i(10,12);
glVertex2i(10,11);
glVertex2i(11,11);
glVertex2i(11,12);
glVertex2i(10,12);
glColor3f(0,0,0);
glBegin(GL_LINE_LOOP);
glVertex2i(3,11);
glVertex2i(3,10);
glVertex2i(4,10);
glVertex2i(4,11);
glVertex2i(3,11);
glVertex2i(5,11);
glVertex2i(5,10);
glVertex2i(6,10);
glVertex2i(6,11);
glVertex2i(5,11);
glVertex2i(7,11);
glVertex2i(7,10);
glVertex2i(8,10);
glVertex2i(8,11);
glVertex2i(7,11);
glVertex2i(9,11);
glVertex2i(9,10);
glVertex2i(10,10);
glVertex2i(10,11);
glVertex2i(9,11);
glVertex2i(11,11);
glVertex2i(10,11);
glVertex2i(12,10);
glVertex2i(12,11);
glColor3f(0,0,0);
glBegin(GL_LINE_LOOP);
glVertex2i(2,10);
glVertex2i(2,9);
glVertex2i(3,9);
glVertex2i(3,10);
glVertex2i(2,10);
glVertex2i(3,10);
glVertex2i(3,9);
glVertex2i(4,9);
glVertex2i(4,10);
glVertex2i(4,9);
glVertex2i(5,9);
glVertex2i(5,10);
glVertex2i(4,10);
glVertex2i(5,10);
glVertex2i(4,10);
glVertex2i(5,10);
glVertex2i(5,9);
glVertex2i(6,9);
glVertex2i(6,10);
glVertex2i(5,10);

glVertex2i(6,10);
glVertex2i(6,9);
glVertex2i(6,10);
glVertex2i(5,10);
glVertex2i(6,10);
glVertex2i(6,9);
glVertex2i(7,9);
glVertex2i(7,10);
glVertex2i(6,10);
glVertex2i(7,10);
glVertex2i(7,9);
glVertex2i(8,9);
glVertex2i(8,10);
glVertex2i(7,10);
glVertex2i(8,10);
glVertex2i(8,9);
glVertex2i(9,9);
glVertex2i(10,9);
glVertex2i(10,10);
glVertex2i(9,10);
glVertex2i(8,10);
glVertex2i(9,10);
glVertex2i(10,10);
glVertex2i(10,9);
glVertex2i(11,9);
glVertex2i(11,10);
glVertex2i(10,10);
glVertex2i(11,10);
glVertex2i(11,9);
glVertex2i(12,9);
glVertex2i(12,10);
glVertex2i(11,10);
glVertex2i(12,10);
glVertex2i(12,9);
glVertex2i(13,9);
glVertex2i(13,10);
glVertex2i(12,10);
glColor3f(0,0,0);
glBegin(GL_LINE_LOOP);
glVertex2i(1,9);
glVertex2i(1,8);
glVertex2i(2,8);
glVertex2i(2,9);
glVertex2i(1,9);
glVertex2i(2,9);
glVertex2i(2,8);
glVertex2i(3,8);
glVertex2i(3,9);
glVertex2i(2,9);
glVertex2i(3,8);
glVertex2i(4,8);
glVertex2i(4,9);
glVertex2i(3,9);
glVertex2i(4,9);
glVertex2i(4,8);
glVertex2i(5,8);
glVertex2i(5,9);
glVertex2i(4,9);
glVertex2i(5,9);

glVertex2i(5,8);
glVertex2i(6,8);
glVertex2i(6,9);
glVertex2i(5,9);
glVertex2i(6,9);
glVertex2i(6,8);
glVertex2i(7,8);
glVertex2i(7,9);
glVertex2i(6,9);
glVertex2i(7,9);
glVertex2i(7,8);
glVertex2i(8,8);
glVertex2i(8,9);
glVertex2i(7,9);
glVertex2i(8,9);
glVertex2i(8,8);
glVertex2i(9,8);
glVertex2i(9,9);
glVertex2i(8,9);
glVertex2i(9,9);
glVertex2i(9,8);
glVertex2i(10,8);
glVertex2i(10,9);
glVertex2i(11,9);
glVertex2i(10,9);
glVertex2i(10,8);
glVertex2i(11,8);
glVertex2i(11,9);
glVertex2i(10,9);
glVertex2i(11,9);
glVertex2i(11,8);
glVertex2i(12,8);
glVertex2i(12,9);
glVertex2i(11,9);
glVertex2i(12,9);
glVertex2i(12,8);
glVertex2i(13,8);
glVertex2i(13,9);
glVertex2i(12,9);
glVertex2i(13,9);
glVertex2i(13,8);
glVertex2i(14,8);
glVertex2i(14,9);
glVertex2i(13,9);
glColor3f(0,0,0);
glBegin(GL_LINE_LOOP);
glVertex2i(2,8);
glVertex2i(2,7);
glVertex2i(3,7);
glVertex2i(3,8);
glVertex2i(2,8);
glVertex2i(3,8);
glVertex2i(3,7);
glVertex2i(4,7);
glVertex2i(4,8);
glVertex2i(3,8);
glVertex2i(4,8);
glVertex2i(4,7);
glVertex2i(5,7);

glVertex2i(5,8);
glVertex2i(4,8);
glVertex2i(5,8);
glVertex2i(5,7);
glVertex2i(6,7);
glVertex2i(6,8);
glVertex2i(5,8);
glVertex2i(6,8);
glVertex2i(6,7);
glVertex2i(7,7);
glVertex2i(7,8);
glVertex2i(6,8);
glVertex2i(7,8);
glVertex2i(7,7);
glVertex2i(8,7);
glVertex2i(8,8);
glVertex2i(7,8);
glVertex2i(8,8);
glVertex2i(8,7);
glVertex2i(9,7);
glVertex2i(9,8);
glVertex2i(8,8);
glVertex2i(9,8);
glVertex2i(9,7);
glVertex2i(10,7);
glVertex2i(10,8);
glVertex2i(9,8);
glVertex2i(10,8);
glVertex2i(10,7);
glVertex2i(11,7);
glVertex2i(11,8);
glVertex2i(10,8);
glVertex2i(11,8);
glVertex2i(11,7);
glVertex2i(12,7);
glVertex2i(12,8);
glVertex2i(11,8);
glVertex2i(12,8);
glVertex2i(12,7);
glVertex2i(13,7);
glVertex2i(13,8);
glVertex2i(12,8);
glColor3f(0,0,0);
glBegin(GL_LINE_LOOP);
glVertex2i(3,7);
glVertex2i(3,6);
glVertex2i(4,6);
glVertex2i(4,7);
glVertex2i(3,7);
glVertex2i(4,7);
glVertex2i(4,6);
glVertex2i(5,6);
glVertex2i(5,7);
glVertex2i(4,7);
glVertex2i(5,7);
glVertex2i(5,6);
glVertex2i(6,6);
glVertex2i(6,7);
glVertex2i(5,7);

glVertex2i(6,7);
glVertex2i(6,6);
glVertex2i(7,6);
glVertex2i(7,7);
glVertex2i(6,7);
glVertex2i(7,7);
glVertex2i(7,6);
glVertex2i(8,6);
glVertex2i(8,7);
glVertex2i(7,7);
glVertex2i(8,7);
glVertex2i(8,6);
glVertex2i(9,6);
glVertex2i(9,7);
glVertex2i(8,7);
glVertex2i(10,7);
glVertex2i(10,6);
glVertex2i(11,6);
glVertex2i(11,7);
glVertex2i(11,6);
glVertex2i(12,6);
glVertex2i(12,7);
glVertex2i(11,7);
glColor3f(0,0,0);
glBegin(GL_LINE_LOOP);
glVertex2i(4,6);
glVertex2i(4,5);
glVertex2i(5,5);
glVertex2i(5,6);
glVertex2i(4,6);
glVertex2i(5,6);
glVertex2i(5,5);
glVertex2i(6,5);
glVertex2i(6,6);
glVertex2i(5,6);
glVertex2i(6,6);
glVertex2i(6,5);
glVertex2i(7,5);
glVertex2i(7,6);
glVertex2i(6,6);
glVertex2i(7,6);
glVertex2i(7,5);
glVertex2i(8,5);
glVertex2i(8,6);
glVertex2i(7,6);
glVertex2i(8,6);
glVertex2i(8,5);
glVertex2i(9,5);
glVertex2i(9,6);
glVertex2i(8,6);
glVertex2i(9,6);
glVertex2i(9,5);
glVertex2i(10,5);
glVertex2i(10,6);
glVertex2i(9,6);
glVertex2i(10,6);
glVertex2i(10,5);
glVertex2i(11,5);
glVertex2i(11,6);

glVertex2i(10,6);
glColor3f(0,0,0);
glBegin(GL_LINE_LOOP);
glVertex2i(5,5);
glVertex2i(5,4);
glVertex2i(6,4);
glVertex2i(6,5);
glVertex2i(5,5);
glVertex2i(6,5);
glVertex2i(6,4);
glVertex2i(7,4);
glVertex2i(7,5);
glVertex2i(6,5);
glVertex2i(7,5);
glVertex2i(7,4);
glVertex2i(8,4);
glVertex2i(7,5);
glVertex2i(8,5);
glVertex2i(8,4);
glVertex2i(9,4);
glVertex2i(9,5);
glVertex2i(8,5);
glVertex2i(9,5);
glVertex2i(9,4);
glVertex2i(10,4);
glVertex2i(10,5);
glVertex2i(9,5);
glColor3f(0,0,0);
glBegin(GL_LINE_LOOP);
glVertex2i(6,4);
glVertex2i(6,3);
glVertex2i(7,3);
glVertex2i(7,4);
glVertex2i(6,4);
glVertex2i(7,4);
glVertex2i(7,3);
glVertex2i(8,3);
glVertex2i(8,4);
glVertex2i(7,4);
glVertex2i(8,4);
glVertex2i(8,3);
glVertex2i(9,3);
glVertex2i(9,4);
glVertex2i(8,4);
glColor3f(0,0,0);
glBegin(GL_LINE_LOOP);
glVertex2i(7,3);
glVertex2i(7,2);
glVertex2i(8,2);
glVertex2i(8,3);
glVertex2i(7,3);
glEnd();
}
//--------------------------- setWindow -------------------------void setWindow(float left, float right, float bottom, float top) {

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(left, right, bottom, top);
}
//-------------------------- setViewport --------------------------void setViewport(float left, float right, float bottom, float top) {
glViewport(left, bottom, right- left, top - bottom);
}
void display(void){
glClear(GL_COLOR_BUFFER_BIT);
//glColor3f(0,0,0);
for(int i = 0; i < 50; i++)
for(int j = 0; j < 50; j++)
{
if((i + j) % 2 == 0) // if (i + j) is even
{
setWindow(0.0, 100.0, 0.0, 100.0); // right side
up window
glViewport(i * 32, j * 32, 32, 32); // set the n
ext viewport
//drawPolylineFile("motif_01.dat"); // draw it a
gain
drawFill();
glColor3f(0,0,0);
glLineWidth(3);
drawPolylineFile("motif_01.dat"); // draw it aga
in
}
else
{
setWindow(100.0, 0.0, 0.0, 100.0); // upside dow
n window
glViewport(i*32,j*32, 32, 32); // set the next v
iewport
//drawPolylineFile("motif_01.dat"); // draw it a
gain
drawFill();
glColor3f(0,0,0);
glLineWidth(3);
drawPolylineFile("motif_01.dat"); // draw it aga
in
}
}
glutSwapBuffers();
}
int main(int argc, char** argv){
glutInit(&argc,argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowPosition(50,50);
glutInitWindowSize(640,480);
glutCreateWindow("Batik plus");
glClearColor(1,1,1,0);
glutDisplayFunc(display);
glutMainLoop();
return 0;
}

You might also like