You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
141 lines
5.7 KiB
141 lines
5.7 KiB
/* |
|
File: ScalerStreamTypes.h |
|
|
|
Contains: Scaler streaming data structures and constants for OFA 1.x |
|
|
|
Version: QuickTime 7.3 |
|
|
|
Copyright: (c) 2007 (c) 1994-2001 by Apple Computer, Inc., all rights reserved. |
|
|
|
Bugs?: For bug reports, consult the following page on |
|
the World Wide Web: |
|
|
|
http://developer.apple.com/bugreporter/ |
|
|
|
*/ |
|
#ifndef __SCALERSTREAMTYPES__ |
|
#define __SCALERSTREAMTYPES__ |
|
|
|
#ifndef __MACTYPES__ |
|
#include <MacTypes.h> |
|
#endif |
|
|
|
#ifndef __SFNTTYPES__ |
|
#include <SFNTTypes.h> |
|
#endif |
|
|
|
|
|
|
|
|
|
#if PRAGMA_ONCE |
|
#pragma once |
|
#endif |
|
|
|
#if PRAGMA_IMPORT |
|
#pragma import on |
|
#endif |
|
|
|
#if PRAGMA_STRUCT_ALIGN |
|
#pragma options align=mac68k |
|
#elif PRAGMA_STRUCT_PACKPUSH |
|
#pragma pack(push, 2) |
|
#elif PRAGMA_STRUCT_PACK |
|
#pragma pack(2) |
|
#endif |
|
|
|
/* ScalerStream input/output types */ |
|
enum { |
|
cexec68K = 0x00000001, |
|
truetypeStreamType = 0x00000001, |
|
type1StreamType = 0x00000002, |
|
type3StreamType = 0x00000004, |
|
type42StreamType = 0x00000008, |
|
type42GXStreamType = 0x00000010, |
|
portableStreamType = 0x00000020, |
|
flattenedStreamType = 0x00000040, |
|
cidType2StreamType = 0x00000080, |
|
cidType0StreamType = 0x00000100, |
|
type1CFFStreamType = 0x00000200, |
|
evenOddModifierStreamType = 0x00008000, |
|
eexecBinaryModifierStreamType = 0x00010000, /* encrypted portion of Type1Stream to be binary */ |
|
unicodeMappingModifierStreamType = 0x00020000, /* include glyph ID to unicode mapping info for PDF */ |
|
scalerSpecifcModifierMask = 0x0000F000, /* for scaler's internal use */ |
|
streamTypeModifierMask = (long)0xFFFFF000 /* 16 bits for Apple, 4 bits for scaler */ |
|
}; |
|
|
|
/* Possible streamed font formats */ |
|
typedef unsigned long scalerStreamTypeFlag; |
|
enum { |
|
downloadStreamAction = 0, /* Transmit the (possibly sparse) font data */ |
|
asciiDownloadStreamAction = 1, /* Transmit font data to a 7-bit ASCII destination */ |
|
fontSizeQueryStreamAction = 2, /* Estimate in-printer memory used if the font were downloaded */ |
|
encodingOnlyStreamAction = 3, /* Transmit only the encoding for the font */ |
|
prerequisiteQueryStreamAction = 4, /* Return a list of prerequisite items needed for the font */ |
|
prerequisiteItemStreamAction = 5, /* Transmit a specified prerequisite item */ |
|
variationQueryStreamAction = 6, /* Return information regarding support for variation streaming */ |
|
variationPSOperatorStreamAction = 7 /* Transmit Postscript code necessary to effect variation of a font */ |
|
}; |
|
|
|
typedef long scalerStreamAction; |
|
enum { |
|
selectAllVariations = -1 /* Special variationCount value meaning include all variation data */ |
|
}; |
|
|
|
struct scalerPrerequisiteItem { |
|
long enumeration; /* Shorthand tag identifying the item */ |
|
long size; /* Worst case vm in printer item requires */ |
|
unsigned char name[1]; /* Name to be used by the client when emitting the item (Pascal string) */ |
|
}; |
|
typedef struct scalerPrerequisiteItem scalerPrerequisiteItem; |
|
struct scalerStream { |
|
const void * streamRefCon; /* <- private reference for client */ |
|
const char * targetVersion; /* <- e.g. Postscript printer name (C string) */ |
|
scalerStreamTypeFlag types; /* <-> Data stream formats desired/supplied */ |
|
scalerStreamAction action; /* <- What action to take */ |
|
unsigned long memorySize; /* -> Worst case memory use (vm) in printer or as sfnt */ |
|
long variationCount; /* <- The number of variations, or selectAllVariations */ |
|
const void * variations; /* <- A pointer to an array of the variations (gxFontVariation) */ |
|
union { |
|
/* Normal font streaming information*/ |
|
struct { |
|
const unsigned short * encoding; /* <- Intention is * unsigned short[256] */ |
|
long * glyphBits; /* <-> Bitvector: a bit for each glyph, 1 = desired/supplied */ |
|
char * name; /* <-> The printer font name to use/used (C string) */ |
|
} font; |
|
|
|
/* Used to obtain a list of prerequisites from the scaler*/ |
|
struct { |
|
long size; /* -> Size of the prereq. list in bytes (0 indicates no prerequisites)*/ |
|
void * list; /* <- Pointer to client block to hold list (nil = list size query only) */ |
|
} prerequisiteQuery; |
|
|
|
long prerequisiteItem; /* <- Enumeration value for the prerequisite item to be streamed.*/ |
|
|
|
long variationQueryResult; /* -> Output from the variationQueryStreamAction */ |
|
} info; |
|
}; |
|
typedef struct scalerStream scalerStream; |
|
struct scalerStreamData { |
|
long hexFlag; /* Indicates that the data is to be interpreted as hex, versus binary */ |
|
long byteCount; /* Number of bytes in the data being streamed */ |
|
const void * data; /* Pointer to the data being streamed */ |
|
}; |
|
typedef struct scalerStreamData scalerStreamData; |
|
|
|
#if PRAGMA_STRUCT_ALIGN |
|
#pragma options align=reset |
|
#elif PRAGMA_STRUCT_PACKPUSH |
|
#pragma pack(pop) |
|
#elif PRAGMA_STRUCT_PACK |
|
#pragma pack() |
|
#endif |
|
|
|
#ifdef PRAGMA_IMPORT_OFF |
|
#pragma import off |
|
#elif PRAGMA_IMPORT |
|
#pragma import reset |
|
#endif |
|
|
|
|
|
#endif /* __SCALERSTREAMTYPES__ */ |
|
|
|
|