Ανάπτυξη Βι ιο ήκης Γραφικών ια Ενσ ματ μένο Σύστημα

Μέγεθος: px
Εμφάνιση ξεκινά από τη σελίδα:

Download "Ανάπτυξη Βι ιο ήκης Γραφικών ια Ενσ ματ μένο Σύστημα"

Transcript

1 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Ανάπτυξη Βι ιο ήκης Γραφικών ια Ενσ ματ μένο Σύστημα ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ του ΡΙΧΑΡΔΟΥ Χ. ΔΡΑΚΟΥΛΗ Επι έπ ν: Δημήτριος Σούντρης Επίκουρος Κα η ητής Ε.Μ.Π. Α ήνα, Οκτώ ριος 2011

2

3 ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Ανάπτυξη Βι ιο ήκης Γραφικών ια Ενσ ματ μένο Σύστημα ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ του ΡΙΧΑΡΔΟΥ Χ. ΔΡΑΚΟΥΛΗ Επι έπ ν: Δημήτριος Σούντρης Επίκουρος Κα η ητής Ε.Μ.Π. Ε κρί ηκε από την τριμε ή εξεταστική επιτροπή την 21 Οκτ ρίου Δημήτριος Σούντρης Επίκουρος Κα η ητής Ε.Μ.Π.... Κιαμά Πεκμεστζή Κα η ητής Ε.Μ.Π.... Γεώρ ιος Οικονομάκος Επίκουρος Κα η ητής Ε.Μ.Π. Α ήνα, Οκτώ ριος 2011

4 ... ΡΙΧΑΡΔΟΣ Χ. ΔΡΑΚΟΥΛΗΣ Διπ ματού ος Η εκτρο ό ος Μη ανικός και Μη ανικός Υπο ο ιστών Ε.Μ.Π. Copyright Ρι άρδος Χ. Δρακού ης, Με επιφύ αξη παντός δικαιώματος. All rights reserved. Απα ορεύεται η αντι ραφή, απο ήκευση και διανομή της παρούσας ερ ασίας, εξ ο οκ ήρου ή τμήματος αυτής, ια εμπορικό σκοπό. Επιτρέπεται η ανατύπ ση, απο ήκευση και διανομή ια σκοπό μη κερδοσκοπικό, εκπαιδευτικής ή ερευνητικής φύσης, υπό την προϋπό εση να αναφέρεται η πη ή προέ ευσης και να διατηρείται το παρόν μήνυμα. Ερ τήματα που αφορούν τη ρήση της ερ ασίας ια κερδοσκοπικό σκοπό πρέπει να απευ ύνονται προς τον συ ραφέα. Οι απόψεις και τα συμπεράσματα που περιέ ονται σε αυτό το έ ραφο εκφράζουν τον συ ραφέα και δεν πρέπει να ερμηνευ εί ότι αντιπροσ πεύουν τις επίσημες έσεις του Ε νικού Μετσό ιου Πο υτε νείου.

5 Περί ηψη Σκοπός της ερ ασίας είναι η σ εδίαση και η υ οποίηση μιας ι ιο ήκης ραφικών, η οποία α παρέ ει ρουτίνες ια την ανάπτυξη ραφικών διεπαφών ρήστη, που προορίζονται ια ενσ ματ μένα συστήματα και κυρί ς ια ιατρικές συσκευές. Η ι ιο ήκη υ οποιή ηκε σε ώσσα προ ραμματισμού υψη ού επιπέδου και δεν προϋπο έτει κάποιο ειτουρ ικό σύστημα. Για την ανάπτυξή της απαιτή ηκαν αρκετά στάδια. Κατ αρ άς, ξεκινήσαμε από την ανά υση τ ν απαιτήσε ν και προδια ραφών της ι ιο ήκης. Από τη διαδικασία αυτή, προέκυψαν οι ειτουρ ικότητες που α παρέ ει, κα ώς και οι περιορισμοί που σ ετίζονται με αυτές. Στη συνέ εια, έ ινε ο σ εδιασμός της αρ ιτεκτονικής κατά τον οποίο κα ορίστηκαν τα ιεραρ ικά επίπεδα της ι ιο ήκης, σύμφ να με τις προδια ραφές που εξή ησαν. Επιπ έον, σε αυτή τη φάση της ανάπτυξης περι ράψαμε τον τρόπο ειτουρ ίας τ ν επιπέδ ν αυτών και τ ν επιμέρους τμημάτ ν τους, όπ ς επίσης και την μεταξύ τους α η επίδραση. Στο επόμενο στάδιο επι έ ηκαν οι κατά η ες δομές και α όρι μοι ια κά ε ειτουρ ία και έπειτα υ οποιή ηκαν σε ώσσα C. Τέ ος, πρα ματοποιήσαμε τον έ ε ο της υ οποίησης, ρησιμοποιώντας μια αναπτυξιακή π ακέτα, η οποία δια έτει επεξερ αστή ARM, και τα κατά η α ερ α εία προ ραμματισμού. Λέξεις κ ειδιά Βι ιο ήκη ραφικών, ενσ ματ μένο σύστημα, α όρι μος του Bresenham, ραφική διεπαφή ρήστη 5

6 6

7 Abstract The purpose of this thesis is the design and implementation of a graphics library, which provides routines for developing graphical user interfaces for embedded systems, and mainly for medical devices. The library was implemented in a high-level programming language and does not require any operating system. Several stages were required for its development. Firstly, we started by analysing library s requirements and specifications. From this process emerged the functionalities that it will provide and also the restrictions that are associated with them. Then we proceeded to the architectural design in which the hierarchical levels of the library were defined, according to the specifications. Moreover, at this stage of development we described how these levels and their individual parts are functioning, as well as the interaction between them. In the next stage the appropriate data structures and algorithms were chosen for each functionality and then they were implemented in the C programming language. Finally, we tested the implementation using a development board, with an ARM processor, and the appropriate programming tools. Key words Graphics library, embedded system, Bresenham s algorithm, graphical user interface 7

8 8

9 Ευ αριστίες Κατ αρ άς α ή ε α να ευ αριστήσ τον επι έποντα κα η ητή της διπ ματικής μου, κ. Δημήτριο Σούντρη ια την εμπιστοσύνη που μου έδειξε ανα έτοντάς μου αυτή την ερ ασία. Επιπ έον, ευ αριστώ ερμά τον κ. Αντώνη Παπανικο άου ια τη συνερ ασία του κα ό η τη διάρκεια εκπόνησης της ερ ασίας, κα ώς και ια τις παρατηρήσεις και τις υποδείξεις του, οι οποίες συνέ α αν στη ε τί σή της. Επίσης, α πρέπει να ευ αριστήσ και ό α τα μέ η του ερ αστηρίου μικροϋπο ο ιστών του Ε.Μ.Π., και ιδιαίτερα τον κ. Α έξη Μπάρτζα, οι οποίοι με οή ησαν όποτε ρειάστηκε. Θα ήταν παρά ειψη να μην αναφέρ τον κ. Α ανάσιο Χ ιοπάνο και τον κ. Δημήτρη Φ τόπου ο της Micrel Medical Devices Α.Ε., τους οποίους ευ αριστώ ια την κα οδή ησή τους και το ρόνο που μου αφιέρ σαν, κα ώς επίσης ια το δανεισμό της αναπτυξιακής π ακέτας που ρησιμοποιή ηκε στην ερ ασία. Τέ ος, α ή ε α να εκφράσ την ευ ν μοσύνη μου στους ονείς μου ια την υποστήριξή τους ό α αυτά τα ρόνια, κα ώς και στους φί ους μου ια την κατανόησή τους και τα όμορφα φοιτητικά ρόνια που περάσαμε μαζί. Ρι άρδος Χ. Δρακού ης 9

10 10

11 Περιε όμενα Περιε όμενα 1 Εισα ή Σκοπός Σύνοψη της ερ ασίας Απαιτήσεις και προδια ραφές Γενικές απαιτήσεις Συ κεκριμένες απαιτήσεις Απαιτήσεις API Απαιτήσεις υ ικού Απαιτήσεις φορητότητας Απαιτήσεις ασφά ειας Αρ ιτεκτονική Γενική περι ραφή Επίπεδο ε ονότ ν Επίπεδο παρα ύρ ν και αντικειμέν ν διάδρασης Παρά υρα Αντικείμενα διάδρασης Επίπεδο ασικών συναρτήσε ν ραφικών Επίπεδο οδη ών συσκευής ραφικών Υ οποίηση Δια είριση μνήμης Γραφικά και Σ εδίαση Δομές Συναρτήσεις Παρά υρα και αντικείμενα διάδρασης Δομές Συναρτήσεις Γε ονότα Έ ε ος υ οποίησης Η αναπτυξιακή π ακέτα Atmel SAM3S-EK Περι ά ον και ερ α εία προ ραμματισμού Χρήση τ ν ερ α εί ν Συμπεράσματα εκτέ εσης του κώδικα

12 Περιε όμενα 6 Συμπεράσματα και με οντική ερ ασία Συμπεράσματα Με οντική ερ ασία Αʹ Οδη ός ρήσης της ι ιο ήκης 49 Αʹ.1 Εισα ή Αʹ.2 Δημιουρ ία εικόν ν Αʹ.3 Βασικές δομές και συναρτήσεις ραφικών Αʹ.3.1 Δομές δεδομέν ν Αʹ.3.2 Defines Αʹ.3.3 Συναρτήσεις Αʹ.4 Παρά υρα Αʹ.4.1 Δομές δεδομέν ν Αʹ.4.2 Defines Αʹ.4.3 Συναρτήσεις Αʹ.5 Αντικείμενα παρα ύρ ν (widgets) Αʹ.5.1 Τύποι widgets Αʹ.5.2 Δομές δεδομέν ν Αʹ.5.3 Defines Αʹ.5.4 Συναρτήσεις Αʹ.6 Γε ονότα (events) Αʹ.6.1 Δομές δεδομέν ν Αʹ.6.2 Defines Αʹ.6.3 Συναρτήσεις Αʹ.7 Προκα ορισμένα ρώματα Βι ιο ραφία

13 Κατά ο ος πινάκ ν Κατά ο ος πινάκ ν 2.1 Προδια ραφή 1: Δημιουρ ία αντικειμένου διάδρασης Προδια ραφή 2: Τύποι αντικειμέν ν διάδρασης Προδια ραφή 3: Δημιουρ ία παρα ύρου Προδια ραφή 4: Δια είριση παρα ύρου Προδια ραφή 5: σ εδίασης Προδια ραφή 6: Αποκοπή (Clipping) Προδια ραφή 7α: Σ εδίαση σ ημάτ ν Προδια ραφή 7 : Σ εδίαση κειμένου Προδια ραφή 7 : Σ εδίαση εικόνας Προδια ραφή 8: Διαδραστικότητα Επέκταση προδια ραφής 2: Τύποι αντικειμέν ν διάδρασης Προδια ραφή 9: Σ εδίαση ραφημάτ ν Ο α όρι μος του Bresenham ια σ εδίαση ευ ύ ραμμου τμήματος Ο α όρι μος midpoint ια σ εδίαση κύκ ου Χαρακτηριστικά μικροε ε κτή SAM3S4C

14 Κατά ο ος σ ημάτ ν Κατά ο ος σ ημάτ ν 3.1 Η αρ ιτεκτονική της ι ιο ήκης Το επίπεδο ε ονότ ν της αρ ιτεκτονικής Σ ηματική περι ραφή της έννοιας τ ν παρα ύρ ν Το επίπεδο παρα ύρ ν της αρ ιτεκτονικής Το επίπεδο αντικειμέν ν διάδρασης της αρ ιτεκτονικής Το επίπεδο ασικών συναρτήσε ν ραφικών της αρ ιτεκτονικής Το επίπεδο οδη ών συσκευής ραφικών της αρ ιτεκτονικής Κατακερματισμός μνήμης Αποτέ εσμα α ορί μου Bresenham ια τη σ εδίαση ευ ύ ραμμου τμήματος Επι ο ή pixel με ρήση α ορί μου midpoint Παράδει μα α ορί μου άρτι ν-περιττών Screenshots του απ ού GUI που υ οποιή ηκε Αʹ.1 Το API που α παρουσιαστεί στον οδη ό της ι ιο ήκης

15 Κεφά αιο 1 Εισα ή Τα τε ευταία ρόνια τα ενσ ματ μένα συστήματα αποτε ούν αναπόσπαστο κομμάτι της κα ημερινότητάς μας, δεδομένου ότι ρησιμοποιούνται σε π η ώρα συσκευών, όπ ς κινητά τη έφ να, αυτοκίνητα, ακόμη και π υντήρια. Η αποδο ή τ ν συστημάτ ν αυτών από τους ρήστες, εξαρτάται, ς ένα α μό, από την ευκο ία με την οποία μπορούν να τα ειριστούν. Ο πιο διαδεδομένος τρόπος α η επίδρασης ενός ρήστη με ένα υπο ο ιστικό σύστημα είναι η ραφική διεπαφή ρήστη (Graphical User Interface - GUI). Αποτε εί ένα ραφικό τρόπο επικοιν νίας που ασίζεται, ς επί το π είστον στις έννοιες τ ν παρα ύρ ν, τ ν μενού, τ ν κουμπιών κτ. και έ ει αποδει τεί αρκετά εύ ρηστος ια το μέσο ρήστη. Με την αύξηση τ ν εφαρμο ών τ ν ενσ ματ μέν ν συστημάτ ν, κα ώς και της υπο- ο ιστικής τους ισ ύος, η ρήση τ ν GUIs δεν περιορίζεται π έον στους προσ πικούς υπο ο ιστές, α ά επεκτείνεται και σε ά α συστήματα όπ ς τα MP3 players, οι φ το- ραφικές μη ανές κ.ά., τα οποία με τη σειρά τους αποτε ούν και αυτά δεί ματα ρήσης ενσ ματ μέν ν συστημάτ ν. Ιδιαίτερα σε ιοϊατρικά προϊόντα, η ύπαρξη GUI αποδεικνύεται αρκετά σημαντική. Οι ρήστες μπορούν ευκο ότερα να ειριστούν τέτοιες συσκευές, ώστε να ε έ ξουν τη εραπεία τους, να ά ουν ή να εισά ουν δεδομένα σ ετικά με τη διατροφή τους, τη υ εία τους κτ., ρίς να ρειάζεται να είναι ειδικοί στις η εκτρονικές συσκευές. Για την δημιουρ ία GUI ια ένα σύστημα, ρησιμοποιούνται οι ι ιο ήκες ραφικών, οι οποίες παρέ ουν ερ α εία, που διευκο ύνουν την ανάπτυξη ραφικών διεπαφών. 1.1 Σκοπός Σκοπός της παρούσας διπ ματικής ερ ασίας είναι η σ εδίαση και η υ οποίηση μιας ι ιο ήκης ραφικών, η οποία α ρησιμοποιείται από εφαρμο ές που αναπτύσσονται ια ενσ ματ μένα συστήματα. Θα πρέπει να παρέ ει ρουτίνες ια την ανάπτυξη ραφικών διεπαφών ρήστη, που οη ούν στην α η επίδραση τ ν ρηστών με τα συστήματα ια τα οποία προορίζονται. Η ρήση της ι ιο ήκης δε α πρέπει να προϋπο έτει κάποιο ειτουρ ικό σύστημα, ενώ α ηφ εί υπόψη η ρήση της σε ραφικά περι ά οντα ιατρικών συσκευών. Παρό ο που υπάρ ουν αρκετές ι ιο ήκες ραφικών, αποφασίσαμε την ανάπτυξη μιας νέας ια τους εξής ό ους: Περιορισμοί που μας επι ά ει ένα ενσ ματ μένο σύστημα. Οι περισσότερες ι ιο- ήκες ραφικών που έ ουν αναπτυ εί, προορίζονται ια ενικού σκοπού υπο ο ιστικά συστήματα. Για το ό ο αυτό, έ ουν με α ύτερες απαιτήσεις σε υπο ο ιστική ισ ύ από αυτές που μπορεί να προσφέρει ένα ενσ ματ μένο σύστημα. Επιπ έον, στα 15

16 Κεφά αιο 1. Εισα ή ενσ ματ μένα συστήματα μας ενδιαφέρει η αμη ή κατανά ση ισ ύος, πρά μα που δε μπορούν να μας ε υη ούν οι ι ιο ήκες αυτές. Απαιτήσεις ασφά ειας ο ισμικού. Όπ ς αναφέραμε, έ ουμε η ι ιο ήκη να ρησιμοποιείται ια GUIs ιατρικών συσκευών, τα οποία, ό του συστήματος ια το οποίο προορίζονται α είναι κρίσιμα από άποψη ασφά ειας (safety-critical). Οι υπάρ- ουσες ι ιο ήκες δεν μπορούν να ε υη ούν ότι μπορούν να ρησιμοποιη ούν σε safety-critical ο ισμικό. Επομέν ς, αναπτύσσοντας από την αρ ή κώδικα, τον οποίο ε έ ουμε π ήρ ς, έ ουμε τη δυνατότητα σε ένα δεύτερο στάδιο να τον περάσουμε από τα απαραίτητα ερ α εία, ώστε να ε έ ξουμε αν π ηρεί τις προδια ραφές, που είναι ανα καίες ια ένα safety-critical ο ισμικό, και να κάνουμε τις απαραίτητες προσαρμο ές. Γίνεται, οιπόν, σαφές ότι τα κύρια αρακτηριστικά της ι ιο ήκης που κα ούμαστε να αναπτύξουμε είναι: Χαμη ές απαιτήσεις υπο ο ιστικής ισ ύος. Χαμη ές απαιτήσεις σε μνήμη. Χαμη ή κατανά ση ισ ύος. Δυνατότητα δημιουρ ίας GUI προ ραμματίζοντας σε ώσσα υψη ού επιπέδου, αντί assembly, ώστε να διευκο ύνεται ο προ ραμματισμός τ ν εφαρμο ών, μειώνοντας παρά η α τον κίνδυνο α ών κατά την ανάπτυξή τους, και επιπ έον να επιτύ ουμε φορητότητα του κώδικα. 1.2 Σύνοψη της ερ ασίας Στην παρούσα ερ ασία περι ράφονται τα στάδια ανάπτυξης της ι ιο ήκης, κα ώς και ε έ ου της υ οποίησής της. Συ κεκριμένα, η δομή έ ει ς εξής: Κεφά αιο 2: της διαδικασίας εξα ής τ ν απαιτήσε ν ια τη σ εδίαση της ι ιο ήκης. Κεφά αιο 3: της αρ ιτεκτονικής της ι ιο ήκης. Κεφά αιο 4: τ ν ασικών στοι εί ν της υ οποίησης. Κεφά αιο 5: Έ ε ος της ι ιο ήκης σε ένα ενσ ματ μένο σύστημα. Κεφά αιο 6: Συμπεράσματα και προτάσεις με οντικής ερ ασίας. Παράρτημα Αʹ: Ο οδη ός ρήσης της ι ιο ήκης. 16

17 Κεφά αιο 2 Απαιτήσεις και προδια ραφές Για την ανάπτυξη της ι ιο ήκης απαιτούνται αρκετά στάδια. Το πρώτο από αυτά είναι η εξα ή τ ν απαιτήσε ν και τ ν προδια ραφών, που α περι ραφεί σε αυτό το κεφά- αιο. Αρ ικά, παρουσιάζονται οι ενικές απαιτήσεις και στη συνέ εια δίνονται συ κεκριμένες προδια ραφές, με έμφαση στη διασύνδεση προ ραμματισμού εφαρμο ών (Application Programming Interface - API). Τέ ος, αμ άνονται υπόψη οι περιορισμοί που επι ά ει το υ ικό ια το οποίο προορίζονται οι εφαρμο ές που α ρησιμοποιούν τη ι ιο ήκη, κα ώς και οι απαιτήσεις φορητότητας και ασφά ειας. 2.1 Γενικές απαιτήσεις Η ι ιο ήκη που α αναπτυ εί, α πρέπει να παρέ ει ένα API ια την ανάπτυξη ραφικών διεπαφών, που προορίζονται ια ιοϊατρικά συστήματα. Τα περισσότερα τέτοιου είδους συστήματα και συσκευές σήμερα επικοιν νούν με το ρήστη μέσ διεπαφών κειμένου (text-based interfaces), οι οποίες αν και π ηρούν τις απαιτήσεις κατανά σης και επίδοσης, αρ ίζουν να ε κατα είπονται σταδιακά δίνοντας τη έση τους στις ραφικές διεπαφές. Με τα GUIs επιτυ άνεται με α ύτερη ευ ρηστία του συστήματος, τα ύτερη εκμά ησή του από τους ρήστες, κα ώς και περιορισμός τ ν α ών κατά τη ρήση του. Επομέν ς, ένα σύστημα που δια έτει ραφικό περι ά ον ικανοποιεί περισσότερο το ρήστη του σε ό α τα επίπεδα. Το πιο διαδεδομένο είδος ραφικής διεπαφής είναι τα παρα υρικά περι ά οντα (Windows, Icons, Menus, Pointers - WIMP). Τα κοινά στοι εία αυτού του τύπου τ ν GUI, όπ ς μαρτυρά και το όνομά τους, είναι τα εξής: Παρά υρα (windows). Εικονίδια (icons). Μενού (menus). Δείκτες (pointers). Επιπ έον αντικείμενα διάδρασης (widgets). Τα περι ά οντα αυτά, ό της ευρείας ρήσης τους, αρ ικά στους προσ πικούς υπο ο- ιστές, είναι οικεία στους ρήστες και συ ρόν ς αρκετά εύ ρηστα. Το μειονέκτημά τους έναντι τ ν διεπαφών κειμένου είναι με α ύτερη απαίτηση σε υπο ο ιστική ισ ύ, η οποία είναι περιορισμένη στα ενσ ματ μένα συστήματα, όπ ς έ ουμε ήδη αναφέρει, και αποτε εί ένα επιπ έον πρό ημα που α πρέπει να επι υ εί. 17

18 Κεφά αιο 2. Απαιτήσεις και προδια ραφές Για την εξα ή τ ν προδια ραφών, α ηφ ούν υπόψη κατ αρ άς τα όσα αναφέρ ηκαν. Δη αδή, η ι ιο ήκη α σ εδιαστεί με σκοπό να δίνει τη δυνατότητα στους προ ραμματιστές ραφικών διεπαφών, κάνοντας ρήση του API, να αναπτύξουν ένα παρα υρικό περι ά ον, με τα παραπάν στοι εία και π εονεκτήματα. Στη συνέ εια, α επεκτείνουμε τις προδια ραφές εξετάζοντας περιπτώσεις ρήσης GUIs ιατρικών συσκευών από κάποιο ρήστη. 2.2 Συ κεκριμένες απαιτήσεις Έ οντας μια ενική κατεύ υνση ια το πώς α αναπτύξουμε τη ι ιο ήκη, ξεκινάμε να εξά ουμε συ κεκριμένες απαιτήσεις Απαιτήσεις API Το ασικότερο ια μια ι ιο ήκη είναι να παρέ ει στον προ ραμματιστή τα απαραίτητα ερ α εία ια τη διευκό υνση της ανάπτυξης εφαρμο ών. Στην περίπτ σή μας έ ουμε να επιτρέπουμε στον προ ραμματιστή να υ οποιεί GUIs ράφοντας κώδικα σε υψη ό επίπεδο, ρησιμοποιώντας μια ε αφριά (light-weight) ι ιο ήκη ραφικών. Αυτή δε α πρέπει να επι αρύνει τον αντικειμενικό κώδικα (object code), ώστε το τε ικό εκτε έσιμο να μπορεί να τρέξει σε ένα σύστημα αμη ών δυνατοτήτ ν και να έ ει αμη ή κατανά ση ενέρ ειας. Τα ερ α εία δημιουρ ίας του GUI αποτε ούν τη διασύνδεση προ ραμματισμού εφαρμο ών, οι απαιτήσεις της οποίας α παρουσιαστούν στην ενότητα αυτή Βασικές απαιτήσεις Τα αντικείμενα διάδρασης (εικονίδια, μενού και widgets - στο εξής ό α μαζί α αναφέρονται ς widgets) είναι πο ύ σημαντικά στοι εία ενός ραφικού περι ά οντος, κα ώς είναι υπεύ υνα ια την επικοιν νία με το ρήστη. Κα ένα από αυτά απεικονίζει π ηροφορίες, οι οποίες ενδέ εται να μπορούν να μετα η ούν από το ρήστη, είτε δέ εται μετα ο ές στην κατάστασή του, παρέ οντας έτσι έναν τρόπο ειρισμού της διεπαφής και της συσκευής ενικότερα. Για τη ι ιο ήκη που α αναπτύξουμε τα widgets α αποτε ούν τα μοναδικά στοι εία εισόδου - εξόδου του GUI. Ό α τα widgets έ ουν κάποιες κοινές απαιτήσεις, οι οποίες συνοψίζονται στον πίνακα 2.1. Παρό α αυτά, το κα ένα, έ ει και τα δικά του αρακτηριστικά και επομέν ς Δημιουρ ία αντικειμένου διάδρασης Δημιουρ ία ενός widget σε ένα παρά υρο. Είσοδοι Εμφάνιση: σ ήμα, ρώμα, τρόπος σ εδίασης, περιο ή σ εδίασης. Έξοδοι - Απαιτεί Την ύπαρξη ειτουρ ιών σ εδίασης σ ημάτ ν. Προσυν ήκη Έ ει δημιουρ η εί το παρά υρο, στο οποίο α δημιουρ η εί το widget. Μετασυν ήκη Το widget ίνεται αντικείμενο του παρα ύρου. Πίνακας 2.1: Προδια ραφή 1: Δημιουρ ία αντικειμένου διάδρασης. 18

19 2.2. Συ κεκριμένες απαιτήσεις Τύπος widget Είσοδοι Απαιτεί Προσυν ήκη Εικονίδιο Κείμενο και εικόνα. Την ύπαρξη ειτουρ ιών σ εδίασης - (icon) κειμένου και εικόνας. Κουμπί (push button) Κείμενο και εικόνα. Την ύπαρξη ειτουρ ιών σ εδίασης κειμένου και εικόνας. - Λίστα Τα αντικείμενα που (list box) την αποτε ούν. Η αρ ική κατάσταση (ποιο στοι είο είναι επι ε μένο). - Έ ουν οριστεί τα αντικείμενα της ίστας. Πίνακας 2.2: Προδια ραφή 2: Τύποι αντικειμέν ν διάδρασης. Δημιουρ ία παρα ύρου Δημιουρ ία ενός παρα ύρου. Είσοδοι Εμφάνιση: ρώμα, τρόπος σ εδίασης, περιο ή σ εδίασης. Το παρά υρο στο οποίο ανήκει (παρά υρο-πατέρας), αν υπάρ- ει. Έξοδοι - Απαιτεί Την ύπαρξη ειτουρ ιών σ εδίασης σ ημάτ ν. Προσυν ήκη Να έ ει δημιουρ η εί το παρά υρο-πατέρας (αν υπάρ ει). Μετασυν ήκη Το παρά υρο αποτε εί π έον παρά υρο του συστήματος. Πίνακας 2.3: Προδια ραφή 3: Δημιουρ ία παρα ύρου. ξε ριστές απαιτήσεις. Οι ασικοί τύποι τ ν widgets που α υποστηρίζονται από τη ι- ιο ήκη, κα ώς και οι απαιτήσεις του κα ενός, οι οποίες επεκτείνουν αυτές του ενικού widget που προη ή ηκαν, παρουσιάζονται στον πίνακα 2.2. Από την παρουσίαση τ ν αντικειμέν ν διάδρασης, ίνεται αντι ηπτό ότι το API α πρέπει να περι αμ άνει συναρτήσεις σ ετικές με τη δια είριση παρα ύρ ν, πάν στα οποία α δημιουρ η ούν. Αυτές περι ράφονται στους πίνακες 2.3 και 2.4. Τα παρά υρα και τα widgets αποτε ούν τα ανώτερα επίπεδα της αρ ιτεκτονικής της ι ιο ήκης, τα οποία εμπεριέ ουν τα στοι εία που ρειάζονται, ώστε να δημιουρ η εί μια ασική ραφική διεπαφή. Όμ ς, όπ ς είδαμε στους αντίστοι ους πίνακες, προϋπο έτουν την ύπαρξη συναρτήσε ν σ εδίασης, τόσο σ ημάτ ν, όσο και κειμένου και εικόν ν. Αυτές αποτε ούν ένα πο ύ ασικό κομμάτι της ι ιο ήκης, εφόσον κα ορίζουν τον τρόπο εμφάνισης του κά ε αντικειμένου που α σ εδιαστεί. Το επίπεδο αυτό της ι ιο ήκης α συνίσταται από τρία ασικά τμήματα: σχεδίασης: Κα ορίζουν τον τρόπο με τον οποίο α ίνεται η σ εδίαση. Θα έ ουν μια προκα ορισμένη τιμή και α μπορούν να μετα ά ονται από τον προ- ραμματιστή. Περι ράφονται στον πίνακα 2.5. Αποκοπή: Προσδιορίζει αν τα σημεία ενός αντικειμένου ρίσκονται εντός ή εκτός μιας περιο ής. Η περιο ή αυτή στις δύο διαστάσεις είναι ένα ορ ο ώνιο, το οποίο ονομάζουμε παρά υρο ή περιο ή αποκοπής (clipping region). Περι ράφεται στον πίνακα

20 Κεφά αιο 2. Απαιτήσεις και προδια ραφές Δια είριση παρα ύρου Μετα ο ή της κατάστασης ενός παρα ύρου. Περι αμ άνει τα εξής: Το παρά υρο τί εται ς ορατό/μη-ορατό. To παρά υρο τί εται ς τροποποιημένο/ενημερ μένο, δη αδή ρειάζεται/δε ρειάζεται επανασ εδίαση αντίστοι α. Μετακίνηση του παρα ύρου. Είσοδοι Το παρά υρο που α μετα η εί. Έξοδοι - Απαιτεί Την ύπαρξη συναρτήσε ν μετακίνησης σ ημάτ ν. Προσυν ήκη Να έ ει δημιουρ η εί το παρά υρο. Μετασυν ήκη Η κατάσταση του παρα ύρου μετα ά εται. Πίνακας 2.4: Προδια ραφή 4: Δια είριση παρα ύρου. Σχεδίαση: Περι αμ άνει τις ειτουρ ίες σ εδίασης τ ν ασικών σ ημάτ ν (πίνακας 2.7), κειμένου (πίνακας 2.8) και εικόν ν (πίνακας 2.9). σ εδίασης Μετα ο ή τ ν παραμέτρ ν σ εδίασης. Αυτές περι αμ άνουν: Επι ο ές ρ μάτ ν σ εδίασης. Επι ο ές ραμματοσειράς. Επι ο ή στυ σ εδίασης ( έμισμα, περί ραμμα, σκίαση). Πά ος Γραμμής. Απο ήκευση/επαναφορά επι ο ών. Είσοδοι Ανά ο α με την περίπτ ση: Χρώμα. Γραμματοσειρά. Στυ σ εδίασης ( έμισμα, περί ραμμα, σκίαση). Πά ος Γραμμής. Καμία είσοδος. Έξοδοι - Απαιτεί - Προσυν ήκη Κα ύπτεται με την ύπαρξη προκα ορισμέν ν τιμών. Μετασυν ήκη Α α ή της αντίστοι ης παραμέτρου που επι έ ηκε. Πίνακας 2.5: Προδια ραφή 5: σ εδίασης. Μέ ρι στι μής όσα έ ουν περι ραφεί σ ετίζονται με τη δημιουρ ία και την απεικόνιση τ ν αντικειμέν ν σε κάποια συσκευή εξόδου ραφικών. Όμ ς, μια ραφική διεπαφή είναι 20

21 2.2. Συ κεκριμένες απαιτήσεις Αποκοπή (Clipping) Κα ορισμός παρα ύρου αποκοπής. Περι αμ άνει: Ορισμό παρα ύρου αποκοπής. Απο ήκευση/επαναφορά παρα ύρου αποκοπής. Είσοδοι Τα όρια του παρα ύρου αποκοπής. Έξοδοι - Απαιτεί - Προσυν ήκη Κα ύπτεται με την ύπαρξη προκα ορισμένου παρα ύρου αποκοπής. Μετασυν ήκη Α α ή του παρα ύρου αποκοπής. Πίνακας 2.6: Προδια ραφή 6: Αποκοπή (Clipping). Σ εδίαση σ ημάτ ν Σ εδίαση ασικών σ ημάτ ν. Αυτά α είναι: Γραμμές. Ορ ο ώνια. Κύκ οι. Πο ύ να. Είσοδοι Ανά ο α με την περίπτ ση: Αρ ικό και τε ικό σημείο. Αρ ικό σημείο, μήκος και π άτος. Κέντρο και ακτίνα. Τα σημεία τ ν κορυφών. Έξοδοι - Απαιτεί Οδη ό συσκευής εξόδου ραφικών (display device driver). Προσυν ήκη Κα ύπτεται με την ύπαρξη προκα ορισμέν ν τιμών ια τις παραμέτρους σ εδίασης. Μετασυν ήκη Σ εδίαση του αντίστοι ου σ ήματος στη συσκευή εξόδου. Πίνακας 2.7: Προδια ραφή 7α: Σ εδίαση σ ημάτ ν. ένα κατ εξο ήν διαδραστικό σύστημα και επομέν ς μια ι ιο ήκη ραφικών α πρέπει να παρέ ει συναρτήσεις που σ ετίζονται με την α η επίδραση του ρήστη με την εφαρμο ή που α υ οποιη εί. Σε ένα ραφικό περι ά ον αυτό επιτυ άνεται, όπ ς ήδη έ ουμε αναφέρει, μέσ τ ν αντικειμέν ν διάδρασης. Έτσι, δημιουρ ούμε τον πίνακα 2.10, που περι ράφει δύο ασικές δυνατότητες που α δίνει το API ια τον έ ε ο της α η επίδρασης. 21

22 Κεφά αιο 2. Απαιτήσεις και προδια ραφές Σ εδίαση κειμένου Σ εδίαση κειμένου. Είσοδοι Το κείμενο που α σ εδιαστεί. Έξοδοι - Απαιτεί Οδη ό συσκευής εξόδου ραφικών (display device driver). Προσυν ήκη Κα ύπτεται με την ύπαρξη προκα ορισμέν ν τιμών ια τις παραμέτρους σ εδίασης. Μετασυν ήκη Σ εδίαση του κειμένου στη συσκευή εξόδου. Πίνακας 2.8: Προδια ραφή 7 : Σ εδίαση κειμένου. Σ εδίαση εικόνας Σ εδίασης εικόνας. Είσοδοι Τα αρακτηριστικά της εικόνας: Διαστάσεις, αρι μός ψηφί ν (bits) ανά pixel, δεδομένα. Έξοδοι - Απαιτεί Οδη ό συσκευής εξόδου ραφικών (display device driver). Προσυν ήκη - Μετασυν ήκη Σ εδίαση της εικόνας στη συσκευή εξόδου. Πίνακας 2.9: Προδια ραφή 7 : Σ εδίαση εικόνας. Διαδραστικότητα Περι αμ άνει: τον κα ορισμό της ειτουρ ίας ενός widget. την εκτέ εση της ειτουρ ίας αυτής. Είσοδοι Τo widget. Επιπ έον, ια την πρώτη περίπτ ση: Η συνάρτηση που α κα- ορίζει τη ειτουρ ία του. Έξοδοι - Απαιτεί - Προσυν ήκη Έ ει δημιουρ η εί το widget και η συνάρτηση. Μετασυν ήκη Το widget αποκτά τη ειτουρ ία που ορίστηκε. Εκτε είται η ειτουρ ία που έ ει οριστεί ια το widget. Πίνακας 2.10: Προδια ραφή 8: Διαδραστικότητα Επιπ έον απαιτήσεις Οι ενικές απαιτήσεις που παρουσιάστηκαν προη ουμέν ς, είναι αρκετές ια την υ οποίηση ενός ραφικού περι ά οντος ενικού σκοπού. Παρό α αυτά, α πρέπει να επεκτα- ούν, ώστε να συμπερι ά ουν ορισμένα στοι εία που α είναι ανα καία ια μια ραφική 22

23 2.2. Συ κεκριμένες απαιτήσεις Τύπος widget Slider Spinning box Progress bar Check box Είσοδοι Ο τρόπος σ εδίασης (οριζόντιο ή κά ετο) και η αρ ική τιμή του. Η αρ ική τιμή του. Η αρ ική κατάστασή του. Η αρ ική κατάστασή του. Πίνακας 2.11: Επέκταση προδια ραφής 2: Τύποι αντικειμέν ν διάδρασης. Σ εδίαση ραφημάτ ν Συναρτήσεις σ εδίασης ραφημάτ ν. Αυτά α είναι: Γράφημα πίτας (pie chart). Γράφημα στη ών (bar chart). Γράφημα ραμμής (line chart). Είσοδοι Δεδομένα, ρώμα και έση σ εδίασης. Έξοδοι - Απαιτεί Οδη ό συσκευής εξόδου ραφικών (display device driver). Προσυν ήκη - Μετασυν ήκη Σ εδίαση του αντίστοι ου ραφήματος. Πίνακας 2.12: Προδια ραφή 9: Σ εδίαση ραφημάτ ν. διεπαφή ιατρικής συσκευής. Γι αυτό το ό ο, α εξετάσουμε μερικές περιπτώσεις ρήσης που σ ετίζονται με ιατρικές εφαρμο ές. Οι περιπτώσεις αυτές α έ ουν ς δράστες τους ρήστες μιας ιατρικής συσκευής, που α η επιδρούν με αυτή μέσ μιας ραφικής διεπαφής ρήστη. Με αυτό τον τρόπο α προκύψουν ορισμένα αρακτηριστικά ια τη διεπαφή, τα οποία είναι ανα καία ια το ρήστη και συνεπώς α πρέπει να παρέ ονται από τη ι ιο ήκη με την οποία αυτή α υ οποιη εί. Το είδος ιοϊατρικής συσκευής που α ρησιμοποιήσουμε ια την εξα ή τ ν επιπ έον απαιτήσε ν που ρειαζόμαστε, είναι οι αντ ίες έ υσης φαρμάκ ν. Οι συσκευές αυτές ρησιμοποιούνται από εκατομμύρια άτομα ια τη ορή ηση αντι ιοτικών ια τις οιμώξεις, ινσου ίνης ια το δια ήτη και ά ν πο ών φαρμάκ ν. Παρακάτ αναφέρουμε 3 πι ανές ενέρ ειες που α μπορούσε να πρα ματοποιήσει ένας ρήστης, ο οποίος ρησιμοποιεί μια τέτοια συσκευή: 1. Ανάγνωση της κατάστασης έγχυσης: Η διεπαφή α πρέπει να εμφανίζει την κατάσταση ρησιμοποιώντας, ια παράδει μα, ένα progress bar, ώστε ο ρήστης να ενημερώνεται ανά πάσα στι μή ια την εξέ ιξη της διαδικασίας. 2. Καθορισμός παραμέτρων έγχυσης: Ο ρήστης α πρέπει να έ ει τη δυνατότητα να κα ορίζει τη δόση του φαρμάκου που α αμ άνει, τη ρονική στι μή που α πρα ματοποιείται η έ υση κτ. Θα πρέπει, επομέν ς, να ρησιμοποιη ούν αντικείμενα διάδρασης, τα οποία να επιτρέπουν την είσοδο και τη μετα ο ή δεδομέν ν. 3. Παρακολούθηση ιστορικού έγχυσης: Αυτή η ειτουρ ία μπορεί να επιτευ εί μέσ ραφημάτ ν, τα οποία α απεικονίζουν το μέ ε ος της δόσης ς συνάρτηση του 23

24 Κεφά αιο 2. Απαιτήσεις και προδια ραφές ρόνου, ή τη σύσταση του φαρμάκου που ορη ή ηκε κτ. Με άση τα 1 και 2 επεκτείνουμε τους τύπους αντικειμέν ν διάδρασης του πίνακα 2.2 της ι ιο ήκης, δημιουρ ώντας τον πίνακα Τέ ος, δημιουρ ούμε τον πίνακα 2.12 που προκύπτει από το Απαιτήσεις υ ικού Η ι ιο ήκη προορίζεται ια ενσ ματ μένα συστήματα, τα οποία δια έτουν, ς επί το π είστον, ι ότερους πόρους από τα συστήματα ενικού σκοπού. Για το ό ο αυτό, το ο ισμικό ενός τέτοιου συστήματος υπόκειται σε τρεις ασικούς περιορισμούς: Μνήμη συστήματος. Τα ύτητα επεξερ αστή. Κατανά ση ισ ύος. Στη διπ ματική αυτή περιοριστήκαμε στην ανάπτυξη μιας ι ιο ήκης αμη ών απαιτήσε ν α ά αρκετά ενικής ρήσης, ρίς να ά ουμε υπ όψιν κάποια συ κεκριμένη π ατφόρμα. Η ι ιο ήκη που αναπτύ ηκε μπορεί είτε να ρησιμοποιη εί ς έ ει, είτε να προσαρμοστεί στις απαιτήσεις μιας συ κεκριμένης π ατφόρμας. Το δεύτερο α απαιτη εί ειδικά στην περίπτ ση ρήσης π ατφόρμας με πο ύ ί ους πόρους οπότε α πρέπει να ε τιστοποιη ούν διάφορα στοι εία της ι ιο ήκης και πι ανώς να αφαιρε ούν αρακτηριστικά (features) που απαιτούν πο ούς πόρους Απαιτήσεις φορητότητας Για να επιτευ εί η φορητότητα του ο ισμικού, α πρέπει να δια ρίζεται ο κώδικας που αναφέρεται σε συ κεκριμένη π ατφόρμα (platform specific code) από τον υπό οιπο κώδικα της ι ιο ήκης. Αυτό μπορεί να πρα ματοποιη εί δημιουρ ώντας ένα αφαιρετικό επίπεδο (abstraction layer) διασύνδεσης μεταξύ τ ν οδη ών συσκευής και της ι ιο ήκης Απαιτήσεις ασφά ειας Εφόσον η ι ιο ήκη α σ εδιαστεί με σκοπό τη ρήση της από ο ισμικό ιατρικών συσκευών α πρέπει να π ηρεί συ κεκριμένες προδια ραφές ασφά ειας. Για τον έ ε ο αυτών έ ουν αναπτυ εί ορισμένα πρότυπα που κα ορίζουν τόσο τον τρόπο ανάπτυξης τ ν προδια ραφών και ε έ ου του ο ισμικού (όπ ς το IEC 62304), όσο και τον τρόπο συ ραφής του κώδικα (όπ ς είναι το MISRA C). Στην παρούσα ερ ασία, δε α ασ ο η- ούμε με αυτά τα πρότυπα. Στο κεφά αιο 6 α ίνει μια αναφορά στον έ ε ο του κώδικα που υ οποιή ηκε ρησιμοποιώντας αυτές τις προδια ραφές. Το έμα της ασφά ειας έ ει και μια ά η προσέ ιση. Μια ραφική διεπαφή, ιδιαίτερα όταν προορίζεται ια ιατρικές συσκευές, α πρέπει να μπορεί να αποτρέπει το ρήστη της από το να υποπέσει σε σφά μα. Οι ρήστες μιας συσκευής δεν είναι πάντα έμπειροι και ειδικοί ή μπορεί να είναι ακόμα και αφηρημένοι κατά το ειρισμό της. Σε μια ραφική διεπαφή, οιπόν, ο ευκο ότερος τρόπος αποφυ ής του ά ους κατά τη ρήση είναι η ρησιμοποίηση διαφορετικών ρ μάτ ν, με έ ους ραμμάτ ν κτ. Επομέν ς, μια ι ιο ήκη α πρέπει να παρέ ει και τέτοιου είδους δυνατότητες στους προ ραμματιστές. 24

25 Κεφά αιο 3 Αρ ιτεκτονική Ο σ εδιασμός της αρ ιτεκτονικής του συστήματος αποτε εί το επόμενο στάδιο ανάπτυξης της ι ιο ήκης. Από το προη ούμενο κεφά αιο, έ ει ίνει αντι ηπτό ότι έ ει ακο ου η εί μία προσέ ιση από πάν προς τα κάτ (top-down) ια την ανά υση τ ν απαιτήσε ν και τ ν προδια ραφών. Σε π ήρη ανα ο ία με αυτή τη διαδικασία α ίνει και η παρουσίαση της αρ ιτεκτονικής σε αυτό το κεφά αιο. 3.1 Γενική περι ραφή Η αρ ιτεκτονική της ι ιο ήκης αποτε είται από τέσσερα ασικά επίπεδα. Αυτά είναι, ξεκινώντας από πάν προς τα κάτ : Το επίπεδο τ ν ε ονότ ν (events). Το επίπεδο τ ν παρα ύρ ν (windows) και τ ν αντικειμέν ν διάδρασης (widgets). Το επίπεδο τ ν ασικών συναρτήσε ν ραφικών (graphics primitives layer). Το επίπεδο τ ν οδη ών της συσκευής ραφικών (display device drivers). Όπ ς φαίνεται στο σ ήμα 3.1, μια εφαρμο ή μπορεί να ρησιμοποιεί τη διασύνδεση προ- ραμματισμού εφαρμο ών οποιουδήποτε από αυτά. Η επι ο ή του επιπέδου που α ρησιμοποιη εί κά ε φορά εξαρτάται από τον προ ραμματιστή και τις απαιτήσεις της εφαρμο ής. Στη συνέ εια, α ανα υ εί κα ένα από τα επίπεδα ξε ριστά και α περι ραφεί η δομή τους και η μεταξύ τους α η επίδραση. 3.2 Επίπεδο ε ονότ ν Το επίπεδο τ ν ε ονότ ν είναι υπεύ υνο ια τη δημιουρ ία διαδραστικών διεπαφών. Όπ ς αναφέρ ηκε στο κεφά αιο 2, η α η επίδραση με το ρήστη κα ορίζεται από τις ειτουρ ίες τ ν αντικειμέν ν διάδρασης. Η εκτέ εση αυτών, όπ ς είδαμε, μπορεί να ίνει μέσα από το πρό ραμμα, όμ ς αυτό δεν είναι ιδιαίτερα ρήσιμο σε τέτοιου είδους εφαρμο ές. Στην π ειονότητα τ ν περιπτώσε ν α πρέπει να κα ούνται ό κάποιας εξ τερικής παρέμ ασης, δη αδή κάποιου ε ονότος (event). Το επίπεδο αυτό της αρ ιτεκτονικής, επομέν ς, εξυπηρετεί αυτόν ακρι ώς το σκοπό. Χ ρίζεται σε δύο τμήματα: τη δημιουρ ία ε ονότ ν και το ειρισμό αυτών. Ως επί το π είστον, τα ε ονότα δημιουρ ούνται ασύ ρονα από τις συσκευές εισόδου, οι οποίες συνή ς είναι: ποντίκια, π ηκτρο ό ια και ο όνες αφής. Ένα ε ονός, επομέν ς, α είναι 25

26 Κεφά αιο 3. Αρ ιτεκτονική Σ ήμα 3.1: Block διά ραμμα που παρουσιάζει την αρ ιτεκτονική της ι ιο ήκης. το πάτημα ενός π ήκτρου, η μετακίνηση του δείκτη κτ. Επιπ έον, ε ονότα μπορούν να δημιουρ ούνται και από την ίδια την εφαρμο ή, ώστε να ε έ εται και σύ ρονα η ροή του προ ράμματος. Ο έ ε ος ια events ίνεται μέσ ενός συνε ούς ρό ου ( ρό ος ε ονότ ν - events loop). Όταν ανι νευτεί ένα, τότε κα είται η αντίστοι η συνάρτηση ειρισμού του, η οποία α συμπίπτει με τη ειτουρ ία κάποιου widget, που α έ ει κα οριστεί ν ρίτερα. Αυτή μπορεί να περι αμ άνει ακόμα και δημιουρ ία ενός νέου event. Σε αυτό, δη αδή, το σημείο, έ ουμε την α η επίδραση με το επόμενο, ιεραρ ικά, επίπεδο της αρ ιτεκτονικής, όπ ς φαίνεται και στο σ ήμα 3.2. Έπειτα ίνεται επανασ εδίαση όσ ν παρα ύρ ν και widgets έ ουν μετα η εί. Η διαδικασία α περι ραφεί με περισσότερη επτομέρεια στο κεφά αιο 4. 26

27 3.3. Επίπεδο παρα ύρ ν και αντικειμέν ν διάδρασης Σ ήμα 3.2: Block διά ραμμα που παρουσιάζει το επίπεδο ε ονότ ν της αρ ιτεκτονικής. 3.3 Επίπεδο παρα ύρ ν και αντικειμέν ν διάδρασης Το επίπεδο αυτό α παρουσιαστεί σαν δύο ξε ριστά επίπεδα, αυτό τ ν παρα ύρ ν και αυτό τ ν αντικειμέν ν διάδρασης. Όμ ς, ό τ ν κοινών τους αρακτηριστικών και της μεταξύ τους α η επίδρασης, ε ρούνται ς ένα ιεραρ ικό επίπεδο της αρ ιτεκτονικής, όπ ς παρουσιάστηκε στο σ ήμα 3.1. Τα επιμέρους τμήματα αυτού περι ράφονται στις δύο υποενότητες που ακο ου ούν. Η έννοια του παρα ύρου, στην περίπτ σή μας, διαφέρει από αυτή τ ν κ ασσικών παρα υρικών συστημάτ ν, που συναντάμε κυρί ς στους προσ πικούς υπο ο ιστές. Στη ι- ιο ήκη που σ εδιάζουμε ένα παρά υρο ορίζει απ ά ένα ώρο που περιέ ονται αντικείμενα διάδρασης. Αυτός μπορεί να είναι ορατός ή ό ι, είτε να επικα ύπτεται από ά ες τέτοιες περιο ές (παρά υρα). Στο σ ήμα 3.3 φαίνονται σ ηματικά δύο τέτοια παρά υρα. (αʹ) Μη επικα υπτόμενα παρά υρα ( ʹ) Επικα υπτόμενα παρά υρα Σ ήμα 3.3: Σ ηματική περι ραφή της έννοιας τ ν παρα ύρ ν. 27

28 Κεφά αιο 3. Αρ ιτεκτονική Σ ήμα 3.4: Block διά ραμμα που παρουσιάζει το επίπεδο παρα ύρ ν της αρ ιτεκτονικής Παρά υρα Στο σ ήμα 3.4 φαίνεται το σ ηματικό διά ραμμα του επιπέδου τ ν παρα ύρ ν. Αποτε- είται από τα εξής τμήματα: Παράθυρα ρίζες (root windows): Αποτε εί τη ίστα τ ν παρα ύρ ν ριζών, δη αδή όσ ν δεν ανήκουν σε κανένα παρά υρο - δεν έ ουν παρά υρο-πατέρα. Είναι ρήσιμη ια τον κα ορισμό μιας ιεραρ ίας παρα ύρ ν και ια την προσπέ αση αυτών στην συνέ εια. Δημιουργία παραθύρου (create window): Περι αμ άνει τις διαδικασίες δημιουρ ίας παρα ύρ ν. Κατά τη δημιουρ ία ενός παρα ύρου αρ ικοποιείται η κατάστασή του, ενώ αν είναι root window ενημερώνεται επιπ έον και η αντίστοι η ίστα. Κατάσταση παραθύρου (window state): Περι αμ άνει τις συναρτήσεις που είναι υπεύ- υνες ια την α α ή της κατάστασης ενός παρα ύρου, η οποία υποδεικνύει: αν το παρά υρο είναι ορατό. αν το παρά υρο έ ει τροποποιη εί και ρειάζεται επανασ εδίαση. αν το παρά υρο ανήκει στα root windows. τη έση του παρα ύρου στη ίστα τ ν root windows. Η κατάσταση τ ν παρα ύρ ν μπορεί να μετα η εί από το ρό ο ε ονότ ν (events loop), από συνάρτηση ενός widget, ακόμη και μέσα από την εφαρμο ή. Σχεδιασμός παραθύρου (window drawing): Εδώ περι αμ άνονται οι συναρτήσεις που σ ετίζονται με το σ εδιασμό τ ν παρα ύρ ν. Αυτές κα ούνται συνή ς από το events loop ή απ ευ είας από την εφαρμο ή και εκτε ούν τη ειτουρ ία τους, ανά ο α με την κατάσταση του παρα ύρου προς σ εδίαση. Από αυτό το σημείο κα ούνται και οι αντίστοι ες συναρτήσεις σ εδίασης τ ν αντικειμέν ν διάδρασης, κα ώς και οι ασικές συναρτήσεις ραφικών. Τέ ος, ίνεται ενημέρ ση της κατάστασης του παρα ύρου. 28

29 3.3. Επίπεδο παρα ύρ ν και αντικειμέν ν διάδρασης Σ ήμα 3.5: Block διά ραμμα που παρουσιάζει το επίπεδο αντικειμέν ν διάδρασης της αρ- ιτεκτονικής Αντικείμενα διάδρασης Ο τρόπος ειτουρ ίας της ι ιο ήκης όσον αφορά στα αντικείμενα διάδρασης είναι ί ο πο ύ παρόμοιος με αυτόν που περι ράφηκε προη ουμέν ς ια τα παρά υρα. Τα επιμέρους τμήματα του επιπέδου αυτού, όπ ς φαίνονται και στο σ ήμα 3.5, είναι: Δημιουργία αντικειμένου διάδρασης (create widget): Περι αμ άνει τις διαδικασίες δημιουρ ίας widgets και την αρ ικοποίηση της κατάστασής τους. Κατάσταση αντικειμένου διάδρασης (widget state): Περι αμ άνει τις συναρτήσεις που είναι υπεύ υνες ια την α α ή της κατάστασης ενός widget, η οποία υποδεικνύει: αν το widget είναι ορατό. αν το widget έ ει τροποποιη εί και ρειάζεται επανασ εδίαση. Η κατάσταση τ ν widgets, όπ ς και αυτή τ ν παρα ύρ ν, μπορεί να μετα η εί από το ρό ο ε ονότ ν (events loop), από συνάρτηση του ίδιου ή ά ου widget, ακόμη και μέσα από την εφαρμο ή. Επιπ έον, ανά ο α με το είδος του αντικειμένου διάδρασης, υπάρ ουν και επιπ έον μετα ητές κατάστασης: Push button: Δεί νει αν είναι πιεσμένο ή ό ι. List box: Δεί νει ποιο στοι είο είναι επι ε μένο. Slider: Δεί νει τη έση του δείκτη και την τιμή που έ ει επι ε εί. Progress bar: Δεί νει την τιμή που αντιστοι εί στην πρόοδο που μετράει το widget. Check box: Δεί νει αν είναι επι ε μένο ή ό ι. Σχεδιασμός αντικειμένου διάδρασης (widget drawing): Εδώ περι αμ άνονται οι συναρτήσεις που σ ετίζονται με το σ εδιασμό τ ν widgets. Αυτές κα ούνται από τις συναρτήσεις σ εδίασης παρα ύρ ν (στα οποία ανήκουν τα widgets) και εκτε ούν τη σ εδίαση ανά ο α με την κατάσταση του εκάστοτε widget. Από αυτό το σημείο κα ούνται και οι ασικές συναρτήσεις ραφικών. Τέ ος, ίνεται ενημέρ ση της κατάστασης του widget. 29

30 Κεφά αιο 3. Αρ ιτεκτονική Σ ήμα 3.6: Block διά ραμμα που παρουσιάζει το επίπεδο ασικών συναρτήσε ν ραφικών της αρ ιτεκτονικής. Λειτουργία αντικειμένου διάδρασης (widget function): Πρόκειται ια τις συναρτήσεις που κα ορίζουν τη ειτουρ ία τ ν widgets. Αυτές κα ούνται ς ειριστές κάποιου ε ονότος ή από την εφαρμο ή, και επηρεάζουν την κατάσταση του ίδιου ή ά ν widgets και παρα ύρ ν. Επίσης, όπ ς έ ει ήδη αναφερ εί, μπορεί να δημιουρ ούν και νέα events. 3.4 Επίπεδο ασικών συναρτήσε ν ραφικών Το σ ηματικό διά ραμμα του επιπέδου τ ν ασικών συναρτήσε ν ραφικών φαίνεται στο σ ήμα 3.6. Περι αμ άνει τα εξής, όπ ς παρουσιάστηκαν και στο κεφά αιο 2: 30 Επιλογές σχεδίασης (drawing options): Αποτε είται από μετα ητές κατάστασης η τρέ ουσα τιμή τ ν οποί ν υποδεικνύει τον τρόπο σ εδίασης τ ν σ ημάτ ν. Πιο συ κεκριμένα, κα ορίζονται: Χρώμα σ εδίασης. Χρώμα σ εδίασης φόντου. Γραμματοσειρά σ εδίασης κειμένου. Χρώμα σ εδίασης κειμένου. Πά ος Γραμμής: Το πά ος ραμμής του περι ράμματος τ ν σ ημάτ ν. Περί ραμμα σ ημάτ ν: Επι έ εται αν α σ εδιαστεί ή ό ι το περί ραμμα τ ν σ ημάτ ν. Γέμισμα σ ημάτ ν: Επι έ εται αν α σ εδιαστεί ή ό ι το έμισμα τ ν σ ημάτ ν και αν ναι με ποιο ρώμα ( ρώμα σ εδίασης ή ρώμα σ εδίασης φόντου). Επιπ έον, υπάρ ει και η επι ο ή εμίσματος με δια ά μιση ρώματος (gradient fill). Σκίαση: Επι έ εται αν α σ εδιαστεί ή ό ι η σκιά του σ ήματος.

31 3.5. Επίπεδο οδη ών συσκευής ραφικών Σ ήμα 3.7: Block διά ραμμα που παρουσιάζει το επίπεδο τ ν οδη ών συσκευής ραφικών της αρ ιτεκτονικής. Μετα ά ονται κυρί ς από τις συναρτήσεις σ εδίασης παρα ύρ ν και widgets και από την εφαρμο ή, α ά και, σε μερικές περιπτώσεις, από τις συναρτήσεις σ εδίασης σ ημάτ ν. Αποκοπή (clipping): Συνίσταται από τις συναρτήσεις που μετα ά ουν το τρέ ον παρά υρο αποκοπής, το οποίο κα ορίζει την περιο ή στην οποία α πρα ματοποιη εί η σ εδίαση. Ως περιο ή αποκοπής μπορεί να οριστεί οποιοδήποτε ορ ο ώνιο, ενώ μπορεί, επίσης, να ίνει επαναφορά της προκα ορισμένης τιμής της. Συναρτήσεις σχεδίασης (drawing functions): Εδώ περι αμ άνονται οι συναρτήσεις σ εδίασης τ ν ασικών σ ημάτ ν, τα οποία όπ ς αναφέρ ηκαν και στο κεφά αιο 2, είναι: Ορ ο ώνια. Κύκ οι. Πο ύ να. Όπ ς, επίσης, και οι συναρτήσεις σ εδίασης κειμένου, εικόν ν και ραφημάτ ν. Αυτές κα ούνται από τις συναρτήσεις σ εδίασης παρα ύρ ν και widgets ή από την εφαρμο ή και ανά ο α με τις τρέ ουσες επι ο ές σ εδίασης και το παρά υρο αποκοπής προ αίνουν στη σ εδίαση του εκάστοτε σ ήματος, κειμένου, εικόνας κτ. ρησιμοποιώντας τους οδη ούς συσκευής ραφικών. 3.5 Επίπεδο οδη ών συσκευής ραφικών Στο επίπεδο αυτό, που αποτε εί και το τε ευταίο, ιεραρ ικά, επίπεδο της ι ιο ήκης, περι αμ άνονται οι οδη οί τ ν συσκευών εξόδου ραφικών. Όπ ς αναφέρ ηκε στο κεφά- αιο 2, ια ό ους φορητότητας, παρεμ ά εται εδώ ένα επίπεδο, στο οποίο ορίζονται οι ασικές συναρτήσεις απεικόνισης ραφικών (όπ ς η ε ραφή και η ανά ν ση ενός pixel). Αυτές απομονώνουν τους οδη ούς συσκευών από το υπό οιπο σύστημα, όπ ς φαίνεται στο σ ήμα

32 Κεφά αιο 3. Αρ ιτεκτονική 32

33 Κεφά αιο 4 Υ οποίηση Έ οντας εξά ει τις απαιτήσεις της ι ιο ήκης και περι ράψει την αρ ιτεκτονική του συστήματος, προ ράμε στο στάδιο της υ οποίησης. Στην πράξη, η διαδικασία ανάπτυξης της ι ιο ήκης είναι επανα ηπτική, δη αδή ενδέ εται να μετα η εί τόσο η αρ ιτεκτονική όσο και οι προδια ραφές του συστήματος κατά τη διάρκεια της υ οποίησης. Στο κεφά αιο αυτό, α περι ραφούν οι κύριες δομές και οι ασικοί α όρι μοι που ρησιμοποιή ηκαν, κα ώς και κάποιες επιπ έον επτομέρειες τις υ οποίησης, όπου κρίνεται ανα καίο. Η ι ιο ήκη υ οποιή ηκε σε ώσσα C, ακο ου ώντας το πρότυπο ANSI C. Κατ αρ άς α αναφερ ούν τα στοι εία της υ οποίησης που αφορούν στη δια είριση μνήμης και στη συνέ εια, α ακο ου ήσει η περι ραφή τ ν στοι εί ν της υ οποίησης ια κα ένα από τα επίπεδα της αρ ιτεκτονικής από κάτ προς τα πάν (bottom-up). Μια πιο επτομερής περι ραφή, από αυτή που του παρόντος κεφα αίου, τ ν δομών και του API που υ οποιή ηκε υπάρ ει στο παράρτημα Αʹ. 4.1 Δια είριση μνήμης Οι απαιτήσεις υ ικού, που αναφέρ ηκαν στο κεφά αιο 2, δη αδή η μικρή επεξερ αστική ισ ύς και η περιορισμένη μνήμη, επι ά ουν τη ρήση αποδοτικών α ορί μ ν και τε νικών ια κά ε ειτουρ ία που α πρα ματοποιείται από τη ι ιο ήκη. Στην ενότητα αυτή, α περι ραφεί η δια είριση μνήμης, ενώ οι ασικοί α όρι μοι, που ρησιμοποιή ηκαν, α περι ραφούν στις επόμενες ενότητες. Μια εφαρμο ή α πρέπει να πρα ματοποιεί σ στή δια είριση μνήμης, ιδιαίτερα όταν προορίζεται ια ένα ενσ ματ μένο σύστημα, όπ ς επίσης και οι ι ιο ήκες που ρησιμοποιεί. Τα δεδομένα σε ένα σύστημα απο ηκεύονται είτε στη στοί α (stack) είτε στο σ ρό (heap). Η στοί α μπορεί να περιέ ει τα εξής: Τοπικές μετα ητές, μη στατικές (static), οι οποίες δεν είναι απο ηκευμένες σε κατα ρητές (registers) του επεξερ αστή. Προσ ρινά αποτε έσματα αποτίμησης εκφράσε ν. Την τιμή επιστροφής μιας συνάρτησης. Την κατάσταση του επεξερ αστή κατά τη διάρκεια διακοπών (interrupts) Τιμές κατα ρητών που α αποκαταστα ούν όταν επιστρέψει η συνάρτηση. Ο ώρος της στοί ας που έ ει δεσμευτεί από συναρτήσεις (τοπικές μετα ητές, παράμετροι, τιμή επιστροφής) αποδεσμεύεται μετά την επιστροφή της. Έτσι, ίνεται φανερό 33

34 Κεφά αιο 4. Υ οποίηση Σ ήμα 4.1: Κατακερματισμός μνήμης το κυριότερο π εονέκτημα ρήσης της στοί ας: Διαφορετικά τμήματα ενός προ ράμματος μπορούν να ρησιμοποιήσουν την ίδια έση μνήμης ια να απο ηκεύσουν τα δεδομένα τους, επομέν ς ίνεται εξοικονόμηση απο ηκευτικού ώρου μνήμης. Παρό α αυτά, υπάρ ει ο κίνδυνος η στοί α να εμίσει, κα ώς ο ώρος που κατα αμ άνει στη μνήμη είναι εξ αρ ής κα ορισμένος. Αυτό μπορεί να συμ εί όταν υπάρ ουν πο ές διαδο ικές κ ήσεις συναρτήσε ν και τε ικά η συνο ική απαίτηση μνήμης ξεπεράσει το μέ ε ος της στοί ας. Ο ώρος που κατα αμ άνει στη στοί α μία συνάρτηση εξαρτάται από το ώρο που κατα αμ άνουν στη μνήμη οι παράμετροί της και η τιμή που επιστρέφει. Συνεπώς, ια να αποφευ εί ο κίνδυνος έ ειψης ώρου στη στοί α α πρέπει αυτός να είναι όσο το δυνατόν μικρότερος. Από την ά η μεριά, στο σ ρό απο ηκεύονται δεδομένα ρησιμοποιώντας μία από τις συναρτήσεις της πρότυπης ι ιο ήκης της ώσσας C: malloc, calloc ή realloc, οι οποίες κατανέμουν (allocate) τα δεδομένα σε συνε όμενες έσεις μνήμης. Αυτά παραμένουν στο σ ρό μέ ρι να ε ευ ερ ούν ρητά από το πρό ραμμα. Στη ώσσα C αυτό ίνεται ρησιμοποιώντας τη συνάρτηση free. Η απο ήκευση στο σ ρό είναι ρήσιμη όταν δεν είναι ν στό εκ τ ν προτέρ ν το μέ ε ος της μνήμης που απαιτείται ια τα δεδομένα. Όμ ς, η ρήση του σ ρού, εμπεριέ ει ένα σημαντικό μειονέκτημα: το πρό ημα του (εξ τερικού) κατακερματισμού (fragmentation). Αυτό συμ αίνει, διότι τα δεδομένα απο ηκεύονται σε συνε όμενες έσεις μνήμης, επομέν ς, αν ο ε εύ ερος ώρος μνήμης δεν είναι ενιαίος ενδέ εται μια απαίτηση ια δέσμευση μνήμης να μην μπορεί να κα υφ εί, ακόμη και αν ο συνο ικός ε εύ ερος ώρος ξεπερνάει την απαίτηση αυτή (σ ήμα 4.1). Τέ ος, αναφέρουμε ότι το allocation είναι πιο αρ ό στο σ ρό απ ό,τι στη στοί α, ό της ο ικής LIFO (Last In - First Out) της τε ευταίας. Από τα όσα αναφέρ ηκαν, ίνεται αντι ηπτός ο ό ος ια τον οποίο πάρ ηκαν οι παρακάτ αποφάσεις ια την υ οποίηση: 34 Χρησιμοποίηση δεικτών ς παραμέτρους τ ν συναρτήσε ν, οι οποίοι κατα αμ άνουν

35 4.2. Γραφικά και Σ εδίαση μικρό και στα ερό ώρο στη μνήμη. τ ν οντοτήτ ν της ι ιο ήκης (σ ημάτ ν, παρα ύρ ν, widgets, ε ονότ ν) με ρήση δομών (structs), οι οποίες εμπεριέ ουν το σύνο ο τ ν ιδιοτήτ ν τους. Με αυτό τον τρόπο, ορίζοντας μια φορά μία οντότητα, δίνεται η δυνατότητα να αναφερόμαστε σε αυτή ρησιμοποιώντας απ ά ένα δείκτη στην κατά η η δομή, ρίς να περνάμε πο απ ές παραμέτρους, οι οποίες α κόστιζαν σε μνήμη. Οι δομές που αναφέρ ηκαν παρουσιάζονται στις αντίστοι ες ενότητες του κεφα αίου. Δε α ίνει υ οποίηση αναδρομικών συναρτήσε ν. Εξαίρεση αποτε ούν οι συναρτήσεις παρα ύρ ν, που α παρουσιαστούν στη συνέ εια. Ο τρόπος δέσμευσης της μνήμης (στατικά ή δυναμικά, με ρήση της στοί ας ή του σ ρού αντίστοι α) α αφήνεται στον προ ραμματιστή της εφαρμο ής που α ρησιμοποιεί τη ι ιο ήκη, ώστε να έ ει τον π ήρη έ ε ο. 4.2 Γραφικά και Σ εδίαση Δομές Όπ ς είδαμε και στο προη ούμενο κεφά αιο, στο επίπεδο αυτό ανήκει ό,τι έ ει σ έση με τη σ εδίαση σ ημάτ ν, κειμένου, εικόν ν και ραφημάτ ν. Κα ένα από αυτά τα αντικείμενα αποτε εί μια ξε ριστή οντότητα, ι αυτό το ό ο έ ει τη δική του δομή και ιδιότητες: Ορθογώνιο: Η δομή αυτή ορίζει ένα ορ ο ώνιο ώρο, ρησιμοποιώντας ένα αρ ικό σημείο, το μήκος και το π άτος του. Κύκλος: Στη δομή περιέ ονται οι συντετα μένες του σημείου του κέντρου του και η ακτίνα του. Πολύγωνο: Ορίζεται από τον αρι μό τ ν κορυφών του και τις συντετα μένες τους. Εικόνα: Η δομή μιας εικόνας περιέ ει το μήκος και το π άτος της, τον αρι μό τ ν bits ανά pixel και τα δεδομένα της εικόνας σε μορφή πίνακα (C array). Γραμματοσειρά: Οι ραμματοσειρές που περι αμ άνονται στη ι ιο ήκη είναι στα- ερού π άτους (fixed pitch) και περι αμ άνουν μόνο ASCII αρακτήρες. Στη δομή περιέ ονται: το μήκος και το π άτος τ ν αρακτήρ ν, ο ASCII κ δικός του πρώτου και του τε ευταίου στοι είου και τα δεδομένα της ραμματοσειράς σε μορφή πίνακα (C array). Γράφημα: Στη ι ιο ήκη έ ουν οριστεί τρεις διαφορετικές δομές που ορίζουν ισάρι μους τύπους ραφημάτ ν. Αυτά είναι: Γράφημα πίτας (pie chart), ράφημα ραμμής (line chart) και ράφημα στη ών (bar chart). Η δομή του κα ενός περιέ ει τις τιμές που α απεικονιστούν και τα αντίστοι α ρώματα, κα ώς και τη έση και το μέ ε ος του ραφήματος Συναρτήσεις Η σ εδίαση σ ημάτ ν αποτε εί εμε ιώδη ειτουρ ία της ι ιο ήκης. Αρ ικά, α περι ράψουμε τις συναρτήσεις σ εδίασης: ευ ύ ραμμου τμήματος, η οποία είναι ασική ια τη σ εδίαση πο υ ών ν, και κύκ ου. 35

36 Κεφά αιο 4. Υ οποίηση Οι α όρι μοι που ρησιμοποιούνται ια τη σ εδίαση ευ ύ ραμμ ν τμημάτ ν έ ουν στό ο την κα ύτερη προσέ ιση αυτών επι έ οντας τα pixel που ρίσκονται πιο κοντά στη μα ηματική πορεία τους. Η εξίσ ση της ευ είας είναι η εξής: y = s x + b (4.1) Επομέν ς, ια να σ εδιάσουμε ένα ευ ύ ραμμο τμήμα από το σημείο (x 0, y 0 ) στο (x n, y n ) αρκεί να υπο ο ίζουμε ια κά ε x το νέο y με άση την εξίσ ση (4.1), στρο υ οποιώντας το αποτέ εσμα. Η προσέ ιση αυτή, όμ ς, δεν είναι ιδιαίτερα αποδοτική διότι, πρώτον εκτε ούμε στρο ύ ευση ια κά ε σημείο και δεύτερον ρησιμοποιούμε πράξεις με πρα ματικούς αρι μούς. Για το ό ο αυτό στρεφόμαστε στον α όρι μο του Bresenham ια τη σ εδίαση ευ ύ ραμμου τμήματος. Οι πράξεις πρα ματικών αντικα ιστώνται με ακέραιες και όπ ς ίνεται φανερό είναι τα ύτερος από αυτόν που προαναφέρ ηκε. Σε κά ε επανά- ηψη ( ια κά ε x) υπάρ ουν μόνο δύο υποψήφια pixels ια επι ο ή, που εξαρτώνται από την κ ίση s. Ο α όρι μος του Bresenham ια ευ ύ ραμμο τμήμα με κ ίση s < 1 παρουσιάζεται στον πίνακα 4.1. Στο σ ήμα 4.2 φαίνεται η τε ική επι ο ή τ ν pixels από τον α όρι μο. Η συνάρτηση drawline() της ι ιο ήκης εκτε εί τη σ εδίαση ενός ευ ύ ραμμου τμήματος, ρησιμοποιώντας τον α όρι μο του Bresenham, ο οποίος έ ει επεκτα εί ια ευ ύ ραμμα τμήματα που ανήκουν σε ό α τα οκταμόρια. 1. Σ εδιάζουμε το σημείο (x 0, y 0 ). 2. Υπο ο ίζουμε τα εξής: x = x n x 0, y = y n y 0 και 2 y 2 x. 3. Υπο ο ίζουμε την παράμετρο απόφασης: p 0 = 2 y x. 4. Για κά ε x k, ξεκινώντας από k = 0: Αν p k < 0, τότε το επόμενο σημείο που α σ εδιαστεί είναι το (x k + 1, y k ) και p k+1 = p k + 2 y Α ιώς, το επόμενο σημείο είναι το (x k + 1, y k + 1) και p k+1 = p k + 2 y 2 x 5. Επανα αμ άνουμε το ήμα 4 x φορές. Πίνακας 4.1: Ο α όρι μος του Bresenham ια σ εδίαση ευ ύ ραμμου τμήματος με άκρα τα σημεία (x 0, y 0 ), (x n, y n ) και κ ίση s < 1. Σ ήμα 4.2: Αποτέ εσμα α ορί μου Bresenham ια τη σ εδίαση ευ ύ ραμμου τμήματος. 36

37 4.2. Γραφικά και Σ εδίαση Σ ήμα 4.3: Η επι ο ή τ ν pixel στο πρώτο τεταρτημόριο, με ρήση του α ορί μου midpoint, αμ άνοντας υπόψη την οκταπ ή συμμετρία. Για τη σ εδίαση κύκ ου δημιουρ ή ηκε η συνάρτηση drawcircle(), η οποία ρησιμοποιεί τον α όρι μο του μέσου σημείου (midpoint circle algoritmh). Αυτός ρησιμοποιεί την ίδια ιδέα με τον α όρι μο του Bresenham ια ευ ύ ραμμα τμήματα ια την επι ο ή τ ν pixels που α σ εδιαστούν. Επιπ έον, αμ άνεται υπόψη η οκταπ ή συμμετρία του κύκ ου (σ ήμα 4.3). Ο α όρι μος ια κύκ ο με κέντρο το σημείο (x c, y c ) και ακτίνα r παρουσιάζεται στον πίνακα Επι έ ουμε το σημείο (x 0, y 0 ) = (0, r) από το οποίο α ξεκινήσουμε (ανήκει στον κύκ ο με κέντρο το (0, 0) και ακτίνα r). 2. Υπο ο ίζουμε την παράμετρο απόφασης: p 0 = 5 4 r. 3. Για κά ε x k, ξεκινώντας από k = 0: Αν p k < 0, τότε το επόμενο σημείο που α σ εδιαστεί είναι το (x k + 1, y k ) και p k+1 = p k + 2(x k + 1) + 1 Α ιώς, το επόμενο σημείο είναι το (x k + 1, y k 1) και p k+1 = p k + 2(x k + 1) 2(y k + 1) Εφαρμόζουμε την οκταπ ή συμμετρία υπο ο ίζοντας τα υπό οιπα 7 σημεία. 5. Μεταφέρουμε κά ε σημείο που υπο ο ίσαμε κατά (x c, y c ): x = x + x c και y = y + y c και το σ εδιάζουμε. 6. Επανα αμ άνουμε τα ήματα 3-5 μέ ρις ότου x y. Πίνακας 4.2: Ο α όρι μος midpoint ια σ εδίαση κύκ ου κέντρου (x c, y c ) και ακτίνας r. Μια ά η σημαντική ειτουρ ία της ι ιο ήκης είναι ο έ ε ος ια το αν ένα σημείο είναι εσ τερικό ενός σ ήματος. Το αποτέ εσμα είναι ιδιαίτερα ρήσιμο στην περίπτ ση του εμίσματος σ ημάτ ν, της αποκοπής, α ά και της διάδρασης. Για ορ ο ώνια και κύκ ους η ύση είναι αρκετά απ ή, ι αυτό το ό ο α παρουσιάσουμε τον τρόπο ειτουρ ίας 37

38 Κεφά αιο 4. Υ οποίηση Σ ήμα 4.4: Παράδει μα α ορί μου άρτι ν-περιττών. Η μαύρη κουκκίδα αντιπροσ πεύει το σημείο που ε έ εται, ενώ οι κρίζες τα σημεία τομής της ευ είας με το πο ύ νο. της συνάρτησης insidepolygon() της ι ιο ήκης, η οποία αποφαίνεται αν ένα σημείο ρίσκεται εντός ενός πο υ ώνου. Ο α όρι μος που ρησιμοποιή ηκε ονομάζεται Α όρι μος άρτι ν-περιττών (odd-even). Η ιδέα είναι η εξής: Από το σημείο που έ ουμε να ε έ ξουμε σ εδιάζουμε ένα νοητό ευ ύ ραμμο τμήμα προς ένα σημείο στο άπειρο (δη αδή εκτός του πο υ ώνου). Αν ο αρι μός τ ν τομών του πο υ ώνου με το ευ ύ ραμμο τμήμα είναι περιττός, τότε το σημείο ρίσκεται εντός του πο υ ώνου (σ ήμα 4.4). 4.3 Παρά υρα και αντικείμενα διάδρασης Δομές Η δομή που περι ράφει ένα παρά υρο περιέ ει: Το όριο (περί ραμμα) του παρα ύρου και τον τρόπο σ εδίασης αυτού (ό α τα παρά- υρα είναι ορ ο ώνια). Την κατάσταση του παρα ύρου. Το πρώτο widget που ανήκει στη ίστα τ ν αντικειμέν ν του παρα ύρου. Το παρά υρο-πατέρα, το επόμενο παρά υρο, το προη ούμενο παρά υρο και το πρώτο παρά υρο-παιδί του. Τα παρά υρα μπορούν να προσπε αστούν μέσ του παρα ύρου-πατέρα τους. Όσα δεν έ ουν πατέρα (root windows) απο ηκεύονται σε μια στατική δομή (πίνακα), ούτ ς ώστε να μπορούμε να αναφερ ούμε σε αυτά. Επιπ έον, η δομή ενός root window περιέ ει και τη έση του στον πίνακα αυτόν. Με παρόμοιο τρόπο έ ει οριστεί και η δομή ενός ενικού αντικειμένου διάδρασης. Τα στοι εία που την απαρτίζουν είναι τα εξής: 38 Το σ ήμα του αντικειμένου, η έση του και ο τρόπος σ εδίασής του. Ο τύπος του widget και η δομή αυτού.

39 4.3. Παρά υρα και αντικείμενα διάδρασης Η κατάστασή του. Το επόμενο widget που ανήκει στο ίδιο παρά υρο. Το παρά υρο στο οποίο ανήκει. Η ειτουρ ία του. Η δομή αυτή, περιέ ει τα ασικά αρακτηριστικά που είναι κοινά ια ό α τα αντικείμενα διάδρασης. Επιπ έον, όμ ς, κά ε τύπος (εικονίδιο, ίστα κτ.) έ ει τα δικά του επιπρόσ ετα αρακτηριστικά και ιδιότητες και συνεπώς τη δική του δομή. Οι τύποι τ ν widgets που τε ικά υ οποιή ηκαν, μαζί με τις ιδιότητές τους, που περιέ ονται στη δομή που τα ορίζει, συνοψίζονται παρακάτ : Εικονίδιο (icon): Η δομή ενός εικονιδίου περιέ ει το κείμενο που α σ εδιαστεί, τη ραμματοσειρά και το ρώμα του, την εικόνα που α σ εδιαστεί, κα ώς και τον τρόπο στοί ισης κειμένου και εικόνας. Πεδίο κειμένου (text box): Αποτε εί υποσύνο ο του εικονιδίου και ρησιμοποιείται μόνο ια τη σ εδίαση κειμένου και επομέν ς η δομή του περιέ ει μόνο τις ιδιότητες που σ ετίζονται με το κείμενο. Πεδίο τιμής (value box): Όμοιο με το πεδίο κειμένου. Η διαφορά έ κειται στο ε ονός ότι απεικονίζεται σε αυτό μια αρι μητική τιμή, η οποία περιέ εται στη δομή του, αντί κειμένου. Επιπ έον, περι αμ άνει δύο επιπρόσ ετες αρι μητικές τιμές, οι οποίες αποτε ούν το άν και κάτ όριο της τιμής απεικόνισης. Πεδίο εικόνας (image box): Όπ ς και το πεδίο κειμένου, αποτε εί υποσύνο ο του εικονιδίου και ρησιμοποιείται ια τη σ εδίαση εικόν ν. Κουμπί (push button): Έ ει μια ξε ριστή μετα ητή κατάστασης, η οποία υποδη ώνει αν είναι πιεσμένο, κα ώς και τις επι ο ές σ εδίασής του ια αυτή την περίπτ ση. Επιπ έον, μπορεί να σ εδιαστεί ένα εικονίδιο πάν σε αυτό, με τις ιδιότητες που προαναφέρ ηκαν. Λίστα (list box): Εκτός τ ν αντικειμέν ν που την αποτε ούν, περιέ ει τον τύπο τους, τον τρόπο σ εδίασής τους, το ύψος τους, τον αρι μό τους, κα ώς και ποιο από αυτά είναι επι ε μένο. Slider: Η δομή του περιέ ει τον τρόπο σ εδίασής του (οριζόντιο ή κά ετο), τη έση του δείκτη και την τιμή που αντιστοι εί σε αυτή. Επίσης, μπορούν να κα οριστούν δύο κρίσιμες τιμές ια τις οποίες μετα ά εται το ρώμα του widget. Progress bar: Περιέ ει μια τιμή από το 0 μέ ρι το 100, με την οποία κα ορίζεται η πρόοδος που απεικονίζει το widget. Επιπ έον, περιέ ει το ρώμα και τη ραμματοσειρά σ εδίασης. Check box: Περιέ ει το ρώμα του συμ ό ου και την κατάστασή του (επι ε μένο ή ό ι). Γράφημα: Περιέ ει τον τύπο του ραφήματος και τη δομή αυτού. Υπόμνημα γραφήματος: Περιέ ει τον τύπο του ραφήματος, τη δομή του, κα ώς και το κείμενο που αντιστοι εί στην κά ε τιμή, όπ ς επίσης τη ραμματοσειρά και το ρώμα σ εδίασής του. Σχέδιο (drawing widget): Περιέ ει μια συνάρτηση, που ορίζει το αντικείμενο το οποίο α σ εδιαστεί σε αυτό. Χρησιμοποιείται ια τη σ εδίαση οποιουδήποτε αντικειμένου 39

40 Κεφά αιο 4. Υ οποίηση επιτρέπουν οι συναρτήσεις σ εδίασης που παρέ ει η ι ιο ήκη Συναρτήσεις Οι ασικότερες συναρτήσεις του επιπέδου αυτού έ ουν να κάνουν με τη δημιουρ ία και τη σ εδίαση τ ν παρα ύρ ν και τ ν αντικειμέν ν διάδρασης. Τα πρώτα δημιουρ ούνται μέσ της συνάρτησης createwindow(). Όσο ια τα widgets, ανά ο α με τον τύπο του κα ενός ρησιμοποιείται διαφορετική συνάρτηση. Η ίστα τ ν συναρτήσε ν αυτών υπάρ ει στο παράρτημα Αʹ. Η σ εδίαση τους πρα ματοποιείται από τη συνάρτηση drawwindows(), η οποία είναι υπεύ υνη ια τη σ εδίαση ό ν τ ν παρα ύρ ν, και τ ν widgets αυτών, που έ ουν δημιουρ η εί, κα ώντας ια κά ε root παρά υρο τη συνάρτηση drawwindow(). Η τε ευταία, ανά ο α με την κατάσταση του παρα ύρου, προ ράει στη σ εδίασή του και στην συνέ εια κα εί τη συνάρτηση drawwidget() ια κα ένα από τα widgets του. Η συνάρτηση αυτή, αφού δια άσει την κατάσταση του widget, κα εί την κατά η η συνάρτηση σ εδίασης, ανά ο α με τον τύπο του αντικειμένου, που περιέ εται στη δομή του. Τέ ος, επιστρέφει στην κα ούσα συνάρτηση (drawwindow()), η οποία κα είται αναδρομικά ια τα παρά υρα-παιδιά και ια τα επόμενα παρά υρα (με το ίδιο παρά υρο-πατέρα - παρά υρααδέρφια) του αρ ικού παρα ύρου. Η σ εδίαση τ ν παρα ύρ ν και τ ν widgets ίνεται κα ώντας τις συναρτήσεις σ εδίασης σ ημάτ ν, κειμένου, εικόν ν και ραφημάτ ν, που αναφέρ ηκαν στην προη ούμενη ενότητα. Από την περι ραφή που προη ή ηκε, ίνεται φανερό ότι η συνάρτηση σ εδίασης παρα ύρου είναι αναδρομική. Σε μια μέση περίπτ ση το ά ος τ ν παρα ύρ ν-παιδιών ξεκινώντας από ένα root-window α είναι αρκετά μικρό ( 3). Επίσης, στα ίδια επίπεδα α κυμαίνεται και το π ή ος τ ν παρα ύρ ν-αδερφών κά ε ά ου παρα ύρου (εκτός τ ν root που δεν εμπ έκονται στην αναδρομή). Για το ό ο αυτό, δε ε ρή ηκε σκόπιμο να εξα ειφ εί η αναδρομή, κα ώς, παρότι εφικτό, α οδη ούσε σε έναν αρκετά δυσνόητο κώδικα. 4.4 Γε ονότα Κά ε ε ονός περι ράφεται από μια δομή που περιέ ει: Τον τύπο του ε ονότος: Πίεση ή απε ευ έρ ση ενός π ήκτρου ή της ο όνης αφής, μετακίνηση του δείκτη κτ. Τις συντετα μένες στις οποίες συνέ ει το ε ονός, όταν πρόκειται ια το δείκτη ή την ο όνη αφής. Τα ε ονότα δημιουρ ούνται μέσ της συνάρτησης createevent(). Όταν δημιουρ η εί ένα ε ονός, εισά εται στην ουρά ε ονότ ν (event queue), η οποία είναι μια δομή τύπου FIFO (First In - First Out). Η προσπέ αση τ ν ε ονότ ν ίνεται μέσ του ρό ου ε ονότ ν. Όσο η ουρά περιέ ει ε ονότα, εξά εται το πρώτο από αυτά και κα είται η συνάρτηση widgetupdate(). Αυτή ενημερώνει ένα widget ανά ο α με το τρέ ον ε ονός, εκτε εί τη ειτουρ ία του - αν υπάρ ει - και ενημερώνει, κατά η α, την κατάσταση τ ν παρα ύρ ν και τ ν widget που μετα ή ηκαν. Στη συνέ εια, κα είται η συνάρτηση drawwindows(), η οποία εκτε εί τη σ εδίαση ό ν τ ν παρα ύρ ν, όπ ς ήδη έ ει περι ραφεί. 40

41 Κεφά αιο 5 Έ ε ος υ οποίησης Μετά την ο οκ ήρ ση της υ οποίησης, πρέπει να ε ε εί κατά πόσον το αποτέ εσμα είναι συμ ατό, όσον αφορά στις προδια ραφές υ ικού περισσότερο, με ένα ενσ ματ μένο σύστημα. Στο κεφά αιο αυτό, α περι ραφεί η αναπτυξιακή π ακέτα που ρησιμοποιή ηκε, κα ώς και το περι ά ον και τα ερ α εία, που οή ησαν στον προ ραμματισμό της. Τέ ος, παρουσιάζονται κάποια συμπεράσματα από την εκτέ εση ενός απ ού κώδικα που κάνει ρήση της ι ιο ήκης. 5.1 Η αναπτυξιακή π ακέτα Atmel SAM3S-EK Τα περισσότερα ενσ ματ μένα συστήματα εμπεριέ ουν επεξερ αστές αρ ιτεκτονικής ARM. Γι αυτό το ό ο, οιπόν, επι έ ηκε μια π ατφόρμα που δια έτει έναν τέτοιο επεξερ αστή. Αυτή είναι η αναπτυξιακή π ακέτα SAM3S-EK της Atmel. Δια έτει μικροε ε κτή SAM3S4C, της σειράς SAM3S της Atmel, ο οποίος ασίζεται στον 32-bit RISC επεξερ αστή ARM Cortex-M3. Τα κύρια αρακτηριστικά του συνοψίζονται στον πίνακα 5.1. Αυτά τα αρακτηριστικά είναι πο ύ υποδεέστερα από ότι έ ουμε συνη ίσει να έπουμε σε διαδεδομένα ενσ ματ μένα συστήματα consumer electronics (π. κινητά, παι νιδομη ανές, tablets, κ π.) α ά οι αυστηρές απαιτήσεις τ ν ιατρικών συσκευών ια αμη ή κατανά ση ενέρ ειας ουσιαστικά είναι απα ορευτικές ια ρήση πιο δυνατών, σε επίπεδο προδια ραφών, συστημάτ ν. Τα επιπ έον αρακτηριστικά του αναπτυξιακού που ρησιμοποιή ηκαν είναι: Θύρα JTAG. TFT LCD ο όνη αφής. Το μεν πρώτο, ια την αποσφα μάτ ση (debugging), όπ ς α αναφερ εί και στη συνέ εια, το δε δεύτερο ια την είσοδο και έξοδο του προ ράμματος. Χαρακτηριστικό Τιμή Μνήμη Flash 256 kb Μνήμη SRAM 48 kb Αρι μός pins 100 Μέ ιστη συ νότητα ειτουρ ίας 64 MHz Επεξερ αστής Cortex-M3 Πίνακας 5.1: Χαρακτηριστικά μικροε ε κτή SAM3S4C. 41

42 Κεφά αιο 5. Έ ε ος υ οποίησης 5.2 Περι ά ον και ερ α εία προ ραμματισμού Ο προ ραμματισμός της π ακέτας πρα ματοποιή ηκε με τη οή εια του περι ά οντος IAR Embedded Workbench. Πρόκειται ια ένα ο οκ ηρ μένο περι ά ον ανάπτυξης (Integrated Development Environment - IDE), το οποίο περιέ ει: Συντάκτη κώδικα (editor). IAR C/C++ compiler (μετα ττιστή), ια την μετατροπή του πη αίου κώδικα, σε ώσσα C ή C++, σε ώσσα μη ανής. Όσον αφορά τη ώσσα C, που ρησιμοποιή ηκε ια την υ οποίηση της ι ιο ήκης, υποστηρίζει τα ακό ου α πρότυπα: Standard C (C99). ANSI C (C89 ή C94, C90). IAR assembler. IAR ilink linker (συνδέτη), ια τη σύνδεση του αντικειμενικού κώδικα (object code) της εφαρμο ής με αυτόν τ ν ι ιο ηκών ια την παρα ή του εκτε έσιμου προ- ράμματος. Επιπ έον, υποστηρίζει αρκετούς πυρήνες ARM (ARM cores): ARMv4, ARMv5, ARMv6, ARMv6M και ARMv7 και συνεπώς τις συσκευές που ασίζονται στο σετ εντο ών αυτών. Χρησιμοποιή ηκε η KickStart έκδοση του προ ράμματος, η οποία περιορίζει το μέ ιστο μέ ε ος του κώδικα σε 32 kb. Εκτός του IAR Embedded Workbench, ρησιμοποιήσαμε και τη συσκευή SAM-ICE, η οποία αποτε εί έναν προσομοι τή JTAG. Τα κυριότερα αρακτηριστικά της είναι τα εξής: Υποστήριξη οποιουδήποτε ARM7/ARM9 πυρήνα, όπ ς επίσης και του Cortex-M3. Συμ ατότητα με το IAR Embedded Workbench. Τροφοδοτείται μέσ USB. Μέ ιστη τα ύτητα JTAG: 8MHz. Η συσκευή SAM-ICE συνδέ ηκε στη ύρα JTAG της π ακέτας και μέσ αυτής έ ινε η φόρτ ση του εκτε έσιμου κώδικα στη μνήμη flash του αναπτυξιακού. Επίσης, ρησιμοποιή ηκε και ια την αποσφα μάτ ση (debugging) του κώδικα, σε συνδυασμό με το ραφικό περι ά ον του IAR Embedded Workbench, μέσ breakpoints και απεικόνισης της μνήμης σε πρα ματικό ρόνο. 5.3 Χρήση τ ν ερ α εί ν Υ οποιή ηκε μια πο ύ απ ή ραφική διεπαφή (3 ο όνες), η οποία ρησιμοποιεί αποκ ειστικά τη ι ιο ήκη που υ οποιή ηκε ια τη δημιουρ ία τ ν ραφικών. Στο σ ήμα 5.1 φαίνονται στι μιότυπα (screenshots) του GUI αυτού. Αρ ικά, δημιουρ ήσαμε ένα νέο project στο IAR Embedded Workbench και ράψαμε την εφαρμο ή (GUI) στον editor. Στη συνέ εια δό ηκαν οι κατά η ες παράμετροι ια τη συσκευή, τη μετα ώττιση και την αποσφα μάτ ση του κώδικα, όπ ς παρουσιάζονται παρακάτ : 42 Επεξερ αστής Core: Cortex-M3

43 5.4. Συμπεράσματα εκτέ εσης του κώδικα Device: Atmel AT91SAM3S4 Επι ο ές μετα ώττισης Processor mode: Thumb Optimization level: Low Debugger: J-Link/J-Trace Ο αντικειμενικός κώδικας της διεπαφής συνδέ ηκε, εκτός από τη ι ιο ήκη ραφικών, και με τις ι ιο ήκες: libboard_sam3s_ek_ewarm_dbg.a και libchip_sam3s4_ewarm_dbg.a, που παρέ ονται από την Atmel και περιέ ουν, μεταξύ ά ν: Οδη ούς της LCD ο όνης αφής: Συ κεκριμένα ρησιμοποιή ηκαν οι συναρτήσεις: αρ ικοποίησης και α μονόμησης (calibration) της ο όνης αφής, κα ώς και ε ραφής και ανά ν σης ενός pixel. Συνάρτηση αρ ικοποίησης τ ν διακοπών (interrupts). Συναρτήσεις σ ετικές με το ρονισμό. 5.4 Συμπεράσματα εκτέ εσης του κώδικα Από την εκτέ εση της εφαρμο ής που υ οποιή ηκε παρατηρή ηκε το εξής πρό ημα, το οποίο ήταν αναμενόμενο με άση τους περιορισμούς του υ ικού που εί αμε στη διά εσή μας: Η σ εδίαση τ ν αντικειμέν ν στην ο όνη ίνεται σταδιακά. Για παράδει μα, ένα push button αποτε είται από τα εξής επίπεδα: Φόντο Περί ραμμα Κείμενο Εικόνα Για κα ένα από αυτά ρειάζεται να κ η εί μια ή και περισσότερες διαφορετικές συναρτήσεις σ εδίασης. Όταν αυτές σ εδιάζουν απ ευ είας στην ο όνη, έ ει σαν αποτέ εσμα να φαίνεται η σ εδίαση του ενός επιπέδου μετά το ά ο και η ο όνη να τρεμοπαίζει (flicker) σε κάποιες περιπτώσεις. Αυτό ακρι ώς το φαινόμενο παρατηρή ηκε και στην εφαρμο ή μας, στις περιπτώσεις που ρειαζόταν επανασ εδίαση ενός ή περισσότερ ν αντικειμέν ν. Το πρό ημα αυτό μπορεί να επι υ εί ρησιμοποιώντας την τε νική της διπ ής ενταμίευσης (double buffering). Σύμφ να με αυτήν σ εδιάζουμε ό η τη σκηνή που έ ουμε να απεικονίσουμε και την απο ηκεύουμε σε ένα κομμάτι της μνήμης (buffer). Στη συνέ εια, αφού ο οκ ηρ εί η σ εδίαση, αυτή μεταφέρεται στην ο όνη. Στον κώδικα που υ οποιή- ηκε ρησιμοποιή ηκε μόνο ένας buffer, δη αδή, ουσιαστικά, σ εδιάζαμε απ ευ είας στη συσκευή εξόδου. Με την τε νική double buffering ρησιμοποιείται ένα επιπ έον κομμάτι της μνήμης ι αυτό το σκοπό. Σ αυτό πρα ματοποιείται ό η η διαδικασία σ εδίασης και όταν ο οκ ηρ εί, ίνεται αντιμετά εση τ ν δύο buffers, ούτ ς ώστε να απεικονιστεί 43

44 Κεφά αιο 5. Έ ε ος υ οποίησης Σ ήμα 5.1: Screenshots του απ ού GUI που υ οποιή ηκε. στην ο όνη η συνο ική σκηνή. Όπ ς ίνεται φανερό, με αυτή την τε νική αποφεύ εται το flickering, που οφεί εται στη σταδιακή σ εδίαση τ ν αντικειμέν ν, όπ ς περι ράφηκε παραπάν. Η ρήση της τε νικής αυτής δεν είναι δυνατή στο σύστημα που ρησιμοποιήσαμε, με άση τα αρακτηριστικά του πίνακα 5.1. Η ανά υση της LCD ο όνης είναι: pixels. Επομέν ς, ια την απο ήκευση ενός επιπ έον buffer ια την απεικόνιση στην ο όνη α έπρεπε να δεσμεύσουμε 3 bytes (24-bits) ια κά ε pixel - στην περίπτ ση που ρησιμοποιούμε RGB24 μορφοποίηση - που ισοδυναμεί με: = 225kB Στο απ ό GUI που υ οποιή ηκε, ρησιμοποιή ηκε ένα πο ύ με ά ο ποσοστό τ ν συναρτήσε ν της ι ιο ήκης. Συ κεκριμένα, όσον αφορά τη σ εδίαση σ ημάτ ν, στο object code δε συνδέ ηκαν οι συναρτήσεις σ εδίασης κύκ ου και εικόνας. Επιπ έον, ρησιμοποιή ηκαν τα widgets: text box, list box, push button, value box, slider, chart widget και legend widget, κα ώς και ό ες οι συναρτήσεις παρα ύρ ν και ε ονότ ν. Επίσης, ρησιμοποιή ηκαν δύο ραμματοσειρές. Το μέ ε ος του κώδικα, όπ ς προέκυψε από το linker του IAR embedded workbench έ ει ς εξής: bytes of readonly code memory

45 5.4. Συμπεράσματα εκτέ εσης του κώδικα bytes of readonly data memory bytes of readwrite data memory Τέ ος, μετα ττίσαμε τον κώδικα ρησιμοποιώντας υψη ό επίπεδο ε τιστοποίησης (high optimization level), ς προς το μέ ε ος του τε ικού εκτε έσιμου. Τα αποτε έσματα ήταν τα εξής: bytes of readonly code memory bytes of readonly data memory bytes of readwrite data memory 45

46 Κεφά αιο 5. Έ ε ος υ οποίησης 46

47 Κεφά αιο 6 Συμπεράσματα και με οντική ερ ασία Στην παρούσα ερ ασία παρουσιάστηκε η διαδικασία ανάπτυξης μιας ι ιο ήκης ραφικών που απευ ύνεται σε ενσ ματ μένα συστήματα, κυρί ς ιατρικές συσκευές, ρίς κάποιο ειτουρ ικό σύστημα. Σ εδιάστηκε με άση τις απαιτήσεις που σ ετίζονται με τη δημιουρ ία ραφικών διεπαφών σε συνδυασμό με αυτές που επι ά ει το υ ικό ια το οποίο προορίζονται. Εδώ α δούμε μερικά συμπεράσματα που προέκυψαν, κα ώς και προτάσεις με οντικής ερ ασίας. 6.1 Συμπεράσματα Η συνο ική διαδικασία ανά υσης τ ν απαιτήσε ν όπ ς και αυτή του σ εδιασμού ακο- ού ησαν μια προσέ ιση από πάν προς τα κάτ. Δη αδή, ξεκινήσαμε από το ανώτερο επίπεδο της ι ιο ήκης - αν εξαιρέσουμε τα ε ονότα - και από τις απαιτήσεις αυτού τίστηκε η συνο ική αρ ιτεκτονική του συστήματος. Πάν σε αυτήν τοπο ετή ηκε και το επίπεδο τ ν ε ονότ ν. Κατά τη διάρκεια της υ οποίησης στοι εία τ ν αν τέρ σταδί ν (ανά υσης απαιτήσε ν και σ εδιασμού) μετα ή ηκαν, εμπ ουτίστηκαν, αφαιρέ- ηκαν ή προστέ ηκαν νέα, μέ ρι να προκύψει το τε ικό αποτέ εσμα. Δη αδή, όπ ς έ ει ήδη αναφερ εί, η διαδικασία ανάπτυξης της ι ιο ήκης ήταν επανα ηπτική. Στα αντίστοι α κεφά αια παρουσιάστηκαν οι απαιτήσεις και η αρ ιτεκτονική όπ ς εί αν διαμορφ εί κατά την ο οκ ήρ ση της υ οποίησης. Η απόδοση της ι ιο ήκης στο ενσ ματ μένο σύστημα στο οποίο ρησιμοποιή ηκε κρίνεται ικανοποιητική. Το μέ ε ος του κώδικα που κατα αμ άνει, δεί νει ότι παρέ ει τη δυνατότητα ανάπτυξης ενός GUI που α επαρκεί ια τον έ ε ο κάποιας ιατρικής συσκευής, ενώ και η δια είριση της μνήμης φαίνεται ότι έ ει τα αναμενόμενα αποτε έσματα. Από την ά η μεριά, υπάρ ουν δύο στοι εία τα οποία περιόρισαν ς ένα α μό την απόδοση: Οι απαιτήσεις φορητότητας, με την έννοια ότι μη ν ρίζοντας τα αρακτηριστικά του συστήματος ια το οποίο προορίζεται η ι ιο ήκη δε μπορούμε να εκμετα ευτούμε, ια παράδει μα, τυ όν τα ύτερους τρόπους ε ραφής στην ο όνη που μπορεί να παρέ ει, οι οποίοι εξαρτώνται από το υ ικό (hardware). Η δια είριση παρα ύρ ν που υ οποιή ηκε είναι αρκετά ενικευμένη. Εφόσον η ι- ιο ήκη απευ ύνεται σε συσκευές με μικρή έξοδο ραφικών, ειτουρ ίες, όπ ς η 47

48 Κεφά αιο 6. Συμπεράσματα και με οντική ερ ασία επικά υψη παρα ύρ ν, ίσ ς να μην έ ουν ό ο ύπαρξης. Αν ε ρήσουμε ότι πρά ματι αυτό ισ ύει, τότε οι εφαρμο ές μπορούν να ίνουν τα ύτερες, κα ώς σε κά ε event α πρα ματοποιείται επανασ εδίαση ι ότερ ν αντικειμέν ν. 6.2 Με οντική ερ ασία Στη ερ ασία αυτή πρα ματοποιή ηκαν τα στάδια της ανά υσης απαιτήσε ν, της σ εδίασης και της υ οποίησης της ι ιο ήκης ραφικών. Όπ ς έ ουμε ήδη αναφέρει, η ι ιο- ήκη αυτή προορίζεται ια safety-critical ενσ ματ μένα συστήματα. Επομέν ς, ίνεται φανερό ότι η διαδικασία ανάπτυξής της δε σταματά εδώ. Σε ένα επόμενο στάδιο, ο κώδικας που υ οποιή ηκε α πρέπει να περάσει από ερ α εία ε έ ου safety-critical ο ισμικού και ενδε ομέν ς να μετα η εί, ώστε να π ηρεί τις προδια ραφές που τί ενται εκ νέου. Ένα πρότυπο που περι αμ άνει οδη ίες συ ραφής κώδικα C είναι το MISRA C (Motor Industry Software Reliability Association C). Στην πρα ματικότητα πρόκειται ια περιορισμούς κατά τη ρήση της ώσσας C, ώστε να εξασφα ίζεται, όσο είναι δυνατόν, η ασφά εια του κώδικα, η φορητότητα του και η προ εψιμότητα κατά την εκτέ εση του. Επιπ έον, όπ ς είναι φυσικό, υπάρ ουν πο ά περι ώρια επέκτασης της ι ιο ήκης με νέα στοι εία και ειτουρ ίες. Μερικές από αυτές α μπορούσαν να είναι: Δημιουρ ία νέ ν widgets. Προσ ήκη συναρτήσε ν σ εδίασης πιο πο ύπ οκ ν σ ημάτ ν, όπ ς ε είψε ν ή καμπυ ών. Χρήση περισσότερο ε τιστοποιημέν ν α ορί μ ν κυρί ς ια clipping, α ά και ά ν ειτουρ ιών. 48

49 Παράρτημα Αʹ Οδη ός ρήσης της ι ιο ήκης Αʹ.1 Εισα ή Η ι ιο ήκη παρέ ει ρουτίνες ια τη δημιουρ ία ραφικών διεπαφών σε ενσ ματ μένα συστήματα, τα οποία δια έτουν συσκευή εξόδου ραφικών. Αποτε είται από τα εξής επίπεδα (layers): Το επίπεδο τ ν οδη ών της συσκευής εξόδου (device drivers layer). Θα πρέπει να παρέ εται από την εφαρμο ή, κα ώς εξαρτάται από τη συσκευή που ρησιμοποιείται. Το επίπεδο τ ν ασικών συναρτήσε ν ραφικών (graphics primitives layer). Αποτε- είται από συναρτήσεις σ εδίασης ασικών αντικειμέν ν στην ο όνη, όπ ς ραμμές, κύκ ους, κείμενο κτ. Το επίπεδο τ ν παρα ύρ ν (windows) και τ ν αντικειμέν ν τους (widgets). Περι- αμ άνει συναρτήσεις δημιουρ ίας παρα ύρ ν και widgets. Το επίπεδο ε ονότ ν (events layer). Παρέ ει συναρτήσει ια τη δημιουρ ία και ειρισμό ε ονότ ν (events). Κα ένα από τα παραπάν επίπεδα ρησιμοποιεί τις ειτουρ ίες του προη ουμένου του. Μια εφαρμο ή (application) μπορεί να ρησιμοποιεί το API οποιουδήποτε από αυτά. Δη- αδή, μπορεί να ρησιμοποιεί τόσο widgets, όσο και ασικές συναρτήσεις σ εδίασης. Η επι ο ή του layer που α ρησιμοποιη εί έ ει να κάνει με τις απαιτήσεις της εφαρμο ής, όπ ς είδαμε και στο κεφά αιο 3. Στο σ ήμα Αʹ.1 φαίνεται ένα τμήμα του σ ήματος 3.1, που δεί νει σ ηματικά το API που α παρουσιαστεί σε αυτό το κεφά αιο. Σ ήμα Αʹ.1: Το API που α παρουσιαστεί στη συνέ εια. 49

50 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης Αʹ.2 Δημιουρ ία εικόν ν Πριν παρουσιαστεί το API της ι ιο ήκης, κρίνεται ρήσιμο να περι ραφεί ο τρόπος δημιουρ ίας εικόν ν και πώς αυτές περι αμ άνονται στον κώδικα της εφαρμο ής. Κά ε εικόνα ια να φορτ εί στην εφαρμο ή που α κάνει ρήση της ι ιο ήκης α πρέπει να μετατραπεί σε C πίνακα (array). Αυτό μπορεί να επιτευ εί ρησιμοποιώντας κάποιο πρό ραμμα που α κάνει τη μετατροπή της μορφοποίησης (format) της εικόνας. Ένα πρό- ραμμα που μπορεί να εκτε έσει τη διαδικασία αυτή είναι το GNU Image Manipulation Program (GIMP). Στη συνέ εια δίνεται ένα παράδει μα. Έστ ότι έ ουμε μια εικόνα σε μορφή JPEG, την image.jpg. Ακο ου ούμε την εξής διαδικασία: 1. Την ανοί ουμε ρησιμοποιώντας το GIMP. 2. Επι έ ουμε απο ήκευση ς C source code. 3. Α άζουμε το όνομα Prefixed name με κάποιο της αρεσκείας μας, π. myimage. 4. Επι έ ουμε Save alpha channel (RGBA/RGB) και ο οκ ηρώνουμε τη διαδικασία της απο ήκευσης. Τώρα έ ουμε στη διά εσή μας ένα αρ είο image.c, το οποίο μπορεί να ίνει include από μια εφαρμο ή C. Τέ ος μπορούμε να δημιουρ ήσουμε μια εικόνα με τη οή εια της ι ιο ήκης, ς εξής: imagetype image = { myimage.width, myimage.height, myimage.bytes_per_pixel, myimage.pixel_data}; 50

51 αʹ.3. Βασικές δομές και συναρτήσεις ραφικών Αʹ.3 Βασικές δομές και συναρτήσεις ραφικών Αʹ.3.1 Δομές δεδομέν ν Παρακάτ περι ράφονται οι κύριες δομές που ορίζονται στη ι ιο ήκη. Παραδεί ματα ια τη ρήση τους δίνονται στην επεξή ηση τ ν συναρτήσε ν που τις ρησιμοποιούν/μετα ά ουν. Αʹ Συνοπτικά colortype rectangletype circletype polygontype fonttype imagetype drawingoptions piecharttype linecharttype barcharttype Αʹ colortype Η δομή αυτή ορίζει έναν τύπο ρώματος με τις RGB (red - green - blue) συνιστώσες του. Ορισμός typedef struct { unsigned char r; unsigned char g; unsigned char b; } colortype; Μέ η της δομής r g b Αʹ Η κόκκινη συνιστώσα του ρώματος. Η πράσινη συνιστώσα του ρώματος. Η μπ ε συνιστώσα του ρώματος. rectangletype Η δομή αυτή ορίζει ένα ορ ο ώνιο. Ορισμός typedef struct { int x0; int y0; 51

52 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης int width; int height; } rectangletype; Μέ η της δομής x0 Η x-συντετα μένη του αρ ικού σημείου σ εδίασης σε pixels. y0 Η y-συντετα μένη του αρ ικού σημείου σ εδίασης σε pixels. width Το π άτος ορ ο νίου σε pixels. height Το ύψος ορ ο νίου σε pixels. Αʹ circletype Η δομή αυτή ορίζει έναν κύκ ο. Ορισμός typedef struct { int centre_x; int centre_y; int radius; } circletype; Μέ η της δομής centre_x Η x-συντετα μένη του κέντρου του κύκ ου σε pixels. centre_y Η y-συντετα μένη του κέντρου του κύκ ου σε pixels. radius Η ακτίνα του κύκ ου σε pixels. Αʹ polygontype Η δομή αυτή ορίζει ένα πο ύ νο. Στο παράδει μα ρήσης της συνάρτησης drawpolygon, δίνεται και ένας τρόπος αρ- ικοποίησης της δομής. Ορισμός typedef struct { unsigned int sides; struct _node { int x; int y; } * node; } polygontype; Μέ η της δομής sides Ο αρι μός τ ν π ευρών ( νιών) του πο υ ώνου. node.x Η x-συντετα μένη του κά ε σημείου σε pixels. node.y Η y-συντετα μένη του κά ε σημείου σε pixels. 52

53 αʹ.3. Βασικές δομές και συναρτήσεις ραφικών Αʹ Αʹ fonttype Η δομή αυτή ορίζει μία ραμματοσειρά στα ερού π άτους (fixed pitch). Ορισμός typedef struct { int width; int height; int first; int last; const char **bitmap; } fonttype; Μέ η της δομής width height first last bitmap Το π άτος τ ν αρακτήρ ν. Το ύψος τ ν αρακτήρ ν. Ο κ δικός του πρώτου αρακτήρα. Ο κ δικός του τε ευταίου αρακτήρα. Ο δείκτης στα δεδομένα της ραμματοσειράς. imagetype Η δομή αυτή ορίζει μία εικόνα. Ορισμός typedef struct { const int width; const int height; const unsigned int bytes_per_pixel; const unsigned char * image_data; } imagetype; Μέ η της δομής width height bytes_per_pixel image_data Το π άτος της εικόνας σε pixels. Το ύψος της εικόνας σε pixels Ο αρι μός τ ν bytes ανά pixel της εικόνας. Ο δείκτης στα δεδομένα της εικόνας. Αʹ drawingoptions Η δομή αυτή περιέ ει τις τιμές που ρησιμοποιούνται ια τη σ εδίαση τ ν αντικειμέν ν. Ορισμός typedef struct { 53

54 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης unsigned int foreground_color; unsigned int background_color; unsigned int gradient_color; unsigned int font_color; unsigned int line_width; unsigned char style; const fonttype * font; } drawingoptions; Μέ η της δομής foreground_color background_color gradient_color font_color line_width style font Το ρώμα σ εδίασης. Το ρώμα σ εδίασης φόντου. Επιπ έον, το ρώμα αυτό ρησιμοποιείται ς τε ικό ια το έμισμα τ ν αντικειμέν ν με δια ά μιση ρώματος (gradient fill). Το αρ ικό ρώμα ια το έμισμα τ ν αντικειμέν ν με δια ά μιση ρώματος (gradient fill). Το ρώμα ραμματοσειράς. Το πά ος ραμμής τ ν αντικειμέν ν. Κα ορίζει τις παραμέτρους σ εδίασης τ ν αντικειμέν ν: Σ εδίαση περι ράμματος Γέμισμα ( ρώμα, δια ά μιση ρώματος) Σκίαση Ο δείκτης στη δομή που ορίζει τη ραμματοσειρά ια την εμφάνιση του κειμένου. Αʹ piecharttype Η δομή αυτή ορίζει ένα ράφημα πίτας (pie chart). Το μέ ε ος κά ε τμήματός του είναι ανά ο ο της τιμής value και το ρώμα σ εδίασής του ορίζεται από τον πίνακα color. Ένα παράδει μα ρήσης της δομής φαίνεται στην περι ραφή της συνάρτησης drawpiechart. Ορισμός typedef struct { int v_num; double * value; unsigned int * color; circletype * border; } piecharttype; Μέ η της δομής 54

55 αʹ.3. Βασικές δομές και συναρτήσεις ραφικών v_num value color border Ο αρι μός τ ν τιμών. Ο δείκτης στην αρ ή της ίστας τ ν τιμών. Ο δείκτης στην αρ ή της ίστας τ ν ρ μάτ ν που αντιστοι- ούν στις τιμές. Η έση και το μέ ε ος του ραφήματος. Αʹ Αʹ linecharttype Η δομή αυτή ορίζει ένα ράφημα ραμμής (line chart). Ορισμός typedef struct { int v_num; double * y; unsigned int color; rectangletype * border; } linecharttype; Μέ η της δομής v_num y color border Ο αρι μός τ ν τιμών. Ο δείκτης στην αρ ή της ίστας τ ν τιμών. Το ρώμα σ εδίασης του ραφήματος. Η έση και το μέ ε ος του ραφήματος. barcharttype Η δομή αυτή ορίζει ένα ράφημα στη ών (bar chart). Οι τιμές min και max, ορίζουν 3 πεδία τιμών: min (min, max) max Ανά ο α σε ποιο από αυτά ανήκει η τιμή y α ρησιμοποιη εί το αντίστοι ο ρώμα σ εδίασης από τη ίστα color. Ορισμός typedef struct { int v_num; unsigned int * color; double min; double max; double * y; rectangletype * border; } barcharttype; Μέ η της δομής 55

56 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης v_num Ο αρι μός τ ν τιμών. color Πίνακας 3 ρ μάτ ν που ορίζουν το ρώμα σ εδίασης ια κά ε πεδίο τιμών. min Η ε ά ιστη κρίσιμη τιμή ια κά ε τιμή y. max Η μέ ιστη κρίσιμη τιμή ια κά ε τιμή y. y Ο δείκτης στην αρ ή της ίστας τ ν τιμών. border Η έση και το μέ ε ος του ραφήματος. Αʹ.3.2 Αʹ Defines Συνοπτικά Ορισμός Συναρτήσεις SETFGCOLOR Ορίζει το τρέ ον foreground_color. SETBGCOLOR Ορίζει το τρέ ον background_color. SETGRADCOLOR Ορίζει το τρέ ον gradient_color. SETFONTCOLOR Ορίζει το τρέ ον font_color. GETFGCOLOR Επιστρέφει το τρέ ον foreground_color. GETBGCOLOR Επιστρέφει το τρέ ον background_color. GETGRADCOLOR Επιστρέφει το τρέ ον gradient_color. GETFONTCOLOR Επιστρέφει το τρέ ον font_color. Αντικείμενα - Σ ήματα OBJECT Bit μάσκα ια τον έ ε ο του τύπου τ ν σ ημάτ ν. RECTANGLE Τιμή που ορίζει ότι η δομή είναι τύπου rectangletype. CIRCLE Τιμή που ορίζει ότι η δομή είναι τύπου circletype. POLYGON Τιμή που ορίζει ότι η δομή είναι τύπου polygontype. σ εδίασης NO_BORDER Bits που ορίζουν ότι δε α σ εδιαστεί το περί ραμμα του αντικειμένου. FG_BORDER Bits που ορίζουν ότι α σ εδιαστεί το περί ραμμα του αντικειμένου με τη ρήση του foreground_color. BORDER Bit μάσκα ια τον έ ε ο τ ν NO_BORDER και FG_BORDER. NO_FILL Bits που ορίζουν ότι δε α σ εδιαστεί το εσ τερικό του αντικειμένου. FG_FILL Bits που ορίζουν ότι α σ εδιαστεί το εσ τερικό του αντικειμένου με τη ρήση του foreground_color. BG_FILL Bits που ορίζουν ότι α σ εδιαστεί το εσ τερικό του αντικειμένου με τη ρήση του background_color. GRAD_FILL_H Τιμή που ορίζει ότι α σ εδιαστεί το εσ τερικό του αντικειμένου με τη ρήση δια ά μισης ρώματος κατά την οριζόντια διεύ υνση. GRAD_FILL_V Τιμή που ορίζει ότι α σ εδιαστεί το εσ τερικό του αντικειμένου με τη ρήση δια ά μισης ρώματος κατά την κά ετη διεύ υνση. GRAD_FILL Ισοδύναμο με το GRAD_FILL_V. 56

57 αʹ.3. Βασικές δομές και συναρτήσεις ραφικών FILL SHADE NO_SHADE SHADE_MSK PIE_CHART LINE_CHART BAR_CHART Bit μάσκα ια τον έ ε ο τ ν FG_FILL, BG_FILL, GRAD_FILL_H και GRAD_FILL_V. Bits που ορίζουν ότι α σ εδιαστεί η σκιά του αντικειμένου. Bits που ορίζουν ότι δε α σ εδιαστεί η σκιά του αντικειμένου. Bit μάσκα ια τον έ ε ο τ ν SHADE και NO_SHADE. Τιμή που ορίζει ότι η δομή του ραφήματος είναι τύπου piecharttype. Τιμή που ορίζει ότι η δομή του ραφήματος είναι τύπου linecharttype. Τιμή που ορίζει ότι η δομή του ραφήματος είναι τύπου barcharttype. Αʹ Αʹ Συναρτήσεις SETFGCOLOR Ορίζει το τρέ ον foreground_color. Ορισμός #define SETFGCOLOR(_color) _color Το ρώμα που α οριστεί ς τρέ ον. Θα πρέπει να είναι ορισμένο ς colortype. Αʹ SETBGCOLOR Ορίζει το τρέ ον background_color. Ορισμός #define SETBGCOLOR(_color) _color Το ρώμα που α οριστεί ς τρέ ον. Θα πρέπει να είναι ορισμένο ς colortype. Αʹ SETGRADCOLOR Ορίζει το τρέ ον gradient_color. Ορισμός #define SETGRADCOLOR(_color) 57

58 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης _color Αʹ Το ρώμα που α οριστεί ς τρέ ον. Θα πρέπει να είναι ορισμένο ς colortype. SETFONTCOLOR Ορίζει το τρέ ον font_color. Ορισμός #define SETFONTCOLOR(_color) _color Αʹ Το ρώμα που α οριστεί ς τρέ ον. Θα πρέπει να είναι ορισμένο ς colortype. GETFGCOLOR Επιστρέφει το τρέ ον foreground_color. Ορισμός Αʹ #define GETFGCOLOR Τιμή που επιστρέφει Επιστρέφει το τρέ ον foreground_color σε μορφή colortype GETBGCOLOR Επιστρέφει το τρέ ον background_color. Ορισμός Αʹ #define GETBGCOLOR Τιμή που επιστρέφει Επιστρέφει το τρέ ον background_color σε μορφή colortype GETGRADCOLOR Επιστρέφει το τρέ ον gradient_color. Ορισμός #define GETGRADCOLOR Τιμή που επιστρέφει Επιστρέφει το τρέ ον gradient_color σε μορφή colortype

59 αʹ.3. Βασικές δομές και συναρτήσεις ραφικών Αʹ GETFONTCOLOR Αʹ Επιστρέφει το τρέ ον font_color. Ορισμός #define GETFONTCOLOR Τιμή που επιστρέφει Επιστρέφει το τρέ ον font_color σε μορφή colortype σ εδίασης Οι παράμετροι σ εδίασης που παρουσιάστηκαν παραπάν, δίνονται ς τιμές στο style της δομής drawingoptions. Η προκα ορισμένη τιμή του είναι: FG_BORDER NO_FILL NO_SHADE. Αν κατά την ανά εση τιμής στο style δεν προσδιοριστεί: τύπος περι ράμματος, τότε αμ άνεται σαν NO_BORDER. τύπος εμίσματος, τότε αμ άνεται σαν NO_FILL. σκίαση, τότε δε σ εδιάζεται η σκιά του αντικειμένου. Όσον αφορά τη σκιά, εκτείνεται πάντα 5 pixels δεξιά και 5 προς τα κάτ από το αντικείμενο. Παράδει μα ρήσης τ ν παραμέτρ ν σ εδίασης φαίνεται στην περι ραφή της συνάρτηση drawrectangle. Αʹ.3.3 Αʹ Συναρτήσεις Συνοπτικά Συνάρτηση setforegroundcolor setbackgroundcolor setgradientcolor setfontcolor setfont setstyle addstyle removestyle setlinewidth getforegroundcolor getbackgroundcolor getgradientcolor getfontcolor Επι ο ές σ εδίασης Ορίζει το τρέ ον foreground_color. Ορίζει το τρέ ον background_color. Ορίζει το τρέ ον gradient_color. Ορίζει το τρέ ον font_color. Ορίζει την τρέ ουσα ραμματοσειρά. Ορίζει τις τρέ ουσες παραμέτρους σ εδίασης. Προσ έτει τις δοσμένες παραμέτρους σ εδίασης στις τρέ ουσες. Αφαιρεί τις δοσμένες παραμέτρους σ εδίασης από τις τρέ ουσες. Ορίζει το τρέ ον πά ος ραμμής. Επιστρέφει το τρέ ον foreground_color. Επιστρέφει το τρέ ον background_color. Επιστρέφει το τρέ ον gradient_color. Επιστρέφει το τρέ ον font_color. 59

60 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης setdrawingoptions Ορίζει τις τρέ ουσες επι ο ές σ εδίασης. savedrawingoptions Απο ηκεύει τις τρέ ουσες επι ο ές σ εδίασης. restoredefaultdrawingoptions Επαναφέρει τις προκα ορισμένες τιμές τ ν επι ο ών σ εδίασης. Αποκοπή (Clipping) setclipregion Ορίζει το τρέ ον παρά υρο αποκοπής. saveclipregion Απο ηκεύει το τρέ ον παρά υρο αποκοπής. restoredefaultclipregion Επαναφέρει το προκα ορισμένο παρά υρο αποκοπής. Συναρτήσεις σ εδίασης drawline Σ εδίαση ευ ύ ραμμου τμήματος. drawlineh Σ εδίαση οριζόντιου ευ ύ ραμμου τμήματος. drawlinev Σ εδίαση κά ετου ευ ύ ραμμου τμήματος. drawrectangle Σ εδίαση ορ ο νίου. drawcircle Σ εδίαση ορ ο νίου. drawpolygon Σ εδίαση πο υ ώνου. drawimage Σ εδίαση εικόνας. drawstring Σ εδίαση συμ ο οσειράς. clearscreen Κα αρισμός ο όνης. drawpiechart Σ εδίασης ενός ραφήματος πίτας (pie chart). drawlinechart Σ εδίασης ενός ραφήματος ραμμής (line chart). drawbarchart Σ εδίασης ενός ραφήματος στη ών (bar chart). Ά ες συναρτήσεις insiderectangle Ε έ ει αν ένα σημείο (pixel) ρίσκεται εντός ενός ορ ο νίου. insidecircle Ε έ ει αν ένα σημείο (pixel) ρίσκεται εντός ενός κύκ ου. insidepolygon Ε έ ει αν ένα σημείο (pixel) ρίσκεται εντός ενός πο υ ώνου. moverectangle Μετακίνηση ενός ορ ο νίου. movecircle Μετακίνηση ενός κύκ ου. movepolygon Μετακίνηση ενός πο υ ώνου. intersect Επιστρέφει την τομή δύο ορ ο νί ν. colortorgb Ανα ύει ένα 24-bit ρώμα στις RGB συνιστώσες του. RGBToColor Συν έτει από τις RGB συνιστώσες ενός ρώματος ένα 24-bit ρώμα. Αʹ Αʹ Επι ο ές σ εδίασης setforegroundcolor 60

61 αʹ.3. Βασικές δομές και συναρτήσεις ραφικών Ορίζει το τρέ ον foreground_color. void setforegroundcolor(unsigned int color); color Το ρώμα που α οριστεί ς τρέ ον σε μορφή 24-bit. Αʹ setbackgroundcolor Ορίζει το τρέ ον background_color. void setbackgroundcolor(unsigned int color); color Το ρώμα που α οριστεί ς τρέ ον σε μορφή 24-bit. Αʹ setgradientcolor Ορίζει το τρέ ον gradient_color. void setgradientcolor(unsigned int color); color Το ρώμα που α οριστεί ς τρέ ον σε μορφή 24-bit. Αʹ setfontcolor Ορίζει το τρέ ον font_color. void setfontcolor(unsigned int color); color Το ρώμα που α οριστεί ς τρέ ον σε μορφή 24-bit. Αʹ setfont Ορίζει την τρέ ουσα ραμματοσειρά. 61

62 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης void setfont(const fonttype * font); font Ο δείκτης στη δομή fonttype, που ορίζει τη ραμματοσειρά που α οριστεί ς τρέ ουσα. Αʹ setstyle Ορίζει τις τρέ ουσες παραμέτρους σ εδίασης. Μπορούν να δο ούν περισσότερες από μια παράμετροι ρισμένες με. void setstyle(unsigned char style); style Παράδει μα Οι παράμετροι που α οριστούν ς τρέ ουσες. Για να ορίσουμε ότι τα αντικείμενα α σ εδιάζονται ρίς περί ραμμα και με ρώμα εμίσματος το ρώμα σ εδίασης φόντου: setstyle(no_border BG_FILL); Αʹ addstyle Προσ έτει τις δοσμένες παραμέτρους σ εδίασης στις τρέ ουσες. Μπορούν να δο ούν περισσότερες από μια παράμετροι ρισμένες με. Προφανώς, αν προστε εί μια παράμετρος που είναι αμοι αί ς αποκ ειόμενη με μια ήδη υπάρ ουσα τότε η τε ευταία αντικα ίσταται. void addstyle(unsigned char style); style Παράδει μα Οι παράμετροι που α προστε ούν στις τρέ ουσες. Έστ ότι έ ουμε ορίσει τις παραμέτρους, όπ ς στο προη ούμενο παράδει μα, της συνάρτησης setstyle. Για να αντικαταστήσουμε την επι ο ή BG_FILL με την GRAD_FILL κάνουμε το εξής: addstyle(grad_fill); 62

63 αʹ.3. Βασικές δομές και συναρτήσεις ραφικών Αʹ removestyle Αφαιρεί τις δοσμένες παραμέτρους σ εδίασης από τις τρέ ουσες. Μπορούν να δο ούν περισσότερες από μια παράμετροι ρισμένες με. Όταν αφαιρε εί μια παράμετρος, τότε την αντικα ιστά η αντίστοι η προκα ορισμένη. Αν δο εί ς όρισμα μια παράμετρος η οποία δεν έ ει οριστεί στο style, τότε δεν πρα ματοποιείται καμία α α ή ς προς αυτήν. void removestyle(unsigned char style); style Παράδει μα Οι παράμετροι που α αφαιρε ούν από τις τρέ ουσες. Σαν συνέ εια του παραδεί ματος της συνάρτησης addstyle, επαναφέρουμε το έμισμα στην τιμή NO_FILL: removestyle(grad_fill); Αʹ setlinewidth Ορίζει το τρέ ον πά ος ραμμής σε pixels. void setlinewidth(unsigned int line_width); line_width Η τιμή του πά ους ραμμής. Αʹ getforegroundcolor Επιστρέφει το τρέ ον foreground_color. unsigned int getforegroundcolor(); Τιμή που επιστρέφει Επιστρέφει το τρέ ον foreground_color σε μορφή 24-bit. Αʹ getbackgroundcolor Επιστρέφει το τρέ ον background_color. 63

64 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης unsigned int getbackgroundcolor(); Τιμή που επιστρέφει Επιστρέφει το τρέ ον background_color σε μορφή 24-bit. Αʹ getgradientcolor Επιστρέφει το τρέ ον gradient_color. unsigned int getgradientcolor(); Τιμή που επιστρέφει Επιστρέφει το τρέ ον gradient_color σε μορφή 24-bit. Αʹ getfontcolor Επιστρέφει το τρέ ον font_color. unsigned int getfontcolor(); Τιμή που επιστρέφει Επιστρέφει το τρέ ον font_color σε μορφή 24-bit. Αʹ setdrawingoptions Ορίζει τις τρέ ουσες επι ο ές σ εδίασης. void setdrawingoptions(drawingoptions drw_opt); drw_opt Παράδει μα Οι επι ο ές σ εδίασης που α οριστούν ς τρέ ουσες σε μορφή drawingoptions. Β έπε επόμενη συνάρτηση savedrawingoptions. 64

65 αʹ.3. Βασικές δομές και συναρτήσεις ραφικών Αʹ savedrawingoptions Απο ηκεύει τις τρέ ουσες επι ο ές σ εδίασης. Ιδιαίτερα ρήσιμη σε περίπτ ση που ρειάζεται να τις επαναφέρουμε αρ ότερα (μέσ της συνάρτησης setdrawingoptions). void savedrawingoptions(drawingoptions * saved_drw_opt); saved_drw_opt Δείκτης σε δομή drawingoptions, όπου α απο ηκευτούν οι τρέ ουσες τιμές. Παράδει μα Α άζουμε το ρώμα σ εδίασης και φόντου, κα ώς και την επι ο ή εμίσματος ια ένα τμήμα της σ εδίασης και στη συνέ εια επαναφέρουμε την προη ούμενη τιμή τους: drawingoptions prev_dr; savedrawingoptions(&prev_dr); setgradientcolor(green); setbackgroundcolor(white); setstyle(no_border GRAD_FILL VERTICAL); /* call some drawing functions here */ setdrawingoptions(prev_dr); Αʹ restoredefaultdrawingoptions Επαναφέρει τις προκα ορισμένες τιμές τ ν επι ο ών σ εδίασης, οι οποίες είναι: foreground_color = WHITE background_color = BLACK gradient_color = BLACK font_color = WHITE line_width = 1 pixel style = FG_BORDER NO_FILL NO_SHADE font = &font10 void restoredefaultdrawingoptions(); 65

66 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης Αʹ Αποκοπή (Clipping) Αʹ setclipregion Ορίζει το τρέ ον ορ ο ώνιο παρά υρο αποκοπής. void setclipregion(rectangletype clip_region); clip_region Το παρά υρο αποκοπής που α οριστεί ς τρέ ον σε μορφή rectangletype. Αʹ Παράδει μα Β έπε επόμενη συνάρτηση saveclipregion. saveclipregion Απο ηκεύει το τρέ ον παρά υρο αποκοπής. Ιδιαίτερα ρήσιμη σε περίπτ ση που ρειάζεται να απο ηκεύσουμε την τρέ ουσα τιμή, ώστε να την επαναφέρουμε αρ- ότερα (μέσ της συνάρτησης setclipregion). void saveclipregion(rectangletype * saved_clip_region); saved_clip_region Δείκτης σε δομή rectangletype, όπου α απο ηκευτεί η τρέ- ουσα τιμή του παρα ύρου αποκοπής. Παράδει μα Ορίζουμε ένα παρά υρο αποκοπής ια ένα τμήμα της σ εδίασης και στη συνέ εια επαναφέρουμε την προη ούμενη τιμή του: rectangletype prev_cr; saveclipregion(&prev_cr); rectangletype new_cr = {10, 10, 50, 100}; setclipregion(new_cr); /* call some drawing functions here */ setclipregion(prev_cr); Αʹ restoredefaultclipregion Επαναφέρει το προκα ορισμένο παρά υρο αποκοπής, το οποίο είναι το όριο της ο όνης.

67 αʹ.3. Βασικές δομές και συναρτήσεις ραφικών Αʹ Αʹ void restoredefaultclipregion(); Συναρτήσεις σ εδίασης drawline Σ εδίαση ευ ύ ραμμου τμήματος με αρ ικό σημείο το (x0, y0) και τε ικό το (x1, y1), με ρήση του α ορί μου του Bresenham. void drawline(int x0, int y0, int x1, int y1); x0 y0 x1 y1 Αʹ Η x-συντετα μένη του αρ ικού σημείου σε pixels. Η y-συντετα μένη του αρ ικού σημείου σε pixels. Η x-συντετα μένη του τε ικού σημείου σε pixels. Η y-συντετα μένη του τε ικού σημείου σε pixels. drawlineh Σ εδίαση οριζόντιου ευ ύ ραμμου τμήματος με αρ ικό σημείο το (x0, y0) και μήκος length. void drawlineh(int x0, int y0, int length); x0 y0 length Αʹ Η x-συντετα μένη του αρ ικού σημείου σε pixels. Η y-συντετα μένη του αρ ικού σημείου σε pixels. Το μήκος του ευ ύ ραμμου τμήματος σε pixels (μπορεί να πάρει και αρνητικές τιμές). drawlinev Σ εδίαση κά ετου ευ ύ ραμμου τμήματος με αρ ικό σημείο το (x0, y0) και μήκος length. void drawlinev(int x0, int y0, int length); x0 y0 length Η x-συντετα μένη του αρ ικού σημείου σε pixels. Η y-συντετα μένη του αρ ικού σημείου σε pixels. Το μήκος του ευ ύ ραμμου τμήματος σε pixels (μπορεί να πάρει και αρνητικές τιμές). 67

68 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης Αʹ drawrectangle Σ εδίαση ορ ο νίου που περι ράφεται από μια δομή rectangletype. void drawrectangle(const rectangletype * rectangle); rectangle Ο δείκτης στη δομή rectangletype που ορίζει το ορ ο ώνιο προς σ εδίαση. Παράδει μα Στο παράδει μα αυτό ρησιμοποιείται και η συνάρτηση setstyle (η διεύ υνση του gradient fill παρα είπεται σκόπιμα). rectangletype rec = {10,10,150,100}; setforegroundcolor(black); setbackgroundcolor(silver); setgradientcolor(green); setstyle(fg_border GRAD_FILL SHADE); drawrectangle(&rec); Αποτέ εσμα παραδεί ματος Αʹ drawcircle Σ εδίαση κύκ ου που περι ράφεται από μια δομή circletype. void drawcircle(const circletype * circle); circle Ο δείκτης στη δομή circletype που ορίζει τον κύκ ο προς σ εδίαση. 68

69 αʹ.3. Βασικές δομές και συναρτήσεις ραφικών Αʹ drawpolygon Σ εδίαση πο υ ώνου που περι ράφεται από μια δομή polygontype. void drawpolygon(const polygontype * polygon); polygon Παράδει μα Ο δείκτης στη δομή polygontype που ορίζει το πο ύ νο προς σ εδίαση. struct _node node[] = {{125,50}, {50,100}, {70,160}, {180,160}, {200,100}}; polygontype pol = {5, node}; setlinewidth(3); drawpolygon(&pol); Αποτέ εσμα παραδεί ματος Αʹ drawimage Σ εδίαση εικόνας που περι ράφεται από μια δομή imagetype. void drawimage(const imagetype * image, int x, int y); 69

70 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης image x y Ο δείκτης στη δομή imagetype που ορίζει την εικόνας προς σ εδίαση. Η x-συντετα μένη του σημείου που α σ εδιαστεί η πάν αριστερή νίας της εικόνας. Η y-συντετα μένη του σημείου που α σ εδιαστεί η πάν αριστερή νίας της εικόνας. Αʹ drawstring Σ εδίαση συμ ο οσειράς. void drawstring(const char *s, int x, int y); s x y Η συμ ο οσειρά προς σ εδίαση. Η x-συντετα μένη του σημείου από το οποίο α ξεκινήσει η σ εδίαση. Η y-συντετα μένη του σημείου από το οποίο α ξεκινήσει η σ εδίαση. Αʹ clearscreen Κα αρισμός ο όνης με ένα συ κεκριμένο ρώμα. void clearscreen(unsigned int color); color Το ρώμα κα αρισμού της ο όνης σε μορφή 24-bit. Αʹ drawpiechart Σ εδίαση ενός pie chart, που περι ράφεται από μια δομή piecharttype. void drawpiechart(const piecharttype * piechart); piechart Παράδει μα Ο δείκτης στη δομή piecharttype που ορίζει το ράφημα προς σ εδίαση. 70

71 αʹ.3. Βασικές δομές και συναρτήσεις ραφικών circletype cir = {125,160,70}; double val[] = {100, 35, 55, 60, 100, 20}; unsigned int col[] = {BLUE, GREEN, RED, CYAN, MAGENTA, YELLOW}; piecharttype pc = {6, val, col, &cir}; drawpiechart(&pc); Αποτέ εσμα παραδεί ματος Αʹ drawlinechart Σ εδίαση ενός line chart, που περι ράφεται από μια δομή linecharttype. void drawlinechart(const linecharttype * linechart); linechart Ο δείκτης στη δομή linecharttype που ορίζει το ράφημα προς σ εδίαση. Αʹ drawbarchart Αʹ Αʹ Σ εδίαση ενός bar chart, που περι ράφεται από μια δομή barcharttype. void drawbarchart(const barcharttype * barchart); barchart Ο δείκτης στη δομή barcharttype που ορίζει το ράφημα προς σ εδίαση. Ά ες συναρτήσεις insiderectangle 71

72 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης Ε έ ει αν το σημείο (pixel) (x, y) ρίσκεται εντός του ορ ο νίου rectangle. unsigned char insiderectangle(const rectangletype * rectangle, int x, int y); rectangle x y Ο δείκτης στη δομή rectangletype που ορίζει το ορ ο ώνιο. Η x-συντετα μένη του σημείου σε pixels. Η y-συντετα μένη του σημείου σε pixels. Αʹ Τιμή που επιστρέφει Επιστρέφει 1 αν το σημείο ρίσκεται εντός του ορ ο νίου, α ί ς επιστρέφει 0. insidecircle Ε έ ει αν το σημείο (pixel) (x, y) ρίσκεται εντός του κύκ ου circle. unsigned char insidecircle(const circletype * circle, int x, int y); circle x y Αʹ Ο δείκτης στη δομή circletype που ορίζει τον κύκ ο. Η x-συντετα μένη του σημείου σε pixels. Η y-συντετα μένη του σημείου σε pixels. Τιμή που επιστρέφει Επιστρέφει 1 αν το σημείο ρίσκεται εντός του κύκ ου, α ί ς επιστρέφει 0. insidepolygon Ε έ ει αν το σημείο (pixel) (x, y) ρίσκεται εντός του πο υ ώνου polygon. unsigned char insidepolygon(const polygontype * polygon, int x, int y); polygon x y Τιμή που επιστρέφει Ο δείκτης στη δομή polygontype που ορίζει το πο ύ νο. Η x-συντετα μένη του σημείου σε pixels. Η y-συντετα μένη του σημείου σε pixels. Επιστρέφει 1 αν το σημείο ρίσκεται εντός του πο υ ώνου, α ί ς επιστρέφει 0.

73 αʹ.3. Βασικές δομές και συναρτήσεις ραφικών Αʹ moverectangle Μετακίνηση του ορ ο νίου rectangle κατά x pixels οριζόντια και y pixels κά- ετα. void moverectangle(rectangletype * rectangle, int x, int y); rectangle x y Ο δείκτης στη δομή rectangletype που ορίζει το ορ ο ώνιο. Ο αρι μός τ ν pixels που α μετακινη εί κατά τον οριζόντιο άξονα. Ο αρι μός τ ν pixels που α μετακινη εί κατά τον κά ετο άξονα. Αʹ movecircle Μετακίνηση του κύκ ου circle κατά x pixels οριζόντια και y pixels κά ετα. void movecircle(circletype * circle, int x, int y); circle x y Ο δείκτης στη δομή circletype που ορίζει τον κύκ ο. Ο αρι μός τ ν pixels που α μετακινη εί κατά τον οριζόντιο άξονα. Ο αρι μός τ ν pixels που α μετακινη εί κατά τον κά ετο άξονα. Αʹ movepolygon Μετακίνηση του πο υ ώνου polygon κατά x pixels οριζόντια και y pixels κά ετα. void movepolygon(polygontype * polygon, int x, int y); polygon x y Ο δείκτης στη δομή polygontype που ορίζει το πο ύ νο. Ο αρι μός τ ν pixels που α μετακινη εί κατά τον οριζόντιο άξονα. Ο αρι μός τ ν pixels που α μετακινη εί κατά τον κά ετο άξονα. 73

74 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης Αʹ intersect Επιστρέφει την τομή τ ν ορ ο νί ν rec1 και rec2. rectangletype intersect(const rectangletype * rec1, const rectangletype * rec2); rec1 rec2 Ο δείκτης στη δομή rectangletype που ορίζει το πρώτο ορ- ο ώνιο. Ο δείκτης στη δομή rectangletype που ορίζει το δεύτερο ορ- ο ώνιο. Τιμή που επιστρέφει Επιστρέφει μια δομή rectangletype, που ορίζει την ορ ο ώνια περιο ή που αποτε εί την τομή τ ν δύο ορ ο νί ν. Αν τα ορ ο ώνια δεν επικα ύπτονται, τότε επιστρέφεται το ορ ο ώνιο {0,0,0,0}. Αʹ colortorgb Ανα ύει ένα 24-bit ρώμα στις RGB συνιστώσες του. colortype colortorgb(unsigned int color); color To 24-bit ρώμα. Τιμή που επιστρέφει Επιστρέφει μια δομή colortype που περιέ ει τις RGB συνιστώσες του ρώματος color. Αʹ RGBToColor Συν έτει από τις RGB συνιστώσες ενός ρώματος ένα 24-bit ρώμα. unsigned int RGBToColor(colorType color); color Το ρώμα σε μορφή colortype. Τιμή που επιστρέφει Επιστρέφει ένα 24-bit ρώμα. 74

75 αʹ.4. Παρά υρα Αʹ.4 Αʹ.4.1 Αʹ Παρά υρα Δομές δεδομέν ν Συνοπτικά windowtype Αʹ windowtype Η δομή αυτή ορίζει ένα παρά υρο. Ορισμός typedef struct _window { unsigned char border_style; unsigned int foreground_color; unsigned int background_color; unsigned int gradient_color; unsigned short state; rectangletype * border; widgettype * widgets; struct _window * parent; struct _window * next; struct _window * prev; struct _window * child; } windowtype; Μέ η της δομής border_style Οι παράμετροι σ εδίασης ια τη σ εδίαση του παρα ύρου. foreground_color Το foreground_color ια τη σ εδίαση του παρα ύρου σε μορφή 24-bit. background_color Το background_color ια τη σ εδίαση του παρα ύρου σε μορφή 24-bit. gradient_color Το gradient_color ια τη σ εδίαση του παρα ύρου σε μορφή 24-bit. state Η κατάσταση και τα αρακτηριστικά του παρα ύρου. border Ο δείκτης στη δομή rectangletype που ορίζει το όριο του παρα ύρου. widgets Ο δείκτης στη δομή widgettype που δεί νει στο πρώτο widget του παρα ύρου. parent Ο δείκτης στο παρά υρο-πατέρα. next Ο δείκτης στο επόμενο παρά υρο (του ίδιου parent). prev Ο δείκτης στο προη ούμενο παρά υρο (του ίδιου parent). child Ο δείκτης στο πρώτο παρά υρο-παιδί. 75

76 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης Αʹ.4.2 Defines Ορισμός VIS_MSK HIDDEN VISIBLE ROOT MODIFY FULLY_MODIFIED CONTENT_MODIFIED UPDATED Κατάσταση Παρα ύρου Bit μάσκα ια τον έ ε ο της ορατότητας του παρα ύρου. Τιμή που ορίζει ότι το παρά υρο είναι κρυμμένο (δε σ εδιάζεται). Τιμή που ορίζει ότι το παρά υρο είναι ορατό. Bit που ορίζει ότι το παρά υρο ανήκει στα root-windows (με τον όρο root-window εννοούμε ένα παρά υρο που δεν έ ει πατέρα). Bit μάσκα ια τον έ ε ο τ ν FULLY_MODIFIED, CONTENT_MODIFIED και UPDATED. Bits που ορίζουν ότι το παρά υρο έ ει μετα η εί και ρειάζεται επανασ εδίαση. Bits που ορίζουν ότι το παρά υρο δεν έ ει μετα η εί, α ά ρειάζονται επανασ εδίαση κάποια widgets του. Bits που ορίζουν ότι το παρά υρο έ ει σ εδιαστεί μετά την α α ή της κατάστασής του. Αʹ.4.3 Αʹ Συναρτήσεις Συνοπτικά Συνάρτηση createwindow Δημιουρ εί ένα παρά υρο. drawwindow Σ εδιάζει ένα παρά υρο και ό α τα παρά υραπαιδιά του (και τα widgets αυτών). drawwindows Σ εδιάζει ό α τα παρά υρα (και τα widgets αυτών). showwindow Κάνει ένα παρά υρο ορατό. hidewindow Κάνει ένα παρά υρο μη ορατό. bringwindowtofront Φέρνει ένα παρά υρο πάν από τα υπό οιπα παρά υρα-αδέρφια του. closewindow Δια ράφει ένα παρά υρο. windowcontentmodified Θέτει ένα παρά υρο ς CONTENT_MODIFIED. Στη συνέ εια κα είται η windowmodified ια τα παρά υραπαιδιά του και τα επόμενα παρά υρα-αδέρφια του. windowmodified Θέτει ένα παρά υρο και τα widgets αυτού ς FULLY_MODIFIED. Στη συνέ εια κα είται αναδρομικά ια ό α τα παρά υρα-παιδιά του και ια τα επόμενα παρά υρα-αδέρφια του (αν δεν είναι root window). 76

77 αʹ.4. Παρά υρα rootwindowmodified Έ ει το ίδιο αποτέ εσμα με την windowmodified, απ ά ρησιμοποιείται ια root windows. rootparentmodified Κα εί την rootwindowmodified ια το root παρά υρο-πατέρα του παρα ύρου που δίνεται ς όρισμα. allwindowsmodified Θέτει ό α τα παρά υρα και τα widgets αυτών ς FULLY_MODIFIED. Αʹ createwindow Η συνάρτηση αυτή δημιουρ εί ένα παρά υρο, προσ έτοντας στη δομή windowtype τα ορίσματα που δίνονται και ενημερώνοντας κατά η α τις ίστες parent, next, prev και child της δομής. Επίσης, το παρά υρο τί εται σαν ορατό. Πριν την κ ήση της συνάρτησης α πρέπει: να έ ει αρ ικοποιη εί π ήρ ς η δομή border. να έ ει αρ ικοποιη εί η δομή window, με τις τιμές τ ν ρ μάτ ν και τ ν παραμέτρ ν σ εδίασης. να έ ει δημιουρ η εί το παρά υρο parent. void createwindow(rectangletype * border, windowtype * window, windowtype * parent); border window parent Παράδει μα Ο δείκτης στη δομή rectangletype που ορίζει το όριο (περί- ραμμα) του παρα ύρου. Ο δείκτης στη δομή windowtype που ορίζει το παρά υρο που α δημιουρ η εί. Ο δείκτης στη δομή windowtype που ορίζει το παρά υροπατέρα του παρα ύρου που α δημιουρ η εί. Αν το παρά υρο δεν έ ει πατέρα τότε στο όρισμα αυτό δίνεται η τιμή NULL. Β έπε συνάρτηση drawwindows. Αʹ drawwindow Η συνάρτηση αυτή σ εδιάζει ένα παρά υρο και ό α τα παρά υρα-παιδιά του (και τα 77

78 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης widgets αυτών) αναδρομικά. Πριν την κ ήση της συνάρτησης α πρέπει να έ ει κ η εί η συνάρτηση δημιουρ ίας του παρα ύρου. void drawwindow(windowtype * window); window Ο δείκτης στη δομή windowtype, που ορίζει το παρά υρο που α σ εδιαστεί. Αʹ drawwindows Η συνάρτηση αυτή σ εδιάζει ό α τα παρά υρα (και τα widgets αυτών), κα ώντας ια κά ε root-window τη συνάρτηση drawwindow. void drawwindows(); Παράδει μα Τα παρά υρα που ορίζονται στο παράδει μα δεν περιέ ουν widgets (περι ράφονται στην επόμενη ενότητα). windowtype win1 = {FG_BORDER BG_FILL, BLACK, GREEN, BLACK}; rectangletype borderw1 = {10,10,120,70}; windowtype win2 = {FG_BORDER BG_FILL, BLACK, NAVY, BLACK}; rectangletype borderw2 = {25,55,100,60}; windowtype win3 = {FG_BORDER GRAD_FILL, BLACK, ORANGE, RED}; rectangletype borderw3 = {15,15,60,50}; createwindow(&borderw1, &win1, NULL); createwindow(&borderw2, &win2, NULL); createwindow(&borderw3, &win3, &win1); drawwindows(); Αποτέ εσμα παραδεί ματος 78

79 αʹ.4. Παρά υρα Αʹ Αʹ Αʹ Όπ ς φαίνεται από το παράδει μα, τα παρά υρα με το ίδιο παρά υρο-πατέρα σ εδιάζονται με τη σειρά που έ ουν δημιουρ η εί. showwindow Η συνάρτηση αυτή κάνει ένα παρά υρο ορατό, δη αδή αυτό α σ εδιαστεί όταν κ η εί η συνάρτηση drawwindow. void showwindow(windowtype * window); window Ο δείκτης στη δομή windowtype που ορίζει το παρά υρο που α ίνει ορατό. hidewindow Η συνάρτηση αυτή κάνει ένα παρά υρο μη ορατό, δη αδή αυτό δε α σ εδιαστεί όταν κ η εί η συνάρτηση drawwindow. void hidewindow(windowtype * window); window Ο δείκτης στη δομή windowtype που ορίζει το παρά υρο που α ίνει μη ορατό. bringwindowtofront Φέρνει ένα παρά υρο πάν από τα υπό οιπα παρά υρα-αδέρφια του. void bringwindowtofront(windowtype * window); window Παράδει μα Ο δείκτης στη δομή windowtype που ορίζει το παρά υρο που α έρ ει στην επιφάνεια. Έστ ότι έ ουμε δη ώσει και δημιουρ ήσει τα παρά υρα του παραδεί ματος της συνάρτησης drawwindows. bringwindowtofront(&win1); drawwindows(); 79

80 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης Αποτέ εσμα παραδεί ματος Αʹ Αʹ Αʹ closewindow Η συνάρτηση αυτή αφαιρεί ένα παρά υρο από τη ίστα τ ν παρα ύρ ν-αδερφών του. void closewindow(windowtype * window); window Ο δείκτης στη δομή windowtype που ορίζει το παρά υρο που α δια ραφεί. windowcontentmodified Θέτει το παρά υρο που δίνεται ς όρισμα και τα widgets αυτού ς CONTENT_MODIFIED. Στη συνέ εια κα είται η windowmodified ια τα παρά υρα-παιδιά του και τα επόμενα παρά υρα-αδέρφια του. void windowcontentmodified(windowtype * window); window Ο δείκτης στη δομή windowtype που ορίζει το παρά υρο. windowmodified Θέτει το παρά υρο που δίνεται ς όρισμα και τα widgets αυτού ς FULLY_MODIFIED. Στη συνέ εια κα είται αναδρομικά ια ό α τα παρά υρα-παιδιά του και ια τα επόμενα παρά υρα-αδέρφια του. Αν το παρά υρο είναι root, τότε προτείνεται η ρήση της rootwindowmodified. void windowmodified(windowtype * window); 80

81 αʹ.4. Παρά υρα Αʹ Αʹ Αʹ window Ο δείκτης στη δομή windowtype που ορίζει το παρά υρο. rootwindowmodified Έ ει το ίδιο αποτέ εσμα με την windowmodified, απ ά ρησιμοποιείται ια root windows. void rootwindowmodified(windowtype * window); window Ο δείκτης στη δομή windowtype που ορίζει το παρά υρο. rootparentmodified Κα εί την rootwindowmodified ια το root παρά υρο-πατέρα του παρα ύρου window, που δίνεται ς όρισμα. void rootparentmodified(windowtype * window); window Ο δείκτης στη δομή windowtype που ορίζει το παρά υρο. allwindowsmodified Θέτει ό α τα παρά υρα και τα widgets αυτών ς FULLY_MODIFIED. void allwindowsmodified(); 81

82 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης Αʹ.5 Αντικείμενα παρα ύρ ν (widgets) Αʹ.5.1 Τύποι widgets Υποστηρίζονται τα εξής widgets: Τύπος Παράδει μα Text Box Image Box Icon Push Button Πεδίο κειμένου. Χρησιμοποιείται ια την απεικόνιση κειμένου. Πεδίο εικόνας. Χρησιμοποιείται ια την απεικόνιση εικόν ν. Εικονίδιο. Αποτε εί συνδυασμό τ ν πεδί ν εικόνας και κειμένου. Κουμπί το οποίο μπορεί να πιεστεί. Πάν σε αυτό μπορεί να απεικονιστεί ένα εικονίδιο. List Box Λίστα. Ένα στοι είο της είναι επι ε μένο κά ε φορά. Slider Progress Bar Value Box Check Box Χρησιμοποιείται ια επι ο ή μιας τιμής μετα ά οντας τον δείκτη. Χρησιμοποιείται ια έ ε ο της προόδου μιας διαδικασίας. Πεδίο τιμής. Χρησιμοποιείται ια απεικόνιση αρι μητικών τιμών. Μπορεί να ενερ οποιη εί (επι έ οντάς το - check) ή να απενερ οποιη εί (απο-επι έ οντάς το - uncheck). Chart Widget Χρησιμοποιείται ια απεικόνιση ραφημάτ ν. Legend Widget Χρησιμοποιείται ια απεικόνιση υπομνήματος ραφημάτ ν. 82

83 αʹ.5. Αντικείμενα παρα ύρ ν (widgets) Drawing Widget Χρησιμοποιείται ια την απεικόνιση οποιουδήποτε σ ήματος μπορεί να σ εδιαστεί μέσ τ ν συναρτήσε ν σ εδίασης της ι ιο ήκης. Αʹ.5.2 Αʹ Δομές δεδομέν ν Συνοπτικά widgettype textboxwidget imageboxwidget iconwidget pushbuttonwidget columntextboxwidget listboxwidget sliderwidget progbarwidget valueboxwidget checkboxwidget chartwidget legendwidget drwwidget Αʹ widgettype Η δομή αυτή ορίζει ένα ενικό widget. Ορισμός typedef struct _widget { unsigned char border_style; unsigned int foreground_color; unsigned int background_color; unsigned int gradient_color; unsigned short type; unsigned short state; void * border; void * widget; struct _widget * next; windowtype * window; void * function; unsigned char target_type; void * target; } widgettype; 83

84 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης Μέ η της δομής border_style Οι παράμετροι σ εδίασης ια τη σ εδίαση του widget. foreground_color Το foreground_color ια τη σ εδίαση του widget σε μορφή 24-bit. background_color Το background_color ια τη σ εδίαση του widget σε μορφή 24-bit. gradient_color Το gradient_color ια τη σ εδίαση του widget σε μορφή 24-bit. type Ο τύπος και το σ ήμα του widget (Αʹ.5.1). state Η κατάσταση και τα αρακτηριστικά του widget. border Ο δείκτης στη δομή που ορίζει το όριο του παρα ύρου (ο τύπος της δομής προσδιορίζεται από το type). widget Ο δείκτης στη δομή που ορίζει το είδος του widget (ο τύπος της δομής προσδιορίζεται από το type). next Ο δείκτης στο επόμενο widget, που ανήκει στο ίδιο παρά υρο. window Ο δείκτης στο παρά υρο που ανήκει το widget. function Ο δείκτης στη συνάρτηση του widget. target_type Ο τύπος της δεύτερης παραμέτρου της συνάρτησης (WINDOW ή WIDGET). target Ο δείκτης στη δομή windowtype ή widgettype, που αποτε εί τη δεύτερη παράμετρο της συνάρτησης. Αʹ textboxwidget Η δομή αυτή ορίζει ένα πεδίο κειμένου. Η στοί ιση του κειμένου ς προς τον οριζόντιο και κά ετο άξονα κα ορίζεται από την τιμή της μετα ητής align. Ορισμός typedef struct { unsigned char align; const fonttype * font; unsigned int font_color; char * text; } textboxwidget; Μέ η της δομής align Ο τρόπος στοί ισης του κειμένου ς προς τον οριζόντιο και κά ετο άξονα. Παίρνει τις τιμές: TXT_Η_LEFT, TXT_Η_CENTER και TXT_Η_RIGHT ια την οριζόντια στοί- ιση και TXT_V_TOP, TXT_V_CENTER και TXT_V_BOTTOM ια την κά ετη στοί ιση. font Ο δείκτης στη δομή που ορίζει τη ραμματοσειρά ια τη σ εδίαση του κειμένου (αν δο εί η τιμή NULL, τότε ρησιμοποιείται η προκα ορισμένη ραμματοσειρά). font_color Το ρώμα του κειμένου. text Το κείμενο που α σ εδιαστεί. 84

85 αʹ.5. Αντικείμενα παρα ύρ ν (widgets) Αʹ imageboxwidget Η δομή αυτή ορίζει ένα πεδίο εικόνας. Η στοί ιση της εικόνας ς προς τον οριζόντιο και κά ετο άξονα κα ορίζεται από την τιμή της μετα ητής align. Ορισμός typedef struct { unsigned char align; const imagetype * image; } imageboxwidget; Μέ η της δομής align Ο τρόπος στοί ισης της εικόνας ς προς τον οριζόντιο και κά ετο άξονα. Παίρνει τις τιμές: IMG_Η_LEFT, IMG_Η_CENTER και IMG_Η_RIGHT ια την οριζόντια στοί- ιση και IMG_V_TOP, IMG_V_CENTER και IMG_V_BOTTOM ια την κά ετη στοί ιση. image Ο δείκτης στη δομή που ορίζει την εικόνα που α σ εδιαστεί. Αʹ iconwidget Η δομή αυτή ορίζει ένα εικονίδιο (icon). Ορισμός typedef struct { unsigned char align; const fonttype * font; unsigned int font_color; char * text; const imagetype * image; } iconwidget; Μέ η της δομής align font font_color text image Ο τρόπος στοί ισης του κειμένου και της εικόνας ς προς τον οριζόντιο και κά ετο άξονα. Ο δείκτης στη δομή που ορίζει τη ραμματοσειρά ια τη σ εδίαση του κειμένου (αν δο εί η τιμή NULL, τότε ρησιμοποιείται η προκα ορισμένη ραμματοσειρά). Το ρώμα του κειμένου. Το κείμενο που α σ εδιαστεί. Ο δείκτης στη δομή που ορίζει την εικόνα που α σ εδιαστεί. Αʹ pushbuttonwidget 85

86 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης Η δομή αυτή ορίζει ένα push button. Ορισμός typedef struct { unsigned char border_style_pressed; unsigned int foreground_color_pressed; unsigned int background_color_pressed; unsigned int gradient_color_pressed; unsigned char state; iconwidget * icon; } pushbuttonwidget; Μέ η της δομής border_style_pressed foreground_color_pressed background_color_pressed gradient_color_pressed state icon Οι παράμετροι σ εδίασης ια τη σ εδίαση του widget, όταν είναι πατημένο. Το foreground_color ια τη σ εδίαση του widget, όταν είναι πατημένο, σε μορφή 24- bit. Το background_color ια τη σ εδίαση του widget, όταν είναι πατημένο, σε μορφή 24- bit. Το gradient_color ια τη σ εδίαση του widget, όταν είναι πατημένο, σε μορφή 24- bit. Η κατάσταση του widget. Στην περίπτ ση του push button παίρνει τις τιμές PRESSED και RELEASED. Ο δείκτης στη δομή iconwidget που ορίζει το κείμενο και την εικόνα που α σ εδιαστεί στο push button. Αʹ columntextboxwidget Η δομή αυτή ορίζει ένα πεδίο κειμένου με δύο στή ες (προς το παρόν μόνο ς στοι είο ίστας). Ορισμός typedef struct { const fonttype * font; unsigned int font_color1; unsigned int font_color2; unsigned int font_color1_selected; unsigned int font_color2_selected; char * text1; char * text2; } columntextboxwidget; Μέ η της δομής

87 αʹ.5. Αντικείμενα παρα ύρ ν (widgets) font font_color1 font_color2 font_color1_selected font_color2_selected text1 text2 Ο δείκτης στη δομή που ορίζει τη ραμματοσειρά ια τη σ εδίαση του κειμένου (αν δο εί η τιμή NULL, τότε ρησιμοποιείται η προκα- ορισμένη ραμματοσειρά). Το ρώμα του κειμένου της πρώτης στή ης. Το ρώμα του κειμένου της δεύτερης στή ης. Το ρώμα του κειμένου της πρώτης στή ης, όταν το widget είναι επι ε μένο ( ρησιμοποιείται όταν είναι μέρος ίστας - list box). Το ρώμα του κειμένου της δεύτερης στή ης, όταν το widget είναι επι ε μένο ( ρησιμοποιείται όταν είναι μέρος ίστας - list box). Το κείμενο της πρώτης στή ης (αριστερή στοί ιση). Το κείμενο της δεύτερης στή ης (δεξιά στοί- ιση). Αʹ listboxwidget Η δομή αυτή ορίζει μία ίστα. Ορισμός typedef struct { unsigned short border_style; unsigned int foreground_color; unsigned int background_color; unsigned int gradient_color; unsigned short border_style_selected; unsigned int foreground_color_selected; unsigned int background_color_selected; unsigned int gradient_color_selected; int item_height; unsigned short type; int w_num; columntextboxwidget ** widgetgroup; int selected_item; } listboxwidget; Μέ η της δομής border_style foreground_color background_color gradient_color Οι παράμετροι σ εδίασης ια τη σ εδίαση του περι ράμματος τ ν στοι εί ν της ίστας. Το foreground_color ια τη σ εδίαση τ ν στοι εί ν της ίστας, σε μορφή 24-bit. Το background_color ια τη σ εδίαση τ ν στοι εί ν της ίστας, σε μορφή 24-bit. Το gradient_color ια τη σ εδίαση τ ν στοι- εί ν της ίστας, σε μορφή 24-bit. 87

88 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης border_style_selected Οι παράμετροι σ εδίασης ια τη σ εδίαση του περι ράμματος τ ν στοι εί ν της ίστας, όταν είναι επι ε μένα. foreground_color_selected Το foreground_color ια τη σ εδίαση τ ν στοι εί ν της ίστας, όταν είναι επι ε μένα, σε μορφή 24-bit. background_color_selected Το background_color ια τη σ εδίαση τ ν στοι εί ν της ίστας, όταν είναι επι ε μένα, σε μορφή 24-bit. gradient_color_selected Το gradient_color ια τη σ εδίαση τ ν στοι- εί ν της ίστας, όταν είναι επι ε μένα, σε μορφή 24-bit. item_height Το ύψος του κά ε στοι είου της ίστας, σε pixels. type Ο τύπος του widget που αποτε εί τα στοι- εία της ίστας. Προς το παρόν μόνο το columntextboxwidget υποστηρίζεται. w_num Ο αρι μός τ ν στοι εί ν της ίστας. widgetgroup Πίνακας δεικτών στα στοι εία της ίστας (προς το παρόν μόνο το columntextboxwidget υποστηρίζεται). selected_item Η έση του στοι είου της ίστας που είναι επι ε μένο. Ο αρι μός 0 αντιστοι εί στο πρώτο στοι είο, ο 1 στο δεύτερο κ.ο.κ. Αν πάρει αρνητική τιμή, τότε κανένα στοι είο δε ε ρείται επι ε μένο. Αʹ sliderwidget Η δομή αυτή ορίζει ένα slider widget. Ορισμός typedef struct { unsigned char style; double min; double max; double * critical_val; unsigned int * color; int marker_pos; double value; } sliderwidget; Μέ η της δομής 88

89 αʹ.5. Αντικείμενα παρα ύρ ν (widgets) style min max critical_val color marker_pos value Ο προσανατο ισμός του widget (οριζόντιος ή κά ετος). Η ε ά ιστη τιμή που μπορεί να επι ε εί. Η μέ ιστη τιμή που μπορεί να επι ε εί. Πίνακας με 2 τιμές οι οποίες ορίζουν 3 πεδία τιμών: (min,critical_val[0]) (critical_val[0], critical_val[1]) (critical_val[1], max) Πίνακας 3 ρ μάτ ν που ορίζουν το ρώμα του widget ια κα ένα από τα παραπάν πεδία τιμών. Τιμή που ορίζει τη έση του δείκτη σε pixels, μετρώντας από τη έση της ε ά ιστης τιμής. Η τιμή που έ ει επι ε εί. Αʹ progbarwidget Η δομή αυτή ορίζει ένα progress bar. Ορισμός typedef struct { int value; unsigned int fill_color; unsigned int font_color; } progbarwidget; Μέ η της δομής value Μια τιμή μεταξύ 0 και 100. fill_color Το ρώμα εμίσματος του widget. font_color Το ρώμα εμφάνισης του κειμένου που δεί νει το value εντός του widget. Αʹ valueboxwidget Η δομή αυτή ορίζει ένα πεδίο τιμής. Ορισμός typedef struct { double min; double max; const fonttype * font; unsigned int font_color; int value; } valueboxwidget; Μέ η της δομής 89

90 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης min max font font_color value Η ε ά ιστη τιμή που μπορεί να επι ε εί. Η μέ ιστη τιμή που μπορεί να επι ε εί. Ο δείκτης στη δομή που ορίζει τη ραμματοσειρά ια τη σ εδίαση του κειμένου. Το ρώμα εμφάνισης του κειμένου που δεί νει το value εντός του widget. Η τιμή που έ ει επι ε εί. Αʹ checkboxwidget Η δομή αυτή ορίζει ένα check box. Ορισμός typedef struct { unsigned int color; unsigned char state; } checkboxwidget; Μέ η της δομής color state Αʹ Αʹ Το ρώμα ια τη σ εδίασης του check. Η κατάσταση του widget (CHECKED ή UNCHECKED). chartwidget Η δομή αυτή ορίζει ένα widget ραφήματος. Ορισμός typedef struct { unsigned char type; void * chart_struct; } chartwidget; Μέ η της δομής type chart_struct legendwidget Ο τύπος του ραφήματος. Ο δείκτης στη δομή που ορίζει το ράφημα. Η δομή αυτή ορίζει ένα widget ια υπόμνημα ραφήματος. Ορισμός typedef struct { const fonttype * font; unsigned int font_color; char ** v_text;

91 αʹ.5. Αντικείμενα παρα ύρ ν (widgets) Αʹ unsigned char type; void * chart_struct; } legendwidget; Μέ η της δομής font font_color v_text type chart_struct drwwidget Ο δείκτης στη δομή που ορίζει τη ραμματοσειρά ια τη σ εδίαση του κειμένου (αν δο εί η τιμή NULL, τότε ρησιμοποιείται η προκα ορισμένη ραμματοσειρά). Το ρώμα του κειμένου. Πίνακας που περιέ ει το κείμενο ια κά ε τιμή του ραφήματος. Ο τύπος του ραφήματος. Ο δείκτης στη δομή που ορίζει το ράφημα. Η δομή αυτή ορίζει ένα widget σ εδίασης. Ορισμός typedef struct { void * drawing_function; } drwwidget; Μέ η της δομής drawing_function Ο δείκτης στη συνάρτηση σ εδίασης που α εκτε εστεί κατά τη σ εδίαση του widget. Αʹ.5.3 Defines Ορισμός WIDGET_TYPE TEXT_BOX IMAGE_BOX ICON PUSH_BUTTON COLUMN_TEXT LIST_BOX SLIDER PROG_BAR VALUE_BOX CHECK_BOX Τύποι widgets Bit μάσκα ια τον έ ε ο του τύπου τ ν widgets. Τιμή που ορίζει ότι το widget είναι πεδίο κειμένου (text box). Τιμή που ορίζει ότι το widget είναι πεδίο εικόνας (image box). Τιμή που ορίζει ότι το widget είναι εικονίδιο (icon). Τιμή που ορίζει ότι το widget είναι push button. Τιμή που ορίζει ότι το widget είναι πεδίο κειμένου με δύο στή ες. Τιμή που ορίζει ότι το widget είναι ίστα (list box). Τιμή που ορίζει ότι το widget είναι slider. Τιμή που ορίζει ότι το widget είναι progress bar. Τιμή που ορίζει ότι το widget είναι πεδίο τιμής (value box). Τιμή που ορίζει ότι το widget είναι check box. 91

92 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης CHART_WIDGET LEGEND_WIDGET DRW_WIDGET TXT_H_LEFT TXT_H_CENTER TXT_H_RIGHT TXT_V_TOP TXT_V_CENTER TXT_V_BOTTOM IMG_H_LEFT IMG_H_CENTER IMG_H_RIGHT IMG_V_TOP IMG_V_CENTER IMG_V_BOTTOM PRESSED RELEASED SELECTED NOT_SELECTED CHECKED UNCHECKED Τιμή που ορίζει ότι το widget είναι widget ραφήματος. Τιμή που ορίζει ότι το widget είναι widget ια υπόμνημα ραφήματος. Τιμή που ορίζει ότι το widget είναι widget σ εδίασης. Σ εδίαση κειμένου - εικόνας Τιμή που ορίζει ότι το κείμενο στοι ίζεται αριστερά. Τιμή που ορίζει ότι το κείμενο στοι ίζεται στο κέντρο ς προς τον οριζόντιο άξονα. Τιμή που ορίζει ότι το κείμενο στοι ίζεται δεξιά. Τιμή που ορίζει ότι το κείμενο στοι ίζεται πάν. Τιμή που ορίζει ότι το κείμενο στοι ίζεται στο κέντρο ς προς τον κά ετο άξονα. Τιμή που ορίζει ότι το κείμενο στοι ίζεται κάτ. Τιμή που ορίζει ότι η εικόνα στοι ίζεται αριστερά. Τιμή που ορίζει ότι η εικόνα στοι ίζεται στο κέντρο ς προς τον οριζόντιο άξονα. Τιμή που ορίζει ότι η εικόνα στοι ίζεται δεξιά. Τιμή που ορίζει ότι η εικόνα στοι ίζεται πάν. Τιμή που ορίζει ότι η εικόνα στοι ίζεται στο κέντρο ς προς τον κά ετο άξονα. Τιμή που ορίζει ότι η εικόνα στοι ίζεται κάτ. Κατάσταση widget Τιμή που ορίζει ότι το widget είναι πατημένο (συνή ς ρησιμοποιείται στα push buttons). Τιμή που ορίζει ότι το widget δεν είναι πατημένο (συνή ς ρησιμοποιείται στα push buttons). Τιμή που ορίζει ότι το widget είναι επι ε μένο (συνή- ς ρησιμοποιείται ια τα στοι εία μιας ίστας). Τιμή που ορίζει ότι το widget δεν είναι επι ε μένο (συνή ς ρησιμοποιείται ια τα στοι εία μιας ίστας). Τιμή που ορίζει ότι το check box είναι επι ε μένο. Τιμή που ορίζει ότι το check box δεν είναι επι ε μένο. 92

93 αʹ.5. Αντικείμενα παρα ύρ ν (widgets) Αʹ.5.4 Αʹ Συναρτήσεις Συνοπτικά Συνάρτηση createtextbox createimagebox createpushbutton createlistbox createslider createprogbar createvaluebox createcheckbox createicon createchartwidget createlegendwidget createdrwwidget drawwidget addfunction callwidgetfunction Δημιουρ ία widget Δημιουρ εί ένα πεδίο κειμένου (text box). Δημιουρ εί ένα πεδίο εικόνας (image box). Δημιουρ εί ένα push button. Δημιουρ εί μία ίστα (list box). Δημιουρ εί ένα slider. Δημιουρ εί ένα progress bar. Δημιουρ εί ένα πεδίο τιμής (value box). Δημιουρ εί ένα check box. Δημιουρ εί ένα icon. Δημιουρ εί ένα widget ραφήματος. Δημιουρ εί ένα widget ια υπόμνημα ραφήματος. Δημιουρ εί ένα widget σ εδίασης. Σ εδίαση widget Σ εδιάζει ένα widget. Συνάρτηση widget Ορίζει τη συνάρτηση ενός widget. Κα εί τη συνάρτηση ενός widget. Μετά την ανα υτική περι ραφή τ ν παραπάν συναρτήσε ν ακο ου εί ένα παράδει μα ρήσης τους. Αʹ Αʹ Δημιουρ ία widget createtextbox Η συνάρτηση αυτή δημιουρ εί ένα text box, προσ έτοντας στη δομή textboxwidget τα ορίσματα που δίνονται και ενημερώνοντας κατά η α τη ίστα next της δομής widgettype. Επίσης, το widget αρ ικοποιείται σαν ορατό. Πριν την κ ήση της συνάρτησης α πρέπει: να έ ει αρ ικοποιη εί π ήρ ς η δομή border. να έ ει αρ ικοποιη εί η δομή widget, με τις τιμές τ ν ρ μάτ ν και τ ν παραμέτρ ν σ εδίασης. να έ ει αρ ικοποιη εί π ήρ ς η δομή text_box. να έ ει δημιουρ η εί το παρά υρο window. void createtextbox(unsigned short type, void * border, textboxwidget * text_box, 93

94 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης widgettype * widget, windowtype * window); type Το σ ήμα του widget (RECTANGLE, CIRCLE, POLYGON). border Ο δείκτης στη δομή που ορίζει το όριο του widget (ανά ο α με το σ ήμα). text_box Ο δείκτης στη δομή textboxwidget, που ορίζει το text box που α δημιουρ η εί. widget Ο δείκτης στη δομή widgettype, που ορίζει τα ασικά αρακτηριστικά του widget. window Ο δείκτης στο παρά υρο που ανήκει το widget. Αʹ createimagebox Η συνάρτηση αυτή δημιουρ εί ένα image box, προσ έτοντας στη δομή imageboxwidget τα ορίσματα που δίνονται και ενημερώνοντας κατά η α τη ίστα next της δομής widgettype. Επίσης, το widget αρ ικοποιείται σαν ορατό. Πριν την κ ήση της συνάρτησης α πρέπει: να έ ει αρ ικοποιη εί π ήρ ς η δομή border. να έ ει αρ ικοποιη εί η δομή widget, με τις τιμές τ ν ρ μάτ ν και τ ν παραμέτρ ν σ εδίασης. να έ ει αρ ικοποιη εί η δομή image_box, με τον τρόπο στοί ισης της εικόνας. να έ ει οριστεί η εικόνα image. να έ ει δημιουρ η εί το παρά υρο window. void createimagebox(unsigned short type, void * border, imageboxwidget * image_box, widgettype * widget, const imagetype * image, windowtype * window); 94

95 αʹ.5. Αντικείμενα παρα ύρ ν (widgets) type border image_box widget image window Το σ ήμα του widget (RECTANGLE, CIRCLE, POLYGON). Ο δείκτης στη δομή που ορίζει το όριο του widget (ανά ο α με το σ ήμα). Ο δείκτης στη δομή imageboxwidget, που ορίζει το image box που α δημιουρ η εί. Ο δείκτης στη δομή widgettype, που ορίζει τα ασικά αρακτηριστικά του widget. Ο δείκτης στην εικόνα που α σ εδιαστεί στο image box. Ο δείκτης στο παρά υρο που ανήκει το widget. Αʹ createpushbutton Η συνάρτηση αυτή δημιουρ εί ένα push button, προσ έτοντας στη δομή pushbuttonwidget τα ορίσματα που δίνονται και ενημερώνοντας κατά η α τη ίστα next της δομής widgettype. Επίσης, το widget αρ ικοποιείται σαν ορατό και η αρ ική κατάστασή του ς RELEASED. Πριν την κ ήση της συνάρτησης α πρέπει: να έ ει αρ ικοποιη εί π ήρ ς η δομή border. να έ ει αρ ικοποιη εί η δομή widget, με τις τιμές τ ν ρ μάτ ν και τ ν παραμέτρ ν σ εδίασης. να έ ει αρ ικοποιη εί η δομή push_button, με τις τιμές τ ν ρ μάτ ν και τ ν παραμέτρ ν σ εδίασης, που ρησιμοποιούνται όταν είναι πατημένο. να έ ει αρ ικοποιη εί η δομή icon με τις επι ο ές του κειμένου. να έ ει οριστεί η εικόνα image. να έ ει δημιουρ η εί το παρά υρο window. Αν δε έ ουμε κείμενο στο push button, τότε στο text της δομής icon δίνεται η τιμή NULL. Επίσης, αν δε έ ουμε να σ εδιαστεί εινόνα, δίνουμε τη τιμή NULL τόσο στο icon όσο και στο image. Τέ ος, ια πο υ νικά push buttons δεν υποστηρίζεται η σ εδίαση κειμένου και εικόνας. void createpushbutton(unsigned short type, void * border, pushbuttonwidget * push_button, widgettype * widget, iconwidget * icon, const imagetype * image, windowtype * window); 95

96 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης type border push_button widget icon image window Το σ ήμα του widget (RECTANGLE, CIRCLE, POLYGON). Ο δείκτης στη δομή που ορίζει το όριο του widget (ανά ο α με το σ ήμα). Ο δείκτης στη δομή pushbuttonwidget, που ορίζει το widget που α δημιουρ η εί. Ο δείκτης στη δομή widgettype, που ορίζει τα ασικά αρακτηριστικά του widget. Ο δείκτης στη δομή iconwidget, που ορίζει το κείμενο και την εικόνα που α σ εδιαστεί στο push button. Ο δείκτης στην εικόνα που α σ εδιαστεί στο push button. Ο δείκτης στο παρά υρο που ανήκει το widget. Αʹ createlistbox Η συνάρτηση αυτή δημιουρ εί ένα list box, προσ έτοντας στη δομή listboxwidget τα ορίσματα που δίνονται και ενημερώνοντας κατά η α τη ίστα next της δομής widgettype. Επίσης, το widget αρ ικοποιείται σαν ορατό. Πριν την κ ήση της συνάρτησης α πρέπει: να έ ει αρ ικοποιη εί π ήρ ς η δομή border. να έ ει αρ ικοποιη εί η δομή widget, με τις τιμές τ ν ρ μάτ ν και τ ν παραμέτρ ν σ εδίασης. να έ ει αρ ικοποιη εί η δομή list_box, με τις τιμές τ ν ρ μάτ ν και τ ν παραμέτρ ν σ εδίασης, που ρησιμοποιούνται ια τη σ εδίασης τ ν στοι εί ν της ίστας, κα ώς και με την τιμή του ύψους του κά ε στοι είου. να έ ει αρ ικοποιη εί ο πίνακας widgets, με τους δείκτες στα στοι εία της ίστας. να έ ει δημιουρ η εί το παρά υρο window. void createlistbox(unsigned short type, void * border, listboxwidget * list_box, widgettype * widget, unsigned short item_type, columntextboxwidget * widgets[], int selected_item, int w_num, windowtype * window); 96

97 αʹ.5. Αντικείμενα παρα ύρ ν (widgets) type border list_box widget item_type widgets selected_item w_num window Το σ ήμα του widget (RECTANGLE, CIRCLE, POLYGON). Ο δείκτης στη δομή που ορίζει το όριο του widget (ανά ο α με το σ ήμα). Ο δείκτης στη δομή listboxwidget, που ορίζει το list box που α δημιουρ η εί. Ο δείκτης στη δομή widgettype, που ορίζει τα ασικά αρακτηριστικά του widget. Ο τύπος του widget που αποτε εί τα στοι εία της ίστας (μόνο το COLUMN_TEXT υποστηρίζεται μέ ρι στι μής). Πίνακας δεικτών στα στοι εία της ίστας. Η έση του στοι είου της ίστας που είναι επι ε μένο αρ ικά. Ο αρι μός τ ν στοι εί ν της ίστας. Ο δείκτης στο παρά υρο που ανήκει το widget. Αʹ createslider Η συνάρτηση αυτή δημιουρ εί ένα slider, προσ έτοντας στη δομή sliderwidget τα ορίσματα που δίνονται και ενημερώνοντας κατά η α τη ίστα next της δομής widgettype. Επίσης, το widget αρ ικοποιείται σαν ορατό. Πριν την κ ήση της συνάρτησης α πρέπει: να έ ει αρ ικοποιη εί π ήρ ς η δομή border. να έ ει αρ ικοποιη εί η δομή widget, με τις τιμές τ ν ρ μάτ ν και τ ν παραμέτρ ν σ εδίασης. να έ ει αρ ικοποιη εί η δομή slider, με το style, τη μέ ιστη και ε ά ιστη τιμή. να έ ει αρ ικοποιη εί ο πίνακας critical_val. να έ ει αρ ικοποιη εί ο πίνακας color. Αν δο εί η τιμή NULL, τότε ρησιμοποιούνται προκα ορισμένα ρώματα. να έ ει δημιουρ η εί το παρά υρο window. void createslider(unsigned short type, void * border, sliderwidget * slider, widgettype * widget, double * critical_val, unsigned int * color, windowtype * window); 97

98 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης type border slider widget critical_val color window Το σ ήμα του widget (RECTANGLE, CIRCLE, POLYGON). Ο δείκτης στη δομή που ορίζει το όριο του widget (ανά ο α με το σ ήμα). Ο δείκτης στη δομή sliderwidget, που ορίζει το slider που α δημιουρ η εί. Ο δείκτης στη δομή widgettype, που ορίζει τα ασικά αρακτηριστικά του widget. Ο πίνακας critical_val της δομής sliderwidget. Ο πίνακας color της δομής sliderwidget. Ο δείκτης στο παρά υρο που ανήκει το widget. Αʹ createprogbar Η συνάρτηση αυτή δημιουρ εί ένα progress bar, προσ έτοντας στη δομή progbarwidget τα ορίσματα που δίνονται και ενημερώνοντας κατά η α τη ίστα next της δομής widgettype. Επίσης, το widget αρ ικοποιείται σαν ορατό. Πριν την κ ήση της συνάρτησης α πρέπει: να έ ει αρ ικοποιη εί π ήρ ς η δομή border. να έ ει αρ ικοποιη εί η δομή widget, με τις τιμές τ ν ρ μάτ ν και τ ν παραμέτρ ν σ εδίασης. να έ ει αρ ικοποιη εί π ήρ ς η δομή prog_bar. να έ ει δημιουρ η εί το παρά υρο window. void createprogbar(unsigned short type, void * border, progbarwidget * prog_bar, widgettype * widget, windowtype * window); type border prog_bar widget window Το σ ήμα του widget (RECTANGLE, CIRCLE, POLYGON). Ο δείκτης στη δομή που ορίζει το όριο του widget (ανά ο α με το σ ήμα). Ο δείκτης στη δομή progbarwidget, που ορίζει το progress bar που α δημιουρ η εί. Ο δείκτης στη δομή widgettype, που ορίζει τα ασικά αρακτηριστικά του widget. Ο δείκτης στο παρά υρο που ανήκει το widget. Αʹ createvaluebox 98

99 αʹ.5. Αντικείμενα παρα ύρ ν (widgets) Η συνάρτηση αυτή δημιουρ εί ένα value box, προσ έτοντας στη δομή valueboxwidget τα ορίσματα που δίνονται και ενημερώνοντας κατά η α τη ίστα next της δομής widgettype. Επίσης, το widget αρ ικοποιείται σαν ορατό. Πριν την κ ήση της συνάρτησης α πρέπει: να έ ει αρ ικοποιη εί π ήρ ς η δομή border. να έ ει αρ ικοποιη εί η δομή widget, με τις τιμές τ ν ρ μάτ ν και τ ν παραμέτρ ν σ εδίασης. να έ ει αρ ικοποιη εί η δομή value_box, με τις τιμές min, max και font_color. Η τιμή value αρ ικοποιείται στην τιμή min κατά την κ ήση της συνάρτησης. να έ ει δημιουρ η εί το παρά υρο window. void createvaluebox(unsigned short type, void * border, valueboxwidget * value_box, widgettype * widget, windowtype * window); type border value_box widget window Το σ ήμα του widget (RECTANGLE, CIRCLE, POLYGON). Ο δείκτης στη δομή που ορίζει το όριο του widget (ανά ο α με το σ ήμα). Ο δείκτης στη δομή valueboxwidget, που ορίζει το value box που α δημιουρ η εί. Ο δείκτης στη δομή widgettype, που ορίζει τα ασικά αρακτηριστικά του widget. Ο δείκτης στο παρά υρο που ανήκει το widget. Αʹ createcheckbox Η συνάρτηση αυτή δημιουρ εί ένα check box, προσ έτοντας στη δομή checkboxwidget τα ορίσματα που δίνονται και ενημερώνοντας κατά η α τη ίστα next της δομής widgettype. Επίσης, το widget αρ ικοποιείται σαν ορατό. Πριν την κ ήση της συνάρτησης α πρέπει: να έ ει αρ ικοποιη εί π ήρ ς η δομή border. να έ ει αρ ικοποιη εί η δομή widget, με τις τιμές τ ν ρ μάτ ν και τ ν παραμέτρ ν σ εδίασης. να έ ει αρ ικοποιη εί π ήρ ς η δομή check_box. να έ ει δημιουρ η εί το παρά υρο window. 99

100 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης void createcheckbox(unsigned short type, void * border, checkboxwidget * check_box, widgettype * widget, windowtype * window) type border check_box widget window Το σ ήμα του widget (RECTANGLE, CIRCLE, POLYGON). Ο δείκτης στη δομή που ορίζει το όριο του widget (ανά ο α με το σ ήμα). Ο δείκτης στη δομή checkboxwidget, που ορίζει το check box που α δημιουρ η εί. Ο δείκτης στη δομή widgettype, που ορίζει τα ασικά αρακτηριστικά του widget. Ο δείκτης στο παρά υρο που ανήκει το widget. Αʹ createicon Η συνάρτηση αυτή δημιουρ εί ένα εικονίδιο (icon), προσ έτοντας στη δομή iconwidget τα ορίσματα που δίνονται και ενημερώνοντας κατά η α τη ίστα next της δομής widgettype. Επίσης, το widget αρ ικοποιείται σαν ορατό. Πριν την κ ήση της συνάρτησης α πρέπει: να έ ει αρ ικοποιη εί π ήρ ς η δομή border. να έ ει αρ ικοποιη εί η δομή widget, με τις τιμές τ ν ρ μάτ ν και τ ν παραμέτρ ν σ εδίασης. να έ ει αρ ικοποιη εί η δομή icon, με τις τιμές align, font, font_color και text. να έ ει οριστεί η εικόνα image. να έ ει δημιουρ η εί το παρά υρο window. void createicon(unsigned short type, void * border, iconwidget * icon, widgettype * widget, const imagetype * image, windowtype * window); 100

101 αʹ.5. Αντικείμενα παρα ύρ ν (widgets) type border icon widget image window Το σ ήμα του widget (RECTANGLE, CIRCLE, POLYGON). Ο δείκτης στη δομή που ορίζει το όριο του widget (ανά ο α με το σ ήμα). Ο δείκτης στη δομή iconwidget, που ορίζει το icon που α δημιουρ η εί. Ο δείκτης στη δομή widgettype, που ορίζει τα ασικά αρακτηριστικά του widget. Ο δείκτης στην εικόνα που α σ εδιαστεί στο icon. Ο δείκτης στο παρά υρο που ανήκει το widget. Αʹ createchartwidget Η συνάρτηση αυτή δημιουρ εί ένα widget ραφήματος, προσ έτοντας στη δομή chartwidget τα ορίσματα που δίνονται και ενημερώνοντας κατά η α τη ίστα next της δομής widgettype. Επίσης, το widget αρ ικοποιείται σαν ορατό. Πριν την κ ήση της συνάρτησης α πρέπει: να έ ει αρ ικοποιη εί π ήρ ς η δομή border. να έ ει αρ ικοποιη εί η δομή widget, με τις τιμές τ ν ρ μάτ ν και τ ν παραμέτρ ν σ εδίασης. να έ ει οριστεί το ράφημα, που α σ εδιαστεί. να έ ει δημιουρ η εί το παρά υρο window. void createchartwidget(unsigned short type, void * border, chartwidget * chart, widgettype * widget, unsigned char chart_type, void * chart_struct, windowtype * window); type border chart widget chart_type chart_struct window Το σ ήμα του widget (RECTANGLE, CIRCLE, POLYGON). Ο δείκτης στη δομή που ορίζει το όριο του widget (ανά ο α με το σ ήμα). Ο δείκτης στη δομή chartwidget, που ορίζει το widget που α δημιουρ η εί. Ο δείκτης στη δομή widgettype, που ορίζει τα ασικά αρακτηριστικά του widget. Ο τύπος του ραφήματος (PIE_CHART κτ.). Ο δείκτης στη δομή που ορίζει το ράφημα. Ο δείκτης στο παρά υρο που ανήκει το widget. Αʹ createlegendwidget 101

102 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης Η συνάρτηση αυτή δημιουρ εί ένα widget ια υπόμνημα ραφήματος, προσ έτοντας στη δομή legendwidget τα ορίσματα που δίνονται και ενημερώνοντας κατά η α τη ίστα next της δομής widgettype. Επίσης, το widget αρ ικοποιείται σαν ορατό. Πριν την κ ήση της συνάρτησης α πρέπει: να έ ει αρ ικοποιη εί π ήρ ς η δομή border. να έ ει αρ ικοποιη εί η δομή widget, με τις τιμές τ ν ρ μάτ ν και τ ν παραμέτρ ν σ εδίασης. να έ ει αρ ικοποιη εί η δομή legend, με τις τιμές font και font_color. να έ ει οριστεί το ράφημα. να έ ει δημιουρ η εί το παρά υρο window. void createlegendwidget(unsigned short type, void * border, legendwidget * legend, widgettype * widget, unsigned char chart_type, void * chart_struct, char * v_text[], windowtype * window); type border legend widget chart_type chart_struct v_text window Το σ ήμα του widget (RECTANGLE, CIRCLE, POLYGON). Ο δείκτης στη δομή που ορίζει το όριο του widget (ανά ο α με το σ ήμα). Ο δείκτης στη δομή legendwidget, που ορίζει το widget που α δημιουρ η εί. Ο δείκτης στη δομή widgettype, που ορίζει τα ασικά αρακτηριστικά του widget. Ο τύπος του ραφήματος (PIE_CHART κτ.). Ο δείκτης στη δομή που ορίζει το ράφημα. Ο πίνακας που περιέ ει το κείμενο ια κά ε τιμή του ραφήματος. Ο δείκτης στο παρά υρο που ανήκει το widget. Αʹ createdrwwidget Η συνάρτηση αυτή δημιουρ εί ένα widget σ εδίασης, προσ έτοντας στη δομή drwwidget τα ορίσματα που δίνονται και ενημερώνοντας κατά η α τη ίστα next της δομής widgettype. Επίσης, το widget αρ ικοποιείται σαν ορατό. Πριν την κ ήση της συνάρτησης α πρέπει: να έ ει αρ ικοποιη εί π ήρ ς η δομή border. 102

103 αʹ.5. Αντικείμενα παρα ύρ ν (widgets) να έ ει αρ ικοποιη εί η δομή widget, με τις τιμές τ ν ρ μάτ ν και τ ν παραμέτρ ν σ εδίασης. να έ ει οριστεί η δομή drw_w. να έ ει δημιουρ η εί η συνάρτηση drawing_function. Αυτή α πρέπει να ορίζεται ς εξής: void drawing_function(const rectangletype * border, const drwwidget * drw_w) να έ ει δημιουρ η εί το παρά υρο window. void createdrwwidget(unsigned short type, void * border, drwwidget * drw_w, widgettype * widget, void * drawing_function, windowtype * window); type border drw_w widget drawing_function window Το σ ήμα του widget (RECTANGLE, CIRCLE, POLYGON). Ο δείκτης στη δομή που ορίζει το όριο του widget (ανά ο α με το σ ήμα). Ο δείκτης στη δομή drwwidget, που ορίζει το widget που α δημιουρ η εί. Ο δείκτης στη δομή widgettype, που ορίζει τα ασικά αρακτηριστικά του widget. Ο δείκτης στη συνάρτηση σ εδίασης που εκτε είται κατά τη σ εδίαση του widget. Ο δείκτης στο παρά υρο που ανήκει το widget. Αʹ Αʹ Σ εδίαση widget drawwidget Η συνάρτηση αυτή σ εδιάζει ένα widget που ορίζεται από μια δομή widgettype. Πριν την κ ήση της συνάρτησης α πρέπει να έ ει κ η εί η κατά η η συνάρτηση δημιουρ ίας του widget. void drawwidget(const widgettype * widget); widget Ο δείκτης στη δομή widgettype, που ορίζει το widget που α σ εδιαστεί. Αʹ Αʹ Συνάρτηση widget addfunction 103

104 Παράρτημα αʹ. Οδη ός ρήσης της ι ιο ήκης Η συνάρτηση αυτή ορίζει τη συνάρτηση ενός widget. Πριν την κ ήση της α πρέπει: να έ ει δημιου η εί το widget, στου οποίου τη δομή α προστε εί η συνάρτηση. να έ ει δημιουρ η εί η συνάρτηση function, η οποία α ορίζεται ς εξής: * Για target_type WIDGET: void function(const widgettype * widget, const widgettype * target) * Για target_type WINDOW: void function(const widgettype * widget, const windowtype * target) να έ ει δημιου η εί το target widget, το οποίο α αποτε εί τη δεύτερη παράμετρο της συνάρτησης. void addfunction(widgettype * widget, void * function, unsigned char target_type, void * target); widget function target_type target Ο δείκτης στη δομή widgettype, που ορίζει το widget στο οποίο α προστ εί η συνάρτηση. Ο δείκτης στη συνάρτηση του widget. Τιμή που υποδεικνύει τον τύπο της δεύτερης παραμέτρου της συνάρτησης (WINDOW ή WIDGET). Ο δείκτης στη δομή widgettype ή windowtype, που ορίζει το widget ή το παρά υρο, που αποτε εί τη δεύτερη παράμετρο της συνάρτησης. Αʹ callwidgetfunction Αʹ Η συνάρτηση αυτή κα εί τη συνάρτηση ενός widget. Πριν την κ ήση της α πρέπει να έ ει δημιουρ η εί η συνάρτηση του widget με ρήση της addfunction. void callwidgetfunction(widgettype * widget); widget Ο δείκτης στη δομή widgettype, που ορίζει το widget του οποίου η συνάρτηση α κ η εί. Παραδεί ματα Αʹ Παράδει μα 1: Στο παράδει μα αυτό σ εδιάζεται ένα παρά υρο που περιέ ει ένα text box widget, ένα list box widget και ένα push button widget. 104

105 αʹ.5. Αντικείμενα παρα ύρ ν (widgets) // Define and create window windowtype win = {FG_BORDER BG_FILL, BLACK, CYAN, BLACK}; rectangletype win_border = {0,0,200,180}; createwindow(&win_border, &win, NULL); // Define and create text box widget textboxwidget tb = {TXT_CENTER, NULL, BLACK, Text Box }; rectangletype tb_border = {2,2,198,20}; widgettype tb_widget = {NO_BORDER NO_FILL}; createtextbox(rectangle, &tb_border, &tb, &tb_widget, &win); // Define and create list box widget listboxwidget lb = {NO_BORDER NO_FILL, BLACK, BLACK, BLACK, FG_BORDER BG_FILL SHADE, BLACK, WHITE, WHITE, 25}; rectangletype lb_border = {2, 30, 196, 100}; widgettype lb_widget = {NO_BORDER NO_FILL}; columntextboxwidget ctb1 = {NULL, GRAY, GRAY, BLACK, BLACK, Item number, 1 }; columntextboxwidget ctb2 = ctb1; ctb2.text2 = 2 ; columntextboxwidget ctb3 = ctb1; ctb3.text2 = 3 ; columntextboxwidget * list_items[] = {&ctb1, &ctb2, &ctb3}; createlistbox(rectangle, &lb_border, &lb, &lb_widget, COLUMN_TEXT, list_items, 0, 3, &win); // Define and create push button widget pushbuttonwidget pb = {FG_BORDER BG_FILL, BLACK, YELLOW}; textboxwidget pb_text = {TXT_CENTER, NULL, BLACK, Push Button }; rectangletype pb_border = {60,150,80,20}; widgettype pb_widget = {FG_BORDER BG_FILL, BLACK, RED}; createpushbutton(rectangle, &pb_border, &pb, &pb_widget, &pb_text, NULL, NULL, &win); drawwindows(); Αʹ Αποτέ εσμα παραδεί ματος 1 105

Παρά η η Δια είριση Δεδομέν ν

Παρά η η Δια είριση Δεδομέν ν 17 Παρά η η Δια είριση Δεδομέν ν Ο όρος "με ά α δεδομένα" εμφανίστηκε στα μέσα της δεκαετίας του 2000 και έ ει έσει νέες προκ ήσεις στα ΣΔΒΔ. Συνοπτικά, οι προκ ήσεις αυτές απορρέουν κυρί ς από τον πο

Διαβάστε περισσότερα

Κανονισμός Εποπτικού Συμ ου ίου

Κανονισμός Εποπτικού Συμ ου ίου Κανονισμός Εποπτικού Συμ ου ίου Περιφερειακής Ένωσης Δήμων (Π.Ε.Δ.) Ιονίων Νήσων Περιφερειακή Έν ση Δήμ ν (Π.Ε.Δ.) Ιονί ν Νήσ ν ΠΕΔ ΙΝ Ιανουάριος 2012 2 Περιε όμενα 1 Αντικείμενο του Κανονισμού 4 2 Σύν

Διαβάστε περισσότερα

Ο Κατά ο ος Υπο ραφών

Ο Κατά ο ος Υπο ραφών 7 Ο Κατά ο ος Υπο ραφών Περιε όμενα Κεφα αίου 7.1 Εισα ή............................ 144 7.2 Μέ οδοι Εξα ής Υπο ραφών................ 144 7.2.1 Βασικές Μέ οδοι Εξα ής Υπο ραφών....... 145 7.2.2 Εξα ή Υπο

Διαβάστε περισσότερα

Κανονισμός Εκτε εστικής Επιτροπής

Κανονισμός Εκτε εστικής Επιτροπής Κανονισμός Εκτε εστικής Επιτροπής Περιφερειακής Ένωσης Δήμων (Π.Ε.Δ.) Ιονίων Νήσων Περιφερειακή Έν ση Δήμ ν (Π.Ε.Δ.) Ιονί ν Νήσ ν ΠΕΔ ΙΝ Ιανουάριος 2012 2 Περιε όμενα 1 Αντικείμενο 4 2 Σύν εση εκτε εστικής

Διαβάστε περισσότερα

Κανονισμός Οικονομικής Δια είρισης

Κανονισμός Οικονομικής Δια είρισης Κανονισμός Οικονομικής Δια είρισης Περιφερειακής Ένωσης Δήμων (Π.Ε.Δ.) Ιονίων Νήσων Περιφερειακή Έν ση Δήμ ν (Π.Ε.Δ.) Ιονί ν Νήσ ν ΠΕΔ ΙΝ Ιανουάριος 2012 2 Περιε όμενα Άρ ρο 1: Αντικείμενο Κανονισμού 4

Διαβάστε περισσότερα

Ο Αντεστραμμένος Κατά ο ος

Ο Αντεστραμμένος Κατά ο ος 6 Ο Αντεστραμμένος Κατά ο ος Περιε όμενα Κεφα αίου 6.1 Εισα ή............................ 118 6.2 Η Δομή του Αντεστραμμένου Κατα ό ου........... 118 6.3 Χρήση του Κατα ό ου στην Επεξερ ασία Ερ τημάτ ν...

Διαβάστε περισσότερα

Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Η εκτρο ό ν Μη ανικών και Μη ανικών Υπο ο ιστών Τομέας Τε νο ο ίας Π ηροφορικής και Υπο ο ιστών. Διπ ματική Ερ ασία

Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Η εκτρο ό ν Μη ανικών και Μη ανικών Υπο ο ιστών Τομέας Τε νο ο ίας Π ηροφορικής και Υπο ο ιστών. Διπ ματική Ερ ασία Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Η εκτρο ό ν Μη ανικών και Μη ανικών Υπο ο ιστών Τομέας Τε νο ο ίας Π ηροφορικής και Υπο ο ιστών Με έτη και Υ οποίηση Α ορί μ ν ια Βιο ο ικές Εφαρμο ές σε MapReduce Περι

Διαβάστε περισσότερα

Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Η εκτρο ό ν Μη ανικών και Μη ανικών Υπο ο ιστών Τομέας Τε νο ο ίας Π ηροφορικής και Υπο ο ιστών. Διπ ματική Ερ ασία

Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Η εκτρο ό ν Μη ανικών και Μη ανικών Υπο ο ιστών Τομέας Τε νο ο ίας Π ηροφορικής και Υπο ο ιστών. Διπ ματική Ερ ασία Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Η εκτρο ό ν Μη ανικών και Μη ανικών Υπο ο ιστών Τομέας Τε νο ο ίας Π ηροφορικής και Υπο ο ιστών Υ οποίηση κατασκευής δέντρου επι εμάτ ν σε Hadoop Mapreduce Διπ ματική

Διαβάστε περισσότερα

Το Λο ικό Μοντέ ο. Περιε όμενα Κεφα αίου

Το Λο ικό Μοντέ ο. Περιε όμενα Κεφα αίου 3 Το Λο ικό Μοντέ ο Περιε όμενα Κεφα αίου 3.1 Εισα ή............................ 52 3.2 Το Απ ό Λο ικό Μοντέ ο................... 52 3.2.1 Βασικές Έννοιες.................... 53 3.2.2 Τε εστές Γειτονικότητας

Διαβάστε περισσότερα

Κανονισμός Διοικητικού Συμ ου ίου

Κανονισμός Διοικητικού Συμ ου ίου Κανονισμός Διοικητικού Συμ ου ίου Περιφερειακής Ένωσης Δήμων (Π.Ε.Δ.) Ιονίων Νήσων Περιφερειακή Έν ση Δήμ ν (Π.Ε.Δ.) Ιονί ν Νήσ ν -3mm-3mm ΠΕΔ ΙΝ Ιανουάριος 2012 2 Περιε όμενα 1 Αντικείμενο του κανονισμού

Διαβάστε περισσότερα

Το Διανυσματικό Μοντέ ο

Το Διανυσματικό Μοντέ ο 4 Το Διανυσματικό Μοντέ ο Περιε όμενα Κεφα αίου 4.1 Εισα ή............................ 74 4.2 Βασικές Έννοιες........................ 74 4.2.1 Υπο ο ισμός Σημαντικότητας Όρ ν......... 76 4.2.2 Υπο ο ισμός

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ ΕΡΓΑΣΤΗΡΙΟ ΨΗΦΙΑΚΗΣ ΕΠΕΞΕΡΓΑΣΙΑΣ ΣΗΜΑΤΩΝ ΚΑΙ ΕΙΚΟΝΩΝ Ρομποτικά Εκπαιδευτικά

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΗΛΕΚΤΡΙΚΩΝ ΒΙΟΜΗΧΑΝΙΚΩΝ ΔΙΑΤΑΞΕΩΝ ΚΑΙ ΣΥΣΤΗΜΑΤΩΝ ΑΠΟΦΑΣΕΩΝ ΜΕΛΕΤΗ ΚΑΙ ΠΡΟΣΟΜΟΙΩΣΗ BLDC ΚΙΝΗΤΗΡΑ ΣΕ ΠΕΡΙΒΑΛΛΟΝ MATLAB/SIMULINK

Διαβάστε περισσότερα

Ε νικό Μετσό ιο Πο υτε νείο

Ε νικό Μετσό ιο Πο υτε νείο Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Η εκτρο ό ν Μη ανικών και Μη ανικών Υπο ο ιστών Τομέας Τε νο ο ίας Π ηροφορικής και Υπο ο ιστών Ερ α είο Αυτοματοποιημένης Εξερεύνησης Απόδοσης - Επιφάνειας Υ ικού - Ισ

Διαβάστε περισσότερα

Α όρι μοι και Πο υπ οκότητα 1η Σειρά Γραπτών Ασκήσε ν

Α όρι μοι και Πο υπ οκότητα 1η Σειρά Γραπτών Ασκήσε ν .. Α όρι μοι και Πο υπ οκότητα 1η Σειρά Γραπτών Ασκήσε ν CoReLab ΣΗΜΜΥ - Ε.Μ.Π. Επιμέ εια διαφανειών: Χάρης Α ε ιδάκης 12 Δεκεμ ρίου, 2011 Outline. 1 Άσκηση 1. 2 Άσκηση 2. 3 Άσκηση 3. 4 Άσκηση 4. 5 Άσκηση

Διαβάστε περισσότερα

Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Η εκτρο ό ν Μη ανικών και Μη ανικών Υπο ο ιστών Τομέας Η εκτρικής Ισ ύος. Διπ ματική Ερ ασία

Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Η εκτρο ό ν Μη ανικών και Μη ανικών Υπο ο ιστών Τομέας Η εκτρικής Ισ ύος. Διπ ματική Ερ ασία Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Η εκτρο ό ν Μη ανικών και Μη ανικών Υπο ο ιστών Τομέας Η εκτρικής Ισ ύος Εφαρμο ές της Θε ρίας Παι νί ν στα Μικροδίκτυα Διπ ματική Ερ ασία του ΠΕΤΡΟΥ Χ. ΑΡΙΣΤΕΙΔΟΥ Επι

Διαβάστε περισσότερα

Ανάκτηση Π ηροφορίας στον Πα κόσμιο Ιστό

Ανάκτηση Π ηροφορίας στον Πα κόσμιο Ιστό 9 Ανάκτηση Π ηροφορίας στον Πα κόσμιο Ιστό Περιε όμενα Κεφα αίου 9.1 Εισα ή............................ 204 9.2 Πα κόσμιος Ιστός και Μη ανές Αναζήτησης......... 204 9.2.1 Οι Προκ ήσεις του Πα κόσμιου Ιστού........

Διαβάστε περισσότερα

Επέκταση του συστήματος ανοι τού κώδικα Pig

Επέκταση του συστήματος ανοι τού κώδικα Pig Επέκταση του συστήματος ανοι τού κώδικα Pig Εμμανουή Ζουμπου άκης AEM: 1462 Επι έπ ν κα η ητής: Αναστάσιος Γούναρης, Λέκτορας τμ. Π ηροφορικής Α.Π.Θ. Ιούνιος 2012 2 2 Abstract The tremendous Internet growth

Διαβάστε περισσότερα

Ανάκτηση Π ηροφορίας. Συ ραφή Απόστο ος Ν. Παπαδόπου ος Ι άννης Μαν όπου ος Κ νσταντίνος Τσί ας. Κριτικός Ανα νώστης Δημήτριος Κατσαρός

Ανάκτηση Π ηροφορίας. Συ ραφή Απόστο ος Ν. Παπαδόπου ος Ι άννης Μαν όπου ος Κ νσταντίνος Τσί ας. Κριτικός Ανα νώστης Δημήτριος Κατσαρός Ανάκτηση Π ηροφορίας Συ ραφή Απόστο ος Ν. Παπαδόπου ος Ι άννης Μαν όπου ος Κ νσταντίνος Τσί ας Κριτικός Ανα νώστης Δημήτριος Κατσαρός Συντε εστές Έκδοσης ΓΛΩΣΣΙΚΗ ΕΠΙΜΕΛΕΙΑ: Α. Ν. Παπαδόπου ος, Ι. Μαν

Διαβάστε περισσότερα

Ορ ανισμός Εσ τερικής Υπηρεσίας

Ορ ανισμός Εσ τερικής Υπηρεσίας Ορ ανισμός Εσ τερικής Υπηρεσίας Περιφερειακής Ένωσης Δήμων (Π.Ε.Δ.) Ιονίων Νήσων Περιφερειακή Έν ση Δήμ ν (Π.Ε.Δ.) Ιονί ν Νήσ ν ΠΕΔ ΙΝ Ιανουάριος 2012 2 Περιε όμενα Άρ ρο 1: Περιε όμενο του Ορ ανισμού

Διαβάστε περισσότερα

Απ ή υ οποίηση α ορί μου Fast Multipole Method ανεξάρτητου συνάρτησης πυρήνα

Απ ή υ οποίηση α ορί μου Fast Multipole Method ανεξάρτητου συνάρτησης πυρήνα Αριστοτέ ειο Πανεπιστήμιο Θεσσα ονίκης Πο υτε νική Σ ο ή Τμήμα Η εκτρο ό ν Μη ανικών και Μη ανικών Υπο ο ιστών Τομέας Η εκτρονικής και Υπο ο ιστών Απ ή υ οποίηση α ορί μου Fast Multipole Method ανεξάρτητου

Διαβάστε περισσότερα

Π Ε Δ (Π.Ε.Δ.) Ι Ν ΠΕΔ. Κανονισμοί. ΟΕΥ Προσωπικού Διοικητικού Συμβουλίου Εκτελεστικής Επιτροπής Οικονομικής Διαχείρισης Εποπτικού Συμβουλίου

Π Ε Δ (Π.Ε.Δ.) Ι Ν ΠΕΔ. Κανονισμοί. ΟΕΥ Προσωπικού Διοικητικού Συμβουλίου Εκτελεστικής Επιτροπής Οικονομικής Διαχείρισης Εποπτικού Συμβουλίου Π Ε Δ (Π.Ε.Δ.) Ι Ν ΠΕΔ ΙΝ Κανονισμοί ΟΕΥ Προσωπικού Διοικητικού Συμβουλίου Εκτελεστικής Επιτροπής Οικονομικής Διαχείρισης Εποπτικού Συμβουλίου Ιανουάριος 2012 Σύντομα Περιε όμενα 1 Ορ ανισμός Εσ τερικής

Διαβάστε περισσότερα

Το Πι ανοκρατικό Μοντέ ο

Το Πι ανοκρατικό Μοντέ ο 5 Το Πι ανοκρατικό Μοντέ ο Περιε όμενα Κεφα αίου 5.1 Εισα ή............................ 94 5.2 Βασικές Έννοιες Θε ρίας Πι ανοτήτ ν............ 95 5.3 Υπο ο ισμός Σ ετικότητας Ε ράφ ν............ 96 5.3.1

Διαβάστε περισσότερα

Εισα ή στην Ανάκτηση Π ηροφορίας

Εισα ή στην Ανάκτηση Π ηροφορίας 1 Εισα ή στην Ανάκτηση Π ηροφορίας Περιε όμενα Κεφα αίου 1.1 Εισα ή............................ 2 1.2 Η Διαδικασία της Ανάκτησης Π ηροφορίας.......... 8 1.2.1 Βασικές Λειτουρ ίες.................. 9 1.2.2

Διαβάστε περισσότερα

Σ εδιασμός Συστημάτ ν Ε έ ου

Σ εδιασμός Συστημάτ ν Ε έ ου Σ εδιασμός Συστημάτ ν Ε έ ου ΔΠΜΣ Συστήματα Αυτοματισμού 2014-2015 Δρ Γ Παπα άμπρου Λέκτορας ΕΜΠ georgepapalambrou@lmentuagr Ερ αστήριο Ναυτικής Μη ανο ο ίας (Κτίριο Λ) Σ ο ή Ναυπη ών Μη ανο ό ν Μη ανικών

Διαβάστε περισσότερα

Αποτίμηση Αποτε εσματικότητας

Αποτίμηση Αποτε εσματικότητας 2 Αποτίμηση Αποτε εσματικότητας Περιε όμενα Κεφα αίου 2.1 Εισα ή............................ 26 2.2 Βασικά Μέτρα Αποτε εσματικότητας............. 26 2.2.1 Ανάκ ηση, Ακρί εια και Αστο ία........... 27 2.2.2

Διαβάστε περισσότερα

Ε νικό Μετσό ιο Πο υτε νείο. Διπ ματική Ερ ασία

Ε νικό Μετσό ιο Πο υτε νείο. Διπ ματική Ερ ασία Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Η εκτρο ό ν Μη ανικών και Μη ανικών Υπο ο ιστών Τομέας Τε νο ο ίας Π ηροφορικής και Υπο ο ιστών Α όρι μοι Συ ο ής Απορριμμάτ ν ια Αυτόματη Δια είριση Μνήμης Διπ ματική

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΕΠΙΚΟΙΝΩΝΙΩΝ, ΗΛΕΚΤΡΟΝΙΚΗΣ ΚΑΙ ΣΥΣΤΗΜΑΤΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ Ανά υση Συναισ ήματος σε Δεδομένα Κοιν νικών Δικτύ ν με

Διαβάστε περισσότερα

Ανάπτυξη Συστήματος Συστάσε ν Συνερ ατικής Διή ησης με ρήση Ιεραρ ικών Α ορί μ ν Κατάταξης

Ανάπτυξη Συστήματος Συστάσε ν Συνερ ατικής Διή ησης με ρήση Ιεραρ ικών Α ορί μ ν Κατάταξης ΤΜΗΜΑ ΜΗΧΑΝΙΚΩΝ ΗΛΕΚΤΡΟΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΚΑΙ ΠΛΗΡΟΦΟΡΙΚΗΣ Μεταπτυχιακή Διπλωματική Εργασία Ανάπτυξη Συστήματος Συστάσε ν Συνερ ατικής Διή ησης με ρήση Ιεραρ ικών Α ορί μ ν Κατάταξης της Μαριάννας Κουνέ

Διαβάστε περισσότερα

ἔστω www.esto.gr Ο...πισινός μας! American Bar το καναμε για όλους μας. * * * www.esto.gr κι από τη Σκιά τους. σε κάθε νησί;

ἔστω www.esto.gr Ο...πισινός μας! American Bar το καναμε για όλους μας. * * * www.esto.gr κι από τη Σκιά τους. σε κάθε νησί; American Bar το καναμε * κι από τη Σκιά τους. * κι απο τις Συνιστώσες τους. * για όλους μας. * * * σε κάθε νησί; * σε κάθε υπουργείο. * έξω από το σπίτι του. * * * Ποιος είναι πίσω μας; * Ο...πισινός μας!

Διαβάστε περισσότερα

Υ οποίηση αντα α ής κ ειδιού DH και ψηφιακών υπο ραφών ασισμένη σε ε ειπτικές καμπύ ες

Υ οποίηση αντα α ής κ ειδιού DH και ψηφιακών υπο ραφών ασισμένη σε ε ειπτικές καμπύ ες Υ οποίηση αντα α ής κ ειδιού DH και ψηφιακών υπο ραφών ασισμένη σε ε ειπτικές καμπύ ες Νίκος Γιανναράκης Ζ ή Παρασκευοπού ου Σ ο ή Η εκτρο ό ν Μη ανικών και Μη ανικών Υπο ο ιστών Ε νικό Μετσό ιο Πο υτε

Διαβάστε περισσότερα

ΕΠΑΝΑΛΗΠΣΙΚΕ ΑΚΗΕΙ ΜΙΓΑΔΙΚΟΤ-ΟΡΙΑ-ΤΝΕΧΕΙΑ

ΕΠΑΝΑΛΗΠΣΙΚΕ ΑΚΗΕΙ ΜΙΓΑΔΙΚΟΤ-ΟΡΙΑ-ΤΝΕΧΕΙΑ (ΠΕΡΙΕΧΕΙ ΑΚΗΕΙ ΚΑΙ ΑΠΟ ΣΗΝ ΣΡΑΠΕΖΑ ΘΕΜΑΣΩΝ ΣΗ Ε.Μ.Ε) ΑΚΗΗ 1 Έςτω ςυνεήσ ςυνάρτηςη :RR, με (0)=2 η οποία ικανοποιεί τη ςέςη ( ) 4 = 6 ια κά ε R α) Να βρείτε τισ τιμέσ (2) και (-2) β) Να απο είξετε τι υπάρει

Διαβάστε περισσότερα

Ε νικό Μετσό ιο Πο υτε νείο

Ε νικό Μετσό ιο Πο υτε νείο Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Μη ανο ό ν Μη ανικών Τομέας Ρευστών Ερ αστήριο Θερμικών Στρο ι ομη ανών Μονάδα Παρά η ης Υπο ο ιστικής Ρευστοδυναμικής& Βε τιστοποίησης Η συνε ής συζυ ής μέ οδος ια περιοδικές

Διαβάστε περισσότερα

Η Αρ ιτεκτονική αναφοράς Μα ησιακών Χώρ ν CROP - Μια πρώτη προσέ ιση

Η Αρ ιτεκτονική αναφοράς Μα ησιακών Χώρ ν CROP - Μια πρώτη προσέ ιση Η Αρ ιτεκτονική αναφοράς Μα ησιακών Χώρ ν CROP - Μια πρώτη προσέ ιση Τε νική Έκ εση ια την εκπ ήρ ση της διατρι ής με τίτ ο Οντο ο ίες και Λο ική Παρα ή με Εφαρμο ές σε Υπηρεσίες Μά ησης στο Σημασιο ο

Διαβάστε περισσότερα

Ε νικό Μετσό ιο Πο υτε νείο. Α όρι μοι Επανε ραφής Τροποποιημέν ν Ερ τημάτ ν ια Βατές Περι ραφικές Λο ικές

Ε νικό Μετσό ιο Πο υτε νείο. Α όρι μοι Επανε ραφής Τροποποιημέν ν Ερ τημάτ ν ια Βατές Περι ραφικές Λο ικές dummy line Ε νικό Μετσό ιο Πο υτε νείο ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ & ΥΠΟΛΟΓΙΣΤΩΝ Α όρι μοι Επανε ραφής Τροποποιημέν ν Ερ τημάτ ν ια Βατές Περι

Διαβάστε περισσότερα

Ανάπτυξη Βιβλιοθήκης Γραφικών για Ενσωματωμένο Σύστημα

Ανάπτυξη Βιβλιοθήκης Γραφικών για Ενσωματωμένο Σύστημα ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΤΕΧΝΟΛΟΓΙΑΣ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΥΠΟΛΟΓΙΣΤΩΝ Ανάπτυξη Βιβλιοθήκης Γραφικών για Ενσωματωμένο Σύστημα ΔΙΠΛΩΜΑΤΙΚΗ ΕΡΓΑΣΙΑ

Διαβάστε περισσότερα

Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Η εκτρο ό ν Μη ανικών και Μη ανικών Υπο ο ιστών Τομέας Επικοιν νιών, Η εκτρονικής και Συστημάτ ν Π ηροφορικής

Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Η εκτρο ό ν Μη ανικών και Μη ανικών Υπο ο ιστών Τομέας Επικοιν νιών, Η εκτρονικής και Συστημάτ ν Π ηροφορικής Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Η εκτρο ό ν Μη ανικών και Μη ανικών Υπο ο ιστών Τομέας Επικοιν νιών, Η εκτρονικής και Συστημάτ ν Π ηροφορικής Υ οποίηση Εικονικού Μετα έα ια Εφαρμο ές του Ίντερνετ του

Διαβάστε περισσότερα

Ανάπτυξη συντακτικού ανα υτή φυσικής ώσσας με ρήση του φορμα ισμού LFG. Πανα ιώτης Μίνος

Ανάπτυξη συντακτικού ανα υτή φυσικής ώσσας με ρήση του φορμα ισμού LFG. Πανα ιώτης Μίνος Ανάπτυξη συντακτικού ανα υτή φυσικής ώσσας με ρήση του φορμα ισμού LFG Πανα ιώτης Μίνος 18 Φε ρουαρίου 2014 Περί ηψη Η παρούσα μεταπτυ ιακή διπ ματική ερ ασία αναφέρεται στον σ εδιασμό και την υ οποίηση

Διαβάστε περισσότερα

Ε νικό Μετσό ιο Πο υτε νείο. Πρακτικά Συστήματα Συ ο ιστικής ια Εκφραστικές Ασαφείς Περι ραφικές Λο ικές

Ε νικό Μετσό ιο Πο υτε νείο. Πρακτικά Συστήματα Συ ο ιστικής ια Εκφραστικές Ασαφείς Περι ραφικές Λο ικές Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Η εκτρο ό ν Μη ανικών Και Μη ανικών Υπο ο ιστών Τομέας Τε νο ο ίας Π ηροφορικής και Υπο ο ιστών Πρακτικά Συστήματα Συ ο ιστικής ια Εκφραστικές Ασαφείς Περι ραφικές Λο

Διαβάστε περισσότερα

Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Χημικών Μη ανικών. Με έτη και σ εδιασμός με όδ ν Εξόρυξης Δεδομέν ν και εφαρμο ές σε προ ήματα Μετα ο ομικής

Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Χημικών Μη ανικών. Με έτη και σ εδιασμός με όδ ν Εξόρυξης Δεδομέν ν και εφαρμο ές σε προ ήματα Μετα ο ομικής Ε νικό Μετσό ιο Πο υτε νείο Σ ο ή Χημικών Μη ανικών Διπλωματική Εργασία Με έτη και σ εδιασμός με όδ ν Εξόρυξης Δεδομέν ν και εφαρμο ές σε προ ήματα Μετα ο ομικής Γεράσιμος Α. Χουρδάκης Επι έπ ν : Αν. Κα

Διαβάστε περισσότερα

ΚΑΝΟΝΙΣ ΜΟ Ι ΙΕΞΑΓΩΓΗΣ ΑΓΩΝΩΝ 1 / 8 SCALE IC TRA CK ΕΛ. Μ. Ε

ΚΑΝΟΝΙΣ ΜΟ Ι ΙΕΞΑΓΩΓΗΣ ΑΓΩΝΩΝ 1 / 8 SCALE IC TRA CK ΕΛ. Μ. Ε ΚΑΝΟΝΙΣ ΜΟ Ι ΙΕΞΑΓΩΓΗΣ ΑΓΩΝΩΝ 1 / 8 SCALE IC TRA CK ΕΛ. Μ. Ε. 2 0 1 9 Κλ ά δο ς θερ µ ι κώ ν τη λ εκα τ ευθυ νό µ εν ω ν α υ το κι νή τω ν. Υπ εύ θυνο ς Κ λ ά δ ο υ Ζωτιαδης Κωστας bo d @ e l - m e. gr

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΣΥΣΤΗΜΑΤΩΝ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΛΙΚΩΝ Αποτίμηση δυναμικών α η επίδρασης νευρών ν κατά τη διάρκεια

Διαβάστε περισσότερα

Η κ άσση L A TEX dithesis

Η κ άσση L A TEX dithesis ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΣΧΟΛΗ ΘΕΤΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΜΗΜΑ ΠΛΗΡΟΦΟΡΙΚΗΣ ΚΑΙ ΤΗΛΕΠΙΚΟΙΝΩΝΙΩΝ ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Η κ άσση L A TEX dithesis Ι άννης Π. Μαντζουράτος Επι έπ ν: Α έξης Δε ής, Κα

Διαβάστε περισσότερα

Εξόρυξη νώσης από μέσα κοιν νικής δικτύ σης: Με έτη περίπτ σης στο Twitter.

Εξόρυξη νώσης από μέσα κοιν νικής δικτύ σης: Με έτη περίπτ σης στο Twitter. Πανεπιστήμιο Πατρών Τμήμα Μα ηματικών Τμήμα Μη ανικών Η/Υ & Π ηροφορικής Διατμηματικό Πρό ραμμα Μεταπτυ ιακών Σπουδών "Μα ηματικά τ ν Υπο ο ιστών και τ ν Αποφάσε ν". Εξόρυξη νώσης από μέσα κοιν νικής δικτύ

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΤΜΗΜΑ ΗΛΕΚΤΡΟΛΟΓΩΝ ΜΗΧΑΝΙΚΩΝ ΚΑΙ ΜΗΧΑΝΙΚΩΝ ΥΠΟΛΟΓΙΣΤΩΝ ΤΟΜΕΑΣ ΣΥΣΤΗΜΑΤΩΝ ΜΕΤΑΔΟΣΗΣ ΠΛΗΡΟΦΟΡΙΑΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ ΥΛΙΚΩΝ Αποτίμηση της αταξίας ειτουρ ικών δυναμικών η εκτροε κεφα

Διαβάστε περισσότερα

Πα κ έ τ ο Ε ρ γ α σ ί α ς 4 Α ν ά π τ υ ξ η κ α ι π ρ ο σ α ρ µ ο γ ή έ ν τ υ π ο υ κ α ι η λ ε κ τ ρ ο ν ι κ ο ύ ε κ π α ι δ ε υ τ ι κ ο ύ υ λ ι κ ο

Πα κ έ τ ο Ε ρ γ α σ ί α ς 4 Α ν ά π τ υ ξ η κ α ι π ρ ο σ α ρ µ ο γ ή έ ν τ υ π ο υ κ α ι η λ ε κ τ ρ ο ν ι κ ο ύ ε κ π α ι δ ε υ τ ι κ ο ύ υ λ ι κ ο ΠΑΝΕΠΙΣΤΗΜΙΟ Θ ΕΣΣΑΛ ΙΑΣ ΠΟΛ Υ ΤΕΧ ΝΙΚ Η ΣΧ ΟΛ Η ΤΜΗΜΑ ΜΗΧ ΑΝΟΛ ΟΓ Ω Ν ΜΗΧ ΑΝΙΚ Ω Ν Β ΙΟΜΗΧ ΑΝΙΑΣ ΑΝΑΜΟΡΦΩΣΗ Π Π Σ ΣΥ ΝΟΠ Τ Ι Κ Η Ε Κ Θ Ε ΣΗ ΠΕ 4 Α Ν Α ΠΤ Υ Ξ Η Κ Α Ι ΠΡ Ο Σ Α Ρ Μ Ο Γ Η ΕΝ Τ Υ ΠΟ Υ Κ Α

Διαβάστε περισσότερα

ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΠΛΑΤΦΟΡΜΑΣ ΠΑΡΟΧΗΣ ΥΠΗΡΕΣΙΩΝ ΣΤΟ ΔΙΑΔΙΚΤΥΟ ΜΕ ΕΜΦΑΣΗ ΣΤΙΣ ΕΦΑΡΜΟΓΕΣ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΓΕΩΡΓΙΟΣ ΓΟΥΛΑΣ

ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΠΛΑΤΦΟΡΜΑΣ ΠΑΡΟΧΗΣ ΥΠΗΡΕΣΙΩΝ ΣΤΟ ΔΙΑΔΙΚΤΥΟ ΜΕ ΕΜΦΑΣΗ ΣΤΙΣ ΕΦΑΡΜΟΓΕΣ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΓΕΩΡΓΙΟΣ ΓΟΥΛΑΣ ΣΧΕΔΙΑΣΗ ΚΑΙ ΑΝΑΠΤΥΞΗ ΠΛΑΤΦΟΡΜΑΣ ΠΑΡΟΧΗΣ ΥΠΗΡΕΣΙΩΝ ΣΤΟ ΔΙΑΔΙΚΤΥΟ ΜΕ ΕΜΦΑΣΗ ΣΤΙΣ ΕΦΑΡΜΟΓΕΣ ΧΡΟΝΟΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΔΙΔΑΚΤΟΡΙΚΗ ΔΙΑΤΡΙΒΗ ΓΕΩΡΓΙΟΣ ΓΟΥΛΑΣ ΔΙΠΛΩΜΑΤΟΥΧΟΣ ΗΛΕΚΤΡΟΛΟΓΟΣ ΜΗΧΑΝΙΚΟΣ & ΤΕΧΝΟΛΟΓΙΑΣ ΥΠΟΛΟΓΙΣΤΩΝ

Διαβάστε περισσότερα

JEAN-CHARLES BLATZ 02XD34455 01RE52755

JEAN-CHARLES BLATZ 02XD34455 01RE52755 ΟΡΘΗ ΕΠΑΝΑΛΗΨΗ ΤΩΝ ΕΝ Ι ΑΜ ΕΣ ΩΝ ΟΙ Κ ΟΝΟΜ Ι Κ ΩΝ Κ ΑΤΑΣ ΤΑΣ ΕΩΝ ΤΗΣ ΕΤΑΙ ΡΙ ΑΣ Κ ΑΙ ΤΟΥ ΟΜ Ι ΛΟΥ Α Τρίµηνο 2005 ΑΝΩΝΥΜΟΣ Γ ΕΝΙ Κ Η ΕΤ ΑΙ Ρ Ι Α Τ ΣΙ ΜΕΝΤ ΩΝ Η Ρ ΑΚ Λ Η Σ ΑΡ. ΜΗ Τ Ρ. Α.Ε. : 13576/06/Β/86/096

Διαβάστε περισσότερα

1 Θέμα Γενική Περι ραφή Θέματος Υ ικά Εξαρτήματα και Τε νο ο ίες Συνδεσμο ο ία... 2

1 Θέμα Γενική Περι ραφή Θέματος Υ ικά Εξαρτήματα και Τε νο ο ίες Συνδεσμο ο ία... 2 Περιε όμενα 1 Θέμα 1 1.1 Γενική Περι ραφή Θέματος.......................... 1 2 Υ ικά 1 2.1 Εξαρτήματα και Τε νο ο ίες......................... 1 2.2 Συνδεσμο ο ία................................ 2 3 Arduino

Διαβάστε περισσότερα

20/5/ /5/ /5/ /5/2005

20/5/ /5/ /5/ /5/2005 ΜΕΤΑΦΟΡΙΚΕΣ ΕΠ ΙΧ ΕΙΡΗ ΣΕΙΣ FINDA Α.Ε. ΥΠΟ Ε Κ Κ Α Θ Α Ρ Ι Σ Η ΟΙΚΟΝΟΜΙΚΕΣ ΚΑ Τ Α ΣΤ Α ΣΕΙΣ Γ ΙΑ Τ Η Ν Χ Ρ Η ΣΗ Π ΟΥ ΕΛ Η Ξ Ε Τ Η Ν 19.5.2006 ΠΕΡΙΕΧΟΜΕΝΑ Έ κ θ εσ η Eλέ γ χ ο υ Ε λεγ κ τ ώ ν 3 Κ α τ ά

Διαβάστε περισσότερα

ΟΙΚΟΝΟΜΟΤΕΧΝΙΚΗ ΑΝΑΛΥΣΗ ΕΝΟΣ ΕΝΕΡΓΕΙΑΚΑ ΑΥΤΟΝΟΜΟΥ ΝΗΣΙΟΥ ΜΕ Α.Π.Ε

ΟΙΚΟΝΟΜΟΤΕΧΝΙΚΗ ΑΝΑΛΥΣΗ ΕΝΟΣ ΕΝΕΡΓΕΙΑΚΑ ΑΥΤΟΝΟΜΟΥ ΝΗΣΙΟΥ ΜΕ Α.Π.Ε Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. ΟΙΚΟΝΟΜΟΤΕΧΝΙΚΗ ΑΝΑΛΥΣΗ ΕΝΟΣ ΕΝΕΡΓΕΙΑΚΑ ΑΥΤΟΝΟΜΟΥ ΝΗΣΙΟΥ ΜΕ Α.Π.Ε Πτυχιακή Εργασία Φοιτητής: Γεμενής Κωνσταντίνος ΑΜ: 30931 Επιβλέπων Καθηγητής Κοκκόσης Απόστολος Λέκτορας

Διαβάστε περισσότερα

Π α σα πνο η αι νε σα τω τον Κυ ρι. Π α σα πνο η αι νε σα α τω τον. Ἕτερον. Τάξις Ἑωθινοῦ Εὐαγγελίου, Ὀ Ν Ψαλµός. Μέλος Ἰωάννου Ἀ. Νέγρη.

Π α σα πνο η αι νε σα τω τον Κυ ρι. Π α σα πνο η αι νε σα α τω τον. Ἕτερον. Τάξις Ἑωθινοῦ Εὐαγγελίου, Ὀ Ν Ψαλµός. Μέλος Ἰωάννου Ἀ. Νέγρη. Τάξις Ἑωθινοῦ Εὐαγγελίου, Ὀ Ν Ψαλµός. Μέλος Ἰωάννου Ἀ. Νέγρη. Κυ ρι ε ε λε η σον Ἦχος Πα Α µην Π α σα πνο η αι νε σα τω τον Κυ ρι ον Ἕτερον. Π α σα πνο η αι νε σα α τω τον Κυ υ ρι ι ον 1 ΙΩΑΝΝΟΥ Α. ΝΕΓΡΗ

Διαβάστε περισσότερα

FAX : 210.34.42.241 spudonpe@ypepth.gr) Φ. 12 / 600 / 55875 /Γ1

FAX : 210.34.42.241 spudonpe@ypepth.gr) Φ. 12 / 600 / 55875 /Γ1 Ε Λ Λ Η Ν Ι Κ Η Η Μ Ο Κ Ρ Α Τ Ι Α Υ ΠΟΥ ΡΓΕΙΟ ΕΘΝ. ΠΑ Ι ΕΙΑ Σ & ΘΡΗΣ Κ/Τ Ω ΕΝΙΑ ΙΟΣ ΙΟΙΚΗΤ ΙΚΟΣ Τ ΟΜ ΕΑ Σ Σ ΠΟΥ Ω Ν ΕΠΙΜ ΟΡΦΩ Σ ΗΣ ΚΑ Ι ΚΑ ΙΝΟΤ ΟΜ ΙΩ Ν /ΝΣ Η Σ ΠΟΥ Ω Τ µ ή µ α Α Α. Πα π α δ ρ έ ο υ 37

Διαβάστε περισσότερα

α κα ρι ι ο ος α α νηρ ος ου ουκ ε πο ρε ε ευ θη εν βου λη η η α α σε ε ε βων και εν ο δω ω α α µαρ τω λω ων ουουκ ε ε ε

α κα ρι ι ο ος α α νηρ ος ου ουκ ε πο ρε ε ευ θη εν βου λη η η α α σε ε ε βων και εν ο δω ω α α µαρ τω λω ων ουουκ ε ε ε Ἦχος Νη α κα ρι ι ο ος α α νηρ ος ου ουκ ε πο ρε ε ευ θη εν βου λη η η α α σε ε ε βων και εν ο δω ω α α µαρ τω λω ων ουουκ ε ε ε στη η και ε πι κα α θε ε ε ε δρα α λοι οι µων ου ουκ ε ε κα θι ι σε ε ε

Διαβάστε περισσότερα

Ανάπτυξη διαδικτυακής διαδραστικής εκπαιδευτικής εφαρμογής σε λειτουργικό σύστημα Android

Ανάπτυξη διαδικτυακής διαδραστικής εκπαιδευτικής εφαρμογής σε λειτουργικό σύστημα Android Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. Ανάπτυξη διαδικτυακής διαδραστικής εκπαιδευτικής εφαρμογής σε λειτουργικό σύστημα Android Πτυχιακή Εργασία Φοιτητής:

Διαβάστε περισσότερα

ΚΒΑΝΤΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ

ΚΒΑΝΤΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. ΚΒΑΝΤΙΚΟΙ ΥΠΟΛΟΓΙΣΤΕΣ Πτυχιακή Εργασία Φοιτητής: ΜIΧΑΗΛ ΖΑΓΟΡΙΑΝΑΚΟΣ ΑΜ: 38133 Επιβλέπων Καθηγητής Καθηγητής Ε.

Διαβάστε περισσότερα

Ε νικό και Καποδιστριακό Πανεπιστήμιο Α ηνών. Δι οτομίες Πο υπ οκότητας σε Προ ήματα Μέτρησης

Ε νικό και Καποδιστριακό Πανεπιστήμιο Α ηνών. Δι οτομίες Πο υπ οκότητας σε Προ ήματα Μέτρησης Ε νικό και Καποδιστριακό Πανεπιστήμιο Α ηνών Τμήμα Μα ηματικών Μεταπτυ ιακό Πρό ραμμα Λο ικής και Θε ρίας Α ορί μ ν και Υπο ο ισμού Δι οτομίες Πο υπ οκότητας σε Προ ήματα Μέτρησης Διπ ματική Ερ ασία του

Διαβάστε περισσότερα

Tη λ.: +30 (210) Fax: +30 (210)

Tη λ.: +30 (210) Fax: +30 (210) ΕΠΕΝ ΥΣΗ ΣΙ Λ Ο ΠΟ Ρ Τ ΣΑΪ Α.Ε. ΟΙΚΟΝΟΜΙΚΕΣ ΚΑ Τ Α ΣΤ Α ΣΕΙΣ Γ ΙΑ Τ Η Ν Π Ρ Ω Τ Η Π ΕΡ ΙΟ Ο Α ΝΑ Β ΙΩ ΣΗ Σ Π ΟΥ ΕΛ Η Ξ Ε Τ Η Ν 31.12.005 30.11.2005 έ ω ς 31.12.2005 ΠΕΡΙΕΧΟΜΕΝΑ Έ κ θ η γ χ ο υ Ο ρ κ ω

Διαβάστε περισσότερα

Αρ έ ονα αρυτικά κύματα από τον κοσμο ο ικό π η ρισμό και CMB

Αρ έ ονα αρυτικά κύματα από τον κοσμο ο ικό π η ρισμό και CMB Ε ηνική Δημοκρατία Ε νικό και Καποδιστριακό Πανεπιστήμιο Α ηνών Πτυ ιακή Ερ ασία τμήματος Φυσικής Αρ έ ονα αρυτικά κύματα από τον κοσμο ο ικό π η ρισμό και CMB Πο υκράτης Γιώρ ος AM: 0100186 Επι έπον:

Διαβάστε περισσότερα

ΘΕΜΑ: ΔΙΑΡΘΡΩΤΙΚΑ ΧΑ ΡΑ ΚΤ ΗΡ ΙΣ ΤΙ ΚΑ ΤΗΣ ΑΝΕΡΓΙΑΣ - ΠΤΥΧΙΑΚΗ ΕΡΓΑ ΣΙ Α - ΚΑΡΑ ΣΑ ΒΒ ΟΓ ΠΟ Υ ΑΝ ΑΣΤΑΣΙΟΣ

ΘΕΜΑ: ΔΙΑΡΘΡΩΤΙΚΑ ΧΑ ΡΑ ΚΤ ΗΡ ΙΣ ΤΙ ΚΑ ΤΗΣ ΑΝΕΡΓΙΑΣ - ΠΤΥΧΙΑΚΗ ΕΡΓΑ ΣΙ Α - ΚΑΡΑ ΣΑ ΒΒ ΟΓ ΠΟ Υ ΑΝ ΑΣΤΑΣΙΟΣ ΤΕΧΝ Οη ΟΓ ΙΚ Ο Ε Κ ΠΟ ΙΔ ΕΥ ΤΙ ΚΟ ΙΔΡΥΜΟ ΚΟΒΟΠΑΕ ΕΧΟΠΗ ΔΙϋΙ ΚΗ ΕΗ Σ ΚΑΙ Ο Ι ΚΟΝΟΜΙΑΣ ΤΜΗΜΑ ηο ΓΙ ΣΤ ΙΚ ΗΣ ΘΕΜΑ: ΔΙΑΡΘΡΩΤΙΚΑ ΧΑ ΡΑ ΚΤ ΗΡ ΙΣ ΤΙ ΚΑ ΤΗΣ ΑΝΕΡΓΙΑΣ - ΠΤΥΧΙΑΚΗ ΕΡΓΑ ΣΙ Α - Καθηγητή ΚΑΡΑ ΣΑ ΒΒ

Διαβάστε περισσότερα

Ασφάλεια σε χώρους αναψυχής: Ένα σύστημα από έξυπνα αντικείμενα

Ασφάλεια σε χώρους αναψυχής: Ένα σύστημα από έξυπνα αντικείμενα Σχολή Επικοινωνίας και Μέσων Ενημέρωσης Πτυχιακή εργασία Ασφάλεια σε χώρους αναψυχής: Ένα σύστημα από έξυπνα αντικείμενα Εύρος Χριστοδούλου Λεμεσός, Μάιος 2018 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΕΠΙΚΟΙΝΩΝΙΑΣ

Διαβάστε περισσότερα

Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι.

Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι. Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. Ηλεκτρονικός οδηγός για τους φοιτητές ενός Α.Ε.Ι. Πτυχιιακή Εργασίία Φοιτητής: Δημήτριος Παπαοικονόμου ΑΜ: 36712

Διαβάστε περισσότερα

αναλυτικός απλός 1 Ο αναλυτικός βλέπει τον κόσμο σαν να αποτελείται από πολλά μικρά κομμάτια.

αναλυτικός απλός 1 Ο αναλυτικός βλέπει τον κόσμο σαν να αποτελείται από πολλά μικρά κομμάτια. αναλυτικός απλός 1 Ο αναλυτικός βλέπει τον κόσμο σαν να αποτελείται από πολλά μικρά κομμάτια. Σπάν άνια δέχ εται τα πράγ μα τα όπω πως είνα ναι. Θεω εωρε ρεί ότι όλα πρέπ έπει να τα ανα ναλύ ουμε εξο ξονυ

Διαβάστε περισσότερα

Προσοµοίωση Π ρ ο µ ο ί ω Μ η χ α ν ο ί Ε λ έ γ χ ο υ τ ο υ Χ ρ ό ν ο υ Φάσεις σο ση ς ισµ ιδάσκων: Ν ικό λ α ο ς Α µ π α ζ ή ς Φάσεις τ η ς π ρ ο σο µ ο ί ω ση ς i. Κατασκευή το υ µ ο ν τέ λ ο υ π ρ ο

Διαβάστε περισσότερα

Πρι τ αρακτηρ οτικ λαπλ ουοτηματα μικρ ετ εξεργατ δ π υ τ

Πρι τ αρακτηρ οτικ λαπλ ουοτηματα μικρ ετ εξεργατ δ π υ τ ι ε α τ Τ εγνα α α ετ κ λε τ υργικ ο τημα Η οτ ρ α τ υ αρ Γ ζε τ τη Φ λα δ α απ τ α φ ιτητ τ υ Πα ετ τημ υ τ υ λ νκ ξεκ νη ε αν μ α τ ρ τ Θε α να δημ υργηθε ακαλ τερ Ενα τ υ αμτ ρε ααντατ κρ ετα καλ τερα

Διαβάστε περισσότερα

Προσοµοίωση Ανάλυση Απ ο τ ε λε σµ άτ ω ν ιδάσκων: Ν ικό λ α ο ς Α µ π α ζ ή ς Ανάλυση Απ ο τ ε λε σµ άτ ω ν Τα απ ο τ ε λ έ σ µ ατ α απ ό τ η ν π αρ αγ ω γ ή κ αι τ η χ ρ ή σ η τ υ χ αί ω ν δ ε ι γ µ

Διαβάστε περισσότερα

ΣΥΜΒΑΣΗ ΜΕΤΑΞΥ ΠΑΡΟΧΟΥ ΚΑΤΑΡΤΙΣΗΣ- ΜΕΛΟΣ ΤΟΥ ΜΗΤΡΩΟΥ ΠΑΡΟΧΩΝ, ΩΦΕΛΟΥΜΕΝΟΥ- ΜΕΛΟΣ ΤΟΥ ΜΗΤΡΩΟΥ ΩΦΕΛΟΥΜΕΝΩΝ ΚΑΙ ΕΠΙΧΕΙΡΗΣΗΣ ΠΡΑΚΤΙΚΗΣ ΑΣΚΗΣΗΣ

ΣΥΜΒΑΣΗ ΜΕΤΑΞΥ ΠΑΡΟΧΟΥ ΚΑΤΑΡΤΙΣΗΣ- ΜΕΛΟΣ ΤΟΥ ΜΗΤΡΩΟΥ ΠΑΡΟΧΩΝ, ΩΦΕΛΟΥΜΕΝΟΥ- ΜΕΛΟΣ ΤΟΥ ΜΗΤΡΩΟΥ ΩΦΕΛΟΥΜΕΝΩΝ ΚΑΙ ΕΠΙΧΕΙΡΗΣΗΣ ΠΡΑΚΤΙΚΗΣ ΑΣΚΗΣΗΣ ΣΥΜΒΑΣΗ ΜΕΤΑΞΥ ΠΑΡΟΧΟΥ ΚΑΤΑΡΤΙΣΗΣ- ΜΕΛΟΣ ΤΟΥ ΜΗΤΡΩΟΥ ΠΑΡΟΧΩΝ, ΩΦΕΛΟΥΜΕΝΟΥ- ΜΕΛΟΣ ΤΟΥ ΜΗΤΡΩΟΥ ΩΦΕΛΟΥΜΕΝΩΝ ΚΑΙ ΕΠΙΧΕΙΡΗΣΗΣ ΠΡΑΚΤΙΚΗΣ ΑΣΚΗΣΗΣ Για τη Συμμετοχή σε Δράση με Αντικείμενο «Επιταγή Εισόδου στην

Διαβάστε περισσότερα

---------------------------------------------------------------------------------------- 1.1. --------------

---------------------------------------------------------------------------------------- 1.1. -------------- ΕΚΘΕΣΗ Τ Ο Υ Ι Ο Ι ΚΗΤ Ι ΚΟ Υ ΣΥ Μ Β Ο Υ Λ Ι Ο Υ Π Ρ Ο Σ Τ ΗΝ Τ Α ΚΤ Ι ΚΗ Γ ΕΝ Ι ΚΗ ΣΥ Ν ΕΛ ΕΥ ΣΗ Τ Ω Ν Μ ΕΤ Ο Χ Ω Ν Kύριοι Μ έ τ οχοι, Σ ύµ φ ω ν α µ ε τ ο Ν όµ ο κ α ι τ ο Κα τ α σ τ α τ ικ ό τ ης ε

Διαβάστε περισσότερα

ΚΩ ΔΙΚΟ Σ Δ Ε Ξ ΙΟ Τ Η Τ Α Φ ΥΣΗ ΔΕΞΙΟ ΤΗΤΑΣ. Ε λά χ ισ το ς α ρ ιθ μ ό ς α π α ιτο ύ μ εν ω ν δ εξιο τή τω ν : 11

ΚΩ ΔΙΚΟ Σ Δ Ε Ξ ΙΟ Τ Η Τ Α Φ ΥΣΗ ΔΕΞΙΟ ΤΗΤΑΣ. Ε λά χ ισ το ς α ρ ιθ μ ό ς α π α ιτο ύ μ εν ω ν δ εξιο τή τω ν : 11 Τ εύ χο ς Β' 2593/26.07.2 017 ΕΦΗΜΕΡΙΔΑ ΤΗΣ ΚΥΒΕΡΝΗΣΕΩΣ 26679 Π αράρτημα Β (δεν υπ ο β ά λλετα ι με τη ν αίτησ η) ΠΟΙΟΤΙΚΕΣ ΔΕΞΙΟ ΤΗΤΕΣ ΥΠΟΨΗΦ ΙΩΝ Ο Ρ Κ Ω ΤΩ Ν ΕΛΕΓΚΤΩ Ν ΛΟ ΓΙΣΤΩΝ ΚΩ ΔΙΚΟ Σ Δ Ε Ξ ΙΟ Τ

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ. Πτυχιακή εργασία ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Πτυχιακή εργασία ΑΝΑΠΤΥΞΗ ΕΙΚΟΝΙΚΗΣ ΠΛΑΤΦΟΡΜΑΣ ΠΡΟΣΟΜΟΙΩΣΗΣ ΤΗΣ ΠΑΡΑΜΟΡΦΩΣΗΣ ΑΝΘΡΩΠΙΝΟΥ ΗΠΑΤΟΣ ΜΕ ΤΗ ΧΡΗΣΗ ΑΠΤΙΚΟΥ ΜΕΣΟΥ Δηµήτρης Δούνας

Διαβάστε περισσότερα

Ε.Ε. Π α ρ.ι(i), Α ρ.3932, 10/12/2004 Ο ΠΕΡΙ ΚΟΙΜΗΤΗΡΙΩΝ (ΤΑΦΗ ΚΑΙ ΕΚΤΑΦΗ) ΝΟΜΟΣ. H Βουλή των Αντιπροσώπων ψηφίζει ως ακολούθως:

Ε.Ε. Π α ρ.ι(i), Α ρ.3932, 10/12/2004 Ο ΠΕΡΙ ΚΟΙΜΗΤΗΡΙΩΝ (ΤΑΦΗ ΚΑΙ ΕΚΤΑΦΗ) ΝΟΜΟΣ. H Βουλή των Αντιπροσώπων ψηφίζει ως ακολούθως: Ο ΠΕΡΙ ΚΟΙΜΗΤΗΡΙΩΝ (ΤΑΦΗ ΚΑΙ ΕΚΤΑΦΗ) ΝΟΜΟΣ H Βουλή των Αντιπροσώπων ψηφίζει ως ακολούθως: Συνοπτικός τίτλος. 1. Ο παρών Νόμος θα αναφέρεται ως ο περί Κοιμητηρίων (Ταφή και Εκταφή) Νόμος του 2004. ΜΕΡΟΣ

Διαβάστε περισσότερα

Tηλ.: +30 (210) Fax: +30 (210)

Tηλ.: +30 (210) Fax: +30 (210) ΕΤΗΣΙΑ Ο ΙΚ Ο Ν Ο Μ ΙΚ Η ΕΚ Θ ΕΣΗ ΤΗΣ Χ Ρ ΗΣΕΩ Σ Π Ο Υ ΕΛ ΗΞ Ε ΤΗΝ 31 η ΕΚ ΕΜ Β Ρ ΙΟ Υ 2009 ΤΗΣ Ν ΑΥ ΤΙΚ ΗΣ ΕΤΑΙΡ ΕΙΑΣ «ΝΑΥΣΙΚΑ» ΠΕΡΙΕΧΟΜΕΝΑ Ε Κ Θ Ε ΣΗ Τ Ο Υ Ι Ο Ι Κ Η Τ Ι Κ Ο Υ ΣΥ Μ Β Ο Υ Λ Ι Ο Υ Π Ρ

Διαβάστε περισσότερα

ΑΣΚΗΣΗ (γραμμικός προγραμματισμός) Μια εταιρεία χρησιμοποιεί δύο διαφορετικούς τύπους ζωοτροφών (τον τύπο Ι και τον τύπο ΙΙ), ως πρώτες ύλες, τις οποίες αναμιγνύει για την εκτροφή γαλοπούλων ώστε να πετύχει

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ

ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΕΘΝΙΚΟ ΜΕΤΣΟΒΙΟ ΠΟΛΥΤΕΧΝΕΙΟ ΣΧΟΛΗ ΕΦΑΡΜΟΣΜΕΝΩΝ ΜΑΘΗΜΑΤΙΚΩΝ ΚΑΙ ΦΥΣΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΤΟΜΕΑΣ ΦΥΣΙΚΗΣ ΕΡΓΑΣΤΗΡΙΟ ΠΕΙΡΑΜΑΤΙΚΗΣ ΦΥΣΙΚΗΣ ΥΨΗΛΩΝ ΕΝΕΡΓΕΙΩΝ ΑΝΑΠΤΥΞΗ ΣΥΣΤΗΜΑΤΟΣ DAQ ΓΙΑ ΤΗΛΕΣΚΟΠΙΟ MICROMEGAS ΜΕΤΑΠΤΥΧΙΑΚΗ

Διαβάστε περισσότερα

(RTS) & RTS 16. COBB DOUGLAS ( σ = 1 ) 24 (CES) 27 M2SM COBB DOUGLAS 28 ; 31 COBB DOUGLAS 33

(RTS) & RTS 16. COBB DOUGLAS ( σ = 1 ) 24 (CES) 27 M2SM COBB DOUGLAS 28 ; 31 COBB DOUGLAS 33 ΠΑΝΕΠΙΣΤΗΜΙΟ ΠΑΤΡΩΝ ΙΑΤΜΗΜΑΤΙΚΟ ΜΕ ΤΑΠ ΤΥ Χ ΙΑΚΟ ΠΡ ΟΓ Ρ ΑΜΜΑ ΣΠ ΟΥ Ω Ν ΜΑΘ ΗΜΑΤΙΚΑ ΤΩ Ν ΥΠ ΟΛ ΟΓ ΙΣ ΤΩ Ν ΚΑΙ ΤΩ Ν ΑΠ ΟΦ ΑΣ Ε Ω Ν ΘΕΩΡΙΑ ΠΑΡΑΓ ΩΓ Η Σ ΜΕΤΑΠΤΥΧΙΑΚΗ ΙΠΛ Ω Μ ΑΤΙΚΗ ΕΡ Γ ΑΣ ΙΑ ΑΙΚΑΤΕΡΙΝΗ ΝΙΚΑΚΗ

Διαβάστε περισσότερα

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΕΙΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΣ ΚΟΝΔΥΛΙΩΝ ΕΡΕΥΝΑΣ

ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΕΙΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΣ ΚΟΝΔΥΛΙΩΝ ΕΡΕΥΝΑΣ ANAΡΤΗΤΕΑ ΣΤΟ ΔΙΑΔΙΚΤΥΟ ΕΘΝΙΚΟ ΚΑΙ ΚΑΠΟΔΙΣΤΡΙΑΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΑΘΗΝΩΝ ΕΙΔΙΚΟΣ ΛΟΓΑΡΙΑΣΜΟΣ ΚΟΝΔΥΛΙΩΝ ΕΡΕΥΝΑΣ Αθήνα, 26/9/2012 ΠΡΟΣΚΛΗΣΗ ΕΚΔΗΛΩΣΗΣ ΕΝΔΙΑΦΕΡΟΝΤΟΣ ΓΙΑ ΥΠΟΒΟΛΗ ΠΡΟΤΑΣΗΣ ΓΙΑ ΚΑΤΑΡΤΙΣΗ ΣΥΜΒΑΣΗΣ

Διαβάστε περισσότερα

Σύστημα ψηφιακής επεξεργασίας ακουστικών σημάτων με χρήση προγραμματιζόμενων διατάξεων πυλών. Πτυχιακή Εργασία. Φοιτητής: ΤΣΟΥΛΑΣ ΧΡΗΣΤΟΣ

Σύστημα ψηφιακής επεξεργασίας ακουστικών σημάτων με χρήση προγραμματιζόμενων διατάξεων πυλών. Πτυχιακή Εργασία. Φοιτητής: ΤΣΟΥΛΑΣ ΧΡΗΣΤΟΣ Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. Σύστημα ψηφιακής επεξεργασίας ακουστικών σημάτων με χρήση προγραμματιζόμενων διατάξεων πυλών. Πτυχιακή Εργασία Φοιτητής:

Διαβάστε περισσότερα

Ειδικά Συστήματα Ε έ ου Π οίου ( ) Ανασκόπηση Συστημάτ ν Ε έ ου. Δρ. Γεώρ ιος Παπα άμπρου

Ειδικά Συστήματα Ε έ ου Π οίου ( ) Ανασκόπηση Συστημάτ ν Ε έ ου. Δρ. Γεώρ ιος Παπα άμπρου Ειδικά Συστήματα Ε έ ου Π οίου (8.3.45.8) Ανασκόπηση Συστημάτ ν Ε έ ου Δρ. Γεώρ ιος Παπα άμπρου ΠΕΡΙΕΧΟΜΕΝΑ 2 Δρ. Γεώρ ιος Παπα άμπρου Λέκτορας ΕΜΠ Ερ αστήριο Ναυτικής Μη ανο ο ίας Σ ο ή Ναυπη ών Μη ανο

Διαβάστε περισσότερα

14/5/ /12/ /5/ /5/2007

14/5/ /12/ /5/ /5/2007 ΜΕΤΑΦΟΡΙΚΕΣ ΕΠ ΙΧ ΕΙΡΗ ΣΕΙΣ FINDA Α.Ε. ΕΤΗΣΙΕΣ Ο ΙΚ Ο Ν Ο Μ ΙΚ ΕΣ Κ Α ΤΑ ΣΤΑ ΣΕΙΣ ΣΥ Μ Φ Ω Ν Α Μ Ε ΤΑ ΙΕΘ Ν Η Π Ρ Ο ΤΥ Π Α Χ Ρ ΗΜ Α ΤΟ Ο ΙΚ Ο Ν Ο Μ ΙΚ ΗΣ Π Λ ΗΡ Ο Φ Ο Ρ ΗΣΗΣ ΤΗΣ Χ Ρ ΗΣΗΣ Π Ο Υ ΕΛ ΗΞ Ε

Διαβάστε περισσότερα

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΓΕΩΤΕΧΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ. Πτυχιακή εργασία

ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΓΕΩΤΕΧΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ. Πτυχιακή εργασία ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΓΕΩΤΕΧΝΙΚΩΝ ΕΠΙΣΤΗΜΩΝ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗΣ ΠΕΡΙΒΑΛΛΟΝΤΟΣ Πτυχιακή εργασία ΠΡΟΣΔΙΟΡΙΣΜΟΣ ΔΕΙΚΤΩΝ ΚΑΤΑΝΑΛΩΣΗΣ ΕΝΕΡΓΕΙΑΣ ΣΤΑ ΑΝΤΛΙΟΣΤΑΣΙΑ ΤΟΥ ΤΜΗΜΑΤΟΣ ΑΝΑΠΤΥΞΕΩΣ ΥΔΑΤΩΝ Γεωργίου

Διαβάστε περισσότερα

Α Α Α Α Α Α Α Α Α Α Α Ο

Α Α Α Α Α Α Α Α Α Α Α Ο 3ω η Α Α Α Α Α Α Α Α Α Α Α Α Α Ο 9/5/2014 Ο Α Α Α ιο οιώ ας α α α ά ω α αθέ α α οσ αθήσ α α α ήσ σ α ω ή α α ο α ο ο θού : Ο Α Ο Α Α «Π ι ὸ Τὲ ὑ ὑ ῖ ὑ ὶ ὰ Τ Τ ὶ ὺ Τ» (DK 14.7) Α «ὴ ὑ ὶ ὺ Τ ὑ Τ Τ ὑ Τῆ ῖ

Διαβάστε περισσότερα

Θέ α: ωσ ή ια ροφή και άσκηση ια ο ς εφήβο ς.

Θέ α: ωσ ή ια ροφή και άσκηση ια ο ς εφήβο ς. 4ο Ε Α α ο σίο Α' ίο 4-2015 ρε νη ική ρ ασία Θέ α: ωσ ή ια ροφή και άσκηση ια ο ς εφήβο ς. 4η Ο ά α 1ο Τ τ ά η ο Y ο ώτη α: ι ές α ές άσ ησης ια ο ς φήβο ς. Γενικές αρχές άσκησης: Εί η Άσ ησης Ια ι ός

Διαβάστε περισσότερα

Περιεχόµ εν α. Εισαγω γή. Επ ισκόπ ηση υπ ο βο λής φακέλω ν (IUCLID 5) Επ ισκόπ ηση υπ ο βο λής φακέλω ν (Reach-IT) Ερω τήσεις καιαπ αν τήσεις

Περιεχόµ εν α. Εισαγω γή. Επ ισκόπ ηση υπ ο βο λής φακέλω ν (IUCLID 5) Επ ισκόπ ηση υπ ο βο λής φακέλω ν (Reach-IT) Ερω τήσεις καιαπ αν τήσεις Περιεχόµ εν α Εισαγω γή Επ ισκόπ ηση υπ ο βο λής φακέλω ν (IUCLID 5) Επ ισκόπ ηση υπ ο βο λής φακέλω ν (Reach-IT) Ερω τήσεις καιαπ αν τήσεις Συµ π εράσµ ατα καιµ ελλο ν τικά διαδικτυακά σεµ ιν άρια http://echa.europa.eu

Διαβάστε περισσότερα

LAFARGE BETON A.B.E.E

LAFARGE BETON A.B.E.E ΕΤΗΣΙΑ Ο ΙΚ Ο Ν Ο Μ ΙΚ Η ΕΚ Θ ΕΣΗ ΤΗΣ Χ Ρ ΗΣΗΣ Π Ο Υ ΕΛ ΗΞ Ε ΤΗΝ 31 ΕΚ ΕΜ ΒΡ ΙΟ Υ 2012 ΤΗΣ ΕΤΑΙΡ ΙΑΣ LAFARGE BETON Α.Β.Ε.Ε LAFARGE BETON A.B.E.E ΑΡ. Γ.Ε.Μ Η.: 000236501000 19,3 χ λµ Λ εω φ. Μ αρ κο πο

Διαβάστε περισσότερα

ΘΕΜΑ: Οδηγίες για την αποστολή στοιχείων απλήρωτων υποχρεώσεων & ληξιπρόθεσµων οφειλών του Προγράµµατος ηµοσίων Επενδύσεων

ΘΕΜΑ: Οδηγίες για την αποστολή στοιχείων απλήρωτων υποχρεώσεων & ληξιπρόθεσµων οφειλών του Προγράµµατος ηµοσίων Επενδύσεων Αθήνα, 27/11/2012 Αρ.Πρ:50858/ Ε6152 ΕΛΛΗΝΙΚΗ ΗΜΟΚΡΑΤΙΑ ΥΠΟΥΡΓΕΙΟ ΑΝΑΠΤΥΞΗΣ, ΑΝΤΑΓΩΝΙΣΤΙΚΟΤΗΤΑΣ, ΥΠΟ ΟΜΩΝ, ΜΕΤΑΦΟΡΩΝ & ΙΚΤΥΩΝ ΓΕΝΙΚΗ ΓΡΑΜΜΑΤΕΙΑ ΗΜΟΣΙΩΝ ΕΠΕΝ ΥΣΕΩΝ - ΕΣΠΑ ΓΕΝΙΚΗ ΙΕΥΘΥΝΣΗ ΑΝΑΠΤΥΞΙΑΚΟΥ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ

Διαβάστε περισσότερα

Πλασμονικές Οργανικές Δίοδοι Εκπομπής Φωτός Υψηλής Απόδοσης

Πλασμονικές Οργανικές Δίοδοι Εκπομπής Φωτός Υψηλής Απόδοσης Ανώτατο Εκπαιδευτικό Ίδρυμα Πειραιά Τεχνολογικού Τομέα Τμήμα Ηλεκτρονικών Μηχανικών Τ.Ε. Πλασμονικές Οργανικές Δίοδοι Εκπομπής Φωτός Υψηλής Απόδοσης Πτυχιακή Εργασία Φοιτήτρια: Μακρή Δέσποινα ΑΜ: 43059

Διαβάστε περισσότερα

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος

Λύβας Χρήστος Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος ΛΕΙΤΟΥΡΓΙΚΑ ΣΥΣΤΗΜΑΤΑ IΙ Λύβας Χρήστος chrislibas@ssl-unipi.gr Αρχική επιµέλεια Πιτροπάκης Νικόλαος και Υφαντόπουλος Νικόλαος >_ ΣΥΝΑΡΤΗΣΕΙΣ ΣΤΗ C (1/3) +- Στη C χρησιμοποιούμε συχνα τις συναρτήσεις (functions),

Διαβάστε περισσότερα

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5

Περιεχόµενα. 1 Εισαγωγή στις οµές εδοµένων 3. 2 Στοίβα (Stack) 5 Περιεχόµενα 1 Εισαγωγή στις οµές εδοµένων 3 2 Στοίβα (Stack) 5 i ΠΕΡΙΕΧΟΜΕΝΑ ΠΕΡΙΕΧΟΜΕΝΑ ii Πληροφορίες Εργαστηρίου Σκοπός του εργαστηρίου Το εργαστήριο οµές εδοµένων αποσκοπεί στην εφαρµογή των τεχνολογιών

Διαβάστε περισσότερα

Fax: +30 (210)

Fax: +30 (210) ΕΤΗΣΙΑ Ο ΙΚ Ο Ν Ο Μ ΙΚ Η ΕΚ Θ ΕΣΗ ΤΗΣ Χ Ρ ΗΣΕΩ Σ Π Ο Υ ΕΛ ΗΞ Ε ΤΗΝ 31η ΕΚ ΕΜ Β Ρ ΙΟ Υ 2011 ΤΗΣ Ν ΑΥ ΤΙΚ ΗΣ ΕΤΑΙΡ ΙΑΣ «ΑΝ ΡΕΑΣ Χ ΑΤ Ζ Η Κ Υ ΡΙ ΑΚ Ο Σ» ΠΕΡΙΕΧΟΜΕΝΑ Σελ. Ε Κ Θ Ε ΣΗ Τ Ο Υ Ι Ο Ι Κ Η Τ Ι Κ Ο

Διαβάστε περισσότερα

þÿ¼ ½ ±Â : ÁÌ» Â Ä Å ÃÄ ²µ þÿä Å ÃÇ»¹º Í Á³ Å

þÿ¼ ½ ±Â : ÁÌ» Â Ä Å ÃÄ ²µ þÿä Å ÃÇ»¹º Í Á³ Å Neapolis University HEPHAESTUS Repository School of Economic Sciences and Business http://hephaestus.nup.ac.cy Master Degree Thesis 2015 þÿ ½»Åà Äɽ µ½½ ¹Î½ Ä Â þÿ±¾¹»ì³ à  º±¹ Ä Â þÿ±à ĵ»µÃ¼±Ä¹ºÌÄ Ä±Â

Διαβάστε περισσότερα

ΣΧΕΔΙΑΣΜΟΣ ΕΠΙΓΕΙΟΥ ΣΥΣΤΗΜΑΤΟΣ ΑΛΥΣΟΚΙΝΗΣΗΣ ΓΙΑ ΜΕΤΑΦΟΡΑ ΤΡΟΛΕΪ

ΣΧΕΔΙΑΣΜΟΣ ΕΠΙΓΕΙΟΥ ΣΥΣΤΗΜΑΤΟΣ ΑΛΥΣΟΚΙΝΗΣΗΣ ΓΙΑ ΜΕΤΑΦΟΡΑ ΤΡΟΛΕΪ ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ ΚΥΠΡΟΥ ΣΧΟΛΗ ΜΗΧΑΝΙΚΗΣ ΚΑΙ ΤΕΧΝΟΛΟΓΙΑΣ Πτυχιακή εργασία ΣΧΕΔΙΑΣΜΟΣ ΕΠΙΓΕΙΟΥ ΣΥΣΤΗΜΑΤΟΣ ΑΛΥΣΟΚΙΝΗΣΗΣ ΓΙΑ ΜΕΤΑΦΟΡΑ ΤΡΟΛΕΪ Μάριος Σταυρίδης Λεμεσός, Ιούνιος 2017 ΤΕΧΝΟΛΟΓΙΚΟ ΠΑΝΕΠΙΣΤΗΜΙΟ

Διαβάστε περισσότερα

Φ. 12 / 620 / /Γ Ισ : Τη : &

Φ. 12 / 620 / /Γ Ισ :  Τη : & Να δ ι α τ η ρ η θ ε ί µ έ χ ρ ι Β α θ µ ό ς α σ φ α λ ε ί α ς Ο Υ Υ Β Υ Μ Θ Μ Σ Σ Μ Β Μ Β Μ Σ Θ Υ Σ Υ Β Μ Σ κ α ι χ σ η π α ν δ ρ έ ο υ λ η Μ α ρ ο ύ σ ι τ ο σ ε λ ί δ α η ρ ο φ ο ρ ί ε ς π α χ ρ ή σ

Διαβάστε περισσότερα

( THN & JEAN-ROCH LICARI . 05AV

( THN & JEAN-ROCH LICARI . 05AV ΕΤΗΣΙΕΣ Ο ΙΚ Ο Ν Ο Μ ΙΚ ΕΣ Κ Α ΤΑ ΣΤΑ ΣΕΙΣ ΣΥ Μ Φ Ω Ν Α Μ Ε ΤΑ ΙΕΘ Ν Η Π Ρ Ο ΤΥ Π Α Χ Ρ ΗΜ Α ΤΟ Ο ΙΚ Ο Ν Ο Μ ΙΚ ΗΣ Π Λ ΗΡ Ο Φ Ο Ρ ΗΣΗΣ ΤΗΣ ΕΤΑ ΙΡ ΙΑ Σ Ε.Β Ι.Ε.Σ Κ. Α.Ε. ΤΗΣ 31η ΕΚ ΕΜ Β Ρ ΙΟ Υ 2006 ΠΕΡΙΕΧΟΜΕΝΑ

Διαβάστε περισσότερα

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006

ΚΥΠΡΙΑΚΗ ΕΤΑΙΡΕΙΑ ΠΛΗΡΟΦΟΡΙΚΗΣ CYPRUS COMPUTER SOCIETY ΠΑΓΚΥΠΡΙΟΣ ΜΑΘΗΤΙΚΟΣ ΔΙΑΓΩΝΙΣΜΟΣ ΠΛΗΡΟΦΟΡΙΚΗΣ 6/5/2006 Οδηγίες: Να απαντηθούν όλες οι ερωτήσεις. Ολοι οι αριθμοί που αναφέρονται σε όλα τα ερωτήματα είναι μικρότεροι το 1000 εκτός αν ορίζεται διαφορετικά στη διατύπωση του προβλήματος. Διάρκεια: 3,5 ώρες Καλή

Διαβάστε περισσότερα

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση:

Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση: Οργάνωση ενός σύγχρονου Υπολογιστικού Συστήματος ή Ηλεκτρονικού Υπολογιστή (Η/Υ) Τα σύγχρονα συστήματα Η/Υ έχουν την παρακάτω οργάνωση: Page 1 Χρήστης Εφαρμογή Λειτουργικό Σύστημα Υλικό Γνωστά Λειτουργικά

Διαβάστε περισσότερα

1. ΑΝΟΙΞΤΕ ΤΗ ΒΑΣΗ Ε ΟΜΕΝΩΝ ΠΟΥ ΕΧΕΤΕ ΦΤΙΑΞΕΙ ΣΤΟ ΠΡΟΗΓΟΥΜΕΝΟ ΜΑΘΗΜΑ 6 COMPANY ONE (ΑΠΟ ΕΧΘΕΙΤΕ ΑΝ ΧΡΕΙΑΖΕΤΑΙ ΤΗΝ ΠΡΟΕΙ ΟΠΟΙΗΣΗ ΑΣΦΑΛΕΙΑΣ).

1. ΑΝΟΙΞΤΕ ΤΗ ΒΑΣΗ Ε ΟΜΕΝΩΝ ΠΟΥ ΕΧΕΤΕ ΦΤΙΑΞΕΙ ΣΤΟ ΠΡΟΗΓΟΥΜΕΝΟ ΜΑΘΗΜΑ 6 COMPANY ONE (ΑΠΟ ΕΧΘΕΙΤΕ ΑΝ ΧΡΕΙΑΖΕΤΑΙ ΤΗΝ ΠΡΟΕΙ ΟΠΟΙΗΣΗ ΑΣΦΑΛΕΙΑΣ). ΜΑΘΗΜΑ 9 ο ΕΚΘΕΣΕΙΣ Α. ΗΜΙΟΥΡΓΙΑ ΕΚΘΕΣΗΣ ΜΕ Ο ΗΓΟ 1. ΑΝΟΙΞΤΕ ΤΗ ΒΑΣΗ Ε ΟΜΕΝΩΝ ΠΟΥ ΕΧΕΤΕ ΦΤΙΑΞΕΙ ΣΤΟ ΠΡΟΗΓΟΥΜΕΝΟ ΜΑΘΗΜΑ 6 COMPANY ONE (ΑΠΟ ΕΧΘΕΙΤΕ ΑΝ ΧΡΕΙΑΖΕΤΑΙ ΤΗΝ ΠΡΟΕΙ ΟΠΟΙΗΣΗ ΑΣΦΑΛΕΙΑΣ). 2. ΠΑΤΗΣΤΕ

Διαβάστε περισσότερα

Θεωρι α Γραφημα των 2η Δια λεξη

Θεωρι α Γραφημα των 2η Δια λεξη Θεωρι α Γραφημα των 2η Δια λεξη Α. Συμβω νης Ε Μ Π Σ Ε Μ Φ Ε Τ Μ Φεβρουα ριος 2015 Α. Συμβω νης (ΕΜΠ) Θεωρι α Γραφημα των 2η Δια λεξη Φεβρουα ριος 2015 23 / 47 Βαθμοι Κορυφω ν Βαθμός κορυφής: d G (v) =

Διαβάστε περισσότερα

Α ιθ EL. 3. Κα ασ ασ ής: fischerwerke GmbH & Co. KG, Klaus-Fischer-Straße 1, Waldachtal, α ία. Tumlingen,

Α ιθ EL. 3. Κα ασ ασ ής: fischerwerke GmbH & Co. KG, Klaus-Fischer-Straße 1, Waldachtal, α ία. Tumlingen, Η ΩΣΗ ΠΙ ΟΣ Ω Α ιθ. 0020 EL 1. Μο α ι ός ω ι ός α ο οί σ ς ο ύ ο ο οϊό ος: fischer η ώ α ο ώ α ύ ιο FH II, FH II-I 2. Π οβ ό - ς χ ήσ - ις : Π οϊό Α ύ ιο ιασ ο ής χό ς α ό ο ι έ η/ ς ήση/ ις ω σ έ ω σ

Διαβάστε περισσότερα

Πτερυγιοφόροι σωλήνες

Πτερυγιοφόροι σωλήνες ΛΕΒΗΤΕΣ ΑΤΜΟΥ Πτερυγιοφόροι σωλήνε ΑΤΜΟΛΕΒΗΤΕΣ Εύκολη λειτουργία και συντήρηση Για όλου του τύπου καυήρων και καυσίµων Ο οπίσθιο θάλαµο αναροφή καυσαερίων είναι λυόµενο, γεγονό που επιτρέπει τον πλήρη

Διαβάστε περισσότερα

ΤΜΗΜΑ ΦΩΚΑ/ΤΕΤΑΡΤΗ

ΤΜΗΜΑ ΦΩΚΑ/ΤΕΤΑΡΤΗ ΤΜΗΜΑ ΦΩΚΑ/ΤΕΤΑΡΤΗ 09.00 -.00 5 ZE MI WA 0 0 0 9 0,95 9 ΑΓ ΓΕ ΠΑ 0 0 0 0 0 0 95 ΑΔ ΡΟ ΙΩ 0 0 0 0 0 0 97 ΑΙ ΚΩ ΠΑ 0 0 0 0 0 0 5 507 ΑΛ ΕΥ ΤΖ 0 0 0 0 0 0 6 99 ΑΝ ΟΡ ΚΩ 7 5 0 0 0,65 7 95 ΑΝ ΙΩ ΟΡ 9 9 9 6

Διαβάστε περισσότερα