summaryrefslogtreecommitdiffstats
path: root/Mac/Wastemods/WEObjectHandlers.c
diff options
context:
space:
mode:
Diffstat (limited to 'Mac/Wastemods/WEObjectHandlers.c')
-rw-r--r--Mac/Wastemods/WEObjectHandlers.c111
1 files changed, 111 insertions, 0 deletions
diff --git a/Mac/Wastemods/WEObjectHandlers.c b/Mac/Wastemods/WEObjectHandlers.c
new file mode 100644
index 0000000..f1dd5af
--- /dev/null
+++ b/Mac/Wastemods/WEObjectHandlers.c
@@ -0,0 +1,111 @@
+/*
+ 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;
+ }
+}