view dstep/appkit/NSView.d @ 22:f8a3b67adfcb

Removed duplicated methods
author Jacob Carlborg <doob@me.com>
date Tue, 09 Feb 2010 18:02:03 +0100
parents 19885b43130e
children b9de51448c6b
line wrap: on
line source

/**
 * Copyright: Copyright (c) 2009 Jacob Carlborg.
 * Authors: Jacob Carlborg
 * Version: Initial created: Sep 24, 2009 
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
 */
module dstep.appkit.NSView;

import dstep.appkit.AppKitDefines;
import dstep.appkit.NSAnimation;
import dstep.appkit.NSAttributedString;
import dstep.appkit.NSBitmapImageRep;
import dstep.appkit.NSClipView;
import dstep.appkit.NSCursor;
import dstep.appkit.NSEvent;
import dstep.appkit.NSGraphics;
import dstep.appkit.NSGraphicsContext;
import dstep.appkit.NSImage;
import dstep.appkit.NSMenu;
import dstep.appkit.NSMenuItem;
import dstep.appkit.NSPasteboard;
import dstep.appkit.NSResponder;
import dstep.appkit.NSRulerMarker;
import dstep.appkit.NSRulerView;
import dstep.appkit.NSScreen;
import dstep.appkit.NSScrollView;
import dstep.appkit.NSShadow;
import dstep.appkit.NSTrackingArea;
import dstep.appkit.NSWindow;
import dstep.applicationservices.coregraphics.CGBase;
import dstep.foundation.NSArray;
import dstep.foundation.NSAttributedString;
import dstep.foundation.NSData;
import dstep.foundation.NSDictionary;
import dstep.foundation.NSGeometry;
import dstep.foundation.NSObjCRuntime;
import dstep.foundation.NSRange;
import dstep.foundation.NSString;
import dstep.objc.bridge.Bridge;
import dstep.objc.objc;
import dstep.quartzcore.CALayer;
import dstep.quartzcore.CIFilter;

import bindings = dstep.appkit.NSView_bindings;

typedef NSUInteger NSBorderType;
typedef NSInteger NSTrackingRectTag;
typedef NSInteger NSToolTipTag;

alias extern (C) NSComparisonResult function (id, id, void*) Compare;

private
{
	NSString NSFullScreenModeAllScreens_;
	NSString NSFullScreenModeSetting_;
	NSString NSFullScreenModeWindowLevel_;
	NSString NSViewFrameDidChangeNotification_;
	NSString NSViewFocusDidChangeNotification_;
	NSString NSViewBoundsDidChangeNotification_;
	NSString NSViewGlobalFrameDidChangeNotification_;
	NSString NSViewDidUpdateTrackingAreasNotification_;
}

NSString NSFullScreenModeAllScreens ()
{
	if (NSFullScreenModeAllScreens_)
		return NSFullScreenModeAllScreens_;

	return NSFullScreenModeAllScreens_ = new NSString(bindings.NSFullScreenModeAllScreens);
}

NSString NSFullScreenModeSetting ()
{
	if (NSFullScreenModeSetting_)
		return NSFullScreenModeSetting_;

	return NSFullScreenModeSetting_ = new NSString(bindings.NSFullScreenModeSetting);
}

NSString NSFullScreenModeWindowLevel ()
{
	if (NSFullScreenModeWindowLevel_)
		return NSFullScreenModeWindowLevel_;

	return NSFullScreenModeWindowLevel_ = new NSString(bindings.NSFullScreenModeWindowLevel);
}

NSString NSViewFrameDidChangeNotification ()
{
	if (NSViewFrameDidChangeNotification_)
		return NSViewFrameDidChangeNotification_;

	return NSViewFrameDidChangeNotification_ = new NSString(bindings.NSViewFrameDidChangeNotification);
}

NSString NSViewFocusDidChangeNotification ()
{
	if (NSViewFocusDidChangeNotification_)
		return NSViewFocusDidChangeNotification_;

	return NSViewFocusDidChangeNotification_ = new NSString(bindings.NSViewFocusDidChangeNotification);
}

NSString NSViewBoundsDidChangeNotification ()
{
	if (NSViewBoundsDidChangeNotification_)
		return NSViewBoundsDidChangeNotification_;

	return NSViewBoundsDidChangeNotification_ = new NSString(bindings.NSViewBoundsDidChangeNotification);
}

NSString NSViewGlobalFrameDidChangeNotification ()
{
	if (NSViewGlobalFrameDidChangeNotification_)
		return NSViewGlobalFrameDidChangeNotification_;

	return NSViewGlobalFrameDidChangeNotification_ = new NSString(bindings.NSViewGlobalFrameDidChangeNotification);
}

NSString NSViewDidUpdateTrackingAreasNotification ()
{
	if (NSViewDidUpdateTrackingAreasNotification_)
		return NSViewDidUpdateTrackingAreasNotification_;

	return NSViewDidUpdateTrackingAreasNotification_ = new NSString(bindings.NSViewDidUpdateTrackingAreasNotification);
}

enum
{
	NSViewNotSizable = 0,
	NSViewMinXMargin = 1,
	NSViewWidthSizable = 2,
	NSViewMaxXMargin = 4,
	NSViewMinYMargin = 8,
	NSViewHeightSizable = 16,
	NSViewMaxYMargin = 32
}

enum : NSUInteger
{
	NSNoBorder = 0,
	NSLineBorder = 1,
	NSBezelBorder = 2,
	NSGrooveBorder = 3
}

struct _VFlags
{
	uint aboutToResize;
	uint retainCountOverMax;
	uint retainCount;
	uint interfaceStyle1;
	uint specialArchiving;
	uint needsDisplayForBounds;
	uint interfaceStyle0;
	uint removingWithoutInvalidation;
	uint needsBoundsChangeNote;
	uint boundsChangeNotesSuspended;
	uint focusChangeNotesSuspended;
	uint needsFrameChangeNote;
	uint frameChangeNotesSuspended;
	uint noVerticalAutosizing;
	uint newGState;
	uint validGState;
	uint needsDisplay;
	uint wantsGState;
	uint autoresizeSubviews;
	uint autosizing;
	uint rotatedOrScaledFromBase;
	uint rotatedFromBase;
}

const TNSDrag = `

	void dragImage (NSImage anImage, NSPoint viewLocation, NSSize initialOffset, NSEvent event, NSPasteboard pboard, Object sourceObj, bool slideFlag)
	{
		return invokeObjcSelf!(void, "dragImage:at:offset:event:pasteboard:source:slideBack:", NSImage, NSPoint, NSSize, NSEvent, NSPasteboard, Object, bool)(anImage, viewLocation, initialOffset, event, pboard, sourceObj, slideFlag);
	}

	NSArray registeredDraggedTypes ()
	{
		return invokeObjcSelf!(NSArray, "registeredDraggedTypes");
	}

	void registerForDraggedTypes (NSArray newTypes)
	{
		return invokeObjcSelf!(void, "registerForDraggedTypes:", NSArray)(newTypes);
	}

	void unregisterDraggedTypes ()
	{
		return invokeObjcSelf!(void, "unregisterDraggedTypes");
	}

	bool dragFile (NSString filename, NSRect rect, bool aFlag, NSEvent event)
	{
		return invokeObjcSelf!(bool, "dragFile:fromRect:slideBack:event:", NSString, NSRect, bool, NSEvent)(filename, rect, aFlag, event);
	}

	bool dragPromisedFilesOfTypes (NSArray typeArray, NSRect rect, Object sourceObject, bool aFlag, NSEvent event)
	{
		return invokeObjcSelf!(bool, "dragPromisedFilesOfTypes:fromRect:source:slideBack:event:", NSArray, NSRect, Object, bool, NSEvent)(typeArray, rect, sourceObject, aFlag, event);
	}

	//mixin ObjcBindMethod!(dragImage, "dragImage:at:offset:event:pasteboard:source:slideBack:");
	//mixin ObjcBindMethod!(registeredDraggedTypes, "registeredDraggedTypes");
	//mixin ObjcBindMethod!(registerForDraggedTypes, "registerForDraggedTypes:");
	//mixin ObjcBindMethod!(unregisterDraggedTypes, "unregisterDraggedTypes");
	//mixin ObjcBindMethod!(dragFile, "dragFile:fromRect:slideBack:event:");
	//mixin ObjcBindMethod!(dragPromisedFilesOfTypes, "dragPromisedFilesOfTypes:fromRect:source:slideBack:event:");

`;

const TNSFullScreenMode = `

	bool enterFullScreenMode (NSScreen screen, NSDictionary options)
	{
		return invokeObjcSelf!(bool, "enterFullScreenMode:withOptions:", NSScreen, NSDictionary)(screen, options);
	}

	void exitFullScreenModeWithOptions (NSDictionary options)
	{
		return invokeObjcSelf!(void, "exitFullScreenModeWithOptions:", NSDictionary)(options);
	}

	bool isInFullScreenMode ()
	{
		return invokeObjcSelf!(bool, "isInFullScreenMode");
	}

	//mixin ObjcBindMethod!(enterFullScreenMode, "enterFullScreenMode:withOptions:");
	//mixin ObjcBindMethod!(exitFullScreenModeWithOptions, "exitFullScreenModeWithOptions:");
	//mixin ObjcBindMethod!(isInFullScreenMode, "isInFullScreenMode");

`;

const TNSToolTipOwner = `

	NSString view (NSView view, int tag, NSPoint point, void* data)
	{
		return invokeObjcSelf!(NSString, "view:stringForToolTip:point:userData:", NSView, int, NSPoint, void*)(view, tag, point, data);
	}

	//mixin ObjcBindMethod!(view, "view:stringForToolTip:point:userData:");

`;

const TNSPrinting = `

	void writeEPSInsideRect (NSRect rect, NSPasteboard pasteboard)
	{
		return invokeObjcSelf!(void, "writeEPSInsideRect:toPasteboard:", NSRect, NSPasteboard)(rect, pasteboard);
	}

	NSData dataWithEPSInsideRect (NSRect rect)
	{
		return invokeObjcSelf!(NSData, "dataWithEPSInsideRect:", NSRect)(rect);
	}

	void writePDFInsideRect (NSRect rect, NSPasteboard pasteboard)
	{
		return invokeObjcSelf!(void, "writePDFInsideRect:toPasteboard:", NSRect, NSPasteboard)(rect, pasteboard);
	}

	NSData dataWithPDFInsideRect (NSRect rect)
	{
		return invokeObjcSelf!(NSData, "dataWithPDFInsideRect:", NSRect)(rect);
	}

	void print (Object sender)
	{
		return invokeObjcSelf!(void, "print:", Object)(sender);
	}

	bool knowsPageRange (NSRangePointer range)
	{
		return invokeObjcSelf!(bool, "knowsPageRange:", NSRangePointer)(range);
	}

	CGFloat heightAdjustLimit ()
	{
		return invokeObjcSelf!(CGFloat, "heightAdjustLimit");
	}

	CGFloat widthAdjustLimit ()
	{
		return invokeObjcSelf!(CGFloat, "widthAdjustLimit");
	}

	void adjustPageWidthNew (CGFloat* newRight, CGFloat oldLeft, CGFloat oldRight, CGFloat rightLimit)
	{
		return invokeObjcSelf!(void, "adjustPageWidthNew:left:right:limit:", CGFloat*, CGFloat, CGFloat, CGFloat)(newRight, oldLeft, oldRight, rightLimit);
	}

	void adjustPageHeightNew (CGFloat* newBottom, CGFloat oldTop, CGFloat oldBottom, CGFloat bottomLimit)
	{
		return invokeObjcSelf!(void, "adjustPageHeightNew:top:bottom:limit:", CGFloat*, CGFloat, CGFloat, CGFloat)(newBottom, oldTop, oldBottom, bottomLimit);
	}

	NSRect rectForPage (NSInteger page)
	{
		return invokeObjcSelf!(NSRect, "rectForPage:", NSInteger)(page);
	}

	NSPoint locationOfPrintRect (NSRect aRect)
	{
		return invokeObjcSelf!(NSPoint, "locationOfPrintRect:", NSRect)(aRect);
	}

	void drawPageBorderWithSize (NSSize borderSize)
	{
		return invokeObjcSelf!(void, "drawPageBorderWithSize:", NSSize)(borderSize);
	}

	NSAttributedString pageHeader ()
	{
		return invokeObjcSelf!(NSAttributedString, "pageHeader");
	}

	NSAttributedString pageFooter ()
	{
		return invokeObjcSelf!(NSAttributedString, "pageFooter");
	}

	void drawSheetBorderWithSize (NSSize borderSize)
	{
		return invokeObjcSelf!(void, "drawSheetBorderWithSize:", NSSize)(borderSize);
	}

	NSString printJobTitle ()
	{
		return invokeObjcSelf!(NSString, "printJobTitle");
	}

	void beginDocument ()
	{
		return invokeObjcSelf!(void, "beginDocument");
	}

	void endDocument ()
	{
		return invokeObjcSelf!(void, "endDocument");
	}

	void beginPageInRect (NSRect aRect, NSPoint location)
	{
		return invokeObjcSelf!(void, "beginPageInRect:atPlacement:", NSRect, NSPoint)(aRect, location);
	}

	void endPage ()
	{
		return invokeObjcSelf!(void, "endPage");
	}

	//mixin ObjcBindMethod!(writeEPSInsideRect, "writeEPSInsideRect:toPasteboard:");
	//mixin ObjcBindMethod!(dataWithEPSInsideRect, "dataWithEPSInsideRect:");
	//mixin ObjcBindMethod!(writePDFInsideRect, "writePDFInsideRect:toPasteboard:");
	//mixin ObjcBindMethod!(dataWithPDFInsideRect, "dataWithPDFInsideRect:");
	//mixin ObjcBindMethod!(print, "print:");
	//mixin ObjcBindMethod!(knowsPageRange, "knowsPageRange:");
	//mixin ObjcBindMethod!(heightAdjustLimit, "heightAdjustLimit");
	//mixin ObjcBindMethod!(widthAdjustLimit, "widthAdjustLimit");
	//mixin ObjcBindMethod!(adjustPageWidthNew, "adjustPageWidthNew:left:right:limit:");
	//mixin ObjcBindMethod!(adjustPageHeightNew, "adjustPageHeightNew:top:bottom:limit:");
	//mixin ObjcBindMethod!(rectForPage, "rectForPage:");
	//mixin ObjcBindMethod!(locationOfPrintRect, "locationOfPrintRect:");
	//mixin ObjcBindMethod!(drawPageBorderWithSize, "drawPageBorderWithSize:");
	//mixin ObjcBindMethod!(pageHeader, "pageHeader");
	//mixin ObjcBindMethod!(pageFooter, "pageFooter");
	//mixin ObjcBindMethod!(drawSheetBorderWithSize, "drawSheetBorderWithSize:");
	//mixin ObjcBindMethod!(printJobTitle, "printJobTitle");
	//mixin ObjcBindMethod!(beginDocument, "beginDocument");
	//mixin ObjcBindMethod!(endDocument, "endDocument");
	//mixin ObjcBindMethod!(beginPageInRect, "beginPageInRect:atPlacement:");
	//mixin ObjcBindMethod!(endPage, "endPage");

`;

class NSView : NSResponder
{
	mixin (ObjcWrap);

	NSView initWithFrame (NSRect frameRect)
	{
		id result = invokeObjcSelf!(id, "initWithFrame:", NSRect)(frameRect);
		return result is this.objcObject ? this : (result !is null ? new NSView(result) : null);
	}

	this (NSRect frameRect)
	{
		super(NSView.alloc.initWithFrame(frameRect).objcObject);
	}

	NSWindow window ()
	{
		return invokeObjcSelf!(NSWindow, "window");
	}

	NSView superview ()
	{
		id result = invokeObjcSelf!(id, "superview");
		return result is this.objcObject ? this : (result !is null ? new NSView(result) : null);
	}

	NSArray subviews ()
	{
		return invokeObjcSelf!(NSArray, "subviews");
	}

	bool isDescendantOf (NSView aView)
	{
		return invokeObjcSelf!(bool, "isDescendantOf:", NSView)(aView);
	}

	NSView ancestorSharedWithView (NSView aView)
	{
		id result = invokeObjcSelf!(id, "ancestorSharedWithView:", NSView)(aView);
		return result is this.objcObject ? this : (result !is null ? new NSView(result) : null);
	}

	NSView opaqueAncestor ()
	{
		id result = invokeObjcSelf!(id, "opaqueAncestor");
		return result is this.objcObject ? this : (result !is null ? new NSView(result) : null);
	}

	void setHidden (bool flag)
	{
		return invokeObjcSelf!(void, "setHidden:", bool)(flag);
	}

	bool isHidden ()
	{
		return invokeObjcSelf!(bool, "isHidden");
	}

	bool isHiddenOrHasHiddenAncestor ()
	{
		return invokeObjcSelf!(bool, "isHiddenOrHasHiddenAncestor");
	}

	void getRectsBeingDrawn (out NSRect* rects, out NSInteger count)
	{
		return invokeObjcSelf!(void, "getRectsBeingDrawn:count:", NSRect**, NSInteger*)(&rects, &count);
	}

	bool needsToDrawRect (NSRect aRect)
	{
		return invokeObjcSelf!(bool, "needsToDrawRect:", NSRect)(aRect);
	}

	bool wantsDefaultClipping ()
	{
		return invokeObjcSelf!(bool, "wantsDefaultClipping");
	}

	void viewDidHide ()
	{
		return invokeObjcSelf!(void, "viewDidHide");
	}

	void viewDidUnhide ()
	{
		return invokeObjcSelf!(void, "viewDidUnhide");
	}

	void setSubviews (NSArray newSubviews)
	{
		return invokeObjcSelf!(void, "setSubviews:", NSArray)(newSubviews);
	}

	void addSubview (NSView aView)
	{
		return invokeObjcSelf!(void, "addSubview:", NSView)(aView);
	}

	void addSubview (NSView aView, int place, NSView otherView)
	{
		return invokeObjcSelf!(void, "addSubview:positioned:relativeTo:", NSView, int, NSView)(aView, place, otherView);
	}

	void sortSubviewsUsingFunction (Compare compare, void* context)
	{
		return invokeObjcSelf!(void, "sortSubviewsUsingFunction:context:", Compare, void*)(compare, context);
	}

	void viewWillMoveToWindow (NSWindow newWindow)
	{
		return invokeObjcSelf!(void, "viewWillMoveToWindow:", NSWindow)(newWindow);
	}

	void viewDidMoveToWindow ()
	{
		return invokeObjcSelf!(void, "viewDidMoveToWindow");
	}

	void viewWillMoveToSuperview (NSView newSuperview)
	{
		return invokeObjcSelf!(void, "viewWillMoveToSuperview:", NSView)(newSuperview);
	}

	void viewDidMoveToSuperview ()
	{
		return invokeObjcSelf!(void, "viewDidMoveToSuperview");
	}

	void didAddSubview (NSView subview)
	{
		return invokeObjcSelf!(void, "didAddSubview:", NSView)(subview);
	}

	void willRemoveSubview (NSView subview)
	{
		return invokeObjcSelf!(void, "willRemoveSubview:", NSView)(subview);
	}

	void removeFromSuperview ()
	{
		return invokeObjcSelf!(void, "removeFromSuperview");
	}

	void replaceSubview (NSView oldView, NSView newView)
	{
		return invokeObjcSelf!(void, "replaceSubview:with:", NSView, NSView)(oldView, newView);
	}

	void removeFromSuperviewWithoutNeedingDisplay ()
	{
		return invokeObjcSelf!(void, "removeFromSuperviewWithoutNeedingDisplay");
	}

	void setPostsFrameChangedNotifications (bool flag)
	{
		return invokeObjcSelf!(void, "setPostsFrameChangedNotifications:", bool)(flag);
	}

	bool postsFrameChangedNotifications ()
	{
		return invokeObjcSelf!(bool, "postsFrameChangedNotifications");
	}

	void resizeSubviewsWithOldSize (NSSize oldSize)
	{
		return invokeObjcSelf!(void, "resizeSubviewsWithOldSize:", NSSize)(oldSize);
	}

	void resizeWithOldSuperviewSize (NSSize oldSize)
	{
		return invokeObjcSelf!(void, "resizeWithOldSuperviewSize:", NSSize)(oldSize);
	}

	void setAutoresizesSubviews (bool flag)
	{
		return invokeObjcSelf!(void, "setAutoresizesSubviews:", bool)(flag);
	}

	bool autoresizesSubviews ()
	{
		return invokeObjcSelf!(bool, "autoresizesSubviews");
	}

	void setAutoresizingMask (NSUInteger mask)
	{
		return invokeObjcSelf!(void, "setAutoresizingMask:", NSUInteger)(mask);
	}

	NSUInteger autoresizingMask ()
	{
		return invokeObjcSelf!(NSUInteger, "autoresizingMask");
	}

	void setFrameOrigin (NSPoint newOrigin)
	{
		return invokeObjcSelf!(void, "setFrameOrigin:", NSPoint)(newOrigin);
	}

	void setFrameSize (NSSize newSize)
	{
		return invokeObjcSelf!(void, "setFrameSize:", NSSize)(newSize);
	}

	void setFrame (NSRect frameRect)
	{
		return invokeObjcSelf!(void, "setFrame:", NSRect)(frameRect);
	}

	NSRect frame ()
	{
		return invokeObjcSelf!(NSRect, "frame");
	}

	void setFrameRotation (CGFloat angle)
	{
		return invokeObjcSelf!(void, "setFrameRotation:", CGFloat)(angle);
	}

	CGFloat frameRotation ()
	{
		return invokeObjcSelf!(CGFloat, "frameRotation");
	}

	void setFrameCenterRotation (CGFloat angle)
	{
		return invokeObjcSelf!(void, "setFrameCenterRotation:", CGFloat)(angle);
	}

	CGFloat frameCenterRotation ()
	{
		return invokeObjcSelf!(CGFloat, "frameCenterRotation");
	}

	void setBoundsOrigin (NSPoint newOrigin)
	{
		return invokeObjcSelf!(void, "setBoundsOrigin:", NSPoint)(newOrigin);
	}

	void setBoundsSize (NSSize newSize)
	{
		return invokeObjcSelf!(void, "setBoundsSize:", NSSize)(newSize);
	}

	void setBoundsRotation (CGFloat angle)
	{
		return invokeObjcSelf!(void, "setBoundsRotation:", CGFloat)(angle);
	}

	CGFloat boundsRotation ()
	{
		return invokeObjcSelf!(CGFloat, "boundsRotation");
	}

	void translateOriginToPoint (NSPoint translation)
	{
		return invokeObjcSelf!(void, "translateOriginToPoint:", NSPoint)(translation);
	}

	void scaleUnitSquareToSize (NSSize newUnitSize)
	{
		return invokeObjcSelf!(void, "scaleUnitSquareToSize:", NSSize)(newUnitSize);
	}

	void rotateByAngle (CGFloat angle)
	{
		return invokeObjcSelf!(void, "rotateByAngle:", CGFloat)(angle);
	}

	void setBounds (NSRect aRect)
	{
		return invokeObjcSelf!(void, "setBounds:", NSRect)(aRect);
	}

	NSRect bounds ()
	{
		return invokeObjcSelf!(NSRect, "bounds");
	}

	bool isFlipped ()
	{
		return invokeObjcSelf!(bool, "isFlipped");
	}

	bool isRotatedFromBase ()
	{
		return invokeObjcSelf!(bool, "isRotatedFromBase");
	}

	bool isRotatedOrScaledFromBase ()
	{
		return invokeObjcSelf!(bool, "isRotatedOrScaledFromBase");
	}

	bool isOpaque ()
	{
		return invokeObjcSelf!(bool, "isOpaque");
	}

	NSPoint convertPoint (NSPoint aPoint, NSView aView)
	{
		return invokeObjcSelf!(NSPoint, "convertPoint:fromView:", NSPoint, NSView)(aPoint, aView);
	}

	NSPoint convertPoint_toView (NSPoint aPoint, NSView aView)
	{
		return invokeObjcSelf!(NSPoint, "convertPoint:toView:", NSPoint, NSView)(aPoint, aView);
	}

	NSSize convertSize (NSSize aSize, NSView aView)
	{
		return invokeObjcSelf!(NSSize, "convertSize:fromView:", NSSize, NSView)(aSize, aView);
	}

	NSSize convertSize_toView (NSSize aSize, NSView aView)
	{
		return invokeObjcSelf!(NSSize, "convertSize:toView:", NSSize, NSView)(aSize, aView);
	}

	NSRect convertRect (NSRect aRect, NSView aView)
	{
		return invokeObjcSelf!(NSRect, "convertRect:fromView:", NSRect, NSView)(aRect, aView);
	}

	NSRect convertRect_toView (NSRect aRect, NSView aView)
	{
		return invokeObjcSelf!(NSRect, "convertRect:toView:", NSRect, NSView)(aRect, aView);
	}

	NSRect centerScanRect (NSRect aRect)
	{
		return invokeObjcSelf!(NSRect, "centerScanRect:", NSRect)(aRect);
	}

	NSPoint convertPointToBase (NSPoint aPoint)
	{
		return invokeObjcSelf!(NSPoint, "convertPointToBase:", NSPoint)(aPoint);
	}

	NSPoint convertPointFromBase (NSPoint aPoint)
	{
		return invokeObjcSelf!(NSPoint, "convertPointFromBase:", NSPoint)(aPoint);
	}

	NSSize convertSizeToBase (NSSize aSize)
	{
		return invokeObjcSelf!(NSSize, "convertSizeToBase:", NSSize)(aSize);
	}

	NSSize convertSizeFromBase (NSSize aSize)
	{
		return invokeObjcSelf!(NSSize, "convertSizeFromBase:", NSSize)(aSize);
	}

	NSRect convertRectToBase (NSRect aRect)
	{
		return invokeObjcSelf!(NSRect, "convertRectToBase:", NSRect)(aRect);
	}

	NSRect convertRectFromBase (NSRect aRect)
	{
		return invokeObjcSelf!(NSRect, "convertRectFromBase:", NSRect)(aRect);
	}

	bool canDraw ()
	{
		return invokeObjcSelf!(bool, "canDraw");
	}

	void setNeedsDisplay (bool flag)
	{
		return invokeObjcSelf!(void, "setNeedsDisplay:", bool)(flag);
	}

	void setNeedsDisplayInRect (NSRect invalidRect)
	{
		return invokeObjcSelf!(void, "setNeedsDisplayInRect:", NSRect)(invalidRect);
	}

	bool needsDisplay ()
	{
		return invokeObjcSelf!(bool, "needsDisplay");
	}

	void lockFocus ()
	{
		return invokeObjcSelf!(void, "lockFocus");
	}

	void unlockFocus ()
	{
		return invokeObjcSelf!(void, "unlockFocus");
	}

	bool lockFocusIfCanDraw ()
	{
		return invokeObjcSelf!(bool, "lockFocusIfCanDraw");
	}

	bool lockFocusIfCanDrawInContext (NSGraphicsContext context)
	{
		return invokeObjcSelf!(bool, "lockFocusIfCanDrawInContext:", NSGraphicsContext)(context);
	}

	static NSView focusView ()
	{
		return invokeObjcSelfClass!(NSView, "focusView");
	}

	NSRect visibleRect ()
	{
		return invokeObjcSelf!(NSRect, "visibleRect");
	}

	void display ()
	{
		return invokeObjcSelf!(void, "display");
	}

	void displayIfNeeded ()
	{
		return invokeObjcSelf!(void, "displayIfNeeded");
	}

	void displayIfNeededIgnoringOpacity ()
	{
		return invokeObjcSelf!(void, "displayIfNeededIgnoringOpacity");
	}

	void displayRect (NSRect rect)
	{
		return invokeObjcSelf!(void, "displayRect:", NSRect)(rect);
	}

	void displayIfNeededInRect (NSRect rect)
	{
		return invokeObjcSelf!(void, "displayIfNeededInRect:", NSRect)(rect);
	}

	void displayRectIgnoringOpacity (NSRect rect)
	{
		return invokeObjcSelf!(void, "displayRectIgnoringOpacity:", NSRect)(rect);
	}

	void displayIfNeededInRectIgnoringOpacity (NSRect rect)
	{
		return invokeObjcSelf!(void, "displayIfNeededInRectIgnoringOpacity:", NSRect)(rect);
	}

	void drawRect (NSRect rect)
	{
		return invokeObjcSelf!(void, "drawRect:", NSRect)(rect);
	}

	void displayRectIgnoringOpacity (NSRect aRect, NSGraphicsContext context)
	{
		return invokeObjcSelf!(void, "displayRectIgnoringOpacity:inContext:", NSRect, NSGraphicsContext)(aRect, context);
	}

	NSBitmapImageRep bitmapImageRepForCachingDisplayInRect (NSRect rect)
	{
		return invokeObjcSelf!(NSBitmapImageRep, "bitmapImageRepForCachingDisplayInRect:", NSRect)(rect);
	}

	void cacheDisplayInRect (NSRect rect, NSBitmapImageRep bitmapImageRep)
	{
		return invokeObjcSelf!(void, "cacheDisplayInRect:toBitmapImageRep:", NSRect, NSBitmapImageRep)(rect, bitmapImageRep);
	}

	void viewWillDraw ()
	{
		return invokeObjcSelf!(void, "viewWillDraw");
	}

	NSInteger gState ()
	{
		return invokeObjcSelf!(NSInteger, "gState");
	}

	void releaseGState ()
	{
		return invokeObjcSelf!(void, "releaseGState");
	}

	void setUpGState ()
	{
		return invokeObjcSelf!(void, "setUpGState");
	}

	void renewGState ()
	{
		return invokeObjcSelf!(void, "renewGState");
	}

	void scrollPoint (NSPoint aPoint)
	{
		return invokeObjcSelf!(void, "scrollPoint:", NSPoint)(aPoint);
	}

	bool scrollRectToVisible (NSRect aRect)
	{
		return invokeObjcSelf!(bool, "scrollRectToVisible:", NSRect)(aRect);
	}

	bool autoscroll (NSEvent theEvent)
	{
		return invokeObjcSelf!(bool, "autoscroll:", NSEvent)(theEvent);
	}

	NSRect adjustScroll (NSRect newVisible)
	{
		return invokeObjcSelf!(NSRect, "adjustScroll:", NSRect)(newVisible);
	}

	void scrollRect (NSRect aRect, NSSize delta)
	{
		return invokeObjcSelf!(void, "scrollRect:by:", NSRect, NSSize)(aRect, delta);
	}

	void translateRectsNeedingDisplayInRect (NSRect clipRect, NSSize delta)
	{
		return invokeObjcSelf!(void, "translateRectsNeedingDisplayInRect:by:", NSRect, NSSize)(clipRect, delta);
	}

	NSView hitTest (NSPoint aPoint)
	{
		id result = invokeObjcSelf!(id, "hitTest:", NSPoint)(aPoint);
		return result is this.objcObject ? this : (result !is null ? new NSView(result) : null);
	}

	bool mouse (NSPoint aPoint, NSRect aRect)
	{
		return invokeObjcSelf!(bool, "mouse:inRect:", NSPoint, NSRect)(aPoint, aRect);
	}

	Object viewWithTag (NSInteger aTag)
	{
		return invokeObjcSelf!(Object, "viewWithTag:", NSInteger)(aTag);
	}

	NSInteger tag ()
	{
		return invokeObjcSelf!(NSInteger, "tag");
	}

	bool performKeyEquivalent (NSEvent theEvent)
	{
		return invokeObjcSelf!(bool, "performKeyEquivalent:", NSEvent)(theEvent);
	}

	bool acceptsFirstMouse (NSEvent theEvent)
	{
		return invokeObjcSelf!(bool, "acceptsFirstMouse:", NSEvent)(theEvent);
	}

	bool shouldDelayWindowOrderingForEvent (NSEvent theEvent)
	{
		return invokeObjcSelf!(bool, "shouldDelayWindowOrderingForEvent:", NSEvent)(theEvent);
	}

	bool needsPanelToBecomeKey ()
	{
		return invokeObjcSelf!(bool, "needsPanelToBecomeKey");
	}

	bool mouseDownCanMoveWindow ()
	{
		return invokeObjcSelf!(bool, "mouseDownCanMoveWindow");
	}

	void addCursorRect (NSRect aRect, NSCursor anObj)
	{
		return invokeObjcSelf!(void, "addCursorRect:cursor:", NSRect, NSCursor)(aRect, anObj);
	}

	void removeCursorRect (NSRect aRect, NSCursor anObj)
	{
		return invokeObjcSelf!(void, "removeCursorRect:cursor:", NSRect, NSCursor)(aRect, anObj);
	}

	void discardCursorRects ()
	{
		return invokeObjcSelf!(void, "discardCursorRects");
	}

	void resetCursorRects ()
	{
		return invokeObjcSelf!(void, "resetCursorRects");
	}

	int addTrackingRect (NSRect aRect, Object anObject, void* data, bool flag)
	{
		return invokeObjcSelf!(int, "addTrackingRect:owner:userData:assumeInside:", NSRect, Object, void*, bool)(aRect, anObject, data, flag);
	}

	void removeTrackingRect (int tag)
	{
		return invokeObjcSelf!(void, "removeTrackingRect:", int)(tag);
	}

	void setWantsLayer (bool flag)
	{
		return invokeObjcSelf!(void, "setWantsLayer:", bool)(flag);
	}

	bool wantsLayer ()
	{
		return invokeObjcSelf!(bool, "wantsLayer");
	}

	void setLayer (CALayer newLayer)
	{
		return invokeObjcSelf!(void, "setLayer:", CALayer)(newLayer);
	}

	CALayer layer ()
	{
		return invokeObjcSelf!(CALayer, "layer");
	}

	void setAlphaValue (CGFloat viewAlpha)
	{
		return invokeObjcSelf!(void, "setAlphaValue:", CGFloat)(viewAlpha);
	}

	CGFloat alphaValue ()
	{
		return invokeObjcSelf!(CGFloat, "alphaValue");
	}

	void setBackgroundFilters (NSArray filters)
	{
		return invokeObjcSelf!(void, "setBackgroundFilters:", NSArray)(filters);
	}

	NSArray backgroundFilters ()
	{
		return invokeObjcSelf!(NSArray, "backgroundFilters");
	}

	void setCompositingFilter (CIFilter filter)
	{
		return invokeObjcSelf!(void, "setCompositingFilter:", CIFilter)(filter);
	}

	CIFilter compositingFilter ()
	{
		return invokeObjcSelf!(CIFilter, "compositingFilter");
	}

	void setContentFilters (NSArray filters)
	{
		return invokeObjcSelf!(void, "setContentFilters:", NSArray)(filters);
	}

	NSArray contentFilters ()
	{
		return invokeObjcSelf!(NSArray, "contentFilters");
	}

	void setShadow (NSShadow shadow)
	{
		return invokeObjcSelf!(void, "setShadow:", NSShadow)(shadow);
	}

	NSShadow shadow ()
	{
		return invokeObjcSelf!(NSShadow, "shadow");
	}

	void addTrackingArea (NSTrackingArea trackingArea)
	{
		return invokeObjcSelf!(void, "addTrackingArea:", NSTrackingArea)(trackingArea);
	}

	void removeTrackingArea (NSTrackingArea trackingArea)
	{
		return invokeObjcSelf!(void, "removeTrackingArea:", NSTrackingArea)(trackingArea);
	}

	NSArray trackingAreas ()
	{
		return invokeObjcSelf!(NSArray, "trackingAreas");
	}

	void updateTrackingAreas ()
	{
		return invokeObjcSelf!(void, "updateTrackingAreas");
	}

	bool shouldDrawColor ()
	{
		return invokeObjcSelf!(bool, "shouldDrawColor");
	}

	void setPostsBoundsChangedNotifications (bool flag)
	{
		return invokeObjcSelf!(void, "setPostsBoundsChangedNotifications:", bool)(flag);
	}

	bool postsBoundsChangedNotifications ()
	{
		return invokeObjcSelf!(bool, "postsBoundsChangedNotifications");
	}

	NSScrollView enclosingScrollView ()
	{
		return invokeObjcSelf!(NSScrollView, "enclosingScrollView");
	}

	NSMenu menuForEvent (NSEvent event)
	{
		return invokeObjcSelf!(NSMenu, "menuForEvent:", NSEvent)(event);
	}

	static NSMenu defaultMenu ()
	{
		return invokeObjcSelfClass!(NSMenu, "defaultMenu");
	}

	void setToolTip (NSString string)
	{
		return invokeObjcSelf!(void, "setToolTip:", NSString)(string);
	}

	NSString toolTip ()
	{
		return invokeObjcSelf!(NSString, "toolTip");
	}

	int addToolTipRect (NSRect aRect, Object anObject, void* data)
	{
		return invokeObjcSelf!(int, "addToolTipRect:owner:userData:", NSRect, Object, void*)(aRect, anObject, data);
	}

	void removeToolTip (int tag)
	{
		return invokeObjcSelf!(void, "removeToolTip:", int)(tag);
	}

	void removeAllToolTips ()
	{
		return invokeObjcSelf!(void, "removeAllToolTips");
	}

	void viewWillStartLiveResize ()
	{
		return invokeObjcSelf!(void, "viewWillStartLiveResize");
	}

	void viewDidEndLiveResize ()
	{
		return invokeObjcSelf!(void, "viewDidEndLiveResize");
	}

	bool inLiveResize ()
	{
		return invokeObjcSelf!(bool, "inLiveResize");
	}

	bool preservesContentDuringLiveResize ()
	{
		return invokeObjcSelf!(bool, "preservesContentDuringLiveResize");
	}

	NSRect rectPreservedDuringLiveResize ()
	{
		return invokeObjcSelf!(NSRect, "rectPreservedDuringLiveResize");
	}

	void getRectsExposedDuringLiveResize (NSRect* exposedRects, NSInteger* count)
	{
		return invokeObjcSelf!(void, "getRectsExposedDuringLiveResize:count:", NSRect*, NSInteger*)(exposedRects, count);
	}
	
	// NSDrag
	void dragImage (NSImage anImage, NSPoint viewLocation, NSSize initialOffset, NSEvent event, NSPasteboard pboard, Object sourceObj, bool slideFlag)
	{
		return invokeObjcSelf!(void, "dragImage:at:offset:event:pasteboard:source:slideBack:", NSImage, NSPoint, NSSize, NSEvent, NSPasteboard, Object, bool)(anImage, viewLocation, initialOffset, event, pboard, sourceObj, slideFlag);
	}

	NSArray registeredDraggedTypes ()
	{
		return invokeObjcSelf!(NSArray, "registeredDraggedTypes");
	}

	void registerForDraggedTypes (NSArray newTypes)
	{
		return invokeObjcSelf!(void, "registerForDraggedTypes:", NSArray)(newTypes);
	}

	void unregisterDraggedTypes ()
	{
		return invokeObjcSelf!(void, "unregisterDraggedTypes");
	}

	bool dragFile (NSString filename, NSRect rect, bool aFlag, NSEvent event)
	{
		return invokeObjcSelf!(bool, "dragFile:fromRect:slideBack:event:", NSString, NSRect, bool, NSEvent)(filename, rect, aFlag, event);
	}

	bool dragPromisedFilesOfTypes (NSArray typeArray, NSRect rect, Object sourceObject, bool aFlag, NSEvent event)
	{
		return invokeObjcSelf!(bool, "dragPromisedFilesOfTypes:fromRect:source:slideBack:event:", NSArray, NSRect, Object, bool, NSEvent)(typeArray, rect, sourceObject, aFlag, event);
	}
	
	// NSFullScreenMode
	bool enterFullScreenMode (NSScreen screen, NSDictionary options)
	{
		return invokeObjcSelf!(bool, "enterFullScreenMode:withOptions:", NSScreen, NSDictionary)(screen, options);
	}

	void exitFullScreenModeWithOptions (NSDictionary options)
	{
		return invokeObjcSelf!(void, "exitFullScreenModeWithOptions:", NSDictionary)(options);
	}

	bool isInFullScreenMode ()
	{
		return invokeObjcSelf!(bool, "isInFullScreenMode");
	}
	
	// NSPrinting
	void writeEPSInsideRect (NSRect rect, NSPasteboard pasteboard)
	{
		return invokeObjcSelf!(void, "writeEPSInsideRect:toPasteboard:", NSRect, NSPasteboard)(rect, pasteboard);
	}

	NSData dataWithEPSInsideRect (NSRect rect)
	{
		return invokeObjcSelf!(NSData, "dataWithEPSInsideRect:", NSRect)(rect);
	}

	void writePDFInsideRect (NSRect rect, NSPasteboard pasteboard)
	{
		return invokeObjcSelf!(void, "writePDFInsideRect:toPasteboard:", NSRect, NSPasteboard)(rect, pasteboard);
	}

	NSData dataWithPDFInsideRect (NSRect rect)
	{
		return invokeObjcSelf!(NSData, "dataWithPDFInsideRect:", NSRect)(rect);
	}

	void print (Object sender)
	{
		return invokeObjcSelf!(void, "print:", Object)(sender);
	}

	bool knowsPageRange (NSRangePointer range)
	{
		return invokeObjcSelf!(bool, "knowsPageRange:", NSRangePointer)(range);
	}

	CGFloat heightAdjustLimit ()
	{
		return invokeObjcSelf!(CGFloat, "heightAdjustLimit");
	}

	CGFloat widthAdjustLimit ()
	{
		return invokeObjcSelf!(CGFloat, "widthAdjustLimit");
	}

	void adjustPageWidthNew (CGFloat* newRight, CGFloat oldLeft, CGFloat oldRight, CGFloat rightLimit)
	{
		return invokeObjcSelf!(void, "adjustPageWidthNew:left:right:limit:", CGFloat*, CGFloat, CGFloat, CGFloat)(newRight, oldLeft, oldRight, rightLimit);
	}

	void adjustPageHeightNew (CGFloat* newBottom, CGFloat oldTop, CGFloat oldBottom, CGFloat bottomLimit)
	{
		return invokeObjcSelf!(void, "adjustPageHeightNew:top:bottom:limit:", CGFloat*, CGFloat, CGFloat, CGFloat)(newBottom, oldTop, oldBottom, bottomLimit);
	}

	NSRect rectForPage (NSInteger page)
	{
		return invokeObjcSelf!(NSRect, "rectForPage:", NSInteger)(page);
	}

	NSPoint locationOfPrintRect (NSRect aRect)
	{
		return invokeObjcSelf!(NSPoint, "locationOfPrintRect:", NSRect)(aRect);
	}

	void drawPageBorderWithSize (NSSize borderSize)
	{
		return invokeObjcSelf!(void, "drawPageBorderWithSize:", NSSize)(borderSize);
	}

	NSAttributedString pageHeader ()
	{
		return invokeObjcSelf!(NSAttributedString, "pageHeader");
	}

	NSAttributedString pageFooter ()
	{
		return invokeObjcSelf!(NSAttributedString, "pageFooter");
	}

	void drawSheetBorderWithSize (NSSize borderSize)
	{
		return invokeObjcSelf!(void, "drawSheetBorderWithSize:", NSSize)(borderSize);
	}

	NSString printJobTitle ()
	{
		return invokeObjcSelf!(NSString, "printJobTitle");
	}

	void beginDocument ()
	{
		return invokeObjcSelf!(void, "beginDocument");
	}

	void endDocument ()
	{
		return invokeObjcSelf!(void, "endDocument");
	}

	void beginPageInRect (NSRect aRect, NSPoint location)
	{
		return invokeObjcSelf!(void, "beginPageInRect:atPlacement:", NSRect, NSPoint)(aRect, location);
	}

	void endPage ()
	{
		return invokeObjcSelf!(void, "endPage");
	}
	
	// NSViewEnclosingMenuItem
	NSMenuItem enclosingMenuItem ()
	{
		return invokeObjcSelf!(NSMenuItem, "enclosingMenuItem");
	}
	
	// NSRulerMarkerClientViewDelegation
	bool rulerView_shouldMoveMarker (NSRulerView ruler, NSRulerMarker marker)
	{
		return invokeObjcSelf!(bool, "rulerView:shouldMoveMarker:", NSRulerView, NSRulerMarker)(ruler, marker);
	}	
				
	CGFloat rulerView (NSRulerView ruler, NSRulerMarker marker, CGFloat location)
	{
		return invokeObjcSelf!(CGFloat, "rulerView:willMoveMarker:toLocation:", NSRulerView, NSRulerMarker, CGFloat)(ruler, marker, location);
	}

	void rulerView (NSRulerView ruler, NSRulerMarker marker)
	{
		return invokeObjcSelf!(void, "rulerView:didMoveMarker:", NSRulerView, NSRulerMarker)(ruler, marker);
	}
			
	void rulerView_shouldRemoveMarker (NSRulerView ruler, NSRulerMarker marker)
	{
		return invokeObjcSelf!(void, "rulerView:shouldRemoveMarker:", NSRulerView, NSRulerMarker)(ruler, marker);
	}			
	
	void rulerView_didRemoveMarker (NSRulerView ruler, NSRulerMarker marker)
	{
		return invokeObjcSelf!(void, "rulerView:didRemoveMarker:", NSRulerView, NSRulerMarker)(ruler, marker);
	}
			
	bool rulerView_shouldAddMarker (NSRulerView ruler, NSRulerMarker marker)
	{
		return invokeObjcSelf!(bool, "rulerView:shouldAddMarker:", NSRulerView, NSRulerMarker)(ruler, marker);
	}
			
	CGFloat rulerView_willAddMarker_atLocation (NSRulerView ruler, NSRulerMarker marker, CGFloat location)
	{
		return invokeObjcSelf!(CGFloat, "rulerView:willAddMarker:atLocation:", NSRulerView, NSRulerMarker, CGFloat)(ruler, marker, location);
	}					
	
	void rulerView_didAddMarker (NSRulerView ruler, NSRulerMarker marker)
	{
		return invokeObjcSelf!(void, "rulerView:didAddMarker:", NSRulerView, NSRulerMarker)(ruler, marker);
	}
			
	void rulerView (NSRulerView ruler, NSEvent event)
	{
		return invokeObjcSelf!(void, "rulerView:handleMouseDown:", NSRulerView, NSEvent)(ruler, event);
	}			
	
	CGFloat rulerView (NSRulerView ruler, NSView newClient)
	{
		return invokeObjcSelf!(CGFloat, "rulerView:willSetClientView:", NSRulerView, NSView)(ruler, newClient);
	}
	
	// NSClipViewSuperview
	void reflectScrolledClipView (NSClipView aClipView)
	{
		return invokeObjcSelf!(void, "reflectScrolledClipView:", NSClipView)(aClipView);
	}

	void scrollClipView (NSClipView aClipView, NSPoint aPoint)
	{
		return invokeObjcSelf!(void, "scrollClipView:toPoint:", NSClipView, NSPoint)(aClipView, aPoint);
	}
}