Updated for 2.1b2 distribution.
[python/dscho.git] / Mac / Wastemods / WETabs.c
blob6f59e371cae38093d01d9a334c70de3675b2d374
1 /*
2 * WETabs.c
4 * WASTE TABS PACKAGE
5 * Routines for installing/removing tab hooks; accessors
7 */
10 #include "WETabs.h"
11 #include "WETabHooks.h"
13 #ifndef __ERRORS__
14 #include <Errors.h>
15 #endif
17 /* static UPP's */
18 static WEDrawTextUPP _weTabDrawTextProc = nil;
19 static WEPixelToCharUPP _weTabPixelToCharProc = nil;
20 static WECharToPixelUPP _weTabCharToPixelProc = nil;
21 static WELineBreakUPP _weTabLineBreakProc = nil;
23 pascal OSErr WEInstallTabHooks(WEReference we)
25 OSErr err;
27 /* if first time, create routine descriptors */
28 if (_weTabDrawTextProc == nil)
30 _weTabDrawTextProc = NewWEDrawTextProc(_WETabDrawText);
31 _weTabPixelToCharProc = NewWEPixelToCharProc(_WETabPixelToChar);
32 _weTabCharToPixelProc = NewWECharToPixelProc(_WETabCharToPixel);
33 _weTabLineBreakProc = NewWELineBreakProc(_WETabLineBreak);
36 if ((err = WESetInfo( weDrawTextHook, &_weTabDrawTextProc, we )) != noErr)
38 goto cleanup;
40 if ((err = WESetInfo( wePixelToCharHook, &_weTabPixelToCharProc, we )) != noErr)
42 goto cleanup;
44 if ((err = WESetInfo( weCharToPixelHook, &_weTabCharToPixelProc, we )) != noErr)
46 goto cleanup;
48 if ((err = WESetInfo( weLineBreakHook, &_weTabLineBreakProc, we )) != noErr)
50 goto cleanup;
53 cleanup:
54 return err;
57 pascal OSErr WERemoveTabHooks(WEReference we)
59 UniversalProcPtr nullHook = nil;
60 OSErr err;
62 if ((err = WESetInfo( weDrawTextHook, &nullHook, we )) != noErr)
64 goto cleanup;
66 if ((err = WESetInfo( wePixelToCharHook, &nullHook, we )) != noErr)
68 goto cleanup;
70 if ((err = WESetInfo( weCharToPixelHook, &nullHook, we )) != noErr)
72 goto cleanup;
74 if ((err = WESetInfo( weLineBreakHook, &nullHook, we )) != noErr)
76 goto cleanup;
79 cleanup:
80 return err;
83 pascal Boolean WEIsTabHooks(WEReference we)
85 WEPixelToCharUPP hook = nil;
87 /* return true if our tab hooks are installed */
89 return ( _weTabPixelToCharProc != nil ) &&
90 ( WEGetInfo( wePixelToCharHook, &hook, we ) == noErr) &&
91 ( _weTabPixelToCharProc == hook );
94 pascal SInt16 WEGetTabSize(WEReference we)
96 SInt32 result;
98 if (WEGetUserInfo( kTabSizeTag, &result, we ) != noErr)
100 result = kDefaultTabSize;
102 return result;
105 pascal OSErr WESetTabSize(SInt16 tabSize, WEReference we)
107 // make sure tabSize is a reasonable size
108 if ((tabSize < kMinTabSize) || (tabSize > kMaxTabSize))
110 return paramErr;
112 else
114 return WESetUserInfo( kTabSizeTag, tabSize, we );