view dwt/internal/cocoa/NSFont.d @ 1:8b48be5454ce

The internal cocoa classes compile now
author Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com>
date Tue, 19 Aug 2008 17:35:17 +0200
parents 380af2bdd8e5
children f565d3a95c0a
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.NSFont;

import dwt.internal.cocoa.CGFloat;
import dwt.internal.cocoa.id;
import dwt.internal.cocoa.NSAffineTransform;
import dwt.internal.cocoa.NSArray;
import dwt.internal.cocoa.NSCharacterSet;
import dwt.internal.cocoa.NSCell : NSControlSize;
import dwt.internal.cocoa.NSDictionary;
import dwt.internal.cocoa.NSFontDescriptor;
import dwt.internal.cocoa.NSGraphicsContext;
import dwt.internal.cocoa.NSInteger;
import dwt.internal.cocoa.NSObject;
import dwt.internal.cocoa.NSPoint;
import dwt.internal.cocoa.NSRect;
import dwt.internal.cocoa.NSSize;
import dwt.internal.cocoa.NSString;
import dwt.internal.cocoa.OS;
//import dwt.internal.objc.foundation.NSGeometry;
import objc = dwt.internal.objc.runtime;

alias uint NSGlyph;

enum NSMultibyteGlyphPacking
{
    NSNativeShortGlyphPacking = 5
}

enum NSGlyphRelation
{
    NSGlyphBelow = 1,
    NSGlyphAbove = 2
}

enum NSFontRenderingMode
{
    NSFontDefaultRenderingMode = 0,
    NSFontAntialiasedRenderingMode = 1,
    NSFontIntegerAdvancementsRenderingMode = 2,
    NSFontAntialiasedIntegerAdvancementsRenderingMode = 3
}

public class NSFont : NSObject
{

    public this ()
    {
        super();
    }

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

    public NSSize advancementForGlyph (NSGlyph ag)
    {
        NSSize result;
        OS.objc_msgSend_stret(&result, this.id_, OS.sel_advancementForGlyph_1, ag);
        return result;
    }

    public NSDictionary afmDictionary ()
    {
        objc.id result = OS.objc_msgSend(this.id_, OS.sel_afmDictionary);
        return result !is null ? new NSDictionary(result) : null;
    }

    public CGFloat ascender ()
    {
        return cast(CGFloat) OS.objc_msgSend_fpret(this.id_, OS.sel_ascender);
    }

    public static NSFont boldSystemFontOfSize (CGFloat fontSize)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSFont, OS.sel_boldSystemFontOfSize_1, fontSize);
        return result !is null ? new NSFont(result) : null;
    }

    public NSRect boundingRectForFont ()
    {
        NSRect result;
        OS.objc_msgSend_stret(&result, this.id_, OS.sel_boundingRectForFont);
        return result;
    }

    public NSRect boundingRectForGlyph (NSGlyph aGlyph)
    {
        NSRect result;
        OS.objc_msgSend_stret(&result, this.id_, OS.sel_boundingRectForGlyph_1, aGlyph);
        return result;
    }

    public CGFloat capHeight ()
    {
        return cast(CGFloat) OS.objc_msgSend_fpret(this.id_, OS.sel_capHeight);
    }

    public static NSFont controlContentFontOfSize (CGFloat fontSize)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSFont, OS.sel_controlContentFontOfSize_1, fontSize);
        return result !is null ? new NSFont(result) : null;
    }

    public NSCharacterSet coveredCharacterSet ()
    {
        objc.id result = OS.objc_msgSend(this.id_, OS.sel_coveredCharacterSet);
        return result !is null ? new NSCharacterSet(result) : null;
    }

    public CGFloat defaultLineHeightForFont ()
    {
        return cast(CGFloat) OS.objc_msgSend_fpret(this.id_, OS.sel_defaultLineHeightForFont);
    }

    public CGFloat descender ()
    {
        return cast(CGFloat) OS.objc_msgSend_fpret(this.id_, OS.sel_descender);
    }

    public NSString displayName ()
    {
        objc.id result = OS.objc_msgSend(this.id_, OS.sel_displayName);
        return result !is null ? new NSString(result) : null;
    }

    public NSString encodingScheme ()
    {
        objc.id result = OS.objc_msgSend(this.id_, OS.sel_encodingScheme);
        return result !is null ? new NSString(result) : null;
    }

    public NSString familyName ()
    {
        objc.id result = OS.objc_msgSend(this.id_, OS.sel_familyName);
        return result !is null ? new NSString(result) : null;
    }

    public NSFontDescriptor fontDescriptor ()
    {
        objc.id result = OS.objc_msgSend(this.id_, OS.sel_fontDescriptor);
        return result !is null ? new NSFontDescriptor(result) : null;
    }

    public NSString fontName ()
    {
        objc.id result = OS.objc_msgSend(this.id_, OS.sel_fontName);
        return result !is null ? new NSString(result) : null;
    }

    public static NSFont static_fontWithDescriptor_size_ (NSFontDescriptor fontDescriptor, CGFloat fontSize)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSFont, OS.sel_fontWithDescriptor_1size_1, fontDescriptor !is null ? fontDescriptor.id_ : null,
                fontSize);
        return result !is null ? new NSFont(result) : null;
    }

    public static NSFont static_fontWithDescriptor_textTransform_ (NSFontDescriptor fontDescriptor, NSAffineTransform textTransform)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSFont, OS.sel_fontWithDescriptor_1textTransform_1,
                fontDescriptor !is null ? fontDescriptor.id_ : null, textTransform !is null ? textTransform.id_ : null);
        return result !is null ? new NSFont(result) : null;
    }

    public static NSFont static_fontWithName_matrix_ (NSString fontName, CGFloat fontMatrix)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSFont, OS.sel_fontWithName_1matrix_1, fontName !is null ? fontName.id_ : null, fontMatrix);
        return result !is null ? new NSFont(result) : null;
    }

    public static NSFont static_fontWithName_size_ (NSString fontName, CGFloat fontSize)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSFont, OS.sel_fontWithName_1size_1, fontName !is null ? fontName.id_ : null, fontSize);
        return result !is null ? new NSFont(result) : null;
    }

    public void getAdvancements_forGlyphs_count_ (NSSizeArray advancements, /*const*/NSGlyph* glyphs, NSUInteger glyphCount)
    {
        OS.objc_msgSend(this.id_, OS.sel_getAdvancements_1forGlyphs_1count_1, advancements, glyphs, glyphCount);
    }

    public void getAdvancements_forPackedGlyphs_length_ (NSSizeArray advancements, /*const*/void* packedGlyphs, NSUInteger length)
    {
        OS.objc_msgSend(this.id_, OS.sel_getAdvancements_1forPackedGlyphs_1length_1, advancements, packedGlyphs, length);
    }

    public void getBoundingRects (NSRectArray bounds, /*const*/NSGlyph* glyphs, NSUInteger glyphCount)
    {
        OS.objc_msgSend(this.id_, OS.sel_getBoundingRects_1forGlyphs_1count_1, bounds, glyphs, glyphCount);
    }

    public bool glyphIsEncoded (NSGlyph aGlyph)
    {
        return OS.objc_msgSend(this.id_, OS.sel_glyphIsEncoded_1, aGlyph) !is null;
    }

    public NSMultibyteGlyphPacking glyphPacking ()
    {
        return cast(NSMultibyteGlyphPacking) OS.objc_msgSend(this.id_, OS.sel_glyphPacking);
    }

    public NSGlyph glyphWithName (NSString aName)
    {
        return cast(NSGlyph) OS.objc_msgSend(this.id_, OS.sel_glyphWithName_1, aName !is null ? aName.id_ : null);
    }

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

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

    public CGFloat italicAngle ()
    {
        return cast(CGFloat) OS.objc_msgSend_fpret(this.id_, OS.sel_italicAngle);
    }

    public static NSFont labelFontOfSize (CGFloat fontSize)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSFont, OS.sel_labelFontOfSize_1, fontSize);
        return result !is null ? new NSFont(result) : null;
    }

    public static CGFloat labelFontSize ()
    {
        return cast(CGFloat) OS.objc_msgSend_fpret(OS.class_NSFont, OS.sel_labelFontSize);
    }

    public CGFloat leading ()
    {
        return cast(CGFloat) OS.objc_msgSend_fpret(this.id_, OS.sel_leading);
    }

    public /*const*/CGFloat* matrix ()
    {
        return cast(/*const*/CGFloat*) OS.objc_msgSend(this.id_, OS.sel_matrix);
    }

    public NSSize maximumAdvancement ()
    {
        NSSize result;
        OS.objc_msgSend_stret(&result, this.id_, OS.sel_maximumAdvancement);
        return result;
    }

    public static NSFont menuBarFontOfSize (CGFloat fontSize)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSFont, OS.sel_menuBarFontOfSize_1, fontSize);
        return result !is null ? new NSFont(result) : null;
    }

    public static NSFont menuFontOfSize (CGFloat fontSize)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSFont, OS.sel_menuFontOfSize_1, fontSize);
        return result !is null ? new NSFont(result) : null;
    }

    public static NSFont messageFontOfSize (CGFloat fontSize)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSFont, OS.sel_messageFontOfSize_1, fontSize);
        return result !is null ? new NSFont(result) : null;
    }

    public NSStringEncoding mostCompatibleStringEncoding ()
    {
        return cast(NSStringEncoding) OS.objc_msgSend(this.id_, OS.sel_mostCompatibleStringEncoding);
    }

    public NSUInteger numberOfGlyphs ()
    {
        return cast(NSUInteger) OS.objc_msgSend(this.id_, OS.sel_numberOfGlyphs);
    }

    public static NSFont paletteFontOfSize (CGFloat fontSize)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSFont, OS.sel_paletteFontOfSize_1, fontSize);
        return result !is null ? new NSFont(result) : null;
    }

    public CGFloat pointSize ()
    {
        return cast(CGFloat) OS.objc_msgSend_fpret(this.id_, OS.sel_pointSize);
    }

    public NSPoint positionOfGlyph_forCharacter_struckOverRect_ (NSGlyph aGlyph, short aChar, NSRect aRect)
    {
        NSPoint result;
        OS.objc_msgSend_stret(&result, this.id_, OS.sel_positionOfGlyph_1forCharacter_1struckOverRect_1, aGlyph, aChar, aRect);
        return result;
    }

    public NSPoint positionOfGlyph_precededByGlyph_isNominal_ (NSGlyph curGlyph, NSGlyph prevGlyph, bool* nominal)
    {
        NSPoint result;
        OS.objc_msgSend_stret(&result, this.id_, OS.sel_positionOfGlyph_1precededByGlyph_1isNominal_1, curGlyph, prevGlyph, nominal);
        return result;
    }

    public NSPoint positionOfGlyph_struckOverGlyph_metricsExist_ (NSGlyph curGlyph, NSGlyph prevGlyph, bool* exist)
    {
        NSPoint result;
        OS.objc_msgSend_stret(&result, this.id_, OS.sel_positionOfGlyph_1struckOverGlyph_1metricsExist_1, curGlyph, prevGlyph, exist);
        return result;
    }

    public NSPoint positionOfGlyph_struckOverRect_metricsExist_ (NSGlyph aGlyph, NSRect aRect, bool* exist)
    {
        NSPoint result;
        OS.objc_msgSend_stret(&result, this.id_, OS.sel_positionOfGlyph_1struckOverRect_1metricsExist_1, aGlyph, aRect, exist);
        return result;
    }

    public NSPoint positionOfGlyph_withRelation_toBaseGlyph_totalAdvancement_metricsExist_ (NSGlyph thisGlyph, NSGlyphRelation rel,
            NSGlyph baseGlyph, NSSizePointer adv, bool* exist)
    {
        NSPoint result;
        OS.objc_msgSend_stret(&result, this.id_, OS.sel_positionOfGlyph_1withRelation_1toBaseGlyph_1totalAdvancement_1metricsExist_1, thisGlyph, rel,
                baseGlyph, adv, exist);
        return result;
    }

    public NSInteger positionsForCompositeSequence (NSGlyph* someGlyphs, NSInteger numGlyphs, NSPointArray points)
    {
        return cast(NSInteger) OS.objc_msgSend(this.id_, OS.sel_positionsForCompositeSequence_1numberOfGlyphs_1pointArray_1, someGlyphs, numGlyphs, points);
    }

    public static NSArray preferredFontNames ()
    {
        objc.id result = OS.objc_msgSend(OS.class_NSFont, OS.sel_preferredFontNames);
        return result !is null ? new NSArray(result) : null;
    }

    public NSFont printerFont ()
    {
        objc.id result = OS.objc_msgSend(this.id_, OS.sel_printerFont);
        return result is this.id_ ? this : (result !is null ? new NSFont(result) : null);
    }

    public NSFontRenderingMode renderingMode ()
    {
        return cast(NSFontRenderingMode) OS.objc_msgSend(this.id_, OS.sel_renderingMode);
    }

    public NSFont screenFont ()
    {
        objc.id result = OS.objc_msgSend(this.id_, OS.sel_screenFont);
        return result is this.id_ ? this : (result !is null ? new NSFont(result) : null);
    }

    public NSFont screenFontWithRenderingMode (NSFontRenderingMode renderingMode)
    {
        objc.id result = OS.objc_msgSend(this.id_, OS.sel_screenFontWithRenderingMode_1, renderingMode);
        return result is this.id_ ? this : (result !is null ? new NSFont(result) : null);
    }

    public void set ()
    {
        OS.objc_msgSend(this.id_, OS.sel_set);
    }

    public void setInContext (NSGraphicsContext graphicsContext)
    {
        OS.objc_msgSend(this.id_, OS.sel_setInContext_1, graphicsContext !is null ? graphicsContext.id_ : null);
    }

    public static void setPreferredFontNames (NSArray fontNameArray)
    {
        OS.objc_msgSend(OS.class_NSFont, OS.sel_setPreferredFontNames_1, fontNameArray !is null ? fontNameArray.id_ : null);
    }

    public static void setUserFixedPitchFont (NSFont aFont)
    {
        OS.objc_msgSend(OS.class_NSFont, OS.sel_setUserFixedPitchFont_1, aFont !is null ? aFont.id_ : null);
    }

    public static void setUserFont (NSFont aFont)
    {
        OS.objc_msgSend(OS.class_NSFont, OS.sel_setUserFont_1, aFont !is null ? aFont.id_ : null);
    }

    public static CGFloat smallSystemFontSize ()
    {
        return cast(CGFloat) OS.objc_msgSend_fpret(OS.class_NSFont, OS.sel_smallSystemFontSize);
    }

    public static NSFont systemFontOfSize (CGFloat fontSize)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSFont, OS.sel_systemFontOfSize_1, fontSize);
        return result !is null ? new NSFont(result) : null;
    }

    public static CGFloat systemFontSize ()
    {
        return cast(CGFloat) OS.objc_msgSend_fpret(OS.class_NSFont, OS.sel_systemFontSize);
    }

    public static CGFloat systemFontSizeForControlSize (NSControlSize controlSize)
    {
        return cast(CGFloat) OS.objc_msgSend_fpret(OS.class_NSFont, OS.sel_systemFontSizeForControlSize_1, controlSize);
    }

    public NSAffineTransform textTransform ()
    {
        objc.id result = OS.objc_msgSend(this.id_, OS.sel_textTransform);
        return result !is null ? new NSAffineTransform(result) : null;
    }

    public static NSFont titleBarFontOfSize (CGFloat fontSize)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSFont, OS.sel_titleBarFontOfSize_1, fontSize);
        return result !is null ? new NSFont(result) : null;
    }

    public static NSFont toolTipsFontOfSize (CGFloat fontSize)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSFont, OS.sel_toolTipsFontOfSize_1, fontSize);
        return result !is null ? new NSFont(result) : null;
    }

    public CGFloat underlinePosition ()
    {
        return cast(CGFloat) OS.objc_msgSend_fpret(this.id_, OS.sel_underlinePosition);
    }

    public CGFloat underlineThickness ()
    {
        return cast(CGFloat) OS.objc_msgSend_fpret(this.id_, OS.sel_underlineThickness);
    }

    public static void useFont (NSString fontName)
    {
        OS.objc_msgSend(OS.class_NSFont, OS.sel_useFont_1, fontName !is null ? fontName.id_ : null);
    }

    public static NSFont userFixedPitchFontOfSize (CGFloat fontSize)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSFont, OS.sel_userFixedPitchFontOfSize_1, fontSize);
        return result !is null ? new NSFont(result) : null;
    }

    public static NSFont userFontOfSize (CGFloat fontSize)
    {
        objc.id result = OS.objc_msgSend(OS.class_NSFont, OS.sel_userFontOfSize_1, fontSize);
        return result !is null ? new NSFont(result) : null;
    }

    public CGFloat widthOfString (NSString string)
    {
        return cast(CGFloat) OS.objc_msgSend_fpret(this.id_, OS.sel_widthOfString_1, string !is null ? string.id_ : null);
    }

    public CGFloat xHeight ()
    {
        return cast(CGFloat) OS.objc_msgSend_fpret(this.id_, OS.sel_xHeight);
    }

}