mirror of
https://github.com/elliotnunn/mac-rom.git
synced 2024-10-04 03:57:18 +00:00
4325cdcc78
Resource forks are included only for .rsrc files. These are DeRezzed into their data fork. 'ckid' resources, from the Projector VCS, are not included. The Tools directory, containing mostly junk, is also excluded.
224 lines
5.2 KiB
C
224 lines
5.2 KiB
C
/*
|
|
File: FragmentTable.c
|
|
|
|
Contains: Fragment table routine
|
|
|
|
Written by: John Farmer
|
|
|
|
Copyright: © 1991-1992 by Apple Computer, Inc., all rights reserved.
|
|
|
|
Change History (most recent first):
|
|
|
|
<2> 3/27/92 DTY #1024868: Remove inclusion of Assertion.h, since this file
|
|
doesnÕt make any of those calls.
|
|
|
|
System 6.1.0 Changes:
|
|
|
|
<1> 03/23/91 John Farmer - Created file and documentation.
|
|
|
|
*/
|
|
|
|
// Include Statements
|
|
|
|
|
|
#include "BaseIncludes.h"
|
|
#include "FragmentTable.proto"
|
|
#include "Memory.h"
|
|
#include "PartialFontExtensions.proto"
|
|
#include "Types.h"
|
|
#include "ZoneHandle.proto"
|
|
|
|
|
|
/* --------------------------------------------------------------------------------------
|
|
|
|
Routine: FindFragmentTable( &fragmentTable, splineFont, fragmentTableCache )
|
|
|
|
Purpose:
|
|
|
|
Warnings: None
|
|
|
|
----------------------------------------------------------------------------------- */
|
|
|
|
|
|
void FindFragmentTable( FragmentTableStructureHandle* tablePointer, Handle splineFont, FragmentTableCacheStructureHandle fragmentTableCache )
|
|
|
|
{
|
|
|
|
// Locals
|
|
|
|
Boolean found;
|
|
FragmentTableStructureHandle fragmentTable;
|
|
|
|
*tablePointer = nil;
|
|
|
|
found = false;
|
|
|
|
fragmentTable = (*fragmentTableCache)->fFirstFragmentTable;
|
|
while ( (found == false) && (fragmentTable != nil) ) {
|
|
|
|
if ( found = (*fragmentTable)->fFontHandle == splineFont ) {
|
|
|
|
found = true;
|
|
*tablePointer = fragmentTable;
|
|
|
|
}
|
|
|
|
fragmentTable = (*fragmentTable)->fNextFragmentTable;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/* --------------------------------------------------------------------------------------
|
|
|
|
Routine: CreateFragmentTable( &fragmentTable, splineFont )
|
|
|
|
Purpose:
|
|
|
|
Warnings: None
|
|
|
|
----------------------------------------------------------------------------------- */
|
|
|
|
|
|
OSErr CreateFragmentTable( FragmentTableStructureHandle* tablePointer, Handle splineFont )
|
|
|
|
{
|
|
|
|
// Locals
|
|
|
|
OSErr error;
|
|
FragmentTableStructureHandle fragmentTable;
|
|
|
|
*tablePointer = nil;
|
|
|
|
error = NewZoneHandle( (Handle*) &fragmentTable, (Size) sizeof( FragmentTableStructure ), GetPartialFontZone( ) );
|
|
if ( error == noErr ) {
|
|
|
|
(*fragmentTable)->fPreviousFragmentTable = nil;
|
|
(*fragmentTable)->fNextFragmentTable = nil;
|
|
(*fragmentTable)->fFontHandle = splineFont;
|
|
(*fragmentTable)->fFirstFragment = nil;
|
|
(*fragmentTable)->fLastFragment = nil;
|
|
|
|
*tablePointer = fragmentTable;
|
|
|
|
}
|
|
|
|
return( error );
|
|
|
|
}
|
|
|
|
|
|
/* --------------------------------------------------------------------------------------
|
|
|
|
Routine: AddFragmentTableToCache( fragmentTable, nextFragmentTable, fragmentTableCache )
|
|
|
|
Purpose:
|
|
|
|
Warnings: None
|
|
|
|
----------------------------------------------------------------------------------- */
|
|
|
|
|
|
void AddFragmentTableToCache( FragmentTableStructureHandle fragmentTable, FragmentTableStructureHandle nextFragmentTable, FragmentTableCacheStructureHandle fragmentTableCache )
|
|
|
|
{
|
|
|
|
// Locals
|
|
|
|
FragmentTableStructureHandle previousFragmentTable;
|
|
|
|
|
|
if ( nextFragmentTable == nil ) {
|
|
|
|
previousFragmentTable = (*fragmentTableCache)->fLastFragmentTable;
|
|
(*fragmentTableCache)->fLastFragmentTable = fragmentTable;
|
|
|
|
} else {
|
|
|
|
previousFragmentTable = (*nextFragmentTable)->fPreviousFragmentTable;
|
|
(*nextFragmentTable)->fPreviousFragmentTable = fragmentTable;
|
|
|
|
}
|
|
|
|
if ( previousFragmentTable == nil ) {
|
|
|
|
(*fragmentTableCache)->fFirstFragmentTable = fragmentTable;
|
|
|
|
} else {
|
|
|
|
(*previousFragmentTable)->fNextFragmentTable = fragmentTable;
|
|
|
|
}
|
|
|
|
(*fragmentTable)->fPreviousFragmentTable = previousFragmentTable;
|
|
(*fragmentTable)->fNextFragmentTable = nextFragmentTable;
|
|
|
|
}
|
|
|
|
|
|
/* --------------------------------------------------------------------------------------
|
|
|
|
Routine: RemoveFragmentTableFromCache( fragmentTable, fragmentTableCache )
|
|
|
|
Purpose:
|
|
|
|
Warnings: None
|
|
|
|
----------------------------------------------------------------------------------- */
|
|
|
|
|
|
void RemoveFragmentTableFromCache( FragmentTableStructureHandle fragmentTable, FragmentTableCacheStructureHandle fragmentTableCache )
|
|
|
|
{
|
|
|
|
// Locals
|
|
|
|
FragmentTableStructureHandle previousFragmentTable, nextFragmentTable;
|
|
|
|
previousFragmentTable = (*fragmentTable)->fPreviousFragmentTable;
|
|
nextFragmentTable = (*fragmentTable)->fNextFragmentTable;
|
|
|
|
if ( previousFragmentTable == nil ) {
|
|
|
|
(*fragmentTableCache)->fFirstFragmentTable = nextFragmentTable;
|
|
|
|
} else {
|
|
|
|
(*previousFragmentTable)->fNextFragmentTable = nextFragmentTable;
|
|
|
|
}
|
|
|
|
if ( nextFragmentTable == nil ) {
|
|
|
|
(*fragmentTableCache)->fLastFragmentTable = previousFragmentTable;
|
|
|
|
} else {
|
|
|
|
(*nextFragmentTable)->fPreviousFragmentTable = previousFragmentTable;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
/* --------------------------------------------------------------------------------------
|
|
|
|
Routine: SetCurrentFragmentTable( fragmentTable, fragmentTableCache )
|
|
|
|
Purpose:
|
|
|
|
Warnings: None
|
|
|
|
----------------------------------------------------------------------------------- */
|
|
|
|
|
|
void SetCurrentFragmentTable( FragmentTableStructureHandle fragmentTable, FragmentTableCacheStructureHandle fragmentTableCache )
|
|
|
|
{
|
|
|
|
RemoveFragmentTableFromCache( fragmentTable, fragmentTableCache );
|
|
AddFragmentTableToCache( fragmentTable, (*fragmentTableCache)->fFirstFragmentTable, fragmentTableCache );
|
|
|
|
} |