Mercurial > projects > dstep
diff dstep/appkit/NSTextTable.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/NSTextTable.d Sun Jan 03 22:06:11 2010 +0100 @@ -0,0 +1,304 @@ +/** + * 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.NSTextTable; + +import dstep.appkit.NSColor; +import dstep.appkit.NSLayoutManager; +import dstep.appkit.NSText; +import dstep.appkit.NSTextContainer; +import dstep.appkit.NSView; +import dstep.applicationservices.coregraphics.CGBase; +import dstep.foundation.NSCoder; +import dstep.foundation.NSGeometry; +import dstep.foundation.NSObjCRuntime; +import dstep.foundation.NSObject; +import dstep.foundation.NSRange; +import dstep.foundation.NSZone; +import dstep.objc.bridge.Bridge; +import dstep.objc.objc; + +typedef NSUInteger NSTextBlockValueType; +typedef NSUInteger NSTextBlockDimension; +typedef NSInteger NSTextBlockLayer; +typedef NSUInteger NSTextBlockVerticalAlignment; +typedef NSUInteger NSTextTableLayoutAlgorithm; + +enum : NSUInteger +{ + NSTextBlockAbsoluteValueType = 0, + NSTextBlockPercentageValueType = 1 +} + +enum : NSUInteger +{ + NSTextBlockWidth = 0, + NSTextBlockMinimumWidth = 1, + NSTextBlockMaximumWidth = 2, + NSTextBlockHeight = 4, + NSTextBlockMinimumHeight = 5, + NSTextBlockMaximumHeight = 6 +} + +enum : NSInteger +{ + NSTextBlockPadding = -1, + NSTextBlockBorder = 0, + NSTextBlockMargin = 1 +} + +enum : NSUInteger +{ + NSTextBlockTopAlignment = 0, + NSTextBlockMiddleAlignment = 1, + NSTextBlockBottomAlignment = 2, + NSTextBlockBaselineAlignment = 3 +} + +enum : NSUInteger +{ + NSTextTableAutomaticLayoutAlgorithm = 0, + NSTextTableFixedLayoutAlgorithm = 1 +} + +class NSTextTable : NSTextBlock +{ + mixin (ObjcWrap); + + NSUInteger numberOfColumns () + { + return invokeObjcSelf!(NSUInteger, "numberOfColumns"); + } + + void setNumberOfColumns (NSUInteger numCols) + { + return invokeObjcSelf!(void, "setNumberOfColumns:", NSUInteger)(numCols); + } + + uint layoutAlgorithm () + { + return invokeObjcSelf!(uint, "layoutAlgorithm"); + } + + void setLayoutAlgorithm (uint algorithm) + { + return invokeObjcSelf!(void, "setLayoutAlgorithm:", uint)(algorithm); + } + + bool collapsesBorders () + { + return invokeObjcSelf!(bool, "collapsesBorders"); + } + + void setCollapsesBorders (bool flag) + { + return invokeObjcSelf!(void, "setCollapsesBorders:", bool)(flag); + } + + bool hidesEmptyCells () + { + return invokeObjcSelf!(bool, "hidesEmptyCells"); + } + + void setHidesEmptyCells (bool flag) + { + return invokeObjcSelf!(void, "setHidesEmptyCells:", bool)(flag); + } + + NSRect rectForBlock (NSTextTableBlock block, NSPoint startingPoint, NSRect rect, NSTextContainer textContainer, NSRange charRange) + { + return invokeObjcSelf!(NSRect, "rectForBlock:layoutAtPoint:inRect:textContainer:characterRange:", NSTextTableBlock, NSPoint, NSRect, NSTextContainer, NSRange)(block, startingPoint, rect, textContainer, charRange); + } + + NSRect boundsRectForBlock (NSTextTableBlock block, NSRect contentRect, NSRect rect, NSTextContainer textContainer, NSRange charRange) + { + return invokeObjcSelf!(NSRect, "boundsRectForBlock:contentRect:inRect:textContainer:characterRange:", NSTextTableBlock, NSRect, NSRect, NSTextContainer, NSRange)(block, contentRect, rect, textContainer, charRange); + } + + void drawBackgroundForBlock (NSTextTableBlock block, NSRect frameRect, NSView controlView, NSRange charRange, NSLayoutManager layoutManager) + { + return invokeObjcSelf!(void, "drawBackgroundForBlock:withFrame:inView:characterRange:layoutManager:", NSTextTableBlock, NSRect, NSView, NSRange, NSLayoutManager)(block, frameRect, controlView, charRange, layoutManager); + } +} + +class NSTextBlock : NSObject, INSCoding, INSCopying +{ + 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); + } + + NSTextBlock init () + { + id result = invokeObjcSelf!(id, "init"); + return result is this.objcObject ? this : (result !is null ? new NSTextBlock(result) : null); + } + + this () + { + super(NSTextBlock.alloc.init.objcObject); + } + + void setValue (CGFloat val, uint type, uint dimension) + { + return invokeObjcSelf!(void, "setValue:type:forDimension:", CGFloat, uint, uint)(val, type, dimension); + } + + CGFloat valueForDimension (uint dimension) + { + return invokeObjcSelf!(CGFloat, "valueForDimension:", uint)(dimension); + } + + uint valueTypeForDimension (uint dimension) + { + return invokeObjcSelf!(uint, "valueTypeForDimension:", uint)(dimension); + } + + void setContentWidth (CGFloat val, uint type) + { + return invokeObjcSelf!(void, "setContentWidth:type:", CGFloat, uint)(val, type); + } + + CGFloat contentWidth () + { + return invokeObjcSelf!(CGFloat, "contentWidth"); + } + + uint contentWidthValueType () + { + return invokeObjcSelf!(uint, "contentWidthValueType"); + } + + void setWidth (CGFloat val, uint type, int layer, int edge) + { + return invokeObjcSelf!(void, "setWidth:type:forLayer:edge:", CGFloat, uint, int, int)(val, type, layer, edge); + } + + void setWidth (CGFloat val, uint type, int layer) + { + return invokeObjcSelf!(void, "setWidth:type:forLayer:", CGFloat, uint, int)(val, type, layer); + } + + CGFloat widthForLayer (int layer, int edge) + { + return invokeObjcSelf!(CGFloat, "widthForLayer:edge:", int, int)(layer, edge); + } + + uint widthValueTypeForLayer (int layer, int edge) + { + return invokeObjcSelf!(uint, "widthValueTypeForLayer:edge:", int, int)(layer, edge); + } + + void setVerticalAlignment (uint alignment) + { + return invokeObjcSelf!(void, "setVerticalAlignment:", uint)(alignment); + } + + uint verticalAlignment () + { + return invokeObjcSelf!(uint, "verticalAlignment"); + } + + void setBackgroundColor (NSColor color) + { + return invokeObjcSelf!(void, "setBackgroundColor:", NSColor)(color); + } + + NSColor backgroundColor () + { + return invokeObjcSelf!(NSColor, "backgroundColor"); + } + + void setBorderColor (NSColor color, int edge) + { + return invokeObjcSelf!(void, "setBorderColor:forEdge:", NSColor, int)(color, edge); + } + + void setBorderColor (NSColor color) + { + return invokeObjcSelf!(void, "setBorderColor:", NSColor)(color); + } + + NSColor borderColorForEdge (int edge) + { + return invokeObjcSelf!(NSColor, "borderColorForEdge:", int)(edge); + } + + NSRect rectForLayoutAtPoint (NSPoint startingPoint, NSRect rect, NSTextContainer textContainer, NSRange charRange) + { + return invokeObjcSelf!(NSRect, "rectForLayoutAtPoint:inRect:textContainer:characterRange:", NSPoint, NSRect, NSTextContainer, NSRange)(startingPoint, rect, textContainer, charRange); + } + + NSRect boundsRectForContentRect (NSRect contentRect, NSRect rect, NSTextContainer textContainer, NSRange charRange) + { + return invokeObjcSelf!(NSRect, "boundsRectForContentRect:inRect:textContainer:characterRange:", NSRect, NSRect, NSTextContainer, NSRange)(contentRect, rect, textContainer, charRange); + } + + void drawBackgroundWithFrame (NSRect frameRect, NSView controlView, NSRange charRange, NSLayoutManager layoutManager) + { + return invokeObjcSelf!(void, "drawBackgroundWithFrame:inView:characterRange:layoutManager:", NSRect, NSView, NSRange, NSLayoutManager)(frameRect, controlView, charRange, layoutManager); + } + +} + +class NSTextTableBlock : NSTextBlock +{ + mixin (ObjcWrap); + + NSTextTableBlock initWithTable (NSTextTable table, NSInteger row, NSInteger rowSpan, NSInteger col, NSInteger colSpan) + { + id result = invokeObjcSelf!(id, "initWithTable:startingRow:rowSpan:startingColumn:columnSpan:", NSTextTable, NSInteger, NSInteger, NSInteger, NSInteger)(table, row, rowSpan, col, colSpan); + return result is this.objcObject ? this : (result !is null ? new NSTextTableBlock(result) : null); + } + + this (NSTextTable table, NSInteger row, NSInteger rowSpan, NSInteger col, NSInteger colSpan) + { + super(NSTextTableBlock.alloc.initWithTable(table, row, rowSpan, col, colSpan).objcObject); + } + + NSTextTable table () + { + return invokeObjcSelf!(NSTextTable, "table"); + } + + NSInteger startingRow () + { + return invokeObjcSelf!(NSInteger, "startingRow"); + } + + NSInteger rowSpan () + { + return invokeObjcSelf!(NSInteger, "rowSpan"); + } + + NSInteger startingColumn () + { + return invokeObjcSelf!(NSInteger, "startingColumn"); + } + + NSInteger columnSpan () + { + return invokeObjcSelf!(NSInteger, "columnSpan"); + } +} +