//
//  MPPowerFunctionLayout.m
//  MathKit
//
//  Created by Kim Wittenburg on 30.09.14.
//  Copyright (c) 2014 Kim Wittenburg. All rights reserved.
//

#import "MPPowerFunctionLayout.h"

#import "MPPowerFunction.h"


#define kPowerFunctionExponentXOffset 1
#define kPowerFunctionTrailingOffset 2



@implementation MPPowerFunctionLayout

- (NSRect)baseBounds
{
    if (NSEqualRects(_baseBounds, NSZeroRect)) {
        return NSMakeRect(0, kMPEmptyBoxYOrigin, 0, kMPEmptyBoxHeight);
    }
    return _baseBounds;
}


- (MPPowerFunction *)powerFunction
{
    return (MPPowerFunction *)self.function;
}


- (NSIndexSet *)indexesOfRemainingChildren
{
    return [NSIndexSet indexSetWithIndex:0];
}


- (NSPoint)offsetOfChildLayoutAtIndex:(NSUInteger)index
{
    CGFloat y = (self.baseBounds.size.height + self.baseBounds.origin.y) / 2;
    return NSMakePoint(kPowerFunctionExponentXOffset, y);
}


- (BOOL)childAtIndexUsesSmallSize:(NSUInteger)index
{
    return YES;
}


- (NSIndexPath *)indexPathForLocalMousePoint:(NSPoint)point
{
    return [[NSIndexPath indexPathWithIndex:0] indexPathByAddingIndex:0];
}


- (NSRect)generateBounds
{
    NSRect exponentBounds = [self childLayoutAtIndex:0].bounds;
    CGFloat relativeExponentYOffset = [self offsetOfChildLayoutAtIndex:0].y;
    CGFloat y = relativeExponentYOffset + exponentBounds.origin.y;
    CGFloat width = kPowerFunctionExponentXOffset + exponentBounds.size.width + kPowerFunctionTrailingOffset;
    CGFloat height = exponentBounds.size.height;
    return NSMakeRect(0, y, width, height);
}


- (void)draw
{}

@end
