5 * Routines for installing/removing tab hooks; accessors
11 #include "WETabHooks.h"
13 #if !defined(__ERRORS__) && defined(WITHOUT_FRAMEWORKS)
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
)
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
)
40 if ((err
= WESetInfo( wePixelToCharHook
, &_weTabPixelToCharProc
, we
)) != noErr
)
44 if ((err
= WESetInfo( weCharToPixelHook
, &_weTabCharToPixelProc
, we
)) != noErr
)
48 if ((err
= WESetInfo( weLineBreakHook
, &_weTabLineBreakProc
, we
)) != noErr
)
57 pascal OSErr
WERemoveTabHooks(WEReference we
)
59 UniversalProcPtr nullHook
= nil
;
62 if ((err
= WESetInfo( weDrawTextHook
, &nullHook
, we
)) != noErr
)
66 if ((err
= WESetInfo( wePixelToCharHook
, &nullHook
, we
)) != noErr
)
70 if ((err
= WESetInfo( weCharToPixelHook
, &nullHook
, we
)) != noErr
)
74 if ((err
= WESetInfo( weLineBreakHook
, &nullHook
, we
)) != noErr
)
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
)
98 if (WEGetUserInfo( kTabSizeTag
, &result
, we
) != noErr
)
100 result
= kDefaultTabSize
;
105 pascal OSErr
WESetTabSize(SInt16 tabSize
, WEReference we
)
107 // make sure tabSize is a reasonable size
108 if ((tabSize
< kMinTabSize
) || (tabSize
> kMaxTabSize
))
114 return WESetUserInfo( kTabSizeTag
, tabSize
, we
);