Drawable
. Στην
κατηγορία αυτή ανήκουν τα παράθυρα (δομές Window
) και τα pixmaps (δομές
Pixmap
). Τα pixmap, όπως περιγράφονται και στην αντίστοιχη παράγραφο
παρακάτω, είναι περιοχές στη μνήμη με κάποιες συγκεκριμένες διαστάσεις (x*y
pixels) στις οποίες μπορούμε να σχεδιάσουμε ότι και στα παράθυρα, να
αντιγράψουμε τμήματά τους ή να τις μεταφέρουμε αυτούσιες σε ένα παράθυρο.
Ένα επιπλέον στοιχείο που είναι απαραίτητο για τις συναρτήσεις σχεδίασης
είναι η δημιουργία και σύνδεση στο Drawable
μιας δομής graphics context
(GC
). Η δομή αυτή περιέχει τις αναγκαίες πληροφορίες για την μορφή των
γραμμών, των τόξων, τον τρόπο γεμίσματος (filling) μιας περιοχής και άλλα. Η
Xlib διαθέτει τη συνάρτηση XCreateGC
:
(GC) XCreateGC( Display* /* display */, Drawable /* window or pixmap */, unsigned long /* valuemask */, XGCValues* /* values */ );Η
XCreateGC
παίρνει ορίσματα το display
, το
drawable
(παράθυρο ή pixmap
) που θα προσδιορίσει
και τέλος μια μάσκα μαζί με το δείκτη σε μια δομή XGCValues
, η οποία
περιέχει τις πληροφορίες που επιθυμούμε. Η επιλογή των πεδίων της δομής
XGCValues
που θέλουμε να ορίσμουμε γίνεται με χρήση της μάσκας σύμφωνα με
τον γνωστό τρόπο. Τα πεδία που δεν ορίζουμε παίρνουν τις τυπικές τιμές του
display. Μάλιστα τις περισσότερες φορές δίνουμε μηδενική τιμή στην μάσκα
ώστε η δομή XGCValues
να πάρει εξ'ολοκλήρου τις τυπικές τιμές, ενώ στη
συνέχεια αλλάζουμε επιτόπου σε κάθε περίπτωση τα χαρακτηριστικά εκείνα που
επιθυμούμε πρίν την εκτέλεση μιας εντολής σχεδίασης. Ακολουθεί ένα απόσπασμα κώδικα για την δημιουργία του graphics context του παραθύρου window:
XGCValues gcvalues; GC gc; unsigned long valuemask; . . . valuemask = 0l; gc = XCreateGC( display, window, valuemask, &gc ); . . .