Search code examples
ioscocos2d-iphonecgrect

Simple way to display the borders of a CGRect?


I'm trying to find a way to display the borders of some CGRects in my iOS program for debugging purposes. Is there a fairly simple way to do this? I just need to see where the program is creating these rectangles, so I can track down some odd touch behaviors (or lack thereof).

My class init method:

// Initialize with points and a line number, then draw a rectangle 
// in the shape of the line
-(id)initWithPoint:(CGPoint)sP :(int)w :(int)h :(int)lN :(int)t {
    if ((self = [super init])) {
        startP = sP;
        lineNum = lN;
        width = w;
        height = h;
        int type = t;
        self.gameObjectType = kPathType;

        // Draw the path sprite
        path = [CCSprite spriteWithFile: @"line.png" rect:CGRectMake(0, 0, 5, height)];
        ccTexParams params = {GL_LINEAR,GL_LINEAR,GL_REPEAT,GL_REPEAT};
        [path.texture setTexParameters:&params];

        if(type == 1) {
            path.position = ccp(startP.x, startP.y);
        } else {
            path.rotation = 90;
            path.anchorPoint = ccp(0, 0);
            path.position = ccp(startP.x, startP.y-2);
        }

        [self addChild:path];

        // Draw the "bounding" box
        pathBox = CGRectMake(path.position.x - (path.contentSize.width/2), path.position.y - (path.contentSize.height/2), path.contentSize.width * 10, path.contentSize.height);
    }
    return self;
}

pathBox is the rect in question.


Solution

  • I figured out more-or-less how to do it: just extended the draw method in my class like so:

    -(void) draw {
        glColor4f(0, 1.0, 0, 1.0);
        glLineWidth(2.0f);
        [super draw];
    
        CGRect pathBox = CGRectMake(path.position.x - (path.contentSize.width/2), path.position.y - (path.contentSize.height/2), path.contentSize.width * 10, path.contentSize.height);
        CGPoint verts[4] = {
          ccp(pathBox.origin.x, pathBox.origin.y),
          ccp(pathBox.origin.x + pathBox.size.width, pathBox.origin.y),
          ccp(pathBox.origin.x + pathBox.size.width, pathBox.origin.y + pathBox.size.height),
          ccp(pathBox.origin.x, pathBox.origin.y + pathBox.size.height)
        };
    
        ccDrawPoly(verts, 4, YES);
    }
    

    Thanks to Blue Ether over at the Cocos2D site for the heads-up: http://www.cocos2d-iphone.org/forum/topic/21718?replies=5#post-120691