Ανάπτυξη Windows 8 Store Εφαρμογής «Imageneering»



Σχετικά έγγραφα
Εισαγωγή στην Πληροφορική

Κεφάλαιο 1.6: Συσκευές αποθήκευσης

12/5/18. συστημάτων. Το λογισµικό συστηµάτων. Κεφάλαιο 5

Λιβανός Γιώργος Εξάμηνο 2017Β

Οδηγός των Ελληνικών Microsoft WINDOWS 7

Λειτουργικά. Τεχνολογικό Εκπαιδευτικό Ίδρυμα Δυτικής Μακεδονίας Σιώζιος Κων/νος - Πληροφορική Ι

Εφαρμογές Υπολογιστών. Κεφάλαιο 4 Λογισμικό Συστήματος

Αρχιτεκτονική Υπολογιστών

Ενότητα 1η. Εισαγωγή στην Πληροφορική

Ενημέρωση σε Windows 8.1 από τα Windows 8

F-Secure Anti-Virus for Mac 2015

Παραδείγματα Δεδομένων: Οι τιμές στο κυλικείο, μια λίστα από ονόματα, τα σήματα της τροχαίας.

Μαλούτα Θεανώ Σελίδα 1

Ει ναι τα Windows που γνωρι ζετε, αλλα καλυ τερα

Προγραμματισμός Διαχείρισης Συστημάτων Ι

Οδηγός γρήγορης εκκίνησης του PowerSuite

Εισαγωγή 6. Tα πολλά πρόσωπα των απειλών για το PC 8. Οι βασικές ρυθμίσεις ασφαλείας στα Windows 18. Προστασία από το Malware με το Avast Antivirus 34

ΚΕΦΑΛΑΙΟ 5. Κύκλος Ζωής Εφαρμογών ΕΝΟΤΗΤΑ 2. Εφαρμογές Πληροφορικής. Διδακτικές ενότητες 5.1 Πρόβλημα και υπολογιστής 5.2 Ανάπτυξη εφαρμογών

Οδηγός αναβάθμισης των Windows 8 βήμα προς βήμα ΕΜΠΙΣΤΕΥΤ ΚΟ 1/53

Microsoft Excel Κεφάλαιο 1. Εισαγωγή. Βιβλίο εργασίας

1. ΕΙΣΑΓΩΓΗ 2. ΠΕΡΙΓΡΑΦΗ

Ο Οδηγός γρήγορης εκκίνησης

Λειτουργικά Συστήματα Ι. Καθηγήτρια Παπαδάκη Αναστασία

Κεφάλαιο 1: Έναρξη...3

Κεφάλαιο 13: : Εφαρμογές νέφους. Καραμαούνας Π. 1

Κεφάλαιο 3.1: Λειτουργικά Συστήματα. Επιστήμη ΗΥ Κεφ. 3.1 Καραμαούνας Πολύκαρπος

Σημειώσεις : Χρήστος Μουρατίδης. Κάντε κλικ για έναρξη

Με την ολοκλήρωση της διαδικασίας μπορούμε αν θέλουμε να επιλέξουμε να ανοίξει ή όχι η εφαρμογή που έχει εγκατασταθεί.

Τεχνικές σχεδίασης προγραμμάτων, Προγραμματιστικά Περιβάλλοντα

Unity Editor #04 Κεντρικό Μενού: Edit, Unity Preferences

ΚΕΦΑΛΑΙΟ 2 - ΛΟΓΙΣΜΙΚΟ

Οδηγός αναβάθμισης των Windows 8 βήμα προς βήμα ΕΜΠΙΣΤΕΥΤΙΚΟ 1/53

Εισαγωγή στην Πληροφορική

Πως μπορούν τα μέρη του υλικού ενός υπολογιστή να επικοινωνούν και να συνεργάζονται μεταξύ τους; Επειδή ακολουθούν συγκεκριμένες οδηγίες (εντολές).

Προγραμματισμός Ι (HY120)

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

Ημερομηνία Παράδοσης: 4/4/2013

Κεφάλαιο 4. Διδακτικοί Στόχοι. Για την αναγκαιότητα, τον τρόπο συνεργασίας, τις δυνατότητες και τον τρόπο εγκατάστασης των περιφερειακών συσκευών.

Κεφάλαιο 3. Διδακτικοί Στόχοι

Σχεδιαστικά Προγράμματα Επίπλου

Συστήματα Τηλεκπαίδευσης

ΜΑΘΗΜΑ 3 MULTIPLE CHOICE

Αρχιτεκτονική Υπολογιστών

APP INVENTOR ΟΔΗΓΟΣ 8 Οκτωβρίου 2018

Συστήματα Τηλεκπαίδευσης

ΜΕΛΕΤΗ ΣΧΕΔΙΑΣΗ ΕΦΑΡΜΟΓΗΣ ΣΕ ΥΠΟΛΟΓΙΣΤΙΚΟ ΝΕΦΟΣ (CLOUD COMPUTING) ΜΕ ΕΜΦΑΣΗ ΣΤΗΝ ΚΑΤΑΣΚΕΥΗ ΔΕΝΤΡΩΝ.

- Εισαγωγή - Επίπεδα μνήμης - Ολοκληρωμένα κυκλώματα μνήμης - Συσκευασίες μνήμης προσωπικών υπολογιστών

Ανάπτυξη πλήρους διαδικτυακής e-commerce εφαρμογής με χρήση του CMS WordPress

ΕΙΣΑΓΩΓΗ ΣΤΟ ΛΕΙΤΟΥΡΓΙΚΟ ΣΥΣΤΗΜΑ Microsoft WINDOWS (95-98-NT-2000-XP)

ANDROID Προγραμματισμός Εφαρμογών

Εισαγωγή στην Πληροφορική

Σχεδιάζοντας Εφαρμογές για το Διαδίκτυο

Τα περιεχόμενα με μια ματιά

Κεφάλαιο 2.4: Εργασία με εικονίδια

Εργαστήριο Λειτουργικών Συστημάτων 8o εξάμηνο, Ροή Υ, ΗΜΜΥ

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

ΕΓΧΕΙΡΙΔΙΟ ΜΑΘΗΤΗ. της Πλατφόρμας Τηλεκατάρτισης

Π Ε Ρ Ι Ε Χ Ο Μ Ε Ν Α

Στοιχειώδης προγραμματισμός σε C++

Εργαλεία ανάπτυξης εφαρμογών internet Ι

SharePoint Online. Δημιουργήστε μια τοποθεσία ή μια δημοσίευση ειδήσεων. Αναζήτηση Βρείτε Τοποθεσίες, Άτομα ή Αρχεία.

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

ΜΑΘΗΜΑ 3 ΛΟΓΙΣΜΙΚΟ (SOFTWARE)

Οδηγός Βήμα-Βήμα για να εγκαταστήσετε τα Windows 7 στον Η/Υ σας

Μέρος 3 ο : Βασικές Έννοιες για δυναμικές ιστοσελίδες

Προγραμματισμός Υπολογιστών με C++

Λειτουργικά Συστήματα Ι. Κεφάλαιο 1 Βασικές Έννοιες Λειτουργικών Συστημάτων

ΕΠΙΜΕΛΕΙΑ: ΚΩΣΤΑΣ ΔΕΛΗΜΑΡΗΣ - ΧΡΗΣΗ ΗΥ ΚΑΙ ΔΙΑΧΕΙΡΙΣΗ ΑΡΧΕΙΩΝ

ΟΔΗΓΟΣ ΓΡΗΓΟΡΗΣ ΕΝΑΡΞΗΣ

Κεφάλαιο 4: Λογισμικό Συστήματος

Διαφορές single-processor αρχιτεκτονικών και SoCs

Κατανεμημένα Συστήματα

Τι χρειάζεται ένας φοιτητής για τη σωστή παρακολούθηση και συμμετοχή στο μαθημα;

Κεφάλαιο 5Β (επανάληψη) Εισαγωγή στην Πληροφορική. Τυπικοί χρόνοι πρόσβασης. Μέσος χρόνος πρόσβασης. Ταχύτητα µεταφοράς δεδοµένων

Εφαρμογή Ηλεκτρονικής Διαχείρισης Μετεγγραφών

Προγραμματισμός H/Y Ενότητα 1: Εισαγωγή. Επικ. Καθηγητής Συνδουκάς Δημήτριος Τμήμα Διοίκησης Επιχειρήσεων (Γρεβενά)

ΠΛΗΡΟΦΟΡΙΚΗ Ι ΕΡΓΑΣΤΗΡΙΟ 1. Θέμα εργαστηρίου: Εισαγωγή στην Python και στο IDLE

11/1/18. Κεφάλαιο 2. Κατανόηση των ψηφιακών εξαρτηµάτων. Εξέταση του υπολογιστή: Από τι αποτελείται. Στόχοι. Κατανόηση του υπολογιστή σας

Ανάπτυξη Διεπαφών Χρήστη σε Λειτουργικά Συστήματα Κινητών Συσκευών

Σχολ.έτος Κεφάλαιο 5 ο Γνωριμία με το Λογισμικό του Υπολογιστή.

DreamSpark. Τώρα λοιπόν που μάθατε περι τίνος πρόκειται, ας δούμε πώς μπορεί κάποιος να κατεβάσει λογισμικό από το site του DreamSpark.

Οδηγός Εγκατάστασης και Χρήσης του Arebas Easy

ΕΙΣΑΓΩΓΗ ΣΤΗΝ ΤΗΛΕΠΛΗΡΟΦΟΡΙΚΗ

Ενότητα Β1 κεφ.2 ο «Σο Εσωτερικό του Τπολογιστή»

ΕΡΓΑΣΤΗΡΙΟ 3: Προγραμματιστικά Περιβάλλοντα και το Πρώτο Πρόγραμμα C

ΤΕΧΝΟΛΟΓΙΕΣ ΣΧΕΔΙΑΣΗΣ ΔΙΑΔΙΚΤΥΑΚΟΥ ΤΟΠΟΥ (Web Site Design Technologies)

Phishing, Ιοί και Πειρατεία Λογισμικού Ηλεκτρονικών υπολογιστών

Συνοπτικό εγχειρίδιο χρήσης του Microsoft Visual Studio 2010

Περιεχόμενα. Visio / White paper 1

ΕΦΑΡΜΟΓΕΣ ΠΛΗΡΟΦΟΡΙΚΗΣ. Α Γενικού Λυκείου (Μάθημα Επιλογής)

Προσωπικό Παροχής Υπηρεσιών Ασφαλείας με Χρήση X-RAY (Ελεγκτές Ασφαλείας)

Πρόλογος... 7 ΕΙΔΙΚΟΣ ΕΦΑΡΜΟΓΩΝ ΠΛΗΡΟΦΟΡΙΚΗΣ

Εισαγωγή στον Προγραμματισμό

ΚΕΦΑΛΑΙΟ 2 ΛΟΓΙΣΜΙΚΟ

Ιστορική Αναδρομή Λειτουργικών Συστημάτων (ΛΣ) Εισαγωγή : ο πυρήνας (kernel) / ο φλοιός (shell) Β ΕΠΑΛ

Δυνατότητες και πλεονεκτήματα του Office 2010 Έκδοση για οικιακή χρήση και μαθητές

Εικόνα. Τεχνολογία Πολυμέσων και Πολυμεσικές Επικοινωνίες 05-1

2 Αποδοτική εργασία στα Windows Vista 103

Ενσωματωμένα controls τα οποία προσαρμόζονται και χρησιμοποιούνται σε οποιαδήποτε ιστοσελίδα επιλέγει ο φορέας.

Μάθημα 10 ο ΔΙΑΧΕΙΡΙΣΗ ΕΙΣΟΔΟΥ ΕΞΟΔΟΥ (INPUT/OUTPUT)

Transcript:

ΑΤΕΙ ΘΕΣΣΑΛΙΑΣ ΣΧΟΛΗ ΤΕΧΝΟΛΟΓΙΚΩΝ ΕΦΑΡΜΟΓΩΝ Τμήμα Μηχανικών Πληροφορικής ΤΕ Ανάπτυξη Windows 8 Store Εφαρμογής «Imageneering» ΠΤΥΧΙΑΚΗ ΕΡΓΑΣΙΑ Μητσός Ιωάννης (ΑΜ: Τ01109) Μπαζίμας Σωτήριος (ΑΜ: Τ02730) Επιβλέπων: <Ιατρέλης Όμηρος, Καθηγητής εφαρμογών> ΛΑΡΙΣΑ 2014

«Εμείς, οι Μητσός Ιωάννης και Μπαζίμας Σωτήριος, δηλώνουμε υπεύθυνα ότι η παρούσα Πτυχιακή Εργασία με τίτλο Imageneering είναι δική μας και βεβαιώνουμε ότι: Σε όσες περιπτώσεις έχουμε συμβουλευτεί δημοσιευμένη εργασία τρίτων, αυτό επισημαίνεται με σχετική αναφορά στα επίμαχα σημεία. Σε όσες περιπτώσεις μεταφέρουμε λόγια τρίτων, αυτό επισημαίνεται με σχετική αναφορά στα επίμαχα σημεία. Με εξαίρεση τέτοιες περιπτώσεις, το υπόλοιπο κείμενο της πτυχιακής αποτελεί δική μας δουλειά. Αναφέρουμε ρητά όλες τις πηγές βοήθειας που χρησιμοποιήσαμε. Σε περιπτώσεις που τμήματα της παρούσας πτυχιακής έγιναν από κοινού με τρίτους, αναφέρουμε ρητά ποια είναι η δική μας συνεισφορά και ποια των τρίτων. Γνωρίζω πως η λογοκλοπή αποτελεί σοβαρότατο παράπτωμα και είμαστε ενήμεροι για την επέλευση των νόμιμων συνεπειών» < υπογραφή > < Μητσός Ιωάννης > < υπογραφή > < Μπαζίμας Σωτήριος >

Εγκρίθηκε από την τριμελή εξεταστική επιτροπή Τόπος: Ημερομηνία: ΕΠΙΤΡΟΠΗ ΑΞΙΟΛΟΓΗΣΗΣ 1. 2. 3.

Περίληψη Στην παρούσα πτυχιακή εργασία αναπτύξαμε μια windows 8 store εφαρμογή. Η τρέχουσα εφαρμογή μας δίνει την δυνατότητα να εφαρμόζουμε μια πληθώρα φίλτρων σε φωτογραφίες, οι οποίες προέρχονται από τη συλλογή του χρήστη είτε από το OneDrive του ακόμα και από την κάμερα του υπολογιστή του. Θα έχουμε την δυνατότητα να αποθηκεύουμε την επεξεργασμένη εικόνα τοπικά, να την μεταφορτώνουμε στο Cloud (OneDrive). Η εφαρμογή θα υλοποιηθεί κάνοντας χρήση των εργαλείων Visual Studio 2013 & Microsoft Blend σε πλατφόρμα ανάπτυξης.net4.5 με C++,C# & XAML -i-

Ευχαριστίες Θα ήθελα να ευχαριστήσω την σύζυγο μου, τον γιο μου και την οικογένεια μου για την κατανόηση και μεγάλη υπομονή που επέδειξαν κατά την διάρκεια εκπόνησης της παρούσας πτυχιακής. Η κατανόηση και παρότρυνση τους με βοήθησαν να ολοκληρώσω το έργο μου επιτυχώς. Επίσης θα ήθελα να ευχαριστήσω τον συνεργάτη μου Μπαζίμα Σωτήριο που ενέπνευσε την ιδέα αυτής της πτυχιακής και συνέδραμε καθοριστικά στην υλοποίηση της. Μητσός Ιωάννης 14/12/2014 Ευχαριστώ τον συνεργάτη μου Μητσό Ιωάννη για την μεγάλη προσπάθεια και αφοσίωση που έδειξε σε αυτό το Project δίδοντας καλύτερο τελικό αποτέλεσμα. Μπαζίμας Σωτήριος 14/12/2014 -iii-

Περιεχόμενα ΠΕΡΙΛΗΨΗ... I ΕΥΧΑΡΙΣΤΙΕΣ... III ΠΕΡΙΕΧΟΜΕΝΑ... V 1 WINDOWS 8 & 8.1... 1 1.1 ΧΑΡΑΚΤΗΡΙΣΤΙΚΑ... 1 1.2 ΕΛΑΧΙΣΤΕΣ ΑΠΑΙΤΗΣΕΙΣ... 2 1.3 ΑΣΦΑΛΕΙΑ... 2 1.4 ΠΛΕΟΝΕΚΤΗΜΑΤΑ... 5 1.5 ONEDRIVE... 7 2 ΕΡΓΑΛΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ & ΣΧΕΤΙΚΕΣ ΠΛΑΤΦΟΡΜΕΣ... 9 2.1 VISUAL STUDIO 2013 PROFESSIONAL... 9 2.2 MICROSOFT BLEND (EXPRESSION BLEND)... 10 2.3 GITHUB... 11 3 ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΓΙΑ ΤΗΝ ΑΝΑΠΤΥΞΗ ΜΙΑΣ WINDOWS 8 STORE ΕΦΑΡΜΟΓΗΣ... 13 3.1 ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ XAML... 14 3.2 ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C#... 15 3.3 ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++... 16 3.4 ΓΛΩΣΣΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ C++/CX... 17 4 WINDOWS 8 STORE.... 18 5 ΥΛΟΠΟΙΗΣΗ WINDOWS STORE ΕΦΑΡΜΟΓΗΣ IMAGENEERING... 23 5.1 OPENCV... 23 5.2 MSOPENTECH/OPENCV... 23 5.3 PORTOPENCVWINRT... 25 5.3.1 Συνάρτηση Parse... 25 -v-

5.3.2 Συνάρτηση GetPointerToPixelData... 26 5.3.3 Συνάρτηση Parse (υπερφορτωμένη)... 27 5.3.4 Συνάρτηση ApplyGrayEffect... 27 5.3.5 Συνάρτηση ApplySepiaEffect... 28 5.3.6 Συνάρτηση ApplyNegativeEffect... 28 5.3.7 Συνάρτηση ApplySplitEffect... 28 5.3.8 Συνάρτηση ApplyErodeEffect... 29 5.3.9 Συνάρτηση ApplyDillateEffect... 30 5.3.10 Συνάρτηση ApplyMorphologyEffects... 31 5.3.11 Συνάρτηση ChangeBrightnessContrast... 31 5.3.12 Συνάρτηση Blur... 32 5.3.13 Συνάρτηση FlipImage... 32 5.3.14 Συνάρτηση updateimage... 32 5.4 UI (ΓΡΑΦΙΚΟ ΠΕΡΙΒΑΛΛΟΝ)... 36 5.4.1 Βοηθητικές Κλάσεις BrowseImages... 36 5.4.2 Βοηθητικές Κλάσεις SliderLogic... 37 5.4.3 Βοηθητικές Κλάσεις SliderLogic2... 38 5.4.4 Σελίδα Υποδοχής (Μαin Page) και ο Κώδικας στην XAML.... 38 5.4.5 Σελίδα Επεξεργασίας Εικόνας (Filter page) και ο Κώδικας στην XAML. 42 5.4.6 Κώδικας της Σελίδας Υποδοχής (MainPage) στην C#... 55 5.4.7 Επεξηγήσεις Σχετικά Με Την Σελίδα Υποδοχής (MainPage)... 59 5.4.8 Κώδικας Της Σελίδας Επεξεργασίας (FilterPage) Στην C#... 60 5.4.9 Eπεξήγησεις Σχετικά Με Την Σελίδα Επεξεργασίας (FilterPage)... 74 6 ΣΥΜΠΕΡΑΣΜΑΤΑ... 77 ΒΙΒΛΙΟΓΡΑΦΙΑ... 78 ΠΑΡΑΡΤΗΜΑ Α... 81 -vi-

1 Windows 8 & 8.1 Τα Windows 8.1 είναι η τελευταία έκδοση του λειτουργικού συστήματος Windows της Microsoft. Κυκλοφορήσαν σαν πλήρης έκδοση ή αναβάθμιση των υπαρχόντων Windows 8, στην αγορά στις 17 Οκτωβρίου 2013, όπως ανακοίνωσε η Microsoft. Προορίζονται για χρήση σε επιτραπέζιους και φορητούς υπολογιστές, καθώς και σε tablet. Τα Windows 8 (που κυκλοφόρισαν επίσημα στις 26 Οκτωβρίου 2012) υφίστανται ως λειτουργικό, όμως ένα μεγάλο τμήμα εγκαταστάσεων έχει ήδη αναβαθμίσει σε 8.1. Τα Windows 8 & 8.1 είναι πολύ διαφορετικά από τις προηγούμενες εκδόσεις των Windows. Χαρακτηριστική είναι η οθόνη έναρξης, η οποία αποτελείται από πλακίδια και όχι από εικονίδια και διαθέτει εκτός από τα βασικά προγράμματα του υπολογιστή παιχνίδια και άλλες εφαρμογές. Η επιφάνεια εργασίας έχει μικρότερη πρακτική αξία σε σχέση με αυτήν που είχε στις προηγούμενες εκδόσεις. Τα νέα Windows θεωρητικά ανοίγουν μέσα σε δεκαπέντε δευτερόλεπτα (διαφέρει ανάλογα με τον υπολογιστή). Έγινε πρόσφατη αναβάθμιση με σκοπό την βελτίωση και την καλύτερη δυνατή εκτέλεση διάφορων λειτουργιών και άλλων εντολών. Σκοπός τους δεν είναι μόνο η άριστη εκτέλεση απλών εργασιών αλλά και η άνοδος σε ένα άλλο επίπεδο τελευταίας τεχνολογίας. 1.1 Χαρακτηριστικά Νέα, βελτιωμένη Διαχείριση εργασιών. Το μενού Έναρξη αντικαταστάθηκε από την οθόνη Έναρξης. Ο Microsoft Internet Explorer 11 περιλαμβάνεται και ως Windows Store Application για τα Windows 8.1 ενώ ο ΙΕ 10 για τα Windows 8. Δυο νέοι τρόποι προστασίας λογαριασμού: Κωδικός εικόνας και σύνδεση με PIN. -1-

Το Windows To Go επιτρέπει στα Windows 8 να εκκινεί από μια φορητή συσκευή USB (όπως το flash Drive). Επίσημη υποστήριξη οθόνης αφής. Δυνατότητα λήψης εφαρμογών από το διαδίκτυο μέσω του Windows Store. 1.2 Ελάχιστες απαιτήσεις Μνήμη RAM 1 GB για συστήματα 32bit και μνήμη 2 GB για 64bit. Σκληρός δίσκος 16 GB για συστήματα 32bit, 20 GB για 64bit. Επεξεργαστής 1 GHz, κάτι που δεν ισχύει για netbooks και tablets, εφόσον εκεί η ανάγκη για εξοικονόμηση ενέργειας είναι μεγάλη. Ανάλυση οθόνης 1024x768 εικονοστοιχεία. Κάρτα γραφικών συμβατή με Microsoft DirectX 9. 1.3 Ασφάλεια Το επίπεδο ασφαλείας που μπορεί να προφέρει ένα λειτουργικό σύστημα στους χρήστες του θεωρείται, αν όχι το πιο βασικό, ένα από τα βασικότερα και σημαντικότερα ζητήματα για την σωστή επιλογή του λειτουργικού συστήματος. Η Microsoft έχει κάνει κάποιες σημαντικές βελτιώσεις στον τομέα της ασφάλειας για να καταστήσει το σύστημά της πιο ασφαλές και για να βελτιώσει την απόδοση των Windows στην καταπολέμηση των ιών και των κακόβουλων προγραμμάτων. Οι συγκεκριμένες βελτιώσεις είναι οι καλύτερες που έχουν γίνει μέχρι σήμερα σε λειτουργικό σύστημα της Microsoft. Τα Windows 8 & 8.1 έχουν πολλές αλλαγές προς το καλύτερο στην ασφάλεια, συμπεριλαμβανομένης της αποκληρωμένης προστασίας από ιούς, δηλαδή κακόβουλα προγράμματα τα οποία μπορούν να αντιγραφούν, χωρίς την παρέμβαση του χρήστη και να «μολύνουν» τον υπολογιστή χωρίς τη γνώση ή την άδεια του χρήστη του. Ένα σύστημα εφαρμογής για την προστασία από «boot-time rootkits», το οποίο είναι συνήθως -2-

κακόβουλο, έχει σχεδιαστεί για να κρύψει την ύπαρξη ορισμένων διαδικασιών ή προγραμμάτων από την κανονική μέθοδο ανίχνευσης και να επιτρέψει τη συνέχιση της προνομιακής πρόσβασης σε έναν υπολογιστή. Υπάρχουν όμως και χαμηλότερου επίπεδου βελτιώσεις στην ασφάλεια που τρέχουν στο παρασκήνιο των Windows 8, καθώς διαχειρίζονται την μνήμη με έναν πιο ασφαλή τρόπο και περιλαμβάνουν διάφορα χαρακτηριστικά που κάνουν τα τρωτά σημεία της ασφάλειας τους δυσκολότερα. Αυτό έχει ως αποτέλεσμα, ορισμένοι επιτήδειοι να μπορούν να τα εκμεταλλευτούν, έχοντας ως βασικό τους στόχο την παραβίαση του συστήματος. Το πρώτο μέτρο ασφαλείας που παρέχεται μαζί με το λειτουργικό σύστημα των Windows 8 & 8.1 για την προστασία από τους ιούς, είναι το ολοκληρωμένο πρόγραμμα «Windows Defender», γνωστό και ως Microsoft AntiSpyware. Το συγκεκριμένο πρόγραμμα θεωρείται ως ένα προϊόν λογισμικού σχεδιασμένο να αποτρέπει, να απενεγκαταστεί ή να καθιστά σε αδράνεια κακόβουλα λογισμικά. Το πρόγραμμα αυτό, πρωτοεμφανίστηκε ως μέρος του λειτουργικού συστήματος στην έκδοση των Windows Vista και μπορούσε να ενεργοποιηθεί μετά από προεπιλογή, στα Windows 8 & 8.1. Πρόκειται για μια βελτιωμένη έκδοση του, που περιλαμβάνει παραδοσιακές λειτουργείες «anti-virus» λογισμικών αλλά και προστασία από «spyware», το οποίο είναι ένα είδος κακόβουλου λογισμικό που φορτώνεται κρυφά σε έναν υπολογιστή χωρίς να το ξέρει ο χρήστης και εκτελείται στο παρασκήνιο κάνοντας διάφορα πράγματα πίσω από την πλάτη του χρήστη. Ο Windows Defender όχι μόνο σαρώνει το σύστημα, όπως άλλα παρόμοια προϊόντα, αλλά επίσης περιλαμβάνει έναν αριθμό βοηθών ασφαλείας πραγματικού χρόνου. Αυτοί ελέγχουν πολλές περιοχές των Windows για αλλαγές, οι οποίες μπορεί να προκλήθηκαν από λογισμικό κακόβουλης λειτουργίας. Υποστηρίζει, επίσης, το δίκτυο SpyNet της Microsoft, που επιτρέπει στους χρήστες να αναφέρουν στη Microsoft το λογισμικό που θεωρούν κακόβουλο και τι εφαρμογές και προγράμματα οδήγησης συσκευών επιτρέπουν να εγκαθίστανται στο σύστημά του. Επιπλέον, θέλοντας να βοηθήσει τα προϊόντα προστασίας στην αντιμετώπιση των ιών, επιτρέπει να αρχίσουν νωρίτερα την διαδικασία εκκίνησης για την σάρωση των οδηγών του συστήματος για κακόβουλα λογισμικά. Με αυτό το τρόπο βοηθά στην προστασία από «rootkits», που ξεκινούν πριν από το πρόγραμμα προστασίας από ιούς και μπορούν να κρύβονται από αυτό. Ένα άλλο μετρό ασφαλείας, που βρίσκεται ενσωματωμένο στο νέο λειτουργικό σύστημα, είναι το φίλτρο «smartscreen», που παλαιότερα συναντάται μόνο στον Internet Explorer. Η λειτουργία του «smartscreen» πλέον επιτρέπεται σε όλα τα προγράμματα περιήγησης διαδικτύου και -3-

η βασική χρήση του είναι ο έλεγχος διάφορων αρχείων «.exe» κατά την λήψη τους και η αναμονή για επαλήθευση της αυθεντικότητας του εκάστοτε αρχείου. Έτσι, κατά την λήψη των αρχείων, τα σαρώνουν και στέλνουν την υπογραφή τους στους διακομιστές της Microsoft. Σε περίπτωση που η αίτηση έχει θετικό αποτέλεσμα, θα της επιτραπεί να τρέξει και να εγκατασταθεί, εάν όμως έχει αρνητικό αποτέλεσμα θα αποτρέψει το τρέξιμο των αρχείων για αποφυγή τυχόν εγκατάστασης κακόβουλου λογισμικού. Αξίζει να σημειωθεί ότι, σε περίπτωση που είναι νέο λογισμικό τότε θα επιτρέψει την εγκατάσταση με προειδοποιητική ενημέρωση. Η Microsoft έχει αναπτύξει πολλές βελτιώσεις που τρέχουν στο παρασκήνιο σε σχέση με την σωστή και ασφαλή διαχείριση της μνήμης. Συγκεκριμένα, όταν παρουσιαστεί ένα κενό ασφαλείας, οι εν λόγω βελτιώσεις μπορούν να αποτρέψουν την χρήση της. Η εκάστοτε εταιρεία έχει διευκρινίσει ορισμένες από αυτές της βελτιώσεις. Έτσι, το ASLR (Address Space Layout Randomization) έχει επεκταθεί σε περισσότερα μέρη των Windows. Επομένως, παρατηρείται τυχαία μετακίνηση των δεδομένων και του κώδικα γύρω στη μνήμη, ώστε να είναι πιο δύσκολο για εκμετάλλευση. Οι μετριασμοί (Mitigations) που κάποτε εφαρμόζονταν μόνο σε εφαρμογές τώρα εφαρμόζονται και στον πυρήνα τους. Η σωρός των Windows (windows heap), όπου οι εφαρμογές λαμβάνουν τη μνήμη περιλαμβάνει επιπλέον έλεγχο για την υποστήριξη τους σε τεχνικές που επιδιώκουν την εκμετάλλευση τους (τύπου buffer overflows). Εν συνεχεία, η Microsoft όπως και μεγάλοι κατασκαευαστές υλικού (hardware) προωθούν ένα νέο είδος εκκίνησης με το όνομα UEFI (Unified Extensible Firmware Interface), το οποίο βελτιώνει και αντικαθιστά το αρχαϊκό σύστημα εκκίνησης BIOS, που χρησιμοποιείται εδώ και δεκαετίες. Σε γενικές γραμμές, το UEFI προσφέρει καλύτερους χρόνους εκκίνησης και περισσότερη ασφάλεια, διότι χάρη στη νέα αυτή μέθοδο ο υπολογιστής θα ξεκινάει πολύ γρήγορα. Μια ακόμη σημαντική βελτίωση είναι το χαρακτηριστικό ασφαλής λειτουργίας εκκίνησης του UEFI, που μπλοκάρει προηγμένα κακόβουλα προγράμματα, όπως είναι τα «rootkits» και τα «bootkits». Επιπλέον, η Microsoft θέλοντας να προστατεύσει όχι μόνο το λογισμικό και τα αρχεία που υπάρχουν σε έναν υπολογιστή αλλά και τους βασικούς κάτοχους της από την χρήση του συστήματος από άλλους χρήστες, συστήνει την χρήση της οικογενειακής ασφάλειας. Η -4-

συγκεκριμένη μέθοδος είναι κατάλληλη κυρίως για γονείς που επιθυμούν να περιορίσουν ή να ελέγχουν τη χρήση του υπολογιστή από τα παιδιά τους. Η χρήση της οικογενειακής ασφάλειας εφαρμόζεται με την δημιουργία ξεχωριστού λογαριασμού για τα παιδιά με την ενεργοποίηση της παρακολούθησης της με την επιλογή πρόσθετων περιορισμών και δικαιωμάτων, που επιθυμεί ο γονέας για το παιδί του. Έτσι κάνοντας χρήση της εν λόγω εφαρμογής μπορεί να γνωρίζει ποιες ιστοσελίδες έχει επισκεφθεί το παιδί του και ποιες εφαρμογές και παιχνίδια έχει χρησιμοποιήσει. Επίσης, μπορεί να αποκλείσει ή να επιτρέψει συγκεκριμένες ιστοσελίδες ή άλλο περιεχόμενο, ακόμα και να περιορίσει το χρονικό διάστημα που μπορεί να περάσει στον υπολογιστή. Τέλος, με την χρήση της οικογενειακής ασφάλειας και τα Windows 8 & 8.1, τα παιδιά μπορούν να χρησιμοποιούν τον ηλεκτρονικό υπολογιστή και τα tablets με υπευθυνότητα. 1.4 Πλεονεκτήματα Ένα ιδιαίτερος παράγοντας που παίζει αρκετά σημαντικό ρόλο στην απόφαση ενός χρήστη να αγοράσει ή να εγκαταστήσει ένα λειτουργικό σύστημα στον ηλεκτρονικό του υπολογιστή καθώς και στο προσωπικό του tablet, είναι τα πλεονεκτήματα του εκάστοτε λειτουργικού συστήματος σε διάφορους τομείς. Ένα αρκετά καλό πλεονέκτημα που χαρακτηρίζει το λογισμικό των Windows 8 & 8.1, καθώς είναι και το πρώτο που παρατηρείται στην εκκίνηση και στον τερματισμό του ηλεκτρονικού υπολογιστή, είναι ο ελάχιστος χρόνος που απαιτείται για την εκκίνηση του λειτουργικού συστήματος, ώστε να είναι σε θέση για πλήρη λειτουργία. Ένας από τους βασικούς λόγους που συνέβαλε στο συγκεκριμένο πλεονέκτημα το οποίο παρουσιάζεται στο λογισμικό των Windows 8 είναι ότι το παρόν λειτουργικό σύστημα έχει σχεδιαστεί με την προϋπόθεση να δουλεύει με πιο παλιούς επεξεργαστές. Για τον ίδιο λόγο παρατηρούμε και λιγότερο απαιτούμενο χρόνο για τον τερματισμό της λειτουργίας τους. Σε αντίθεση με προηγούμενες εκδόσεις των Windows, όσον αφορά την λειτουργία των προγραμμάτων οδήγησης του διαδικτύου, παρουσιάζονταν μια καθυστέρηση στην ενεργοποίηση τους, σε αντίθεση με τα Windows 8 & 8.1 που το διαδίκτυο είναι διαθέσιμο μόλις ξεκινήσει το σύστημα. -5-

Στην οθόνη έναρξης παρατηρούμε ένα πλακίδιο το οποίο φέρει το όνομα «Store», το συγκεκριμένο πλακίδιο είναι ένα ηλεκτρονικό κατάστημα για τη λήψη και την αγορά εφαρμογών, προγραμμάτων και διαφόρων νέων λογισμικών, που διαθέτει η Microsoft. Το «Store» θεωρείται ένα από τα μεγαλύτερα πλεονεκτήματα που έχουν τα Windows 8 & 8.1 προσφέροντας του μια ευκολία στον εντοπισμό και άνεση στην εγκατάσταση διαφόρων εφαρμογών και προγραμμάτων. Οι εφαρμογές αυτές διευκολύνουν την πρόσβαση στο διαδίκτυο σε social media ή και στην πλήρη ενημέρωση σχετικά με τις ειδήσεις, τα αθλητικά, τον καιρό, το χρηματιστήριο. Επίσης, προσφέρουν αμεσότητα, εγκυρότητα και ισχυρή ασφάλεια, όσον αφορά την λήψη και κυρίως την αγορά τους, καθώς προστατεύουν τον εκάστοτε χρήστη στην απόκτηση του σωστού και έγκυρου λογισμικού. Αυτό έχει ως αποτέλεσμα να αποφεύγονται τα διάφορα κακόβουλα λογισμικά, που έχουν ως βασικό σκοπό τους να βλάψουν τον υπολογιστή του εκάστοτε χρήστη. Επιπλέον, η δυνατότητα να υπάρχουν ταυτόχρονα πολλές οθόνες εφαρμογών ανοικτές, το γνωστό σε όλους «Snap», έρχεται βελτιωμένο μιας και πλέον επιτρέπει να αλλαχθεί το μέγεθος μικρότερων παραθύρων σε οποιοδήποτε μέγεθος επιθυμεί ο εκάστοτε χρήστης. Έτσι, εφόσον έχει κάποια οθόνη μεγάλης ανάλυσης τότε έχει επιπλέον τη δυνατότητα για πολλαπλά παράθυρα. Επίσης η βελτιωμένη έκδοση καταλαμβάνει λιγότερο χώρο στο σκληρό δίσκο του υπολογιστή. Σύμφωνα με τη Microsoft μετά την αναβάθμιση σε Windows 8.1 ο χρήστης κερδίζει 8-15% του αποθηκευτικού χώρου. Ένα από τα πλέον «δυνατά» χαρακτηριστικά είναι η ευκολία αναζήτησης. Ο χρήστης απλά ξεκινά να πληκτρολογεί από την οθόνη έναρξης και τα αποτελέσματα εμφανίζουν σχεδόν τα πάντα: περιεχόμενο, εφαρμογές, ρυθμίσεις ακόμα και πληροφορίες από το διαδίκτυο. Με την χρήση του Smart Search, η αναζήτηση βρίσκεται σε άλλο επίπεδο, το οποίο υποβοηθάτε από το Bing. Έτσι, όταν ο χρήστης προσπαθήσει να αναζητήσει κάποιο θέμα τα αποτελέσματα οργανώνονται σε σχέση με την λέξη την οποία έχει πληκτρολογήσει ως σημείο αναζήτησης και παρουσιάζονται όλα σε μια σελίδα. Οι εξωτερικές οθόνες για τους φορητούς υπολογιστές, αλλά κυρίως για τα Windows tablets είναι ένα ιδιαίτερα σημαντικό χαρακτηριστικό. Χάρη στην αυξημένη επεξεργαστική ισχύ, ακόμα και τα tablets σήμερα χρησιμοποιούνται με μια εξωτερική οθόνη. Στα Windows 8.1 οι χρήστες έχουν μεγαλύτερο έλεγχο στο πως και τι ακριβώς θα -6-

παρουσιάζεται στην δεύτερη εξωτερική οθόνη. Αυτό και μόνο δίνει περισσότερες δυνατότητες στον χρήστη ενός tablet. Τα πλεονεκτήματα του cloud storage είναι πολλά και στα Windows 8.1 η Microsoft δημιούργησε το OneDrive, για την αποθήκευση νέων εγγράφων. Δεν έμεινε όμως μόνο εκεί, με τον κώδικα των Windows πλέον εξασφαλίζεται ότι το εκάστοτε σύστημα θα βλέπει αυτά τα αρχεία ως τοπικά, για να διευκολύνει τον χρήστη στην αναζήτηση του. 1.5 OneDrive Το OneDrive είναι η υπηρεσία της Microsoft για τη φιλοξενία αρχείων στο "σύννεφο" που είναι διαθέσιμα για δωρεάν σε όλους τους ιδιοκτήτες ενός λογαριασμού Microsoft. Το OneDrive προσφέρει στους χρήστες έναν απλό τρόπο για την αποθήκευση, συγχρονισμό και την ανταλλαγή κάθε είδους αρχείων με άλλους ανθρώπους και τις συσκευές στο διαδίκτυο. Τα αρχεία που φιλοξενούνται στο OneDrive μπορούν να έχουν άμεση πρόσβαση από έναν web browser ή, απο τα Windows 8 ή 8.1, απευθείας από το λειτουργικό σύστημα. Άλλα μέσα πρόσβασης στο OneDrive. Μέχρι τον Ιανουάριο του 2014,το OneDrive ονομαζόταν SkyDrive. -7-

2 ΕΡΓΑΛΕΙΑ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ & ΣΧΕΤΙΚΕΣ ΠΛΑΤΦΟΡΜΕΣ Ένα από τα απαραίτητα εργαλεία προγραμματισμού για τoν σχεδιασμό, τη δημιουργία και την ανάπτυξη εφαρμογών στους ηλεκτρονικούς υπολογιστές και στα tablets είναι το Microsoft Visual Studio, όπου παρέχεται απευθείας, από την ίδια την εταιρία την Microsoft. Tο Microsoft Visual Studio είναι ένα πλήρες ολοκληρωμένο περιβάλλον ανάπτυξης, όπου παρέχει όλα τα απαραίτητα εργαλεία. Επίσης, το Expression Blend, το οποίο χρησιμοποιείται για την δημιουργία γραφικών, που απαιτούνται για τον σχεδιασμό και την ανάπτυξη μιας ολοκληρωμένης εφαρμογής, αποτελεί ένα ξεχωριστό εργαλείο. Το εν λόγω εργαλείο επιτρέπει την ανάρτηση της εφαρμογής στο επίσημο κατάστημα εφαρμογών της Microsoft, το Windows Store, όπου έπειτα ο κάθε χρήστης μπορεί να την εντοπίσει και να μπορέσει να την εγκαταστήσει στον προσωπικό του ηλεκτρονικό υπολογιστή ή στο tablet του με σκοπό τη χρήση της. 2.1 Visual Studio 2013 Professional Το Microsoft Visual Studio 2013 είναι ένα ολοκληρωμένο περιβάλλον ανάπτυξης (IDE), το οποίο αναπτύχτηκε από τη Microsoft για να μπορέσει να χρησιμοποιηθεί για την ανάπτυξη προγραμμάτων στα λειτουργικά συστήματα των Windows, αλλά και για τον σχεδιασμό και την ανάπτυξη διαδικτυακών ιστοσελίδων, εφαρμογών και υπηρεσιών διαδικτύου. Το Visual Studio χρησιμοποιεί διάφορες πλατφόρμες ανάπτυξης λογισμικού της Microsoft, όπως το Windows API, γνωστό και ως win32, που αξιοποιείται στην ανάπτυξη εφαρμογών, ώστε να τρέχουν με επιτυχία σε όλες τις εκδόσεις των Windows. Το Visual Studio περιλαμβάνει ένα πρόγραμμα εντοπισμού σφαλμάτων το ονομαζόμενο «Microsoft Visual Studio Debugger», που λειτουργεί τόσο ως ένα -9-

πρόγραμμα εντοπισμού σφαλμάτων επιπέδου πηγής, όσο και ως ένα πρόγραμμα εντοπισμού σφαλμάτων επιπέδου μηχανής. Λειτουργεί σε διαχειριζόμενο κώδικα και μπορεί να χρησιμοποιηθεί για τον εντοπισμό σφαλμάτων σε εφαρμογές, οι οποίες είναι γραμμένες σε οποιαδήποτε γλώσσα προγραμματισμού. Επιπλέον, έχει την δυνατότητα να συμπεριληφθεί σε διεργασίες που εκτελούνται για να μπορέσει να παρακολουθήσει καθώς και να εντοπίσει σφάλματα των συγκεκριμενών διαδικασιών. Το πρόγραμμα εντοπισμού σφαλμάτων στο Visual Studio μπορεί επίσης να δημιουργήσει χωματερές μνήμης. Στην πληροφορική η χωματερή μνήμης αποτελείται από την πραγματική κατάσταση της εργασίας μνήμης ενός προγράμματος ηλεκτρονικού υπολογιστή σε μια συγκεκριμένη χρονική στιγμή. Συνήθως όταν το πρόγραμμα έχει τερματιστεί ανώμαλα χρησιμοποιούνται συχνά για να βοηθήσουν στη διάγνωση και στον εντοπισμό σφάλματων στα προγράμματα ηλεκτρονικών υπολογιστών. Το πρόγραμμα εντοπισμού σφαλμάτων επιτρέπει τον καθορισμό σημείων διακοπής, που αναγκάζουν την εκτέλεση να διακοπεί προσωρινά σε μια ορισμένη θέση και τα ρολόγια που παρακολουθούν τις τιμές των μεταβλητών, καθώς η εκτέλεση προχωρεί. Ένα σημαντικό νέο χαρακτηριστικό είναι η υποστήριξη για WinRT ή χρόνου εκτέλεσης Windows, είναι μια πλατφόρμα-ομοιογενή αρχιτεκτονική της εφαρμογής του λειτουργικό συστήματος των Windows 8. Οι εφαρμογές WinRT υποστηρίζονται εν γένει τόσο σε αρχιτεκτονική για x86, όσο και για την αρχιτεκτονική ARM, καθώς επίσης τρέχει μέσα σε ένα sandboxed περιβάλλον για να επιτρέψει μεγαλύτερη ασφάλεια και σταθερότητα. Αξίζει να σημειωθεί ότι, στα Windows Phone 8 χρησιμοποιείται μια έκδοση του χρόνου εκτέλεσης Windows για να έχει την δυνατότητα να επιτρέπει την ανάπτυξη εφαρμογών με την χρήση γλωσσών προγραμματισμού σε C # καθώς και σε VB.NET. Ο πηγαίος κώδικας του Visual Studio 2013 αποτελείται από περίπου 50 εκατομμύρια γραμμές κώδικα. Η Microsoft παρέχει, μια δωρεάν έκδοση του Visual Studio που ονομάζεται «Express» και η συγκεκριμένη έκδοση είναι διαθέσιμη με διάφορες παραλλαγές (Web Development, Windows Store Development, Windows Desktop Development) μέσω της ιστοσελίδας του, χωρίς κανένα κόστος. 2.2 Microsoft Blend (Expression Blend) -10-

Στο λογισμικό ανάπτυξης εφαρμογών Visual Studio 2013 συναντάμε το εργαλείο σχεδιασμού Microsoft Blend 4, γνωστό και ως Microsoft Expression Blend. Το εν λόγω εργαλείο, αναπτύχθηκε και διανέμεται από τη Microsoft για να μπορέσει να χρησιμοποιηθεί για τη δημιουργία γραφικών διεπαφών για εφαρμογές, όπως και για διαδικτυακές εφαρμογές. Το Microsoft Blend 4 είναι για το σχεδιασμό XAML διεπαφών, που σχετίζεται με το WPF ή Windows Presentation Foundation. Το WPF είναι ένα γραφικό υποσύστημα για την απόδοση των διεπαφών χρήστη, καθώς επιχειρεί να παράσχει ένα σταθερό μοντέλο προγραμματισμού για τη δημιουργία εφαρμογών. Επίσης, σχετίζεται και με τις Silverlight εφαρμογές, το οποίο είναι ένα πλαίσιο εφαρμογής για τη σύνταξη και τη λειτουργία πλούσιων εφαρμογών Internet, με παρόμοια χαρακτηριστικά και σκοπούς, όπως του «Adobe Flash». Το Expression Blend υποστηρίζει 2D γραφικά, όπως και 3D γραφικά με επιτάχυνση υλικού μέσω του DirectX. Το DirectX είναι μια συλλογή των διεπαφών προγραμματισμού εφαρμογών (APIs) για τη διεκπεραίωση των καθηκόντων που σχετίζονται με τα πολυμέσα και ειδικότερα με τον προγραμματισμό παιχνιδιών και βίντεο για Microsoft πλατφόρμες. Για πρώτη φορά το Expression Blend πρωτοεμφανίστηκε στις 24 Ιανουαρίου 2007. Η Microsoft κυκλοφόρησε την πρώτη δημόσια έκδοση του Expression Blend με δωρεάν λήψη στην επίσημη ιστοσελίδα της. Η τελική έκδοση του κυκλοφόρησε με την κατασκευή καθώς και με άλλα προϊόντα στις 17 Oκτωβρίου 2013. Ήδη από τον Δεκέμβριο του 2012 το Expression Blend δεν παρέχονταν πια ως αυτόνομο εργαλείο και είχε ενταχθεί τότε στο Visual Studio 2012 και Visual Studio Express για το λειτουργικό σύστημα των Windows 8. 2.3 GITHUB Το GitHub είναι μια web υπηρεσία φιλοξενίας πηγαίου κώδικα. Παρέχει, τον έλεγχο πρόσβασης σε αναπτυσσόμενες ή ώριμες προγραμματιστικά λύσεις και παρέχει αρκετές δυνατότητες συνεργασίας διαφόρων project. Παρέχει επίσης τη διαχείριση των εργασιών μεταξύ των εμπλεκομένων ενός Project, καθώς και σύστημα ticketing εντοπισμού σφαλμάτων, και αιτημάτων νέων χαρακτηριστικών. -11-

Το GitHub προσφέρει εμπορικά πακέτα για επιχειρήσεις και Developers (ώστε να έχουν δικό τους Private Server με όλα τα παραπάνω χαρακτηριστικά) αλλά και δωρεάν λογαριασμούς, οι οποίοι χρησιμοποιούνται συνήθως για να φιλοξενήσουν τα έργα λογισμικού ανοιχτού κώδικα. Το GitHub έχει πάνω από 3,4 εκατομμύρια χρήστες και με 16,7 εκατομμύρια Servers, καθίσταται ο μεγαλύτερος οικοδεσπότης υποδοχής κώδικα στον κόσμο. -12-

3 ΓΛΩΣΣΕΣ ΠΡΟΓΡΑΜΜΑΤΙΣΜΟΥ ΓΙΑ ΤΗΝ ΑΝΑΠΤΥΞΗ ΜΙΑΣ WINDOWS 8 STORE ΕΦΑΡΜΟΓΗΣ Η Microsoft θέλοντας να διευκολύνει τον τρόπο δημιουργίας εφαρμογών για το λειτουργικό σύστημα των Windows 8 & 8.1 γενικά, προσπάθησε να μην περιοριστεί σε μια γλώσσα προγραμματισμού για τον προγραμματισμό και την δημιουργία των εφαρμογών αλλά να κάνει χρήση διαφορών γλωσσών προγραμματισμού. Με αυτόν το τρόπο προσφέρει την δυνατότητα σε όλους σχεδόν τους προγραμματιστές να ασχοληθούν με τη δημιουργία εφαρμογών για Windows 8. Επίσης, η Microsoft με την χρήση του Windows Store Apps, έχει ως βασικό στόχο της να μπορέσει να διευκολύνει το σχεδιαστικό μέρος της εφαρμογής όσον αφορά την όψη της. Οι Store Apps είναι ένα νέο είδος ή αλλιώς μια γλώσσα γραφικής απεικόνισης των γραμματοσειρών, που ορίζει ένα σύνολο κανόνων και προδιαγραφών γραφής και γραφικής απεικόνισης. Προσδιορίζει τον τρόπο που σχεδιάζονται, απεικονίζονται και συμπεριφέρονται οι γραμματοσειρές των Windows 8, ακολουθώντας μια μινιμαλιστική σχεδιαστική φιλοσοφία. Όπως αναφέρθηκε πιο πάνω η εταιρεία θέλοντας να δώσει μια ευελιξία όσον αφορά τον προγραμματισμό μιας εφαρμογής, λύνοντας τα χέρια των προγραμματιστών, έδωσε ορισμένες επιλογές των υποστηριζόμενων τρόπων κωδικοποίησης της. Οι τρόποι δημιουργίας μιας εφαρμογής είναι κάτω από την πλατφόρμα των Windows 8 και μπορούν να δημιουργηθούν από XAML - based ( c#, c++, VB ) και HTML / JavaScript based κωδικοποίησης, που αξιοποιούν πλήρως τα νέα APIs WinRT. -13-

3.1 Γλώσσα Προγραμματισμού XAML Η XAML (extensible Application Markup Language) είναι μια δηλωτική γλώσσα (markup) βασισμένη στην XML. Με την xaml μπορούμε να περιγράψουμε το περιβάλλον διεπαφής (user interface) σε εφαρμογές Windows 8,Windows Phone, Windows Presentation Foundation, Silverlight. Ουσιατικά με την xaml δηλαδή δημιουργούμε αυτό που βλέπει ο χρήστης, τα διάφορα buttons, εικόνες κτλ. Αυτό γίνεται σε ένα αρχείο με την κατάληξη.xaml. Για να αποκτήσει λειτουργικότητα το UI,η xaml συνδιάζεται με μία γλώσα προγραμματισμού (όπως C#) σε ένα άλλο αρχέιο με το ίδιο όνομα και την ανάλογη κατάληξη (.cs). Έτσι λοιπόν για ένα αρχείο xaml με το όνομα Window1.xaml θα υπάρχει και το αντίστοιχο αρχείο Window1.cs με τον κώδικα (σε C#). Με αυτόν τον διαχωρισμό λειτουργικότητας και περιγραφής του UI μας έχουμε πολλά πλεονεκτήματα.μπορούν ένας designer και ένας developer να λειτουργήσουν πάνω στην κατασκευή της ίδιας εφαρμογής, ο καθένας στο δικό του κομμάτι. Επίσης, υπάρχουν εργαλεία και για τις δύο διεργασίες (Visual Studio για τον κώδικα και Expression Blend για το design της εφαρμογής μας). Με το Expression Blend απλοποιείται σημαντικά ο σχεδιασμός της εφαρμογής μας, και είναι πολύ εύκολο να επικεντρωθούμε στο design και να φτιάξουμε όμορφα γραφικά και animations χωρίς να γράψουμε καθόλου κώδικα. Η XAML (extensible Application Markup Language ) είναι μια δηλωτική γλώσσα μορφοποίησης, που χρησιμοποιείται για να οριστούν τα οπτικά στοιχεία των σελίδων XAML των Windows 8 app. H δομή της βασίζεται στις λεγόμενες ετικέτες. καθώς προέρχεται από τηn παλιά και γνωστή γλώσσα XML ( extensible Markup Language), μια γλώσσα σήμανσης που ορίζει ένα σύνολο κανόνων για την κωδικοποίηση των εγγράφων σε μορφή που είναι τόσο αναγνώσιμη από τον άνθρωπο, όσο και από τον ηλεκτρονικό υπολογιστή. Όσον αφορά τον τρόπο λειτουργίας της XAML, παρατηρείται πως μοιάζει πολύ με την κλασσική HTML, που χρησιμοποιείται για την κατασκευή και μορφοποίηση των ιστοσελίδων. Η διαφορά όμως με την HTML είναι πως η XAML είναι μια σύγχρονη γλώσσα, που δημιουργήθηκε από την Microsoft για να τρέχει και αυτή μαζί με τις υπόλοιπες γλώσσες της πάνω στην γνωστή της πλατφόρμα.net Framework -14-

3.2 Γλώσσα Προγραμματισμού C# Η C# είναι μία ολοκληρωμένη αντικειμενοστραφής γλώσσα προγραμματισμού σχεδιασμένη για τη δημιουργία λογισμικού σε.net Framework.Tα πάντα στη C# είναι αντικείμενα. Παρέχει άμεση πρόσβαση σε τεράστιες βιβλιοθήκες κλάσεων του.net Framework & ασφάλεια των τύπων της. Mε την C# μπορούμε να δημιουργήσουμε ένα μεγάλο πλήθος από εφαρμογές όπως: Windows store (Εφαρμογές για tablet) Windows Phone (Εφαρμογές για κινητά) WPF (Desktop Εφαρμογές) asp.net (Εφαρμογές για το διαδίκτυο) WPF BrowserApplication (Εφαρμογές για το διαδίκτυο) Web services Ορισμένα από τα κύρια χαρακτηριστικά της γλώσσας είναι τα εξής : Type safe σχεδιασμός: καθιστά αδύνατη την ανάγνωση μεταβλητών που δεν έχουν αρχεικοποιήσει τη χρήση δεικτών που βρίσκονται εκτός ορίων πίνακα καθώς και την εκτέλεση unchecked type casts. Garbage collection: Αποδεσμεύει αυτόματα τη μνήμη από αντικείμενα που δεν χρησιμοποιούνται πλέον από το πρόγραμμα. Component oriented προγραμματισμός: Υποστηρίζει το μοντέλο προγραμματισμού που βασίζεται σε components, δηλαδή σε στοιχεία προγράμματος που μπορούν να χρησιμοποιηθούν από άλλους χρήστες, οι οποίοι χρειάζεται να γνωρίζουν μόνο αυτά που κρίνει απαραίτητα ο δημιουργός του component και χωρίς ο ίδιος να ξέρει για τους τελικούς χρήστες. -15-

Διαχείριση εξαιρέσεων : Παρέχει μια δομημένη και επεκτάσιμη προσέγγιση για την ανίχνευση σφαλμάτων. 3.3 Γλώσσα Προγραμματισμού C++ Γλώσσα C++ είναι μια γενικής χρήσης γλώσσα προγραμματισμού που είναι ελεύθερης μορφής, καθώς η τοποθέτηση των χαρακτήρων στη σελίδα στο κείμενο του προγράμματος είναι ασήμαντη. Η γλώσσα προγραμματισμού C++ θεωρείται ως μια γλώσσα ενδιάμεσου επίπεδου, αυτό συμπεραίνεται καθώς περιλαμβάνει τόσο υψηλού επιπέδου, όσο και χαμηλού επιπέδου γλώσσα προγραμματισμού. Η γλώσσα C++ είναι μία από τις πιο δημοφιλής γλώσσες προγραμματισμού και υλοποιείται σε μια ευρεία ποικιλία του υλικού και του λειτουργικού συστήματος. Θεωρείται ως μια από τις πιο αποτελεσματικές γλώσσες προγραμματισμού, καθώς μπορεί και χρησιμοποιείται σε πολλά ήδη κωδικοποίησης, όπως σε συστήματα λογισμικού, λογισμικό εφαρμογών, ενσωματωμένο λογισμικό, server υψηλών επιδόσεων, καθώς και σε λογισμικό ψυχαγωγίας. Εφόσον, η C++ μπορεί να χρησιμοποιηθεί σε μια μεγάλη ποικιλία μορφών κωδικοποίησης, ώθησε την εταιρεία της Microsoft να επιτρέπει την δημιουργία εφαρμογών για το λειτουργικό της σύστημα των Windows 8, καθώς με αυτό το τρόπο προσελκύει πολλούς προγραμματιστές να ασχοληθούν με την δημιουργία εφαρμογών σε γλώσσα C++. Η C++ είναι μια γενικού σκοπού γλώσσα προγραμματισμού Η/Υ. Θεωρείται μέσου επιπέδου γλώσσα, καθώς περιλαμβάνει έναν συνδυασμό χαρακτηριστικών από γλώσσες υψηλού και χαμηλού επιπέδου. Είναι μια μεταγλωττιζόμενη γλώσσα πολλαπλών παραδειγμάτων, με τύπους. Υποστηρίζει δομημένο, αντικειμενοστρεφή και γενικό προγραμματισμό. Η γλώσσα αναπτύχθηκε από τον Μπιάρνε Στρούστρουπ το 1979 στα εργαστήρια Bell της AT&T, ως βελτίωση της ήδη υπάρχουσας γλώσσας προγραμματισμού C, και -16-

αρχικά ονομάστηκε "C with Classes", δηλαδή C με Κλάσεις. Μετονομάστηκε σε C++ το 1983. Οι βελτιώσεις ξεκίνησαν με την προσθήκη κλάσεων, και ακολούθησαν, μεταξύ άλλων, εικονικές συναρτήσεις, υπερφόρτωση τελεστών, πολλαπλή κληρονομικότητα, πρότυπα κ.α. 3.4 Γλώσσα Προγραμματισμού C++/CX Η C ++ / CX είναι μια επέκταση της γλώσσα C ++ που παρέχεται από τη Microsoft και επιτρέπει στους C ++ προγραμματιστές να γράψουν προγράμματα για την νέα πλατφόρμα των Windows Runtime, ή WinRT. Οι επεκτάσεις γλώσσας C ++ / CX δανείζονται σύνταξη από την C ++ / CLR αλλά στοχεύουν τον Windows Runtime κώδικα αντί του χρόνου εκτέλεσης κοινής γλώσσας (CLR) και διαχειριζόμενο κώδικα (Managed). Επίσης είναι τεχνικά δυνατό να κληθεί η managed C ++ από το Windows Runtime (C++/CX) μέσω των Windows Runtime Components. -17-

4 Windows 8 store. Τα τελευταία χρόνια έχουν παρουσιαστεί διάφορα ηλεκτρονικά καταστήματα εφαρμογών από διάφορες εταιρείες, οι οποίες ειδικεύονται στην δημιουργία λειτουργικών συστημάτων για κινητά και ηλεκτρονικούς υπολογιστές. Ο βασικότερος στόχος της δημιουργίας μιας πλατφόρμας σε ένα ηλεκτρονικό κατάστημα είναι η επιθυμία των εκάστοτε εταιριών στο να μπορέσουν να διανέμουν τις διάφορες εφαρμογές, οι οποίες δημιουργούνται για τη χρήση συγκεκριμένων λειτουργικών συστημάτων που διαθέτουν. Η Microsoft έχει δημιουργήσει μια πλατφόρμα για το ηλεκτρονικό κατάστημα της το γνωστό σε όλους «Windows Store» για να μπορέσει να διανέμει τις διάφορες εφαρμογές, οι οποίες είναι συμβατές με το λειτουργικό σύστημα των Windows 8. Αξίζει να σημειωθεί ότι η Microsoft έχει δημιουργήσει το «Windows Phone Store», μια ψηφιακή πλατφόρμα διανομής εφαρμογών που αναπτύχθηκε για τα Windows Phone Windows Store logo: To Windows Store είναι το επίσημο ηλεκτρονικό κατάστημα εφαρμογών για την Microsoft Windows, καθώς έχει πρωτοεμφανιστεί με τα Windows Server 2012 και τα Windows 8. Ένας χρήστης μπορεί να συνδεθεί και να χρησιμοποιήσει το ηλεκτρονικό κατάστημα εφαρμογών, χρησιμοποιώντας έναν λογαριασμό της Microsoft. Δεν είναι η πρώτη φορά που η Microsoft προσπαθεί να υποστηρίξει ένα σύστημα ψηφιακής διανομής λογισμικού, καθώς έχει υποστηρίξει και στο παρελθόν ένα τέτοιο παρόμοιο σύστημα, γνωστό ως «Windows Marketplace». Το «Windows Marketplace» ξεκίνησε στις 12-18-

Οκτωβρίου 2004 και επέτρεπε στους πελάτες να αγοράζουν σε απευθείας σύνδεση διάφορα λογισμικά και να το κατεβάσουν απευθείας στον ηλεκτρονικό υπολογιστή τους. Επιπλέον, τους έδινε την δυνατότητα να αγοράσουν κλειδιά του προϊόντος, καθώς και άδειες, επιτρέποντας τους να ανακτήσουν τις αγορές τους από διαφορετικούς υπολογιστές. Ο συγκεκριμένος ιστότοπος είχε σχεδιαστεί για να επιτρέπει την σύγκριση προϊόντων και την συζήτηση από μία κεντρική τοποθεσία. Το «Windows Marketplace» διακόπηκε επίσημα από την Microsoft τον Νοέμβριο του 2008, το οποίο θεωρήθηκε προκάτοχος για την δημιουργία και την ανάπτυξη του σημερινού Windows Store. Το Windows Store έχει επιμεληθεί την ασφάλεια και την ποιότητα της κάθε εφαρμογής που βρίσκεται μέσα στην πλατφόρμα της. Επίσης, δίνει το δικαίωμα να εγκατασταθεί στον υπολογιστή η εκάστοτε εφαρμογή, η οποία πρέπει να είναι πιστοποιημένη και συμβατή με το περιεχόμενο τους. Για να μπορέσει ένας προγραμματιστής να ανεβάσει στην πλατφόρμα του Windows Store την εφαρμογή που έχει δημιουργήσει για το λογισμικό των Windows 8-8,1 πρέπει πρώτα να περάσει από τους βασικούς ελέγχους, που καθορίζει η Microsoft για όλες τις εφαρμογές. Ο έλεγχος αυτός εστιάζεται κυρίως στο πρόγραμμα και στην εξακρίβωση ότι η συγκεκριμένη εφαρμογή εκτελεί ακριβώς αυτό που αναφέρει πως κάνει και πως δεν έχει κακόβουλα λογισμικά που μπορούν να βλάψουν τον υπολογιστή. Επίσης, ελέγχει εάν το πρόγραμμα αναφέρει στον χρήστη όλες τις προσβάσεις που επιθυμεί να έχει στο σύστημα και δεν προσπαθεί να πάρει προσβάσεις σε δεδομένα που δεν αναφέρει και έτσι ο χρήστης βρίσκεται σε πλήρη επίγνωση. Οι υποψήφιοι πρέπει να λάβουν την έγκριση της Microsoft πριν η εφαρμογή τους γίνει διαθέσιμη στο ηλεκτρονικό κατάστημα εφαρμογών. Η Microsoft δεν βασίζετε μόνο στην ασφάλεια, την ποιότητα και την σταθερότητα του λογισμικού της εφαρμογής, αλλά και στην ποιότητα του περιεχομένου μιας εφαρμογής, καθώς πρέπει να υπάγεται με βάση τα δικαιώματα και τους κανονισμούς της κάθε χώρας, που επιθυμεί ο προγραμματιστής να προωθήσει την εφαρμογή του. Μια απαγορευμένη εφαρμογή ως προς το περιεχόμενο της μπορεί να θεωρηθεί εκείνη που: o Περιέχει οποιοδήποτε περιεχόμενο ενηλίκων και περιεχόμενο που δεν δικαιολογεί το ESRB's «Adults Only». -19-

o Δεν έχει μίσος ή βία με βάση τη συμμετοχή σε μια συγκεκριμένη φυλετική, εθνοτική, εθνική, γλωσσική, θρησκευτική ή άλλη κοινωνική ομάδα, ή με βάση το φύλο ενός ατόμου, ηλικίας ή γενετήσιου προσανατολισμού. o Περιέχει περιεχόμενο που ενθαρρύνει, διευκολύνει ή παρουσιάζει σαν λάμψη και γοητεία κάποια παράνομη δραστηριότητα. o Έχει οποιονδήποτε περιορισμό ή προβολή περιεχομένου που ένας λογικός άνθρωπος μπορεί να τη θεωρήσει άσεμνη. o Διαφημίζει μια δυσφημιστική ή συκοφαντική, απειλητική ή ανεύθυνη χρήση αλκοόλ ή προϊόντα καπνού ή ναρκωτικά ή όπλα. o Διευκολύνει την προβολή σκηνών άσκοπης βίας, οι παραβιάσεις των ανθρωπίνων δικαιωμάτων ή τη δημιουργία ή τη χρήση όπλων εναντίον ενός ατόμου ή ζώου στον πραγματικό κόσμο. o Περιέχει υπερβολικά ή εκ χαριστικής αιτίας βωμολοχίες. Η Microsoft έχει δηλώσει ότι έχει δώσει τη δυνατότητα στους χρήστες για την απομακρυσμένη απενεργοποίηση και / ή την αφαιρέση εφαρμογών από τα συστήματα των χρηστών για την ασφάλεια ή για νομικούς λόγους του κάθε χρήστη. Εκτός από την δυνατότητα που έχει ένας χρήστης να κατεβάσει μια εφαρμογή από το Windows Store, ενημερώνοντας τον για την λειτουργία και την ασφάλεια της κάθε εφαρμογής, του δίνεται η δυνατότητα να μπορέσει να βαθμολογήσει την εκάστοτε εφαρμογή με άριστα το 5, δείχνοντας το πόσο ικανοποιημένος είναι από την εφαρμογή. Μια άλλη δυνατότητα που του δίνεται είναι να σχολιάσει την εφαρμογή δίνοντας την δυνατότητα στους επόμενους χρήστες να διαβάσουν τα σχόλια πριν την εγκατάσταση της στον δικό του υπολογιστή. Τα σχόλια που συντάσσονται καθώς και οι βαθμολογίες που παίρνει η κάθε εφαρμογή δίνουν την δυνατότητα να τις παρακολουθεί και ο δημιουργός -20-

της, δίνοντας του συνεχή ανατροφοδότηση για την πορεία της εφαρμογής του και βοηθώντας τον να προβεί σε τυχόν τροποποιήσεις και βελτιώσεις της εφαρμογής. Όλα τα παραπάνω εμφανίζονται σε ένα φιλικό περιβάλλον για τον κάθε χρήστη, ώστε να μπορέσει με άνεση να χειριστεί την ψηφιακή πλατφόρμα. Όλα αυτά βρίσκονται σε μια πύλη από διάφορες ενότητες, που συντονίζονται μεταξύ τους για να παρουσιάσουν ένα ολοκληρωμένο περιβάλλον απεικόνισης δεδομένων. Windows 8 store menu: -21-

5 Υλοποίηση Windows store εφαρμογής Imageneering. Στο παρόν κεφάλαιο θα παραθέσουμε και θα αναλύσουμε την μεθοδολογία που ακολουθήσαμε να αναπτύξουμε την εφαρμογή καθώς και τον κώδικα των επιμέρους συστημάτων. Αρχικά, ξεκινήσαμε να αναπτύσσουμε την εφαρμογή για Windows 8 Store. Κατά την διάρκεια ανάπτυξης της εφαρμογής, βγήκαν σε κυκλοφορία τα Windows 8.1 οπότε και εμείς ανακατευθύναμε την λύση μας (retarget) ώστε να κάνει χρήση των νέων λειτουργιών. Για την υλοποίηση της λύσης, έγιναν πολλές προσπάθειες προσέγγισης λόγω του ότι οι Windows Store Apps, είναι μια νέα μέθοδος ανάπτυξης εφαρμογών. Υπήρχαν επίσης φορές που αφιερώσαμε χρόνο σε κώδικα ο οποίος εν τέλει κρίθηκε μη αξιοποιήσιμος και αναγκαστήκαμε να βρούμε νέα προσέγγιση της λύσης. Τελικά, καταλήξαμε σε κάποια εργαλεία, τα οποία αναφέρονται παρακάτω και συνθέσαμε το τελικό αποτέλεσμα. 5.1 OpenCV Πρακτικά, στην εργασία μας, οι βιβλιοθήκες επεξεργασίας σήματος και εικόνων OpenCV είναι αυτές που στο παρασκήνιο εκτελούνε την επεξεργασία των εικόνων μας. Όμως δεν μπορούμε να χρησιμοποιήσουμε/αναφερθούμε άμεσα στην παραπάνω βιβλιοθήκη λόγω της αρχιτεκτονικής της που αναφέρθηκε σε προηγούμενο κεφάλαιο. Έτσι έπρεπε να βρούμε ένα τρόπο να την χρησιμοποιήσουμε από Windows Store εφαρμογές. Ο τρόπος βρέθηκε με τις βιβλιοθήκες MSOpenTech/OpenCV. 5.2 MSOpenTech/OpenCV Αποτέλεσμα έρευνας και ανάπτυξης μιας ομάδας της Microsoft, οι βιβλιοθήκες MSOpenTech/OpenCV αναλαμβάνουν να μεταφέρουν και να επαναχρησιμοποιήσουν την βιβλιοθήκη OpenCV από Windows Store Apps αλλά και Windows Phone Apps. -23-

Έπρεπε να κάνουμε λήψη του project που υπάρχει στο Github (αναφέρθηκε σε προηγούμενο κεφάλαιο βλέπε εικόνα 5.1) και να συμπεριλάβουμε κάποια projects & files του. Εικ. 5.1 - Χρήση του Github για γρήγορη λήψη & συγχρονισμό των project που παρακολουθούμε Τα απαραίτητα αρχεία και projects για την λειτουργία της λύσης μας, παρατίθενται παρακάτω αντίστοιχα (εικ. 5.2 & εικ. 5.3) Εικ. 5.2 Απαραίτητα αρχεία (dependencies) για την δόμηση της λύσης μας. Εικ. 5.3 Διαθέσιμα Projects χρήσης/αναφοράς -24-

Όπως θα παρατηρήσατε στις εικόνες παραπάνω, υπάρχει μια αναφορά στο PortOpenCVWinrt. Αμέσως παρακάτω θα δούμε γιατί δημιουργήθηκε και ποια είναι η χρήση του. 5.3 PortOpenCVWinRT Όπως αναφερθήκαμε και παραπάνω, τις περισσότερες λειτουργίες επεξεργασίας εικόνας τις πραγματοποιούμε μέσω των βιβλιοθηκών OpenCV & MSOpentech/OpenCV. Οι τύποι, κλάσεις και μέθοδοι όμως, μπορούν να χρησιμοποιηθούν μόνο από C++ και συγκεκριμένα από C++/CX. Έτσι αναπτύξαμε το PortOpenCVWinRT ώστε να είναι η γέφυρα μας από και προς το υπόλοιπο, οπτικό τμήμα της εφαρμογής μας (Front-End / UI) To PortOpenCVWinRT είναι ένα Windows Runtime Component που μας επιτρέπει να ανταλλάσσουμε μη διαχειρίσιμο κώδικα, (unmanaged native code) δηλαδή εκτός του περιβάλλοντος του.νετ, με διαχερίσιμο κώδικα (managed) που προβλέπεται για την ανάπτυξη εφαρμογών σε περιβάλλον RT (.net for Windows Store Apps) To PortOpenCVWinRT έχει μια συνάρτηση ώστε να πραγματοποιεί την επικοινωνία μεταξύ C++/CX & C# και αρκετές συναρτήσεις όπου επεξεργάζεται και διαχειρίζεται τις εικόνες. Πλήρη κώδικα του PortOpenCVWinRT θα βρείτε στο επισυναπτόμενο μέσο (media) ενώ παρακάτω θα αναλύσουμε των κώδικα των κάθε συναρτήσεων που χρησιμοποιήσαμε. 5.3.1 Συνάρτηση Parse Η συνάρτηση Parse αναλαμβάνει να πάρει μια εικόνα τύπου WriteableBitmap από το περιβάλλον Runtime και να την μετατρέψει σε cv::mat (Mat Πίνακας Pixel Εικόνα) Δηλώνεται στην Main.h ως εξής: cv::mat ImageManipulator::Parse(Windows::UI::Xaml::Media::Imaging::WriteableBitmap^ inputimage); Η υλοποίηση της συνάρτησης στην Main.cpp ακολούθως: cv::mat ImageManipulator::Parse(Windows::UI::Xaml::Media::Imaging::WriteableBitmap^ inputimage) cv::mat outputmatimage; unsigned int length; byte* sourcepixels = GetPointerToPixelData(inputImage->PixelBuffer, &length); // Get the matrix of pixels which assemble the image -25-

const unsigned int width = inputimage->pixelwidth; const unsigned int height = inputimage->pixelheight; outputmatimage = cv::mat(height, width, CV_8UC4); // generate an empty image based on the dimentions of the inputimage memcpy(outputmatimage.data, sourcepixels, 4 * width*height); // copy the inputimage read data to the empty image created return outputmatimage; Επεξήγηση: Παραλαμβάνουμε μια εικόνα από το περιβάλλον RT. Μέσω της συνάρτησης GetPointerToPixelData ανακτούμε τα δεδομένα της αρχικής εικόνας. Δημιουργούμε μια νέα κενή εικόνα τύπου Mat βάσει των διαστάσεων της αρχική, ώστε να μπορούμε να την επεξεργαστούμε και να εφαρμόσουμε εφέ. Γεμίζουμε την Mat εικόνα από τον πίνακα pixel που έχουμε ανακτήσει από την αρχική. Επιστρέφουμε προς χρήση/επεξεργασία μια εικόνα τύπου Mat 5.3.2 Συνάρτηση GetPointerToPixelData Η συνάρτηση GetPointerToPixelData παρέχεται από την Microsoft και μας δίνει την δυνατότητα να ανακτήσουμε από C++/CX τον πίνακα των pixel που συνθέτουν μια εικόνα, η οποία απεικονίζεται και προέκυψε από περιβάλλον RT. Δηλώνεται στην Main.h ως εξής: byte* ImageManipulator::GetPointerToPixelData(Windows::Storage::Streams::IBuffer^ pixelbuffer, unsigned int *length); Η υλοποίηση της συνάρτησης στην Main.cpp ακολούθως: byte* ImageManipulator::GetPointerToPixelData(Windows::Storage::Streams::IBuffer^ pixelbuffer, unsigned int *length) if (length!= nullptr) *length = pixelbuffer->length; // Query the IBufferByteAccess interface. ComPtr<IBufferByteAccess> bufferbyteaccess; reinterpret_cast<iinspectable*>(pixelbuffer)- >QueryInterface(IID_PPV_ARGS(&bufferByteAccess)); // Retrieve the buffer data. byte* pixels = nullptr; bufferbyteaccess->buffer(&pixels); return pixels; -26-

5.3.3 Συνάρτηση Parse (υπερφορτωμένη) Η υπερφορτωμένη συνάρτηση Parse βασίζεται εν μέρει στην αρχική συνάρτηση Parse όμως, στην προκειμένη περίπτωση, πραγματοποιεί το αντίθετο αποτέλεσμα. Δηλαδή, μετατρέπει μια εικόνα Mat, επεξεργάσιμη από C++/CX, σε μια εικόνα WriteableBitmap που απεικονίζεται εύκολα σε Windows Store Apps (περιβάλλον RT) Δηλώνεται στην Main.h ως εξής: Windows::UI::Xaml::Media::Imaging::WriteableBitmap^ ImageManipulator::Parse(cv::Mat& input); Η υλοποίηση της συνάρτησης στην Main.cpp ακολούθως: Windows::UI::Xaml::Media::Imaging::WriteableBitmap^ ImageManipulator::Parse(cv::Mat& input) // Create the WriteableBitmap WriteableBitmap^ bitmap = ref new WriteableBitmap(input.cols, input.rows); // Get access to the pixels IBuffer^ buffer = bitmap->pixelbuffer; unsigned char* dstpixels; // Obtain IBufferByteAccess ComPtr<IBufferByteAccess> pbufferbyteaccess; ComPtr<IUnknown> pbuffer((iunknown*)buffer); pbuffer.as(&pbufferbyteaccess); // Get pointer to pixel bytes pbufferbyteaccess->buffer(&dstpixels); memcpy(dstpixels, input.data, 4 * input.cols*input.rows); // Set the bitmap to the Image element return bitmap; 5.3.4 Συνάρτηση ApplyGrayEffect Η συνάρτηση ApplyGrayEffect δέχεται ως παράμετρο μια Mat εικόνα, μετατρέπει την εικόνα σε απόχρωση του γκρι, και επιστρέφει μια Mat εικόνα Δηλώνεται στην Main.h ως εξής: cv::mat ImageManipulator::ApplyGrayEffect(const cv::mat& image); Η υλοποίηση της συνάρτησης στην Main.cpp ακολούθως: cv::mat ImageManipulator::ApplyGrayEffect(const cv::mat& image) cv::mat result; cv::mat intermediatemat; cv::cvtcolor(image, intermediatemat, CV_RGBA2GRAY); //to grayscale cv::cvtcolor(intermediatemat, result, CV_GRAY2BGRA); // back to rbg return result; -27-

5.3.5 Συνάρτηση ApplySepiaEffect Η συνάρτηση ApplySepiaEffect δέχεται ως παράμετρο μια Mat εικόνα, μετατρέπει την εικόνα σε αποχρώσεις του καφέ, την κάνει να φαίνεται ως παλαιωμένη, και επιστρέφει μια Mat εικόνα Δηλώνεται στην Main.h ως εξής: cv::mat ImageManipulator::ApplySepiaEffect(const cv::mat& image); Η υλοποίηση της συνάρτησης στην Main.cpp ακολούθως: cv::mat ImageManipulator::ApplySepiaEffect(const cv::mat& image) const float SepiaKernelData[16] = /* B */0.131f, 0.534f, 0.272f, 0.f, /* G */0.168f, 0.686f, 0.349f, 0.f, /* R */0.189f, 0.769f, 0.393f, 0.f, /* A */0.000f, 0.000f, 0.000f, 1.f ; //create a kernel for sepia effect const cv::mat SepiaKernel(4, 4, CV_32FC1, (void*)sepiakerneldata); // create an image using the kernel cv::mat result; cv::transform(image, result, SepiaKernel); // produce result transforming original image based on the kernel image return result; 5.3.6 Συνάρτηση ApplyNegativeEffect Η συνάρτηση ApplyNegativeEffect δέχεται ως παράμετρο μια Mat εικόνα, μετατρέπει την εικόνα σε αντίστροφη, την κάνει να φαίνεται ως αρνητικό φωτογραφίας, και επιστρέφει μια Mat εικόνα Δηλώνεται στην Main.h ως εξής: cv::mat ImageManipulator::ApplyNegativeEffect(const cv::mat& image); Η υλοποίηση της συνάρτησης στην Main.cpp ακολούθως: cv::mat ImageManipulator::ApplyNegativeEffect(const cv::mat& image) cv::mat result; cv::bitwise_not(image, result); //invert the original image save to result return result; 5.3.7 Συνάρτηση ApplySplitEffect Η συνάρτηση ApplySplitEffect δέχεται ως παράμετρο μια Mat εικόνα, καθώς και ένα πίνακα τιμών αληθείας. Αφαιρεί από την εικόνα 1 ή και περισσότερα κανάλια χρωμάτων (RGB) και επιστρέφει μια Mat εικόνα. Δηλώνεται στην Main.h ως εξής: cv::mat ImageManipulator::ApplySplitEffect(const cv::mat& image, bool flags[]); -28-

Η υλοποίηση της συνάρτησης στην Main.cpp ακολούθως: cv::mat ImageManipulator::ApplySplitEffect(const cv::mat& image, bool flags[]) cv::mat *result = new cv::mat(image.size(), image.type()); //cv::mat *result = new cv::mat(image.rows,image.cols,cv_8uc4); std::vector<cv::mat> layers; cv::split(image, layers); // seperate image to layers (colorspaces) to easily manage them for (int i = 0; i <= 3;i++) if (! flags[i]) //current color disabled-false layers[i] = cv::mat::zeros(layers[0].rows, layers[0].cols, CV_8UC1); //then remove the color (fill with zeros) cv::merge(layers,*result); // Reconstruct the result using the above layers return *result; Επεξήγηση: Από τις παραμέτρους της συνάρτησης, παραλαμβάνουμε την αρχική εικόνα καθώς και ένα πίνακα με τιμές bool που ανταποκρίνονται στα 4 κανάλια της εικόνας (Blue, Green, Red, Alpha). Σπάμε την εικόνα σε επιμέρους layers (1 layer 1 κανάλι) ώστε να την διαχειριζόμαστε πιο εύκολα. Πραγματοποιούμε ένα έλεγχο, ανάλογα ποια κανάλια θέλουμε να κρατήσουμε και για όσα είναι η τιμή false, το αντίστοιχο κανάλι (χρώματος) αφαιρείται από την εικόνα. Στο τέλος ανασυνθέτουμε την εικόνα από τα επεξεργασμένα layers και την επιστρέφουμε. 5.3.8 Συνάρτηση ApplyErodeEffect Η συνάρτηση ApplyErodeEffect δέχεται ως παράμετρο μια Mat εικόνα, καθώς και 2 παραμέτρους για την μορφοποίηση της εικόνας. Εντοπίζει στην αρχική εικόνα τις σκοτεινές περιοχές και τις επεκτείνει προς τα γειτονικά pixel αναλόγως των παραμέτρων που έχουμε καθορίσει. Οι καθορισμένοι παράμετροι έχουν να κάνουν με την επιλογή των γειτονικών pixel (τετράγωνο, σταυρός, δηλαδή πάνω/κάτω, κύκλος) σε ένα εύρος, από τον εντοπισμό της σκοτεινής περιοχής, που καθορίζεται από το magnitude. Κατόπιν ολοκλήρωσης της συνάρτησης, επιστρέφεται μια Mat εικόνα. Δηλώνεται στην Main.h ως εξής: cv::mat ImageManipulator::ApplyErodeEffect(const cv::mat& image, int element_shape, int magnitude); Η υλοποίηση της συνάρτησης στην Main.cpp ακολούθως: cv::mat ImageManipulator::ApplyErodeEffect(const cv::mat& image, int element_shape, int magnitude) -29-

// int element_shape -> cv::morph_rect = 0 cv::morph_cross = 1 cv::morph_ellipse = 2 if (element_shape < 0) // invalid element shape received return image; else cv::mat result; cv::mat element = cv::getstructuringelement(element_shape, cv::size(magnitude * 2 + 1, magnitude * 2 + 1), cv::point(magnitude, magnitude)); cv::erode(image, result, element); return result; 5.3.9 Συνάρτηση ApplyDillateEffect Η συνάρτηση ApplyDillateEffect δέχεται ως παράμετρο μια Mat εικόνα, καθώς και 2 παραμέτρους για την μορφοποίηση της εικόνας. Εντοπίζει στην αρχική εικόνα τις φωτεινές περιοχές και τις επεκτείνει προς τα γειτονικά pixel, αναλόγως των παραμέτρων που έχουμε καθορίσει. Οι καθορισμένοι παράμετροι έχουν να κάνουν με την επιλογή των γειτονικών pixel (τετράγωνο, σταυρός δηλαδή πάνω/κάτω, κύκλος) σε ένα εύρος, από τον εντοπισμό της φωτεινής περιοχής, που καθορίζεται από το magnitude. Κατόπιν ολοκλήρωσης της συνάρτησης, επιστρέφεται μια Mat εικόνα. Δηλώνεται στην Main.h ως εξής: cv::mat ImageManipulator::ApplyDillateEffect(const cv::mat& image, int element_shape, int magnitude); Η υλοποίηση της συνάρτησης στην Main.cpp ακολούθως: cv::mat ImageManipulator::ApplyDillateEffect(const cv::mat& image, int element_shape, int magnitude) // int element_shape -> cv::morph_rect = 0 cv::morph_cross = 1 cv::morph_ellipse = 2 if (element_shape < 0) // invalid element shape received return image; else cv::mat result; cv::mat element = cv::getstructuringelement(element_shape, cv::size(magnitude * 2 + 1, magnitude * 2 + 1), cv::point(magnitude, magnitude)); cv::dilate(image, result, element); return result; -30-