/*
File: HTMLRendering.h
Contains: HTML Rendering Library Interfaces.
Version: Technology: 1.0
Release: QuickTime 6.0.2
Copyright: (c) 1999-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 __HTMLRENDERING__
#define __HTMLRENDERING__
#ifndef __MACTYPES__
#include
#endif
#ifndef __QUICKDRAW__
#include
#endif
#ifndef __EVENTS__
#include
#endif
#ifndef __FILES__
#include
#endif
#ifndef __CODEFRAGMENTS__
#include
#endif
#if PRAGMA_ONCE
#pragma once
#endif
#ifdef __cplusplus
extern "C" {
#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
typedef struct OpaqueHRReference* HRReference;
#if CALL_NOT_IN_CARBON
EXTERN_API( OSStatus )
HRGetHTMLRenderingLibVersion (NumVersion * returnVers);
#endif /* CALL_NOT_IN_CARBON */
#if TARGET_RT_MAC_CFM
#if CALL_NOT_IN_CARBON
#ifdef __cplusplus
inline pascal Boolean HRHTMLRenderingLibAvailable() { return ((HRGetHTMLRenderingLibVersion != (void*)kUnresolvedCFragSymbolAddress) ); }
#else
#define HRHTMLRenderingLibAvailable() ((HRGetHTMLRenderingLibVersion != (void*)kUnresolvedCFragSymbolAddress) )
#endif
#endif
#elif TARGET_RT_MAC_MACHO
/* HTML Rendering is currently not available on OS X */
#if CALL_NOT_IN_CARBON
#ifdef __cplusplus
inline pascal Boolean HRHTMLRenderingLibAvailable() { return false; }
#else
#define HRHTMLRenderingLibAvailable() (false)
#endif
#endif
#endif /* */
enum {
kHRRendererHTML32Type = FOUR_CHAR_CODE('ht32') /* HTML 3.2 */
};
#if CALL_NOT_IN_CARBON
EXTERN_API( OSStatus )
HRNewReference (HRReference * hrRef,
OSType rendererType,
GrafPtr grafPtr);
EXTERN_API( OSStatus )
HRDisposeReference (HRReference hrRef);
EXTERN_API( SInt32 )
HRFreeMemory (Size inBytesNeeded);
/* System level notifications */
EXTERN_API( void )
HRScreenConfigurationChanged (void);
EXTERN_API( Boolean )
HRIsHREvent (const EventRecord * eventRecord);
/* Drawing */
EXTERN_API( OSStatus )
HRSetGrafPtr (HRReference hrRef,
GrafPtr grafPtr);
EXTERN_API( OSStatus )
HRActivate (HRReference hrRef);
EXTERN_API( OSStatus )
HRDeactivate (HRReference hrRef);
EXTERN_API( OSStatus )
HRDraw (HRReference hrRef,
RgnHandle updateRgnH);
EXTERN_API( OSStatus )
HRSetRenderingRect (HRReference hrRef,
const Rect * renderingRect);
EXTERN_API( OSStatus )
HRGetRenderedImageSize (HRReference hrRef,
Point * renderingSize);
EXTERN_API( OSStatus )
HRScrollToLocation (HRReference hrRef,
Point * location);
EXTERN_API( OSStatus )
HRForceQuickdraw (HRReference hrRef,
Boolean forceQuickdraw);
#endif /* CALL_NOT_IN_CARBON */
typedef SInt16 HRScrollbarState;
enum {
eHRScrollbarOn = 0,
eHRScrollbarOff = 1,
eHRScrollbarAuto = 2
};
#if CALL_NOT_IN_CARBON
EXTERN_API( OSStatus )
HRSetScrollbarState (HRReference hrRef,
HRScrollbarState hScrollbarState,
HRScrollbarState vScrollbarState);
EXTERN_API( OSStatus )
HRSetDrawBorder (HRReference hrRef,
Boolean drawBorder);
EXTERN_API( OSStatus )
HRSetGrowboxCutout (HRReference hrRef,
Boolean allowCutout);
/* Navigation */
EXTERN_API( OSStatus )
HRGoToFile (HRReference hrRef,
const FSSpec * fsspec,
Boolean addToHistory,
Boolean forceRefresh);
EXTERN_API( OSStatus )
HRGoToURL (HRReference hrRef,
const char * url,
Boolean addToHistory,
Boolean forceRefresh);
EXTERN_API( OSStatus )
HRGoToAnchor (HRReference hrRef,
const char * anchorName);
EXTERN_API( OSStatus )
HRGoToPtr (HRReference hrRef,
char * buffer,
UInt32 bufferSize,
Boolean addToHistory,
Boolean forceRefresh);
/* Accessors */
/* either file url or url of tag */
EXTERN_API( OSStatus )
HRGetRootURL (HRReference hrRef,
Handle rootURLH);
/* url of tag */
EXTERN_API( OSStatus )
HRGetBaseURL (HRReference hrRef,
Handle baseURLH);
/* file url */
EXTERN_API( OSStatus )
HRGetHTMLURL (HRReference hrRef,
Handle HTMLURLH);
EXTERN_API( OSStatus )
HRGetTitle (HRReference hrRef,
StringPtr title);
EXTERN_API( OSStatus )
HRGetHTMLFile (HRReference hrRef,
FSSpec * fsspec);
/* Utilities */
EXTERN_API( OSStatus )
HRUtilCreateFullURL (const char * rootURL,
const char * linkURL,
Handle fullURLH);
EXTERN_API( OSStatus )
HRUtilGetFSSpecFromURL (const char * rootURL,
const char * linkURL,
FSSpec * destSpec);
/* urlHandle should be valid on input */
EXTERN_API( OSStatus )
HRUtilGetURLFromFSSpec (const FSSpec * fsspec,
Handle urlHandle);
/*
Visited links
If you register a function here, it will be called to determine
whether or not the given URL has been visited. It should return
true if the URL has been visited.
In addition to the URLs that the application may add to the list
of visited links, it should also add URLs that the user clicks
on. These URLs can be caught by the "add URL to history" callback
below.
*/
#endif /* CALL_NOT_IN_CARBON */
typedef CALLBACK_API( Boolean , HRWasURLVisitedProcPtr )(const char *url, void *refCon);
typedef STACK_UPP_TYPE(HRWasURLVisitedProcPtr) HRWasURLVisitedUPP;
#if CALL_NOT_IN_CARBON
EXTERN_API( void )
HRRegisterWasURLVisitedUPP (HRWasURLVisitedUPP inWasURLVisitedUPP,
HRReference hrRef,
void * inRefCon);
EXTERN_API( void )
HRUnregisterWasURLVisitedUPP (HRReference hrRef);
/*
New URL
If you register a function here, it will be called every time
the renderer is going to display a new URL. A few examples of how
you might use this include...
(a) maintaining a history of URLs
(b) maintainging a list of visited links
(c) setting a window title based on the new URL
*/
#endif /* CALL_NOT_IN_CARBON */
typedef CALLBACK_API( OSStatus , HRNewURLProcPtr )(const char *url, const char *targetFrame, Boolean addToHistory, void *refCon);
typedef STACK_UPP_TYPE(HRNewURLProcPtr) HRNewURLUPP;
#if CALL_NOT_IN_CARBON
EXTERN_API( void )
HRRegisterNewURLUPP (HRNewURLUPP inNewURLUPP,
HRReference hrRef,
void * inRefCon);
EXTERN_API( void )
HRUnregisterNewURLUPP (HRReference hrRef);
/*
URL to FSSpec function
If you register a function here, it will be called every time
the renderer is going to locate a file. The function will be
passed an enum indicating the type of file being asked for.
*/
#endif /* CALL_NOT_IN_CARBON */
typedef UInt16 URLSourceType;
enum {
kHRLookingForHTMLSource = 1,
kHRLookingForImage = 2,
kHRLookingForEmbedded = 3,
kHRLookingForImageMap = 4,
kHRLookingForFrame = 5
};
typedef CALLBACK_API( OSStatus , HRURLToFSSpecProcPtr )(const char *rootURL, const char *linkURL, FSSpec *fsspec, URLSourceType urlSourceType, void *refCon);
typedef STACK_UPP_TYPE(HRURLToFSSpecProcPtr) HRURLToFSSpecUPP;
#if CALL_NOT_IN_CARBON
EXTERN_API( void )
HRRegisterURLToFSSpecUPP (HRURLToFSSpecUPP inURLToFSSpecUPP,
HRReference hrRef,
void * inRefCon);
EXTERN_API( void )
HRUnregisterURLToFSSpecUPP (HRReference hrRef);
#endif /* CALL_NOT_IN_CARBON */
#if OPAQUE_UPP_TYPES
#if CALL_NOT_IN_CARBON
EXTERN_API(HRWasURLVisitedUPP)
NewHRWasURLVisitedUPP (HRWasURLVisitedProcPtr userRoutine);
EXTERN_API(HRNewURLUPP)
NewHRNewURLUPP (HRNewURLProcPtr userRoutine);
EXTERN_API(HRURLToFSSpecUPP)
NewHRURLToFSSpecUPP (HRURLToFSSpecProcPtr userRoutine);
EXTERN_API(void)
DisposeHRWasURLVisitedUPP (HRWasURLVisitedUPP userUPP);
EXTERN_API(void)
DisposeHRNewURLUPP (HRNewURLUPP userUPP);
EXTERN_API(void)
DisposeHRURLToFSSpecUPP (HRURLToFSSpecUPP userUPP);
EXTERN_API(Boolean)
InvokeHRWasURLVisitedUPP (const char * url,
void * refCon,
HRWasURLVisitedUPP userUPP);
EXTERN_API(OSStatus)
InvokeHRNewURLUPP (const char * url,
const char * targetFrame,
Boolean addToHistory,
void * refCon,
HRNewURLUPP userUPP);
EXTERN_API(OSStatus)
InvokeHRURLToFSSpecUPP (const char * rootURL,
const char * linkURL,
FSSpec * fsspec,
URLSourceType urlSourceType,
void * refCon,
HRURLToFSSpecUPP userUPP);
#endif /* CALL_NOT_IN_CARBON */
#else
enum { uppHRWasURLVisitedProcInfo = 0x000003D0 }; /* pascal 1_byte Func(4_bytes, 4_bytes) */
enum { uppHRNewURLProcInfo = 0x000037F0 }; /* pascal 4_bytes Func(4_bytes, 4_bytes, 1_byte, 4_bytes) */
enum { uppHRURLToFSSpecProcInfo = 0x0000EFF0 }; /* pascal 4_bytes Func(4_bytes, 4_bytes, 4_bytes, 2_bytes, 4_bytes) */
#define NewHRWasURLVisitedUPP(userRoutine) (HRWasURLVisitedUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppHRWasURLVisitedProcInfo, GetCurrentArchitecture())
#define NewHRNewURLUPP(userRoutine) (HRNewURLUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppHRNewURLProcInfo, GetCurrentArchitecture())
#define NewHRURLToFSSpecUPP(userRoutine) (HRURLToFSSpecUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppHRURLToFSSpecProcInfo, GetCurrentArchitecture())
#define DisposeHRWasURLVisitedUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeHRNewURLUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define DisposeHRURLToFSSpecUPP(userUPP) DisposeRoutineDescriptor(userUPP)
#define InvokeHRWasURLVisitedUPP(url, refCon, userUPP) (Boolean)CALL_TWO_PARAMETER_UPP((userUPP), uppHRWasURLVisitedProcInfo, (url), (refCon))
#define InvokeHRNewURLUPP(url, targetFrame, addToHistory, refCon, userUPP) (OSStatus)CALL_FOUR_PARAMETER_UPP((userUPP), uppHRNewURLProcInfo, (url), (targetFrame), (addToHistory), (refCon))
#define InvokeHRURLToFSSpecUPP(rootURL, linkURL, fsspec, urlSourceType, refCon, userUPP) (OSStatus)CALL_FIVE_PARAMETER_UPP((userUPP), uppHRURLToFSSpecProcInfo, (rootURL), (linkURL), (fsspec), (urlSourceType), (refCon))
#endif
/* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
#define NewHRWasURLVisitedProc(userRoutine) NewHRWasURLVisitedUPP(userRoutine)
#define NewHRNewURLProc(userRoutine) NewHRNewURLUPP(userRoutine)
#define NewHRURLToFSSpecProc(userRoutine) NewHRURLToFSSpecUPP(userRoutine)
#define CallHRWasURLVisitedProc(userRoutine, url, refCon) InvokeHRWasURLVisitedUPP(url, refCon, userRoutine)
#define CallHRNewURLProc(userRoutine, url, targetFrame, addToHistory, refCon) InvokeHRNewURLUPP(url, targetFrame, addToHistory, refCon, userRoutine)
#define CallHRURLToFSSpecProc(userRoutine, rootURL, linkURL, fsspec, urlSourceType, refCon) InvokeHRURLToFSSpecUPP(rootURL, linkURL, fsspec, urlSourceType, refCon, userRoutine)
#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
#ifdef __cplusplus
}
#endif
#endif /* __HTMLRENDERING__ */