3.3.2 ΣΧΕΔΙΑΣΗ


Οι συναρτήσεις που προσφέρει η Xlib είναι οι ακόλουθες:

    XDrawPoint(
        Display*  /* display */,
        Drawable  /* drawable, window or pixmap */,
        GC        /* gc */,
        int       /* x */,
        int       /* y */
    );
Η XDrawPoint σχεδιάζει μια σημείο στη θέση (x,y).

    XDrawLine(
        Display*  /* display */,
        Drawable  /* drawable, window or pixmap */,
        GC        /* gc */,
        int       /* x1 */,
        int       /* y1 */,
        int       /* x2 */,
        int       /* y2 */
    );
Η XDrawLine σχεδιάζει μια γραμμή απο το σημείο (x1,y1) εως το (x2,y2).

    XDrawRectangle(
        Display*      /* display */,
        Drawable      /* drawable */,
        GC            /* gc */,
        int           /* x */,
        int           /* y */,
        unsigned int  /* width */,
        unsigned int  /* height */
    );
Η XDrawRectangle σχεδιάζει ένα παραλληλόγραμμο με αρχή το σημείο (x,y) και διαστάσεις (width,height).

    XDrawArc(
        Display*      /* display */,
        Drawable      /* drawable */,
        GC            /* gc */,
        int           /* x */,
        int           /* y */,
        unsigned int  /* width */,
        unsigned int  /* height */,
        int           /* angle1 */,
        int           /* angle2 */
    );
Η XDrawArc σχεδιάζει ένα τόξο με πλάτος width, ύψος height το οποίο αρχίζει από τη γωνία angle1 και εκτείνεται σε γωνία angle2. Οι γωνίες μετρώνται σε 1/64 της μοίρας. Για την δημιουργία ενός πλήρους κύκλου διαμέτρου 100 pixel θα δώσουμε:

    XDrawArc( display, window, gc, 100, 100, (0*64), (360*64) );
Επίσης υπάρχουν και αντίστοιχες συναρτήσεις για γεμάτα παραλληλόγραμμα και τόξα, XFillRectangle και XFillArc που λαμβάνουν τα ίδια ορίσματα με τις παραπάνω. Επιπλέον για την περίπτωση που θέλουμε να σχεδιάσουμε πολλά ίδια σχήματα συνεχόμενα (μια ομάδα γραμμών για παράδειγμα) υπάχουν οι συναρτήσεις XDrawPoints, XDrawLines, XDrawArcs, XFillArcs, XDrawRectangles και XFillRectangles. Οι συναρτήσεις αυτές παίρνουν τα ορίσματα display, drawable και window και στην συνέχεια ένα πίνακα με αντίστοιχες δομές (XPoint, XArc, XRectangle), μαζί με τον αριθμό των σχημάτων που υπάρχουν σε αυτόν. Για παράδειγμα η XDrawArcs ορίζεται:

    XDrawArcs(
        Display*  /* display */,
        Drawable  /* drawable  */,
        GC        /* gc */,
        XArc*     /* arcs */,
        int       /* number of arcs */
    );
όπου η δομή XArc ορίζεται ως εξής:

    typedef struct {
        short x, y;
        unsigned short width, height;
        short angle1, angle2;
    } XArc;
Για τον προσδιορισμό των χαρακτηριστικών των διαφόρων σχημάτων υπάρχουν οι συναρτήσεις:

    XSetLineAttributes(
        Display*      /* display */,
        GC            /* gc */,
        unsigned int  /* line width */,
        int           /* line style */,
        int           /* cap style */,
        int           /* join style */
    );
Η συνάρτηση XSetLineAttributes προσδιορίζει το πάχος των γραμμών (line width), τη μορφή τους (line style), το τρόπο τελειώματός τους και τον τρόπο ενωσής τους (join style). Οι τιμές που λαμβάνουν τα τρία τελευταία ορίσματα είναι προκαθορισμένες σταθερές (defines) που ορίζονται στο Χ.h. Έτσι οι γραμμές μπορούν να έχουν συμπαγή μορφή (LineSolid), διακεκομμένη (LineOnOffDash) ή διακεκομμένη με εναλλαγή foreground και background χρώματος (LineDoubleDash). Ο τρόπος τελειώματος (cap style, έχει νόημα για γραμμές πάχους > 2) μπορεί να είναι CapButt (κανονικός), CapRound (στρογγυλεμένα άκρα), CapNotLast (κανονικός αλλά χωρίς το τελευταίο σημείο) και CapProjecting (κανονικός με επέκταση της γραμμής κατά line_width/2). Ο τρόπος ένωσης των γραμμών (join style, έχει νόημα πάλι για πάχος > 2) μπορεί να είναι JoinMiter (μυτερή ένωση), JoinRound (στρογγυλοποιημένη ένωση) ή JoinBevel (ίσια ένωση).

    XSetDashes(
        Display*  /* display */,
        GC        /* gc */,
        int       /* dash_offset */,
        char*     /* dash_list */,
        int       /* n */
    );
Ορίζει την μορφή που θα έχουν οι διακεκομμένες γραμμές. Για περισσότερες πληροφορίες ο ενδιαφερόμενος μπορεί να βρει στα online manual του UNIX ("man XSetDashes").

    XSetArcMode(
        Display*  /* display */,
        GC        /* gc */,
        int       /* arc mode */
    );
Η XSetArcMode ορίζει τη μορφή του γεμάτων τόξων. Οι τιμές που μπορεί να λάβει το τρίτο όρισμα (arc mode) είναι ArcPieSlice (σαν κομμάτι πίτας) και ArcChord (όπως προκύπτει αν ενώσουμε τα άκρα του τόξου με μια χορδή).


[prev] [up] [next] [contents] [index]