view dstep/appkit/NSParagraphStyle.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 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.NSParagraphStyle;

import dstep.appkit.NSText;
import dstep.applicationservices.coregraphics.CGBase;
import dstep.foundation.NSArray;
import dstep.foundation.NSCoder;
import dstep.foundation.NSDictionary;
import dstep.foundation.NSObjCRuntime;
import dstep.foundation.NSObject;
import dstep.foundation.NSString;
import dstep.foundation.NSZone;
import dstep.objc.bridge.Bridge;
import dstep.objc.objc;

import bindings = dstep.appkit.NSParagraphStyle_bindings;

alias NSUInteger NSTextTabType;
alias NSUInteger NSLineBreakMode;

private
{
	NSString NSTabColumnTerminatorsAttributeName_;
}

NSString NSTabColumnTerminatorsAttributeName ()
{
	if (NSTabColumnTerminatorsAttributeName_)
		return NSTabColumnTerminatorsAttributeName_;

	return NSTabColumnTerminatorsAttributeName_ = new NSString(bindings.NSTabColumnTerminatorsAttributeName);
}

enum
{
	NSLeftTabStopType = 0,
	NSRightTabStopType,
	NSCenterTabStopType,
	NSDecimalTabStopType
}

enum
{
	NSLineBreakByWordWrapping = 0,
	NSLineBreakByCharWrapping,
	NSLineBreakByClipping,
	NSLineBreakByTruncatingHead,
	NSLineBreakByTruncatingTail,
	NSLineBreakByTruncatingMiddle
}

class NSTextTab : NSObject, INSCopying, INSCoding
{
	mixin (ObjcWrap);
	
	this (NSCoder aDecoder)
	{
		super(typeof(this).alloc.initWithCoder(aDecoder).objcObject);
	}
	
	void encodeWithCoder (NSCoder aCoder)
	{
		return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder);
	}
	
	typeof(this) initWithCoder (NSCoder aDecoder)
	{
		return invokeObjcSelf!(typeof(this), "initWithCoder:", NSCoder)(aDecoder);
	}
	
	typeof(this) copyWithZone (NSZone* zone)
	{
		return invokeObjcSelf!(typeof(this), "copyWithZone:", NSZone*)(zone);
	}

	NSTextTab initWithTextAlignment (uint alignment, CGFloat loc, NSDictionary options)
	{
		id result = invokeObjcSelf!(id, "initWithTextAlignment:location:options:", uint, CGFloat, NSDictionary)(alignment, loc, options);
		return result is this.objcObject ? this : (result !is null ? new NSTextTab(result) : null);
	}

	this (uint alignment, CGFloat loc, NSDictionary options)
	{
		super(NSTextTab.alloc.initWithTextAlignment(alignment, loc, options).objcObject);
	}

	uint alignment ()
	{
		return invokeObjcSelf!(uint, "alignment");
	}

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

	NSTextTab initWithType (uint type, CGFloat loc)
	{
		id result = invokeObjcSelf!(id, "initWithType:location:", uint, CGFloat)(type, loc);
		return result is this.objcObject ? this : (result !is null ? new NSTextTab(result) : null);
	}

	this (uint type, CGFloat loc)
	{
		super(NSTextTab.alloc.initWithType(type, loc).objcObject);
	}

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

	uint tabStopType ()
	{
		return invokeObjcSelf!(uint, "tabStopType");
	}

}

class NSMutableParagraphStyle : NSParagraphStyle
{
	mixin (ObjcWrap);

	void setLineSpacing (CGFloat aFloat)
	{
		return invokeObjcSelf!(void, "setLineSpacing:", CGFloat)(aFloat);
	}

	void setParagraphSpacing (CGFloat aFloat)
	{
		return invokeObjcSelf!(void, "setParagraphSpacing:", CGFloat)(aFloat);
	}

	void setAlignment (uint alignment)
	{
		return invokeObjcSelf!(void, "setAlignment:", uint)(alignment);
	}

	void setFirstLineHeadIndent (CGFloat aFloat)
	{
		return invokeObjcSelf!(void, "setFirstLineHeadIndent:", CGFloat)(aFloat);
	}

	void setHeadIndent (CGFloat aFloat)
	{
		return invokeObjcSelf!(void, "setHeadIndent:", CGFloat)(aFloat);
	}

	void setTailIndent (CGFloat aFloat)
	{
		return invokeObjcSelf!(void, "setTailIndent:", CGFloat)(aFloat);
	}

	void setLineBreakMode (uint mode)
	{
		return invokeObjcSelf!(void, "setLineBreakMode:", uint)(mode);
	}

	void setMinimumLineHeight (CGFloat aFloat)
	{
		return invokeObjcSelf!(void, "setMinimumLineHeight:", CGFloat)(aFloat);
	}

	void setMaximumLineHeight (CGFloat aFloat)
	{
		return invokeObjcSelf!(void, "setMaximumLineHeight:", CGFloat)(aFloat);
	}

	void addTabStop (NSTextTab anObject)
	{
		return invokeObjcSelf!(void, "addTabStop:", NSTextTab)(anObject);
	}

	void removeTabStop (NSTextTab anObject)
	{
		return invokeObjcSelf!(void, "removeTabStop:", NSTextTab)(anObject);
	}

	void setTabStops (NSArray array)
	{
		return invokeObjcSelf!(void, "setTabStops:", NSArray)(array);
	}

	void setParagraphStyle (NSParagraphStyle obj)
	{
		return invokeObjcSelf!(void, "setParagraphStyle:", NSParagraphStyle)(obj);
	}

	void setBaseWritingDirection (int writingDirection)
	{
		return invokeObjcSelf!(void, "setBaseWritingDirection:", int)(writingDirection);
	}

	void setLineHeightMultiple (CGFloat aFloat)
	{
		return invokeObjcSelf!(void, "setLineHeightMultiple:", CGFloat)(aFloat);
	}

	void setParagraphSpacingBefore (CGFloat aFloat)
	{
		return invokeObjcSelf!(void, "setParagraphSpacingBefore:", CGFloat)(aFloat);
	}

	void setDefaultTabInterval (CGFloat aFloat)
	{
		return invokeObjcSelf!(void, "setDefaultTabInterval:", CGFloat)(aFloat);
	}

	void setTextBlocks (NSArray array)
	{
		return invokeObjcSelf!(void, "setTextBlocks:", NSArray)(array);
	}

	void setTextLists (NSArray array)
	{
		return invokeObjcSelf!(void, "setTextLists:", NSArray)(array);
	}

	void setHyphenationFactor (float aFactor)
	{
		return invokeObjcSelf!(void, "setHyphenationFactor:", float)(aFactor);
	}

	void setTighteningFactorForTruncation (float aFactor)
	{
		return invokeObjcSelf!(void, "setTighteningFactorForTruncation:", float)(aFactor);
	}

	void setHeaderLevel (NSInteger level)
	{
		return invokeObjcSelf!(void, "setHeaderLevel:", NSInteger)(level);
	}
}

class NSParagraphStyle : NSObject, INSCopying, INSMutableCopying, INSCoding
{
	mixin (ObjcWrap);
	
	NSParagraphStyle mutableCopyWithZone (NSZone* aZone)
	{
		return invokeObjcSelf!(NSParagraphStyle, "mutableCopyWithZone:", NSZone*)(aZone);
	}
	
	this (NSCoder aDecoder)
	{
		super(typeof(this).alloc.initWithCoder(aDecoder).objcObject);
	}
	
	void encodeWithCoder (NSCoder aCoder)
	{
		return invokeObjcSelf!(void, "encodeWithCoder:", NSCoder)(aCoder);
	}
	
	typeof(this) initWithCoder (NSCoder aDecoder)
	{
		return invokeObjcSelf!(typeof(this), "initWithCoder:", NSCoder)(aDecoder);
	}
	
	typeof(this) copyWithZone (NSZone* zone)
	{
		return invokeObjcSelf!(typeof(this), "copyWithZone:", NSZone*)(zone);
	}

	static NSParagraphStyle defaultParagraphStyle ()
	{
		return invokeObjcSelfClass!(NSParagraphStyle, "defaultParagraphStyle");
	}

	static int defaultWritingDirectionForLanguage (NSString languageName)
	{
		return invokeObjcSelfClass!(int, "defaultWritingDirectionForLanguage:", NSString)(languageName);
	}

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

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

	uint alignment ()
	{
		return invokeObjcSelf!(uint, "alignment");
	}

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

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

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

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

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

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

	uint lineBreakMode ()
	{
		return invokeObjcSelf!(uint, "lineBreakMode");
	}

	int baseWritingDirection ()
	{
		return invokeObjcSelf!(int, "baseWritingDirection");
	}

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

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

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

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

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

	float hyphenationFactor ()
	{
		return invokeObjcSelf!(float, "hyphenationFactor");
	}

	float tighteningFactorForTruncation ()
	{
		return invokeObjcSelf!(float, "tighteningFactorForTruncation");
	}

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

}