view dstep/applicationservices/ats/ATSLayoutTypes.d @ 12:9f0b49a2f64e

Added the ApplicationServices frameworks: ATS, ColorSync and CoreGraphics
author Jacob Carlborg <doob@me.com>
date Mon, 03 Aug 2009 14:00:21 +0200
parents
children
line wrap: on
line source

/**
 * Copyright: Copyright (c) 2009 Jacob Carlborg.
 * Authors: Jacob Carlborg
 * Version: Initial created: Aug 1, 2009 
 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0)
 */
module dstep.applicationservices.ats.ATSLayoutTypes;

//import dstep.AvailabilityMacros;
import dstep.applicationservices.ats.ATSTypes;
import dstep.applicationservices.ats.SFNTLayoutTypes;
import dstep.coreservices.CoreServices;
import dstep.internal.Version;
import dstep.internal.Types;

struct ATSGlyphVector;

alias uint ATSULayoutOperationSelector;
alias uint ATSULayoutOperationCallbackStatus;
alias uint ATSLineLayoutOptions;
alias uint ATSStyleRenderingOptions;
alias uint ATSGlyphInfoFlags;
alias ATSGlyphVector* ATSULineRef;
alias ATSUDirectLayoutOperationOverrideProcPtr ATSUDirectLayoutOperationOverrideUPP;

extern (C)
{
	alias int function (uint, ATSULineRef, uint, void*, ATSULayoutOperationCallbackStatus*) ATSUDirectLayoutOperationOverrideProcPtr;
}

enum
{
	kATSUseGlyphAdvance = 0x7FFFFFFF,
	kATSUseLineHeight = 0x7FFFFFFF,
	kATSNoTracking = cast(c_long)0x80000000
}

enum
{
	kATSUseCaretOrigins = 0,
	kATSUseDeviceOrigins = 1,
	kATSUseFractionalOrigins = 2,
	kATSUseOriginFlags = 3
}

enum
{
	kATSULayoutOperationNone = 0x00000000,
	kATSULayoutOperationJustification = 0x00000001,
	kATSULayoutOperationMorph = 0x00000002,
	kATSULayoutOperationKerningAdjustment = 0x00000004,
	kATSULayoutOperationBaselineAdjustment = 0x00000008,
	kATSULayoutOperationTrackingAdjustment = 0x00000010,
	kATSULayoutOperationPostLayoutAdjustment = 0x00000020,
	kATSULayoutOperationAppleReserved = cast(uint) 0xFFFFFFC0
}

enum
{
	kATSULayoutOperationCallbackStatusHandled = 0x00000000,
	kATSULayoutOperationCallbackStatusContinue = 0x00000001
}

enum
{
	kATSLineNoLayoutOptions = 0x00000000,
	kATSLineIsDisplayOnly = 0x00000001,
	kATSLineHasNoHangers = 0x00000002,
	kATSLineHasNoOpticalAlignment = 0x00000004,
	kATSLineKeepSpacesOutOfMargin = 0x00000008,
	kATSLineNoSpecialJustification = 0x00000010,
	kATSLineLastNoJustification = 0x00000020,
	kATSLineFractDisable = 0x00000040,
	kATSLineImposeNoAngleForEnds = 0x00000080,
	kATSLineFillOutToWidth = 0x00000100,
	kATSLineTabAdjustEnabled = 0x00000200,
	kATSLineIgnoreFontLeading = 0x00000400,
	kATSLineApplyAntiAliasing = 0x00000800,
	kATSLineNoAntiAliasing = 0x00001000,
	kATSLineDisableNegativeJustification = 0x00002000,
	kATSLineDisableAutoAdjustDisplayPos = 0x00004000,
	kATSLineUseQDRendering = 0x00008000,
	kATSLineDisableAllJustification = 0x00010000,
	kATSLineDisableAllGlyphMorphing = 0x00020000,
	kATSLineDisableAllKerningAdjustments = 0x00040000,
	kATSLineDisableAllBaselineAdjustments = 0x00080000,
	kATSLineDisableAllTrackingAdjustments = 0x00100000,
	kATSLineDisableAllLayoutOperations = kATSLineDisableAllJustification | kATSLineDisableAllGlyphMorphing | kATSLineDisableAllKerningAdjustments | kATSLineDisableAllBaselineAdjustments | kATSLineDisableAllTrackingAdjustments,
	kATSLineUseDeviceMetrics = 0x01000000,
	kATSLineBreakToNearestCharacter = 0x02000000,
	kATSLineAppleReserved = cast(uint) 0xFCE00000
}

enum
{
	kATSStyleNoOptions = 0x00000000,
	kATSStyleNoHinting = 0x00000001,
	kATSStyleApplyAntiAliasing = 0x00000002,
	kATSStyleNoAntiAliasing = 0x00000004,
	kATSStyleAppleReserved = cast(uint) 0xFFFFFFF8,
	kATSStyleApplyHints = kATSStyleNoOptions
}

enum
{
	kATSGlyphInfoAppleReserved = 0x1FFBFFE8,
	kATSGlyphInfoIsAttachment = cast(uint) 0x80000000,
	kATSGlyphInfoIsLTHanger = 0x40000000,
	kATSGlyphInfoIsRBHanger = 0x20000000,
	kATSGlyphInfoTerminatorGlyph = 0x00080000,
	kATSGlyphInfoIsWhiteSpace = 0x00040000,
	kATSGlyphInfoHasImposedWidth = 0x00000010,
	kATSGlyphInfoByteSizeMask = 0x00000007
}

struct ATSLayoutRecord
{
	ushort glyphID;
	uint flags;
	uint originalOffset;
	int realPos;
}


struct ATSTrapezoid
{
	FixedPoint upperLeft;
	FixedPoint upperRight;
	FixedPoint lowerRight;
	FixedPoint lowerLeft;
}


struct ATSJustWidthDeltaEntryOverride
{
	int beforeGrowLimit;
	int beforeShrinkLimit;
	int afterGrowLimit;
	int afterShrinkLimit;
	ushort growFlags;
	ushort shrinkFlags;
}


struct ATSULayoutOperationOverrideSpecifier
{
	uint operationSelector;
	ATSUDirectLayoutOperationOverrideUPP overrideUPP;
}

extern (C)
{
	ATSUDirectLayoutOperationOverrideUPP NewATSUDirectLayoutOperationOverrideUPP (ATSUDirectLayoutOperationOverrideProcPtr userRoutine);
	void DisposeATSUDirectLayoutOperationOverrideUPP (ATSUDirectLayoutOperationOverrideUPP userUPP);
	int InvokeATSUDirectLayoutOperationOverrideUPP (uint iCurrentOperation, ATSULineRef iLineRef, uint iRefCon, void* iOperationCallbackParameterPtr, ATSULayoutOperationCallbackStatus* oCallbackStatus, ATSUDirectLayoutOperationOverrideUPP userUPP);
}