//Created By Pieter Omvlee on 24-11-06
#import <QuartzCore/QuartzCore.h>
#import <Cocoa/Cocoa.h>
#import <Chocolat/Chocolat.h>

#import "MSFilter.h"
#import "MSParentSelect.h"
#import "MSFilterInfo.h"
#import "MSDummyFilter.h"

@interface MSFilterController : MSParentSelect <NSCopying>
{
  id delegate;
  id controller;
}
+ (NSMenu *)allFiltersMenu:(id)sender selector:(SEL)sel;

/* Roep deze methode aan om de gebruikte filters aan anImage toe te voegen. Returnt een kopie van het image met de filters */
- (id)renderImage:(id)coreImage innerFrame:(NSRect)f specialCase:(BOOL)b;

/* Voeg een filter met een bepaalde naam toe, de naam mag zowel bv CIGaussianBlur zijn als Gaussian Blur */
- (void)addFilterWithName:(NSString *)name;
- (void)removeFilterWithName:(NSString *)name;
- (void)removeFilter:(id)filter;
- (void)removeAllFilters;

- (NSMutableArray *)filters;//return alle filters

- (void)sendUpdate;
- (void)sendFilterUpdate:(BOOL)b;

- (id)delegate;
- (void)setDelegate:(id)aValue;

- (id)controller;
- (void)setController:(id)aValue;

- (IBAction)addFilterAction:(id)sender;
@end

@interface NSObject (MSFilterControllerDelegate)
- (void)filterController:(MSFilterController *)fc selectedFilter:(MSFilter *)fl;
- (NSBezierPath *)bezierBoundsForFilterController:(MSFilterController *)fc;
- (BOOL)usesBorderImageForFilterController:(MSFilterController *)fc;
- (BOOL)borderIsThinLine;
@end
