//
//  LCBaseFilter-ForSubclassers.h
//  LogoistCore
//
//  Created by Mendel Kucharzeck on 15.12.11.
//  Copyright 2011 AvisNocturna Software. All rights reserved.
//

#import "LCBaseFilter.h"

@class LCBaseObject;

enum _FilterType
{
    FilterType_Background = 0,
    FilterType_MaskDistort = 1,
    FilterType_MaskReplace = 2,
    FilterType_Overlay = 3,
    FilterType_FinalImageDistort = 4
    
}typedef FilterType;

@interface LCBaseFilter (ForSubclassers)

- (void) alternateImageInContext:(CGContextRef)context withContextBytes:(unsigned char*)bytes andMask:(CGImageRef)mask withZoomFactor:(float)zoomFactor andMaskRect:(CGRect)maskRect andPaddedRect:(CGRect)paddedRect;
- (CGImageRef) alternateMask:(CGImageRef)mask withZoomFactor:(float)zoomFactor andMaskRect:(CGRect)maskRect andPaddedRect:(CGRect)paddedRect;

@property (readonly) NSString *displayName; //Returns result from static method as default
+ (NSString*) displayName;
+ (NSString*) categoryName;

@property (readonly) NSArray *propertyEditDictionaries; //Make observeable if you are going to change the properties on the fly
@property (readonly) BOOL hasPropertyEditDictionaries;  //Defaults to YES

+ (FilterType) filterType;
- (BOOL) isCompletelyOpaqueMaskReplaceFilter;           //This is relevant only for MaskReplaceFilters in combination with images. If NO, image is drawn in Background. Defaults to YES

- (CGRect) expandMaskRectForCurrentFilterBounds:(CGRect)currentFilterBounds andOriginalMaskRect:(CGRect)maskRect;

@end
