Mercurial > projects > dstep
diff dstep/appkit/NSGraphicsContext.d @ 16:19885b43130e
Huge update, the bridge actually works now
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Sun, 03 Jan 2010 22:06:11 +0100 |
parents | |
children | b9de51448c6b |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dstep/appkit/NSGraphicsContext.d Sun Jan 03 22:06:11 2010 +0100 @@ -0,0 +1,315 @@ +/** + * 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.NSGraphicsContext; + +import dstep.appkit.AppKitDefines; +import dstep.appkit.NSBitmapImageRep; +import dstep.appkit.NSGraphics; +import dstep.appkit.NSWindow; +import dstep.foundation.NSDictionary; +import dstep.foundation.NSGeometry; +import dstep.foundation.NSObjCRuntime; +import dstep.foundation.NSObject; +import dstep.foundation.NSString; +import dstep.objc.bridge.Bridge; +import dstep.objc.objc; +import dstep.quartzcore.CIContext; + +import bindings = dstep.appkit.NSGraphicsContext_bindings; + +typedef NSUInteger NSImageInterpolation; +typedef NSInteger NSColorRenderingIntent; + +private +{ + NSString NSGraphicsContextDestinationAttributeName_; + NSString NSGraphicsContextRepresentationFormatAttributeName_; + NSString NSGraphicsContextPSFormat_; + NSString NSGraphicsContextPDFFormat_; +} + +NSString NSGraphicsContextDestinationAttributeName () +{ + if (NSGraphicsContextDestinationAttributeName_) + return NSGraphicsContextDestinationAttributeName_; + + return NSGraphicsContextDestinationAttributeName_ = new NSString(bindings.NSGraphicsContextDestinationAttributeName); +} + +NSString NSGraphicsContextRepresentationFormatAttributeName () +{ + if (NSGraphicsContextRepresentationFormatAttributeName_) + return NSGraphicsContextRepresentationFormatAttributeName_; + + return NSGraphicsContextRepresentationFormatAttributeName_ = new NSString(bindings.NSGraphicsContextRepresentationFormatAttributeName); +} + +NSString NSGraphicsContextPSFormat () +{ + if (NSGraphicsContextPSFormat_) + return NSGraphicsContextPSFormat_; + + return NSGraphicsContextPSFormat_ = new NSString(bindings.NSGraphicsContextPSFormat); +} + +NSString NSGraphicsContextPDFFormat () +{ + if (NSGraphicsContextPDFFormat_) + return NSGraphicsContextPDFFormat_; + + return NSGraphicsContextPDFFormat_ = new NSString(bindings.NSGraphicsContextPDFFormat); +} + +enum +{ + NSImageInterpolationDefault, + NSImageInterpolationNone, + NSImageInterpolationLow, + NSImageInterpolationHigh +} + +enum +{ + NSColorRenderingIntentDefault, + NSColorRenderingIntentAbsoluteColorimetric, + NSColorRenderingIntentRelativeColorimetric, + NSColorRenderingIntentPerceptual, + NSColorRenderingIntentSaturation +} + +const TNSQuartzCoreAdditions = ` + + CIContext CIContext_ () + { + return invokeObjcSelf!(CIContext, "CIContext"); + } + + //mixin ObjcBindMethod!(CIContext_, "CIContext"); + +`; + +const TNSGraphicsContext_RenderingOptions = ` + + void setShouldAntialias (bool antialias) + { + return invokeObjcSelf!(void, "setShouldAntialias:", bool)(antialias); + } + + bool shouldAntialias () + { + return invokeObjcSelf!(bool, "shouldAntialias"); + } + + void setImageInterpolation (uint interpolation) + { + return invokeObjcSelf!(void, "setImageInterpolation:", uint)(interpolation); + } + + uint imageInterpolation () + { + return invokeObjcSelf!(uint, "imageInterpolation"); + } + + void setPatternPhase (NSPoint phase) + { + return invokeObjcSelf!(void, "setPatternPhase:", NSPoint)(phase); + } + + NSPoint patternPhase () + { + return invokeObjcSelf!(NSPoint, "patternPhase"); + } + + void setCompositingOperation (uint operation) + { + return invokeObjcSelf!(void, "setCompositingOperation:", uint)(operation); + } + + uint compositingOperation () + { + return invokeObjcSelf!(uint, "compositingOperation"); + } + + int colorRenderingIntent () + { + return invokeObjcSelf!(int, "colorRenderingIntent"); + } + + void setColorRenderingIntent (int renderingIntent) + { + return invokeObjcSelf!(void, "setColorRenderingIntent:", int)(renderingIntent); + } + + //mixin ObjcBindMethod!(setShouldAntialias, "setShouldAntialias:"); + //mixin ObjcBindMethod!(shouldAntialias, "shouldAntialias"); + //mixin ObjcBindMethod!(setImageInterpolation, "setImageInterpolation:"); + //mixin ObjcBindMethod!(imageInterpolation, "imageInterpolation"); + //mixin ObjcBindMethod!(setPatternPhase, "setPatternPhase:"); + //mixin ObjcBindMethod!(patternPhase, "patternPhase"); + //mixin ObjcBindMethod!(setCompositingOperation, "setCompositingOperation:"); + //mixin ObjcBindMethod!(compositingOperation, "compositingOperation"); + //mixin ObjcBindMethod!(colorRenderingIntent, "colorRenderingIntent"); + //mixin ObjcBindMethod!(setColorRenderingIntent, "setColorRenderingIntent:"); + +`; + +class NSGraphicsContext : NSObject +{ + mixin (ObjcWrap); + + static NSGraphicsContext graphicsContextWithAttributes (NSDictionary attributes) + { + return invokeObjcSelfClass!(NSGraphicsContext, "graphicsContextWithAttributes:", NSDictionary)(attributes); + } + + static NSGraphicsContext graphicsContextWithWindow (NSWindow window) + { + return invokeObjcSelfClass!(NSGraphicsContext, "graphicsContextWithWindow:", NSWindow)(window); + } + + static NSGraphicsContext graphicsContextWithBitmapImageRep (NSBitmapImageRep bitmapRep) + { + return invokeObjcSelfClass!(NSGraphicsContext, "graphicsContextWithBitmapImageRep:", NSBitmapImageRep)(bitmapRep); + } + + static NSGraphicsContext graphicsContextWithGraphicsPort (void* graphicsPort, bool initialFlippedState) + { + return invokeObjcSelfClass!(NSGraphicsContext, "graphicsContextWithGraphicsPort:flipped:", void*, bool)(graphicsPort, initialFlippedState); + } + + static NSGraphicsContext currentContext () + { + return invokeObjcSelfClass!(NSGraphicsContext, "currentContext"); + } + + static void setCurrentContext (NSGraphicsContext context) + { + return invokeObjcSelfClass!(void, "setCurrentContext:", NSGraphicsContext)(context); + } + + static bool currentContextDrawingToScreen () + { + return invokeObjcSelfClass!(bool, "currentContextDrawingToScreen"); + } + + static void saveGraphicsState_static () + { + return invokeObjcSelfClass!(void, "saveGraphicsState"); + } + + static void restoreGraphicsState_static () + { + return invokeObjcSelfClass!(void, "restoreGraphicsState"); + } + + static void setGraphicsState (NSInteger gState) + { + return invokeObjcSelfClass!(void, "setGraphicsState:", NSInteger)(gState); + } + + NSDictionary attributes () + { + return invokeObjcSelf!(NSDictionary, "attributes"); + } + + bool isDrawingToScreen () + { + return invokeObjcSelf!(bool, "isDrawingToScreen"); + } + + void saveGraphicsState () + { + return invokeObjcSelf!(void, "saveGraphicsState"); + } + + void restoreGraphicsState () + { + return invokeObjcSelf!(void, "restoreGraphicsState"); + } + + void flushGraphics () + { + return invokeObjcSelf!(void, "flushGraphics"); + } + + Object focusStack () + { + return invokeObjcSelf!(Object, "focusStack"); + } + + void setFocusStack (Object stack) + { + return invokeObjcSelf!(void, "setFocusStack:", Object)(stack); + } + + void* graphicsPort () + { + return invokeObjcSelf!(void*, "graphicsPort"); + } + + bool isFlipped () + { + return invokeObjcSelf!(bool, "isFlipped"); + } + + // NSQuartzCoreAdditions + CIContext CIContext_ () + { + return invokeObjcSelf!(CIContext, "CIContext"); + } + + // NSGraphicsContext_RenderingOptions + void setShouldAntialias (bool antialias) + { + return invokeObjcSelf!(void, "setShouldAntialias:", bool)(antialias); + } + + bool shouldAntialias () + { + return invokeObjcSelf!(bool, "shouldAntialias"); + } + + void setImageInterpolation (uint interpolation) + { + return invokeObjcSelf!(void, "setImageInterpolation:", uint)(interpolation); + } + + uint imageInterpolation () + { + return invokeObjcSelf!(uint, "imageInterpolation"); + } + + void setPatternPhase (NSPoint phase) + { + return invokeObjcSelf!(void, "setPatternPhase:", NSPoint)(phase); + } + + NSPoint patternPhase () + { + return invokeObjcSelf!(NSPoint, "patternPhase"); + } + + void setCompositingOperation (uint operation) + { + return invokeObjcSelf!(void, "setCompositingOperation:", uint)(operation); + } + + uint compositingOperation () + { + return invokeObjcSelf!(uint, "compositingOperation"); + } + + int colorRenderingIntent () + { + return invokeObjcSelf!(int, "colorRenderingIntent"); + } + + void setColorRenderingIntent (int renderingIntent) + { + return invokeObjcSelf!(void, "setColorRenderingIntent:", int)(renderingIntent); + } +} \ No newline at end of file