Γραφικές διεπαφές
Οι περισσότερες εφαρμογές οφείλουν να παρέχουν μια γραφική διεπαφή για να αλληλεπιδρούν με το χρήστη. Οι γραφικές διεπαφές δημιουργούν ένα εύληπτο και εξερευνήσιμο περιβάλλον για τη διάδραση ανθρώπου και λογισμικού. Έτσι, οι χρήστες αναμένουν από τις εφαρμογές τους να παρέχουν χρηστικές και ελκυστικές διεπαφές χρήστη.
Η πλατφόρμα GNOME διαθέτει προηγμένα γραφικά και τεχνολογίες διεπαφής χρήστη που περιλαμβάνουν τα πάντα, από τους κλασικούς ελέγχους διεπαφής χρήστη, μέχρι API για τη σχεδίαση γραφικών υψηλής ποιότητας στην οθόνη. Η χρήση των τεχνολογιών γραφικών του GNOME σας επιτρέπει να δημιουργείτε εφαρμογές με ελκυστική και ομοιόμορφη εμφάνιση και απλούστατες στην εκμάθησή τους.

3.1.1. GTK+
Η GTK+ είναι η βασική βιβλιοθήκη που χρησιμοποιείται για την κατασκευή διεπαφών χρήστη στο GNOME. Παρέχει όλους τους ελέγχους διεπαφής χρήστη, γνωστούς και ως γραφικά συστατικά (widgets), που χρησιμοποιούν οι συνήθεις γραφικές εφαρμογές. Το μοντέρνο και αντικειμενοστραφές API της σας επιτρέπει να δημιουργείτε ελκυστικές και προηγμένες διεπαφές χρήστη, χωρίς να χρειάζεται να ασχοληθείτε με τις λεπτομέρειες χαμηλού επιπέδου της σχεδίασης και της επικοινωνίας με συσκευές.
Πέρα από τα βασικά γραφικά συστατικά, όπως είναι τα κουμπιά, τα κουτάκια επιλογών και τα πεδία κειμένου, η GTK+ παρέχει επίσης πανίσχυρα API MVC (Model-View-Controller) για τη χρήση προβολών δέντρου, πεδίων κειμένου πολλαπλών γραμμών και ενεργειών στα μενού και τις εργαλειοθήκες.
Στη GTK+ τα γραφικά συστατικά τοποθετούνται στα παράθυρα σύμφωνα με ένα μοντέλο συσκευασίας σε πλαίσια (boxes). Οι προγραμματιστές απλά καθορίζουν πώς θα συσκευαστούν τα γραφικά συστατικά εντός των πλαισίων που τα περιέχουν, χωρίς να χρειάζεται να τα τοποθετήσουν σε συγκεκριμένες θέσεις χρησιμοποιώντας απόλυτες συντεταγμένες. Η GTK+ διασφαλίζει ότι τα παράθυρα θα μπορούν να χωρέσουν όλο το περιεχόμενό, αλλάζοντας αυτόματα το μέγεθoς των παραθύρων όποτε χρειάζεται.
Επειδή η GTK+ παρέχει ένα ιδιαίτερα ευέλικτο API, η ανάπτυξη νέων γραφικών συστατικών για χρήση σε εφαρμογές GTK+ είναι ιδιαίτερα εύκολη. Υπάρχουν αρκετές βιβλιοθήκες τρίτων μερών που παρέχουν πρόσθετα γραφικά συστατικά, ενώ πολλοί προγραμματιστές δημιουργούν ειδικά γραφικά συστατικά για τις εφαρμογές τους.
Η GTK+ αναλαμβάνει να χειριστεί τις δύσκολες λεπτομέρειες των διεπαφών χρήστη και της διάδρασης με το χρήστη και παρέχει ένα απλό αλλά ισχυρό API, που σας επιτρέπει να επικεντρωθείτε στις λεπτομέρειες της εφαρμογής σας. Οι εφαρμογές που αναπτύσσονται με τη GTK+ υιοθετούν αυτομάτως το θέμα και τις γραμματοσειρές του χρήστη, συνεργάζονται χωρίς προβλήματα με τις τεχνολογίες προσιτότητας, και γενικά συμπεριφέρονται ακριβώς όπως αναμένουν οι χρήστες.
Για περισσότερες πληροφορίες σχετικά με τη GTK+, δείτε το GTK+ Reference Manual ή επισκεφθείτε τον ιστότοπο της GTK+.
3.1.2. Libglade
Σημειώστε ότι το Libglade είναι πια πεπαλαιωμένο προς όφελος του GtkBuilder. Ο νέος πηγαίος κώδικας πρέπει να χρησιμοποιεί το GtkBuilder αντί αυτού.
Η Libglade είναι μια βιβλιοθήκη για τη δυναμική κατασκευή διεπαφών χρήστη από περιγραφές XML. Μπορείτε να χρησιμοποιήσετε μια εφαρμογή δημιουργίας γραφικών διεπαφών, όπως το Glade, για να κατασκευάσετε τη διεπαφή χρήστη, και στη συνέχεια να εξάγετε την περιγραφή της διεπαφής στην εφαρμογή σας. Έτσι μπορείτε να δημιουργείτε περίπλοκες διατάξεις και να προσαρμόζετε τις λεπτομέρειες των διατάξεών σας.
Το Libglade επιτρέπει στους προγραμματιστές να επικεντρωθούν στη λογική της εφαρμογής κατά τη συγγραφή του κώδικα, και να μην επιβαρύνουν τον κώδικα με τις λεπτομέρειες κατασκευής της διεπαφής. Επιπλέον, οι εφαρμογές δημιουργίας γραφικών διεπαφών επιτρέπουν στους επαγγελματίες σχεδιαστές διεπαφών να σχεδιάζουν διεπαφές χωρίς να γνωρίζουν προγραμματισμό.
Για περισσότερες πληροφορίες σχετικά με το Libglade, δείτε το Libglade Reference Manual.
3.1.3. Pango
Η Pango είναι η βασική βιβλιοθήκη χειρισμού κειμένου και γραμματοσειρών της πλατφόρμας GNOME. Είναι υπεύθυνη για την εμφάνιση και τη διάταξη του κειμένου και χρησιμοποιείται παντού στη GTK+.1
Η Pango προσφέρει εκτεταμένη κάλυψη για τα συστήματα γραφής που χρησιμοποιούνται σε διάφορα μέρη σε όλο τον κόσμο. Πολλές γραφές γλωσσών χρησιμοποιούν περίπλοκους κανόνες για τη διάταξη των συμβόλων τους και τη σύνθεση των χαρακτήρων τους. Μέσω της Pango, σχεδόν όλες οι γλώσσες μπορούν να γράφονται και να εμφανίζονται σωστά, επιτρέποντας στους χρήστες σε όλο τον κόσμο να διαβάζουν κείμενα στη μητρική τους γλώσσα. Η Pango υποστηρίζει αυτόματα τα διάφορα συστήματα γραφής· οι προγραμματιστές δεν χρειάζεται να γράφουν ειδικό κώδικα για να προσθέτουν υποστήριξη για άλλες γλώσσες.

Η Pango υποστηρίζει τα συνήθη στυλ κειμένου, όπως είναι οι πλάγιοι χαρακτήρες, οι έντονοι χαρακτήρες και οι υπογραμμίσεις. Η Pango χρησιμοποιεί μια απλή σύνταξη που θυμίζει XML και ονομάζεται PangoMarkup, η οποία σας επιτρέπει να ρυθμίζετε το μέγεθος, το χρώμα και το στυλ της γραμματοσειράς, καθώς και άλλα γνωρίσματα του κειμένου. Χρησιμοποιώντας PangoMarkup, μπορείτε να ορίζετε το εντός της γραμμής στυλ χωρίς να χρειάζεται να το προσθέτετε ξανά σε κάθε μπλοκ κειμένου. Η PangoMarkup μπορεί να χρησιμοποιηθεί απευθείας από τη GTK+, επιτρέποντάς σας να διαμορφώνετε με ευκολία το στυλ του κειμένου των γραφικών διεπαφών σας.
Χρησιμοποιήστε απευθείας την Pango κάθε φορά που επιθυμείτε να εμφανίσετε κείμενο στην οθόνη ή σε άλλο μέσο. Η χρήση της Pango επιτρέπει στη διάταξη του κειμένου σας να αναγνωρίζεται χωρίς κανένα πρόβλημα από τη GTK+ και την υπόλοιπη πλατφόρμα του GNOME. Επομένως, σας βοηθάει να δημιουργήσετε φορητό κώδικα και, κυρίως, διασφαλίζει ότι η εφαρμογή σας θα εμφανίζει άψογα κείμενο σε εκατοντάδες διαφορετικές γλώσσες.
Για περισσότερες πληροφορίες σχετικά με την Pango, δείτε το Pango Reference Manual.
3.1.4. GDK
Η GDK είναι η βιβλιοθήκη χαμηλού επιπέδου που χρησιμοποιεί η GTK+ για τη διάδραση με το σύστημα, όσον αφορά τα γραφικά και τις συσκευές εισόδου. Αν και σπάνια θα χρειαστεί να συμπεριλάβετε τη GDK απευθείας στον κώδικα της εφαρμογής σας, καλό είναι να γνωρίζετε ότι περιέχει όλες τις απαιτούμενες λειτουργίες για τη σχεδίαση αντικειμένων και κειμένου στην οθόνη, καθώς και για τη διάδραση με το χρήστη μέσω διαφόρων συσκευών εισόδου. 2
Η GDK διαθέτει πλαίσιο γραφικών και βασικά στοιχεία σχεδίασης (primitives) κατάλληλα για τη σχεδίαση απλών αντικειμένων και την εμφάνιση εικόνων στην οθόνη. Καθώς υπάρχει και η Cairo, που αποτελεί πιο εκτεταμένο σύστημα σχεδίασης, η GDK παρέχει άγκιστρα για τη χρήση Cairo εντός της GDK.
Η GDK σας προσφέρει απευθείας πρόσβαση σε γεγονότα από το πληκτρολόγιο, το ποντίκι και άλλες συσκευές εισόδου, αντί να σας αναγκάζει να χρησιμοποιείτε τα σήματα υψηλού επιπέδου που χρησιμοποιεί η GTK+. Παράλληλα, η GDK παρέχει ρουτίνες χαμηλού επιπέδου για την πρόσβαση στα δεδομένα συρσίματος και απόθεσης, καθώς και προχείρου του συστήματος. Κατά την υλοποίηση προσαρμοσμένων ελέγχων, ίσως να χρειαστείτε αυτού του είδους την πρόσβαση για να υλοποιήσετε ορισμένες συμπεριφορές επικοινωνίας με το χρήστη.
Η GDK παρέχει και άλλες λειτουργίες που απαιτούνται για την υλοποίηση ενός ολοκληρωμένου toolkit γραφικών, όπως η GTK+. Καθώς η GDK λειτουργεί ως αφαιρετικό μοντέλο πλατφόρμας, επιτρέποντας στη GTK+ να λειτουργεί σε πολλαπλά περιβάλλοντα, παρέχει ένα API για όλες τις λειτουργίες συστήματος που απαιτεί η GTK+, παρέχοντας πληροφορίες για τις πολλαπλές οθόνες, την ανάλυση και το βάθος των χρωμάτων, τους χάρτες χρωμάτων και τους δρομείς.
Χρησιμοποιήστε τη GDK αν χρειάζεστε πρόσβαση χαμηλού επιπέδου στην υποδομή παραθύρων του συστήματος, όπως τα γεγονότα, τα παράθυρα και το πρόχειρο. Μια τέτοια χρήση της GDK διασφαλίζει τη φορητότητα του κώδικά σας και την ορθή του ενσωμάτωση στον υπόλοιπο κώδικά GTK+. Ωστόσο, στις περισσότερες περιπτώσεις δεν συνιστάται η χρήση των απλών ρουτινών σχεδίασης της GDK. Προτιμήστε, καλύτερα, τις εκτεταμένες δυνατότητες της Cairo.
Για περισσότερες πληροφορίες σχετικά με τη GDK, δείτε το GDK Reference Manual.
3.1.5. Cairo
Η Cairo είναι μια βιβλιοθήκη δισδιάστατων γραφικών που περιλαμβάνει ένα προηγμένο API για τη σχεδίαση διανυσματικών γραφικών, σύνθεσης εικόνων (compositing) και εμφάνισης anti-aliased κειμένου. Η Cairo υποστηρίζει διάφορες συσκευές εξόδου, όπως το Σύστημα Παραθύρων X , τα Microsoft Windows και οι ενδιάμεσες μνήμες εικόνων, επιτρέποντάς σας να γράφετε κώδικα για τη σχεδίαση γραφικών επί διαφόρων μέσων, ο οποίος θα λειτουργεί ανεξαρτήτως πλατφόρμας.
Το μοντέλο σχεδίασης της Cairo θυμίζει τα αντίστοιχα μοντέλα των PostScript και PDF. Το API της Cairo παρέχει λειτουργίες σχεδίασης όπως η χρήση κυβικών καμπυλών Bézier (cubic Bézier splines) για περιγράμματα και γεμίσματα, η σύνθεση εικόνων και οι αναλογικές μετατροπές (affine transformations). Αυτές οι διανυσματικές λειτουργίες σας επιτρέπουν να έχετε πλούσια, anti-aliased γραφικά χωρίς να χρησιμοποιείτε δαπανηρές μεθόδους σχεδίασης βάσει εικονοστοιχείων.
Το προηγμένο μοντέλο σχεδίασης της Cairo προσφέρει εμφάνιση υψηλής ποιότητας σε διάφορα μέσα. Χρησιμοποιώντας το ίδιο API μπορείτε να δημιουργήσετε εκθαμβωτικό κείμενο και γραφικά για εμφάνιση στην οθόνη, να αποδώσετε εικόνες, ή να παράγετε πεντακάθαρα αποτελέσματα για εκτύπωση.
Χρησιμοποιήστε την Cairo όποτε χρειάζεστε να σχεδιάσετε επιπλέον γραφικά, πέρα από τα γραφικά συστατικά που σας παρέχει η GTK+. Μεγάλο μέρος της σχεδίασης εντός της GTK+. γίνεται με χρήση της Cairo. Χρησιμοποιώντας την Cairo για τα γραφικά σας, εφοδιάζετε την εφαρμογή σας με γραφικά υψηλής ποιότητας, anti-aliased και προσαρμόσιμα σε οποιαδήποτε ανάλυση.
Για περισσότερες πληροφορίες σχετικά με την Cairo, ανατρέξτε στο Cairo: A Vector Graphics Library.
Η μηχανή διάταξης Pango μπορεί να χρησιμοποιηθεί με διαφορετικά συστήματα υποστήριξης γραμματοσειρών και γραφικών. Στα περισσότερα συστήματα GNOME, η Pango χρησιμοποιεί τα FreeType, fontconfig και Cairo για να αποκτά πρόσβαση στις γραμματοσειρές και να προβάλλει κείμενο. Σε άλλα συστήματα, η Pango χρησιμοποιεί τα εγγενή συστήματα γραφικών, όπως το Uniscribe στα Microsoft Windows και το ATSUI στο MacOS.
Η GDK λειτουργεί σε πολλές διαφορετικές πλατφόρμες, όπως το Σύστημα Παραθύρων X ή τα Microsoft Windows, DirectFB και Quartz. Η GDK παρέχει το ίδιο API σε όλες τις πλατφόρμες, επιτρέποντας την εκτέλεση της GTK+ και των εφαρμογών GTK+ χωρίς τροποποιήσεις.