diff options
Diffstat (limited to 'Mac/Wastemods')
-rw-r--r-- | Mac/Wastemods/WEObjectHandlers.c | 111 | ||||
-rw-r--r-- | Mac/Wastemods/WEObjectHandlers.h | 31 | ||||
-rw-r--r-- | Mac/Wastemods/WETabHooks.c | 281 | ||||
-rw-r--r-- | Mac/Wastemods/WETabHooks.h | 35 | ||||
-rw-r--r-- | Mac/Wastemods/WETabs.c | 116 | ||||
-rw-r--r-- | Mac/Wastemods/WETabs.h | 40 | ||||
-rw-r--r-- | Mac/Wastemods/readme.txt | 11 |
7 files changed, 0 insertions, 625 deletions
diff --git a/Mac/Wastemods/WEObjectHandlers.c b/Mac/Wastemods/WEObjectHandlers.c deleted file mode 100644 index f1dd5af..0000000 --- a/Mac/Wastemods/WEObjectHandlers.c +++ /dev/null @@ -1,111 +0,0 @@ -/* - WASTE Demo Project: - Sample WASTE Object Handlers - - Copyright © 1993-1998 Marco Piovanelli - All Rights Reserved -*/ - -#include "WEObjectHandlers.h" - -#ifndef __ICONS__ -#include <Icons.h> -#endif - -#ifndef __SOUND__ -#include <Sound.h> -#endif - -/* PICTURES */ - -pascal OSErr HandleNewPicture(Point *defaultObjectSize, WEObjectReference objectRef) -{ - PicHandle thePicture; - Rect frame; - - /* get handle to object data (in this case, a picture handle) */ - thePicture = (PicHandle) WEGetObjectDataHandle(objectRef); - - /* figure out the default object size by looking at the picFrame record */ - frame = (*thePicture)->picFrame; - OffsetRect(&frame, -frame.left, -frame.top); - defaultObjectSize->v = frame.bottom; - defaultObjectSize->h = frame.right; - - return noErr; -} - -pascal OSErr HandleDisposePicture(WEObjectReference objectRef) -{ - PicHandle thePicture; - - /* get handle to object data (in this case, a picture handle) */ - thePicture = (PicHandle) WEGetObjectDataHandle(objectRef); - - /* kill the picture */ - KillPicture(thePicture); - - return MemError(); -} - -pascal OSErr HandleDrawPicture(const Rect *destRect, WEObjectReference objectRef) -{ - PicHandle thePicture; - - /* get handle to object data (in this case, a picture handle) */ - thePicture = (PicHandle) WEGetObjectDataHandle(objectRef); - - /* draw the picture */ - DrawPicture(thePicture, destRect); - - return noErr; -} - - -/* SOUND */ - -pascal OSErr HandleNewSound(Point *defaultObjectSize, WEObjectReference objectRef) -{ -#pragma unused(objectRef) - - /* sounds are drawn as standard 32x32 icons */ - defaultObjectSize->v = 32; - defaultObjectSize->h = 32; - - return noErr; -} - -pascal OSErr HandleDrawSound(const Rect *destRect, WEObjectReference objectRef) -{ -#pragma unused(objectRef) - - /* draw the sound icon */ - return PlotIconID(destRect, kAlignNone, kTransformNone, kSoundIconID); -} - -pascal Boolean HandleClickSound(Point hitPt, EventModifiers modifiers, - UInt32 clickTime, WEObjectReference objectRef) -{ -#pragma unused(hitPt, clickTime) - - SndListHandle theSound; - - /* WASTE sets the low bit of modifiers on double (multiple) clicks */ - if (modifiers & 0x0001) - { - - /* get a handle to the object data (in this case, a sound handle) */ - theSound = (SndListHandle) WEGetObjectDataHandle(objectRef); - - /* play the sound */ - SndPlay(nil, theSound, false); - - /* return TRUE so WASTE knows we handled the click */ - return true; - } - else - { - /* not a double click: let WASTE handle the mouse-down */ - return false; - } -} diff --git a/Mac/Wastemods/WEObjectHandlers.h b/Mac/Wastemods/WEObjectHandlers.h deleted file mode 100644 index ac6e567..0000000 --- a/Mac/Wastemods/WEObjectHandlers.h +++ /dev/null @@ -1,31 +0,0 @@ -/* - WASTE Demo Project: - Sample WASTE Object Handlers - - Copyright © 1993-1998 Marco Piovanelli - All Rights Reserved -*/ -#ifndef WITHOUT_FRAMEWORKS -#include <Carbon/Carbon.h> -#endif -#ifndef _WASTE_ -#include "WASTE.h" -#endif - - -// PICTURES - -pascal OSErr HandleNewPicture(Point *defaultObjectSize, WEObjectReference objectRef); -pascal OSErr HandleDisposePicture(WEObjectReference objectRef); -pascal OSErr HandleDrawPicture(const Rect *destRect, WEObjectReference objectRef); - -// SOUNDS - -enum { - kSoundIconID = 550 -}; - -pascal OSErr HandleNewSound(Point *defaultObjectSize, WEObjectReference objectRef); -pascal OSErr HandleDrawSound(const Rect *destRect, WEObjectReference objectRef); -pascal Boolean HandleClickSound(Point hitPt, EventModifiers modifiers, - UInt32 clickTime, WEObjectReference objectRef); diff --git a/Mac/Wastemods/WETabHooks.c b/Mac/Wastemods/WETabHooks.c deleted file mode 100644 index 9595daf..0000000 --- a/Mac/Wastemods/WETabHooks.c +++ /dev/null @@ -1,281 +0,0 @@ -/* - * WETabHooks.c - * - * WASTE TABS PACKAGE - * Hooks for adding tab support to WASTE - * - * Written by: - * Mark Alldritt (original code) - * Dan Crevier (line breaks) - * John Daub (maintenance) - * Jonathan Kew (variable-width tabs) - * Marco Piovanelli (?) - * Bert Seltzer (horizontal scrolling) - * - */ - -#include "WETabs.h" -#include "WETabHooks.h" - -#define FIXROUND(f) ((SInt16) (((f) + 0x00008000) >> 16)) -#define BSL(A, B) (((SInt32) (A)) << (B)) - -static const Point kOneToOneScaling = { 1, 1 } ; - -pascal void _WETabDrawText - ( - const char * pText, - SInt32 textLength, - Fixed slop, - JustStyleCode styleRunPosition, - WEReference we - ) -{ -#pragma unused ( slop, styleRunPosition ) - - LongRect destRect; - SInt32 beginChar = 0; - SInt32 ii; - SInt16 tabWidth; - SInt16 destLeft; - Point penPos; - SInt16 tabSize = WEGetTabSize(we); - - WEGetDestRect(&destRect, we); - destLeft = (SInt16) destRect.left; - - for ( ii = 0; ii < textLength; ii++ ) - { - if (pText[ii] == '\t') - { - DrawText(pText, beginChar, ii - beginChar); - - /* advance the pen to the next tab stop */ - GetPen(&penPos); - tabWidth = tabSize - (penPos.h - destLeft) % tabSize; - MoveTo(penPos.h + tabWidth, penPos.v); - beginChar = ii + 1; - } - } /* for */ - - DrawText(pText, beginChar, textLength - beginChar); -} - -pascal SInt32 _WETabPixelToChar - ( - const char * pText, - SInt32 textLength, - Fixed slop, - Fixed *width, - WEEdge *edge, - JustStyleCode styleRunPosition, - Fixed hPos, - WEReference we - ) -{ - SInt32 beginChar = 0; - SInt32 offset = 0; - SInt32 ii; - Fixed lastWidth; - Fixed tabWidth; - SInt16 tabSize = WEGetTabSize(we); - - /* loop through every character in the segment looking for tabs */ - for ( ii = 0; ii < textLength; ii++ ) - { - /* exit now if width has gone negative */ - /* (i.e., if we have found which glyph was hit) */ - if (*width <= 0) - { - break; - } - - /* tab found? */ - if (pText[ii] == '\t') - { - /* calculate the width of the sub-segment preceding the tab */ - lastWidth = *width; - offset += PixelToChar((char *)pText + beginChar, ii - beginChar, slop, - lastWidth, (Boolean *) edge, width, styleRunPosition, - kOneToOneScaling, kOneToOneScaling); - beginChar = ii + 1; - - /* hit point past sub-segment? */ - if (*width >= 0) - { - /* increment hPos by width of sub-segment preceding the tab */ - hPos += (lastWidth - *width); - - /* calculate the width of the tab "glyph" (as a Fixed value) */ - tabWidth = BSL(tabSize - FIXROUND(hPos) % tabSize, 16); - - /* increment hPos by width of tab character */ - hPos += tabWidth; - - /* hit point within tab glyph? */ - if (*width < tabWidth) - { - /* yes: determine which half of tab glyph was hit */ - if (*width > (tabWidth >> 1)) - { - *edge = kTrailingEdge; /* second (trailing) edge of tab */ - offset++; - } - else - { - *edge = kLeadingEdge; /* first (leading) edge of tab */ - } - - /* returning -1 (as Fixed) in width means we're finished */ - *width = 0xFFFF0000; - } - else - { - /* hit point is past tab: keep looping */ - offset++; - *width -= tabWidth; - } - } /* if (*width >= 0) */ - } /* if tab found */ - } /* for */ - - /* no more tabs in this segment: process the last sub-segment */ - if (*width >= 0) - { - lastWidth = *width; - offset += PixelToChar((char *)pText + beginChar, textLength - beginChar, slop, - lastWidth, (Boolean *) edge, width, styleRunPosition, - kOneToOneScaling, kOneToOneScaling); - } - - /* round width to nearest integer value */ - /* this is supposed to fix an incompatibility with the WorldScript Power Adapter */ - *width = (*width + 0x00008000) & 0xFFFF0000; - - return offset; -} - -pascal SInt16 _WETabCharToPixel - ( - const char * pText, - SInt32 textLength, - Fixed slop, - SInt32 offset, - SInt16 direction, - JustStyleCode styleRunPosition, - SInt16 hPos, - WEReference we - ) -{ - LongRect destRect; - SInt32 beginChar = 0; - SInt32 ii; - SInt16 width; - SInt16 destLeft; - SInt16 totalWidth = 0; - SInt16 tabSize = WEGetTabSize(we); - - WEGetDestRect(&destRect, we); - destLeft = (SInt16) destRect.left; - - /* measure text up to offset, if offset is within this segment, - otherwise to textLength */ - if (offset > textLength) - { - offset = textLength; - } - - for ( ii = 0; ii < offset; ii++ ) - { - if (pText[ii] == '\t') - { - /* calculate the pixel width of the subsegment preceding the tab */ - width = TextWidth(pText, beginChar, ii - beginChar); - totalWidth += width; - hPos += width; - - /* calculate tab width */ - width = tabSize - (hPos - destLeft) % tabSize; - totalWidth += width; - hPos += width; - - /* go to next subsegment */ - beginChar = ii + 1; - } - } /* for */ - - /* calculate width of remaining characters */ - width = CharToPixel((char *)pText + beginChar, textLength - beginChar, slop, - offset - beginChar, direction, styleRunPosition, - kOneToOneScaling, kOneToOneScaling); - totalWidth += width; - - return totalWidth; -} - -pascal StyledLineBreakCode _WETabLineBreak - ( - const char * pText, - SInt32 textLength, - SInt32 textStart, - SInt32 textEnd, - Fixed *textWidth, - SInt32 *textOffset, - WEReference we - ) -{ - LongRect destRect; - SInt32 beginChar = textStart; - SInt32 ii; - Fixed tabWidth; - SInt16 destWidth; - StyledLineBreakCode breakCode = smBreakOverflow; - SInt16 tabSize = WEGetTabSize(we); - - WEGetDestRect(&destRect, we); - destWidth = (SInt16) (destRect.right - destRect.left); - - for ( ii = textStart; ii < textEnd; ii++ ) - { - if (pText[ii] == 0x0D) - { - /* found a <return>, so stop looking ahead for tabs */ - ii++; - break; - } - if (pText[ii] == '\t') - { - /* do previous "segment" */ - breakCode = StyledLineBreak((char *)pText, textLength, beginChar, ii, 0, textWidth, textOffset); - if ((breakCode != smBreakOverflow) || (ii >= textLength)) - { - break; - } - beginChar = ii + 1; - - /* calculate tab width (as a Fixed value) */ - tabWidth = BSL(tabSize - (destWidth - FIXROUND(*textWidth)) % tabSize, 16); - - /* if tabWidth > pixelWidth we break in tab */ - /* don't move tab to next line */ - if (tabWidth > *textWidth) - { - breakCode = smBreakWord; - *textOffset = ii + 1; - break; - } - else - { - *textWidth -= tabWidth; - } - } - } /* for */ - - /* do last sub-segment */ - if ((ii - beginChar >= 0) && (breakCode == smBreakOverflow)) - { - breakCode = StyledLineBreak((char *)pText, textLength, beginChar, ii, 0, textWidth, textOffset); - } - - return breakCode; -} diff --git a/Mac/Wastemods/WETabHooks.h b/Mac/Wastemods/WETabHooks.h deleted file mode 100644 index 635db74..0000000 --- a/Mac/Wastemods/WETabHooks.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * WETabHooks.h - * - * WASTE TABS PACKAGE - * Private (internal) interface - * - * Copyright (c) 1993-1998 Marco Piovanelli - * All Rights Reserved - * - */ - - -#ifndef WITHOUT_FRAMEWORKS -#include <Carbon/Carbon.h> -#endif -#ifndef _WASTE_ -#include "WASTE.h" -#endif - -enum { - kTabSizeTag = 'tbsz' -}; - -#ifdef __cplusplus -extern "C" { -#endif - -pascal void _WETabDrawText(const char *, SInt32, Fixed, JustStyleCode, WEReference); -pascal SInt32 _WETabPixelToChar(const char *, SInt32, Fixed, Fixed *, WEEdge *, JustStyleCode, Fixed, WEReference); -pascal SInt16 _WETabCharToPixel(const char *, SInt32, Fixed, SInt32, SInt16, JustStyleCode, SInt16, WEReference); -pascal StyledLineBreakCode _WETabLineBreak(const char *, SInt32, SInt32, SInt32, Fixed *, SInt32 *, WEReference); - -#ifdef __cplusplus -} -#endif diff --git a/Mac/Wastemods/WETabs.c b/Mac/Wastemods/WETabs.c deleted file mode 100644 index 1a0291e..0000000 --- a/Mac/Wastemods/WETabs.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - * WETabs.c - * - * WASTE TABS PACKAGE - * Routines for installing/removing tab hooks; accessors - * - */ - - -#include "WETabs.h" -#include "WETabHooks.h" - -#if !defined(__ERRORS__) && defined(WITHOUT_FRAMEWORKS) -#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 ); - } -} diff --git a/Mac/Wastemods/WETabs.h b/Mac/Wastemods/WETabs.h deleted file mode 100644 index 0b2c0f3..0000000 --- a/Mac/Wastemods/WETabs.h +++ /dev/null @@ -1,40 +0,0 @@ -/* - * WETabs.h - * - * WASTE TABS PACKAGE - * Public C/C++ interface - * - * version 1.3.2 (August 1996) - * - * Copyright (c) 1993-1998 Marco Piovanelli - * All Rights Reserved - * - */ - - -#ifndef WITHOUT_FRAMEWORKS -#include <Carbon/Carbon.h> -#endif -#ifndef _WASTE_ -#include "WASTE.h" -#endif - -enum { - kMinTabSize = 1, // must be greater than zero - kDefaultTabSize = 32, - kMaxTabSize = 1024 // arbitrary value -}; - -#ifdef __cplusplus -extern "C" { -#endif - -pascal OSErr WEInstallTabHooks(WEReference we); -pascal OSErr WERemoveTabHooks(WEReference we); -pascal Boolean WEIsTabHooks(WEReference we); -pascal SInt16 WEGetTabSize(WEReference we); -pascal OSErr WESetTabSize(SInt16 tabWidth, WEReference we); - -#ifdef __cplusplus -} -#endif diff --git a/Mac/Wastemods/readme.txt b/Mac/Wastemods/readme.txt deleted file mode 100644 index 7f7c16e..0000000 --- a/Mac/Wastemods/readme.txt +++ /dev/null @@ -1,11 +0,0 @@ -These files were in the Waste 1.3 distribution, but they are missing from the -Waste 2.0 distribution. At least: from the 2.0 distribution as included with -MetroWerks CodeWarrior. As the Python Waste module needs them I have included them -here. There were a few minor changes (in function signatures) to accomodate -slight changes in the Waste 2.0 headers. - -All the copyright notices in the files and in Waste 1.3 seem to indicate that it -is fine to redistribute these files. If I am mistaken in this please let me know -and I will rectify the situation immedeately. - -Jack Jansen, jack@cwi.nl, 31-Jan-01. |