Pertemuan 11 Interaksi User Diadaptasi dari paint.c E. Angel.

Slides:



Advertisements
Presentasi serupa
Pemrograman Visual I Pendahuluan Presented by : Herianto.
Advertisements

Tutorial Logo Carrefour
MEMBUAT DESAIN STEMPEL DENGAN CORELDRAW 12
Pertemuan 03: Grafika Komputer: Windows dan Viewport
KOMPONEN DALAM DELPHI Form
Keyword, Variabel, Konstanta, Tipe Data, Operator, dan Input / Output
MENGETIK DOKUMEN SEDERHANA
DASAR-DASAR MICROSOFT WORD
POSISI DI DEPAN KOMPUTER
Struktur Kode Aplikasi Java (2) As’ad Djamalilleil
PARAGRAF, GAMBAR DAN BINGKAI
Antarmuka Tingkat Bawah (Canvas)
Pertemuan 7 Struktur Kendali Percabangan SWITCH Dasar Pemrograman Renni Angreni, S.Kom.
Tugas Besar Input & Transformasi
8. FILE.
Praktikum Grafika Komputer
Contoh soal penyegaran
Komponen Antarmuka Grafis
BELAJAR POWER POINT.
TOOLBAR Toolbar adalah kelompok fasilitas standar yang sering digunakan pada program PowerPoint. Fasilitas yang terdapat pada toolbar PowerPoint antara.
Review-Dasar Pemrograman Komputer
PEMROGRAMAN SISTEM PERNYATAAN DASAR PILIHAN Pertemuan V
Eriq Muhammad Adams J | 03 |Primitives Eriq Muhammad Adams J |
Pemrograman Aplikasi Bergerak
GRAFIKA KOMPUTER ATRIBUT OUTPUT PRIMITIF
Sesi 2: Primitive Drawing
Komponen Antarmuka Grafis
Fungsi.
STRUKTUR DATA Pointer dan Function
KOMPONEN DALAM DELPHI Form
Matakuliah : T0074 / Grafika Komputer
void draw() { background(204); int s = second(); int m = minute(); int h = hour(); line(s, 0, s, 33); line(m, 33, m, 66); line(h, 66, h, 100); }
Statement Input – Output
MICROSOFT WORD 2007: Fungsi Icon Tab Home Microsoft Office Word 2007 (untuk selanjutnya disebut MS. Word saja) merupakan sebuah program aplikasi.
Ega puspitriani Pendidikan B. Jepang 2 A
1 Pertemuan 3 Pemanfaatan berbagai fungsi grafik yang telah ada baik melalui ROM-BIOS atau Compiler C/C++ Matakuliah: T0074 / Grafika Komputer Tahun: 2005.
Matakuliah : T0016 / Algoritma dan Pemrograman Tahun : 2007 Versi : 6
Bab 4 Tools untuk Menggambar : Window dan viewport
Pengenalan low level UI Pengenalan tentang Canvas Menggambar dan menampilkan teks, gambar, garis, kotak, dan sudut Menentukan warna, huruf, dan coretan.
MIDP Low Level User Interface
Praktikum 2.
Konsep dan Teknik Queue
Menggunakan Form Pertemuan Ke-3.
Teknik. Pemrog. Terstruktur 2
Statement Control (if dan switch)
DASAR PEMROGRAMAN C Oleh : sgo.
Nisn.data.kemdiknas.go.id 25/10/2017.
Program Studi S-1 Teknik Informatika FMIPA Universitas Padjadjaran
B. Membuat Dokumen Baru.
PERINTAH INTERNAL DOS Bag. I
Brent Fox - Sugiyanto Planning Menu Flow.
PERCABANGAN.
APLIKASI KOMPUTER Microsoft Word 2007 I.
Tugas Kelompok 3 Operasi Queue Konsep dan Teknik Queue
PENANGANAN KESALAHAN DAN HELP DOKUMENTASI
BAB 4 Tools untuk Menggambar : Window dan viewport
Dasar Komputer & Pemrog. 2B
Pertemuan 2 Pengantar Bahasa C dan Lingkungan Pemrograman Grafik dengan OpenGL Senin Wage, 28 September 2009.
Latihan Pertemuan Operasi Seleksi
Pemrograman Terstruktur
Microsoft Power Point 2007.
antarmuka grafis (GUI) dalam window
Komputer 3 Dian C. Rini N, M.Kom
ANALISIS ALGORITMA DALAM PENERAPAN GAMBAR
Menggunakan Form Pertemuan Ke-3.
Bekerja dengan Warna.
Teknik. Pemrog. Terstruktur 2
PERCABANGAN.
Brent Fox - Sugiyanto Planning Menu Flow.
Pembuatan Obyek Pada Aplikasi Animasi 2 dimensi. Tujuan Pembelajaran. Setelah mengikuti kegiatan belajar ini diharapkan peserta didik dapat: Memahami.
Transcript presentasi:

Pertemuan 11 Interaksi User Diadaptasi dari paint.c E. Angel

Interaksi User Pada aplikasi grafis interaksi dapat dilakukan melalui pemanfaatan alat input berupa mouse dan key board –glutMouseFunc (fcbm); –glutKeyboardFunc(fcbkb); Dengan mengakomodasikan setiap event pada fcbm dan fcbkb maka aksi dari user dapat dikenali

FCBM(Fungsi call back mouse) void fcbm(int T,int E,int X, int Y) –T menyatakan jenis tombol pada mouse (GLUT_LEFT_BUTTON, GLUT_MIDDLE_BUTTON, dan GLUT_RIGHT_BUTTON) –E event (GLUT_DOWN dan GLUT_UP) –X dan Y menyatakan koordinat dari mouse relatif terhadap windows (pojok kiri atas adalah 0,0)

FCBKB(Fungsi call back key board) void fcbkb(unsigned char K, int X, int Y) –K menyatakan key yang ditekan user –X dan Y menyatakan koordinat dari mouse relatif terhadap windows (pojok kiri atas adalah 0,0)

Event Driven Perlu diketahui modus input parameter baik bagi fcbm dan fcbk keduanya adalah event driven Parameter terisi dari kondisi event dari user

contoh Pada kesempatan ini kita akan mensimulasikan teknik interaksi dari user menggunakan mouse dan key board menggunakan program paint Aplikasi ini diambil dari paint.c oleh E. Angel (Interaction Open GL [sample 8])

Paint Paint :merupakan program sederhana untuk melukis Fitur –Mode Lukis Line, Rectangle, Triangle, Points, dan Text –Menu tambahan pilihan warna, ketebalan stroke, aktivasi fill, membersihkan kanvas, dan keluar dari program

Kontroler Progam Menu yang tampak dapat dipilih dengan mengarahkan mouse dan menekan tombol kiri mouse pada pilihan Menampilkan menu atribut pelukisan tekan tombol tengah mouse Menu menghapus dan keluar dari program tekan tombol kanan mouse Keyboard akan berfungsi khusus ketika mode pelukisan adalah TEXT

Library yang harus disertakan #include

Definisi konstanta Mendefinisikan kode bagi setiap mode lukis #define NOL 0 #define LINE 1 #define RECTANGLE 2 #define TRIANGLE 3 #define POINTS 4 #define TEKS 5

Deklarasi variabel global GLsizei wh = 500, ww = 500; GLfloat size = 3.0; int draw_mode = 0; int rx, ry; GLfloat r = 1.0, g = 1.0, b = 1.0; int fill = 0;

Fungsi Bagi mode POINTS void drawSquare(int x, int y) { y=wh-y; glColor3ub( (char) rand()%256, (char) rand()%256, (char) rand()%256); glBegin(GL_POLYGON); glVertex2f(x+size, y+size); glVertex2f(x-size, y+size); glVertex2f(x-size, y-size); glVertex2f(x+size, y-size); glEnd(); }

Fungsi Pick Fungsi untuk menentukan menu mode lukis apa yang dipilih mouse int pick(int x, int y) { y = wh - y;//y=0 di atas if(y < wh-ww/10) return NOL; else if(x < ww/10) return LINE; else if(x < ww/5) return RECTANGLE; else if(x < 3*ww/10) return TRIANGLE; else if(x < 2*ww/5) return POINTS; else if(x < ww/2) return TEKS; else return 0; }

Fungsi bagi kotak menu atas void screen_box(int x, int y, int s ) { glBegin(GL_QUADS); glVertex2i(x, y); glVertex2i(x+s, y); glVertex2i(x+s, y+s); glVertex2i(x, y+s); glEnd(); }

Fungsi kamus warna void color_menu(int id) { if(id == 1) {r = 1.0; g = 0.0; b = 0.0;} else if(id == 2) {r = 0.0; g = 1.0; b = 0.0;} else if(id == 3) {r = 0.0; g = 0.0; b = 1.0;} else if(id == 4) {r = 0.0; g = 1.0; b = 1.0;} else if(id == 5) {r = 1.0; g = 0.0; b = 1.0;} else if(id == 6) {r = 1.0; g = 1.0; b = 0.0;} else if(id == 7) {r = 1.0; g = 1.0; b = 1.0;} else if(id == 8) {r = 0.0; g = 0.0; b = 0.0;} }

Fungsi bagi menu keluar dan clear canvas void right_menu(int id) { if(id == 1) exit(0); else display(); }

Fungsi bagi perubahan ukuran points void pixel_menu(int id) { if (id == 1) size = 2 * size; else if (size > 1) size = size/2; }

Fungsi bagi aktivasi fill kondisi void fill_menu(int id) { if (id == 1) fill = 1; else fill = 0; }

Fungsi bagi kunci keyboard void key(unsigned char k, int xx, int yy) { if(draw_mode!=TEKS) return; glColor3f(0.0,0.0,0.0); glRasterPos2i(rx,ry); glutBitmapCharacter(GLUT_BITMAP_9_BY_15, k); rx+=glutBitmapWidth(GLUT_BITMAP_9_BY_15,k); }

FCBM void mouse(int btn, int state, int x, int y) { static int count; int where; static int xp[2],yp[2]; if(btn==GLUT_LEFT_BUTTON && state==GLUT_DOWN) { glPushAttrib(GL_ALL_ATTRIB_BITS); where = pick(x,y); glColor3f(r, g, b); if(where != 0) { count = 0; draw_mode = where; }

FCBM (ii) else switch(draw_mode) { case(LINE): if(count==0) { count++; xp[0] = x; yp[0] = y; } else { glBegin(GL_LINES); glVertex2i(x,wh-y); glVertex2i(xp[0],wh-yp[0]); glEnd(); draw_mode=0; count=0; } break;

FCBM (iii) case(RECTANGLE): if(count == 0) { count++; xp[0] = x; yp[0] = y; } else { if(fill) glBegin(GL_POLYGON); else glBegin(GL_LINE_LOOP); glVertex2i(x,wh-y); glVertex2i(x,wh-yp[0]); glVertex2i(xp[0],wh-yp[0]); glVertex2i(xp[0],wh-y); glEnd(); draw_mode=0; count=0; } break;

FCBM(iv) case (TRIANGLE): switch(count) { case(0): count++; xp[0] = x; yp[0] = y; break; case(1): count++; xp[1] = x;yp[1] = y; break; case(2): if(fill) glBegin(GL_POLYGON); else glBegin(GL_LINE_LOOP); glVertex2i(xp[0],wh-yp[0]); glVertex2i(xp[1],wh-yp[1]); glVertex2i(x,wh-y); glEnd(); draw_mode=0; count=0; } break;

FCBM(v) case(POINTS): { drawSquare(x,y); count++; } break; case(TEKS): { rx=x; ry=wh-y; glRasterPos2i(rx,ry); count=0; } glPopAttrib(); glFlush(); }

Prototype setiap fungsi Jangan lupa sertakan setiap prototype fungsi di awal program untuk menjamin setiap fungsi dapat dipanggil void mouse(int, int, int, int); void key(unsigned char, int, int); void display(void); void drawSquare(int, int); void myReshape(GLsizei, GLsizei); void myinit(void); void screen_box(int, int, int); void right_menu(int); void middle_menu(int); void color_menu(int); void pixel_menu(int); void fill_menu(int); int pick(int, int);

Fungsi display void display(void) { int shift=0; glPushAttrib(GL_ALL_ATTRIB_BITS); glClearColor (0.8, 0.8, 0.8, 1.0); glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); screen_box(0,wh-ww/10,ww/10); glColor3f(1.0, 0.0, 0.0); screen_box(ww/10,wh-ww/10,ww/10); glColor3f(0.0, 1.0, 0.0); screen_box(ww/5,wh-ww/10,ww/10); glColor3f(0.0, 0.0, 1.0); screen_box(3*ww/10,wh-ww/10,ww/10); glColor3f(1.0, 1.0, 0.0); screen_box(2*ww/5,wh-ww/10,ww/10);

Fungsi Display ii glColor3f(0.0, 0.0, 0.0); screen_box(ww/10+ww/40,wh-ww/10+ww/40,ww/20); glBegin(GL_LINES); glVertex2i(wh/40,wh-ww/20); glVertex2i(wh/40+ww/20,wh-ww/20); glEnd(); glBegin(GL_TRIANGLES); glVertex2i(ww/5+ww/40,wh-ww/10+ww/40); glVertex2i(ww/5+ww/20,wh-ww/40); glVertex2i(ww/5+3*ww/40,wh-ww/10+ww/40); glEnd(); glPointSize(3.0); glBegin(GL_POINTS); glVertex2i(3*ww/10+ww/20, wh-ww/20); glEnd();

Fungsi Display iii glRasterPos2i(2*ww/5,wh-ww/20); glutBitmapCharacter(GLUT_BITMAP_9_BY_15, 'A'); shift=glutBitmapWidth(GLUT_BITMAP_9_BY_15, 'A'); glRasterPos2i(2*ww/5+shift,wh-ww/20); glutBitmapCharacter(GLUT_BITMAP_9_BY_15, 'B'); shift+=glutBitmapWidth(GLUT_BITMAP_9_BY_15, 'B'); glRasterPos2i(2*ww/5+shift,wh-ww/20); glutBitmapCharacter(GLUT_BITMAP_9_BY_15, 'C'); glFlush(); glPopAttrib(); }

Fungsi main int main(int argc, char** argv) { int c_menu, p_menu, f_menu; glutInit(&argc,argv); glutInitDisplayMode (GLUT_SINGLE | GLUT_RGB); glutInitWindowSize(500, 500); glutCreateWindow("square"); glutDisplayFunc(display);

Main ii c_menu = glutCreateMenu(color_menu); glutAddMenuEntry("Red",1); glutAddMenuEntry("Green",2); glutAddMenuEntry("Blue",3); glutAddMenuEntry("Cyan",4); glutAddMenuEntry("Magenta",5); glutAddMenuEntry("Yellow",6); glutAddMenuEntry("White",7); glutAddMenuEntry("Black",8); p_menu = glutCreateMenu(pixel_menu); glutAddMenuEntry("increase pixel size", 1); glutAddMenuEntry("decrease pixel size", 2); f_menu = glutCreateMenu(fill_menu); glutAddMenuEntry("fill on", 1); glutAddMenuEntry("fill off", 2); glutCreateMenu(right_menu); glutAddMenuEntry("quit",1); glutAddMenuEntry("clear",2);

Main iii glutAttachMenu(GLUT_RIGHT_BUTTON); glutCreateMenu(middle_menu); glutAddSubMenu("Colors", c_menu); glutAddSubMenu("Pixel Size", p_menu); glutAddSubMenu("Fill", f_menu); glutAttachMenu(GLUT_MIDDLE_BUTTON); myinit (); glutReshapeFunc (myReshape); glutKeyboardFunc(key); glutMouseFunc (mouse); glutMainLoop(); }

Tampilan Program

Buat program baru Pada window, jika diklik kanan akan keluar menu sbb -input -keyboard -mouse -quit Jika dipilih keyboard, maka user bisa menulis karakter pada window Jika dipilih mouse, maka user bisa menggambar point pada window Jika dipilih quit, maka menutup window