view dwt/internal/cocoa/NSTextContainer.d @ 13:f565d3a95c0a

Ported dwt.internal
author Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
date Fri, 22 Aug 2008 16:46:34 +0200
parents 8b48be5454ce
children d8635bb48c7c
line wrap: on
line source

/*******************************************************************************
 * Copyright (c) 2007 IBM Corporation and others.
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v1.0
 * which accompanies this distribution, and is available at
 * http://www.eclipse.org/legal/epl-v10.html
 *
 * Contributors:
 *     IBM Corporation - initial API and implementation
 *     
 * Port to the D programming language:
 *     Jacob Carlborg <jacob.carlborg@gmail.com>
 *******************************************************************************/
module dwt.internal.cocoa.NSTextContainer;

import dwt.internal.cocoa.CGFloat;
import dwt.internal.cocoa.id;
import dwt.internal.cocoa.NSLayoutManager;
import dwt.internal.cocoa.NSObject;
import dwt.internal.cocoa.NSPoint;
import dwt.internal.cocoa.NSRect;
import dwt.internal.cocoa.NSSize;
import dwt.internal.cocoa.NSTextView;
import dwt.internal.cocoa.OS;
import objc = dwt.internal.objc.runtime;



enum NSLineSweepDirection
{
    NSLineSweepLeft = 0,
    NSLineSweepRight = 1,
    NSLineSweepDown = 2,
    NSLineSweepUp = 3
}

alias NSLineSweepDirection.NSLineSweepLeft NSLineSweepLeft;
alias NSLineSweepDirection.NSLineSweepRight NSLineSweepRight;
alias NSLineSweepDirection.NSLineSweepDown NSLineSweepDown;
alias NSLineSweepDirection.NSLineSweepUp NSLineSweepUp;



enum NSLineMovementDirection
{
    NSLineDoesntMove = 0,
    NSLineMovesLeft = 1,
    NSLineMovesRight = 2,
    NSLineMovesDown = 3,
    NSLineMovesUp = 4
}

alias NSLineMovementDirection.NSLineDoesntMove NSLineDoesntMove;
alias NSLineMovementDirection.NSLineMovesLeft NSLineMovesLeft;
alias NSLineMovementDirection.NSLineMovesRight NSLineMovesRight;
alias NSLineMovementDirection.NSLineMovesDown NSLineMovesDown;
alias NSLineMovementDirection.NSLineMovesUp NSLineMovesUp;



public class NSTextContainer : NSObject
{

    public this ()
    {
        super();
    }

    public this (objc.id id)
    {
        super(id);
    }

    public NSSize containerSize ()
    {
        NSSize result;
        OS.objc_msgSend_struct(&result, this.id_, OS.sel_containerSize);
        return result;
    }

    public bool containsPoint (NSPoint point)
    {
        return OS.objc_msgSend(this.id_, OS.sel_containsPoint_1, point) !is null;
    }

    public bool heightTracksTextView ()
    {
        return OS.objc_msgSend(this.id_, OS.sel_heightTracksTextView) !is null;
    }

    public id initWithContainerSize (NSSize size)
    {
        objc.id result = OS.objc_msgSend(this.id_, OS.sel_initWithContainerSize_1, size);
        return result !is null ? new id(result) : null;
    }

    public bool isSimpleRectangularTextContainer ()
    {
        return OS.objc_msgSend(this.id_, OS.sel_isSimpleRectangularTextContainer) !is null;
    }

    public NSLayoutManager layoutManager ()
    {
        objc.id result = OS.objc_msgSend(this.id_, OS.sel_layoutManager);
        return result !is null ? new NSLayoutManager(result) : null;
    }

    public CGFloat lineFragmentPadding ()
    {
        return cast(CGFloat) OS.objc_msgSend_fpret(this.id_, OS.sel_lineFragmentPadding);
    }

    public NSRect lineFragmentRectForProposedRect (NSRect proposedRect, NSLineSweepDirection sweepDirection, NSLineMovementDirection movementDirection, NSRectPointer remainingRect)
    {
        NSRect result;
        OS.objc_msgSend_stret(&result, this.id_, OS.sel_lineFragmentRectForProposedRect_1sweepDirection_1movementDirection_1remainingRect_1,
                proposedRect, sweepDirection, movementDirection, remainingRect);
        return result;
    }

    public void replaceLayoutManager (NSLayoutManager newLayoutManager)
    {
        OS.objc_msgSend(this.id_, OS.sel_replaceLayoutManager_1, newLayoutManager !is null ? newLayoutManager.id_ : null);
    }

    public void setContainerSize (NSSize size)
    {
        OS.objc_msgSend(this.id_, OS.sel_setContainerSize_1, size);
    }

    public void setHeightTracksTextView (bool flag)
    {
        OS.objc_msgSend(this.id_, OS.sel_setHeightTracksTextView_1, flag);
    }

    public void setLayoutManager (NSLayoutManager layoutManager)
    {
        OS.objc_msgSend(this.id_, OS.sel_setLayoutManager_1, layoutManager !is null ? layoutManager.id_ : null);
    }

    public void setLineFragmentPadding (CGFloat pad)
    {
        OS.objc_msgSend(this.id_, OS.sel_setLineFragmentPadding_1, pad);
    }

    public void setTextView (NSTextView textView)
    {
        OS.objc_msgSend(this.id_, OS.sel_setTextView_1, textView !is null ? textView.id_ : null);
    }

    public void setWidthTracksTextView (bool flag)
    {
        OS.objc_msgSend(this.id_, OS.sel_setWidthTracksTextView_1, flag);
    }

    public NSTextView textView ()
    {
        objc.id result = OS.objc_msgSend(this.id_, OS.sel_textView);
        return result !is null ? new NSTextView(result) : null;
    }

    public bool widthTracksTextView ()
    {
        return OS.objc_msgSend(this.id_, OS.sel_widthTracksTextView) !is null;
    }

}