Costruzione di Interfacce Antonio Cisternino 19/9/2005 Syllabus Introduzione a C++ Sistemi grafici Fondamenti di grafica Modello model-view-controller Programmazione ad eventi Sistemi di riferimento e trasformazioni geometriche Librerie e framework per la grafica Programmazione di interfacce grafiche Interfacce Web Cenni alla grafica 3D Lez. 1 - 19/9/2005 Costruzione di Interfacce 2 Introduzione a C++ C++ è un linguaggio importante nel modo delle interfacce grafiche Gli oggetti coinvolti sono spesso grandi, e richiedono la manipolazione di grandi quantità di memoria La possibilità di gestire esplicitamente la memoria unita al supporto OOP rende C++ un linguaggio rilevante in questo ambito Lez. 1 - 19/9/2005 Costruzione di Interfacce 3 Sistemi grafici La conoscenza della struttura di un sistema grafico è importante per capire la struttura dei famework Negli ultimi anni i sistemi grafici sono divenuti sempre più complessi, e la loro evoluzione sta condizionando quella del software La GPU ormai affianca la CPU I dispositivi di I/O stanno crescendo e differenziandosi Lez. 1 - 19/9/2005 Costruzione di Interfacce 4 Fondamenti di grafica Ma come funziona un sistema a finestre? Quali sono le operazioni primitive che servono a realizzarne le funzionalità di base? Come si possono trasformare entità geometriche come linee e curve in punti? E come si possono descrivere? Lez. 1 - 19/9/2005 Costruzione di Interfacce 5 Sistemi di riferimento e trasformazioni geometriche I sistemi grafici fanno ampio uso di sistemi di coordinate (schermo, stampante, finestra, …) Spesso è necessario effettuare conversioni da uno all’altro È anche importante saper trasformare oggetti o spostarli (es.: traslazione, rotazione, scalatura) Lez. 1 - 19/9/2005 Costruzione di Interfacce 6 Programmazione ad eventi Il modello ad eventi è alla base della programmazione delle interfacce grafiche Questo paradigma consente alla GUI di coordinare l’accesso ai dispositivi di input e output Il sistema grafico è responsabile per notificare eventi alle varie applicazioni Lez. 1 - 19/9/2005 Costruzione di Interfacce 7 Modello model-view-controller Le interfacce grafiche sono naturalmente basate su componenti grafici (bottoni, liste, alberi, …) Questi componenti, e le applicazioni che le usano seguono un design pattern noto col nome di Model-View-Controller La sua comprensione è fondamentale per essere in grado di estendere framework grafici Lez. 1 - 19/9/2005 Costruzione di Interfacce 8 Librerie e framework per la grafica La conoscenza di librerie e framework per la programmazione di interfacce grafiche è importante La loro struttura è simile Si vogliono isolare i concetti base che stanno dietro ai framework disponibili Evoluzione dalla grafica raster a quella vettoriale Lez. 1 - 19/9/2005 Costruzione di Interfacce 9 Interfacce Web Il browser viene usato sempre più spesso per realizzare interfacce grafiche La sua capacità di mischiare testo, grafica, e interattività lo rende ideale in numerose applicazioni Un’applicazione si basa su tre elementi: CSS, DHTML, e JavaScript Altre tecnologie coinvolte: XML, XSLT Lez. 1 - 19/9/2005 Costruzione di Interfacce 10 Cenni alla grafica 3D Come funzionano i sistemi grafici 3D? Elementi fondamentali: estensione della geometria 2D al 3D Il modello Pinhole Camera Lo scenegraph Principali problematiche: illuminazione, geometria, shading VRML e JavaScript Lez. 1 - 19/9/2005 Costruzione di Interfacce 11 What’s next? I sistemi grafici sono sempre in profonda evoluzione Anche le metafore stanno cambiando per adeguarsi ad interfacce di crescente complessità I principali sistemi grafici stanno evolvendo verso: Grafica vettoriale Unione tra grafica 2D e grafica 3D Lez. 1 - 19/9/2005 Costruzione di Interfacce 12 Windows Vista (WPF - Avalon) Lez. 1 - 19/9/2005 Costruzione di Interfacce 13 Gnome (Cairo) Lez. 1 - 19/9/2005 Costruzione di Interfacce 14 MacOS X (Quartz) Lez. 1 - 19/9/2005 Costruzione di Interfacce 15 Bibliografia Testi: R. Scateni, P. Cignoni, C. Montani, R. Scopigno - Fondamenti di grafica tridimensionale interattiva, McGraw-Hill, 2005, ISBN: 88 386 6215-0 Fondamenti di Computer graphics G. Attardi, Università di Pisa, SEU, 1998. Consultazione C. Petzold, Programmare Windows con C#, Microsoft Press, 2001, ISBN: 0-7356-1370-2 More to come… Lez. 1 - 19/9/2005 Costruzione di Interfacce 16 Modalità di esame Durante il corso saranno realizzati due progetti: MidTerm: realizzazione di un controllo grafico in C++ FinalTerm: realizzazione di un’applicazione grafica Chi ha già seguito l’anno scorso? Può fare l’esame di Paolo fino alla sessione invernale Lez. 1 - 19/9/2005 Costruzione di Interfacce 17