Annotation of Examples/AppKit/Draw/Curve.m, revision 1.1

1.1     ! root        1: #import "draw.h"
        !             2: 
        !             3: /*
        !             4:  * This line is just a stub to get genstrings to generate
        !             5:  * a .strings file entry for the name of this type of Graphic.
        !             6:  * The name is used in the Undo New <Whatever> menu item.
        !             7:  *
        !             8:  * NXLocalString("Curve", NULL, "Name of the tool that draws curves, i.e., the %s of the New %s operation.")
        !             9:  */
        !            10: 
        !            11: @implementation Curve
        !            12: 
        !            13: + initialize
        !            14: /*
        !            15:  * This bumps the class version so that we can compatibly read
        !            16:  * old Graphic objects out of an archive.
        !            17:  */
        !            18: {
        !            19:     [Curve setVersion:1];
        !            20:     return self;
        !            21: }
        !            22: 
        !            23: - (float)arrowAngle:(int)corner
        !            24: /*
        !            25:  * Since our control points are at a 90 degree angle, we'll draw our arrows
        !            26:  * at 90 degree angles (however, this method breaks down a bit as the bounds
        !            27:  * get very skinny--perhaps a better one could be found).
        !            28:  */
        !            29: {
        !            30:     if (gFlags.downhill) {
        !            31:        switch (corner) {
        !            32:            case UPPER_LEFT: return 180.0;
        !            33:            case LOWER_RIGHT: return - 90.0;
        !            34:        }
        !            35:     } else {
        !            36:        switch (corner) {
        !            37:            case UPPER_RIGHT: return 0.0;
        !            38:            case LOWER_LEFT: return -90.0;
        !            39:        }
        !            40:     }
        !            41:     return 0.0;
        !            42: }
        !            43: 
        !            44: - drawLine
        !            45: /*
        !            46:  * Overridden from our superclass (Line).
        !            47:  * This is called from the draw method to actually do the drawing of the line,
        !            48:  * that way, we can inherit the arrow drawing, etc ...
        !            49:  */
        !            50: {
        !            51:     if (gFlags.downhill) {
        !            52:        PSCurve(bounds.origin.x, bounds.origin.y + bounds.size.height,
        !            53:                bounds.origin.x + bounds.size.width,
        !            54:                bounds.origin.y + bounds.size.height,
        !            55:                bounds.origin.x + bounds.size.width,
        !            56:                bounds.origin.y + bounds.size.height,
        !            57:                bounds.origin.x + bounds.size.width, bounds.origin.y);
        !            58:     } else {
        !            59:        PSCurve(bounds.origin.x, bounds.origin.y,
        !            60:                bounds.origin.x,
        !            61:                bounds.origin.y + bounds.size.height,
        !            62:                bounds.origin.x,
        !            63:                bounds.origin.y + bounds.size.height,
        !            64:                bounds.origin.x + bounds.size.width,
        !            65:                bounds.origin.y + bounds.size.height);
        !            66:     }
        !            67:     return self;
        !            68: }
        !            69: 
        !            70: - (BOOL)hit:(const NXPoint *)p
        !            71: /*
        !            72:  * Line only gets a hit if the mouse is within some tolerance of the line.
        !            73:  * Obviously that algorithm doesn't work for a curve.  We could come up
        !            74:  * with the proper algorithm to only hit a curve if it is within a tolerance,
        !            75:  * but that would be complicated so we take the easy way out and just
        !            76:  * get a hit if it is anywhere in the bounds.  It is unfortunate that we
        !            77:  * have to copy code from Graphic to accomplish this.  Perhaps a better
        !            78:  * way exists?
        !            79:  */
        !            80: {
        !            81:     return (!gFlags.locked && gFlags.active && NXMouseInRect(p, &bounds, NO));
        !            82: }
        !            83: 
        !            84: @end
        !            85: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.