NineSlice

This application demonstrates use of the 'nine-slice' functionality of the CALayer Class. Also demonstrates the use of drag-n-drop to load images.

NineSliceAppDelegate.h/m
Standard app delegate generated by Xcode for a new project.


AppController.h/m
This is the main controller for the application and handles the setup of the layer hierarchy, connecting them up to the view, handling drag-n-drop, and updating the layers when the sliders move. An instance of this class resides in MainMenu.xib. That instance is the delegate of the application's main window (to facilitate drag-n-drop), and uses IBOutlet references for the views (which have been wired up through Interface Builder).

-(void)awakeFromNib
This method will be called when the AppController instance is 'defrosted' from the nib and will setup the layer hierarchy, register for drag-n-drop notifications, and load the placeholder image.

-(IBAction)slidersMoved:(id)sender;
Update the layer with the new slider values.

-(IBAction)resetSliders:(id)sender;
Reset the slider values and update the layer.

-(NSDragOperation)draggingEntered:(id < NSDraggingInfo >)sender
Inform the pasteboard that we intend to link to the dragged file, used to implement the 'drag-n-drop' feature.

-(BOOL)performDragOperation:(id < NSDraggingInfo >)sender
If the dragged file is a valid image, update the views. Otherwise reject, used to implement the 'drag-n-drop' feature.


SliceView.h/m
View to display the guidelines which show how the image will be sliced.

-(void)drawRect:(NSRect)rect
Called by the system to redraw the window, draws the image and slice guidelines according to the values 'southWest' and 'northEast'.

-(void)sliceWithRect:(CGRect)rect
Given new dimensions for the center rect, redraw the guidelines.