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.
142 lines
5.7 KiB
142 lines
5.7 KiB
4 years ago
|
/*
|
||
|
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__ */
|
||
|
|