using System;

namespace NGraphite
{	
	/// <summary>
	/// Used for looking up slot attributes. Most are already available in other functions
	/// </summary>
	public enum AttrCode 
	{
		/// adjusted glyph advance in x direction in design units
		SlatAdvX = 0,        
		/// adjusted glyph advance in y direction (usually 0) in design units
		SlatAdvY,            
		/// returns 0. Deprecated.
		SlatAttTo,           
		/// This slot attaches to its parent at the given design units in the x direction
		SlatAttX,            
		/// This slot attaches to its parent at the given design units in the y direction
		SlatAttY,            
		/// This slot attaches to its parent at the given glyph point (not implemented)
		SlatAttGpt,          
		/// x-direction adjustment from the given glyph point (not implemented)
		SlatAttXOff,         
		/// y-direction adjustment from the given glyph point (not implemented)
		SlatAttYOff,         
		/// Where on this glyph should align with the attachment point on the parent glyph in the x-direction.
		SlatAttWithX,        
		/// Where on this glyph should align with the attachment point on the parent glyph in the y-direction
		SlatAttWithY,        
		/// Which glyph point on this glyph should align with the attachment point on the parent glyph (not implemented).
		SlatWithGpt,         
		/// Adjustment to gr_slatWithGpt in x-direction (not implemented)
		SlatAttWithXOff,     
		/// Adjustment to gr_slatWithGpt in y-direction (not implemented)
		SlatAttWithYOff,     
		/// Attach at given nesting level (not implemented)
		SlatAttLevel,        
		/// Line break breakweight for this glyph
		SlatBreak,           
		/// Ligature component reference (not implemented)
		SlatCompRef,         
		/// bidi directionality of this glyph (not implemented)
		SlatDir,             
		/// Whether insertion is allowed before this glyph
		SlatInsert,
		/// Final positioned position of this glyph relative to its parent in x-direction in pixels
		SlatPosX,            
		/// Final positioned position of this glyph relative to its parent in y-direction in pixels
		SlatPosY,            
		/// Amount to shift glyph by in x-direction design units
		SlatShiftX,          
		/// Amount to shift glyph by in y-direction design units
		SlatShiftY,          
		/// attribute user1
		SlatUserDefnV1,      
		/// not implemented
		SlatMeasureSol,      
		/// not implemented
		SlatMeasureEol,      
		/// Amount this slot can stretch (not implemented)
		SlatJStretch,        
		/// Amount this slot can shrink (not implemented)
		SlatJShrink,         
		/// Granularity by which this slot can stretch or shrink (not implemented)
		SlatJStep,           
		/// Justification weight for this glyph (not implemented)
		SlatJWeight,         
		/// Amount this slot mush shrink or stretch in design units
		SlatJWidth,          
		/// SubSegment split point
		SlatSegSplit = SlatJStretch + 29,
		/// User defined attribute, see subattr for user attr number
		SlatUserDefn,
		                        
		/// not implemented
		SlatMax,             
		/// not implemented
		SlatNoEffect = SlatMax + 1    
	}
}

