home *** CD-ROM | disk | FTP | other *** search
- /*
- * WEExtras.c
- *
- * Routines for installing and removing various hooks
- *
- */
-
- #include "WEExtras.h"
-
- /* prototypes for the hook routines defined in WEExtraHooks.c */
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- extern pascal void _WEShowInvisiblesDrawText(Ptr, long, Fixed, JustStyleCode, WEReference);
- extern pascal StyledLineBreakCode _WENoWrapLineBreak(Ptr, long, long, long,
- Fixed *, long *, WEReference);
-
- #ifdef __cplusplus
- }
- #endif
-
- /* static UPP's */
- static WELineBreakUPP _weNoWrapLineBreakProc = nil;
- static WEDrawTextUPP _weShowInvisiblesDrawTextProc = nil;
-
- /* variables in WEExtraHooks.c */
- extern WEDrawTextUPP _weShowInvisiblesOldDrawTextProc;
- extern RGBColor _weShowInvisiblesDefaultColor;
-
- pascal OSErr WEInstallCrOnlyHook(WEReference we)
- {
- OSErr err;
-
- /* if first time, create routine descriptor */
- if (_weNoWrapLineBreakProc == nil)
- {
- _weNoWrapLineBreakProc = NewWELineBreakProc(_WENoWrapLineBreak);
- }
-
- err = WESetInfo( weLineBreakHook, &_weNoWrapLineBreakProc, we );
-
- return err;
- }
-
- pascal OSErr WERemoveCrOnlyHook( WEReference we )
- {
- UniversalProcPtr hook = nil;
- OSErr err;
-
- err = WESetInfo( weLineBreakHook, &hook, we );
-
- return err;
- }
-
- pascal Boolean WEIsCrOnly( WEReference we )
- {
- WELineBreakUPP hook = nil;
-
- /* return true if our no-wrap hook is installed */
-
- return ( _weNoWrapLineBreakProc != nil ) &&
- ( WEGetInfo( weLineBreakHook, &hook, we ) == noErr) &&
- ( _weNoWrapLineBreakProc == hook );
- }
-
- pascal OSErr WEInstallShowInvisiblesHook( WEReference we )
- {
- OSErr err;
-
- /* if first time, create routine descriptor */
- if (_weShowInvisiblesDrawTextProc == nil)
- {
- _weShowInvisiblesDrawTextProc = NewWEDrawTextProc(_WEShowInvisiblesDrawText);
- }
-
- err = WEGetInfo( weDrawTextHook, &_weShowInvisiblesOldDrawTextProc, we );
- if (err == noErr)
- err = WESetInfo( weDrawTextHook, &_weShowInvisiblesDrawTextProc, we );
-
- return err;
- }
-
- pascal OSErr WERemoveShowInvisiblesHook( WEReference we )
- {
- OSErr err;
-
- err = WESetInfo( weDrawTextHook, &_weShowInvisiblesOldDrawTextProc, we );
-
- return err;
- }
-
- pascal Boolean WEIsShowInvisibles( WEReference we )
- {
- WEDrawTextUPP hook = nil;
-
- /* return true if our no-wrap hook is installed */
-
- return ( _weShowInvisiblesDrawTextProc != nil ) &&
- ( WEGetInfo( weDrawTextHook, &hook, we ) == noErr) &&
- ( _weShowInvisiblesDrawTextProc == hook );
- }
-
- pascal OSErr WESetInvisiblesColor( const RGBColor *color, WEReference we )
- {
- #if WASTE_VERSION < 0x00130000
- _weShowInvisiblesDefaultColor = *color;
- return noErr;
- #else
- OSErr err = noErr;
-
- if (we != nil)
- {
- err = WESetUserInfo('icRG', *(SInt32*)color, we);
- if (err == noErr)
- {
- SInt32 tmp = color->blue;
- err = WESetUserInfo('ic_B', tmp, we);
- }
- }
- else
- _weShowInvisiblesDefaultColor = *color;
- return err;
- #endif
- }
-
- pascal void WEGetInvisiblesColor( RGBColor *color, WEReference we )
- {
- #if WASTE_VERSION < 0x00130000
- *color = _weShowInvisiblesDefaultColor;
- #else
- SInt32 tmp;
- if (we != nil &&
- WEGetUserInfo('icRG', (SInt32*)color, we) == noErr &&
- WEGetUserInfo('ic_B', &tmp, we) == noErr)
- {
- color->blue = tmp;
- }
- else
- {
- *color = _weShowInvisiblesDefaultColor;
- }
- #endif
- }
-