home *** CD-ROM | disk | FTP | other *** search
- /*
- * WETabs.c
- *
- * WASTE TABS PACKAGE
- * Routines for installing/removing tab hooks; accessors
- *
- */
-
-
- #include "WETabs.h"
- #include "WETabHooks.h"
-
- #ifndef __ERRORS__
- #include <Errors.h>
- #endif
-
- /* static UPP's */
- static WEDrawTextUPP _weTabDrawTextProc = nil;
- static WEPixelToCharUPP _weTabPixelToCharProc = nil;
- static WECharToPixelUPP _weTabCharToPixelProc = nil;
- static WELineBreakUPP _weTabLineBreakProc = nil;
-
- pascal OSErr WEInstallTabHooks(WEReference we)
- {
- OSErr err;
-
- /* if first time, create routine descriptors */
- if (_weTabDrawTextProc == nil)
- {
- _weTabDrawTextProc = NewWEDrawTextProc(_WETabDrawText);
- _weTabPixelToCharProc = NewWEPixelToCharProc(_WETabPixelToChar);
- _weTabCharToPixelProc = NewWECharToPixelProc(_WETabCharToPixel);
- _weTabLineBreakProc = NewWELineBreakProc(_WETabLineBreak);
- }
-
- if ((err = WESetInfo( weDrawTextHook, &_weTabDrawTextProc, we )) != noErr)
- {
- goto cleanup;
- }
- if ((err = WESetInfo( wePixelToCharHook, &_weTabPixelToCharProc, we )) != noErr)
- {
- goto cleanup;
- }
- if ((err = WESetInfo( weCharToPixelHook, &_weTabCharToPixelProc, we )) != noErr)
- {
- goto cleanup;
- }
- if ((err = WESetInfo( weLineBreakHook, &_weTabLineBreakProc, we )) != noErr)
- {
- goto cleanup;
- }
-
- cleanup:
- return err;
- }
-
- pascal OSErr WERemoveTabHooks(WEReference we)
- {
- UniversalProcPtr nullHook = nil;
- OSErr err;
-
- if ((err = WESetInfo( weDrawTextHook, &nullHook, we )) != noErr)
- {
- goto cleanup;
- }
- if ((err = WESetInfo( wePixelToCharHook, &nullHook, we )) != noErr)
- {
- goto cleanup;
- }
- if ((err = WESetInfo( weCharToPixelHook, &nullHook, we )) != noErr)
- {
- goto cleanup;
- }
- if ((err = WESetInfo( weLineBreakHook, &nullHook, we )) != noErr)
- {
- goto cleanup;
- }
-
- cleanup:
- return err;
- }
-
- pascal Boolean WEIsTabHooks(WEReference we)
- {
- WEPixelToCharUPP hook = nil;
-
- /* return true if our tab hooks are installed */
-
- return ( _weTabPixelToCharProc != nil ) &&
- ( WEGetInfo( wePixelToCharHook, &hook, we ) == noErr) &&
- ( _weTabPixelToCharProc == hook );
- }
-
- pascal SInt16 WEGetTabSize(WEReference we)
- {
- SInt32 result;
-
- if (WEGetUserInfo( kTabSizeTag, &result, we ) != noErr)
- {
- result = kDefaultTabSize;
- }
- return result;
- }
-
- pascal OSErr WESetTabSize(SInt16 tabSize, WEReference we)
- {
- // make sure tabSize is a reasonable size
- if ((tabSize < kMinTabSize) || (tabSize > kMaxTabSize))
- {
- return paramErr;
- }
- else
- {
- return WESetUserInfo( kTabSizeTag, tabSize, we );
- }
- }
-