// // BPInteractiveItem.m // Piles3 // // Created by Bea on 30/06/05. // Copyright 2005 __MyCompanyName__. All rights reserved. // #import "BPInteractiveItem.h" @implementation BPDefaultInteractiveItem - (id)init { [super init]; offset = malloc(sizeof(NSSize)); *offset = NSZeroSize; position = malloc(sizeof(NSPoint)); *position = NSZeroPoint; dragFormPosition = malloc(sizeof(NSPoint)); *dragFormPosition = NSZeroPoint; trackingRectNum = 0; return self; } - (void)setPositionOffset:(NSSize)theOffset { offset->width = theOffset.width; offset->height = theOffset.height; } - (void)moveWithOffsetToPoint:(NSPoint)point { NSPoint newPosition; newPosition.x = point.x + offset->width; newPosition.y = point.y + offset->height; [self setPosition:newPosition]; } - (void)setPosition:(NSPoint)iconPosition { position->x = iconPosition.x; position->y = iconPosition.y; // move dragFormPosition to the current position // would doing just *dragFormPosition = *position make a memory leak? dragFormPosition->x = position->x; dragFormPosition->y = position->y; } - (NSPoint)position { return *position; } - (NSPoint)dragFormPosition { return *dragFormPosition; } - (void)moveDragFormWithOffsetToPoint:(NSPoint)point { dragFormPosition->x = point.x + offset->width; dragFormPosition->y = point.y + offset->height; beingDragged = YES; } - (void)drop { [self setPosition:*dragFormPosition]; beingDragged = NO; } - (void)snapBackWithOffsetToPoint:(NSPoint)point { [self moveDragFormWithOffsetToPoint:point]; [self drop]; } - (BOOL)isBeingDragged { return beingDragged; } - (void)setOnDragDest:(BOOL)onDest { onDragDest = onDest; } - (BOOL)isOnDragDest { return onDragDest; } - (void)drawSelf {} - (void)drawDragForm {} - (BOOL)isMouseOver:(NSPoint)point { return NO; } - (void)setTrackingRectNum:(int)num { trackingRectNum = num; } - (int)trackingRectNum { return trackingRectNum; } - (NSRect)trackingRectBounds { return NSZeroRect; } - (void)mouseEnteredTrackingRect {} - (void)mouseExitedTrackingRect {} - (void)dealloc { NSLog(@"dealloc BPInteractiveItem"); free(offset); free(position); free(dragFormPosition); [super dealloc]; } @end