This is ISndD.m in view mode; [Download] [Up]
/*$Copyright: * Copyright (C) 1992.5.22. Recruit Co.,Ltd. * Institute for Supercomputing Research * All rights reserved. * NewsBase by ISR, Kazuto MIYAI, Gary ARAKAKI, Katsunori SUZUKI, Kok-meng Lue * * You may freely copy, distribute and reuse the code in this program under * following conditions. * - to include this notice in the source code, if it is to be distributed * with source code. * - to add the file named "COPYING" within the code, which shall include * GNU GENERAL PUBLIC LICENSE(*). * - to display an acknowledgement in binary code as follows: "This product * includes software developed by Recruit Co.,Ltd., ISR." * - to display a notice which shall state that the users may freely copy, * distribute and reuse the code in this program under GNU GENERAL PUBLIC * LICENSE(*) * - to indicate the way to access the copy of GNU GENERAL PUBLIC LICENSE(*) * * (*)GNU GENERAL PUBLIC LICENSE is stored in the file named COPYING * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. $*/ /* ISndD.m */ #import "ISndD.h" #import <string.h> #import <objc/hashtable.h> #import <libc.h> #import <sys/types.h> #import <sys/stat.h> #import <appkit/NXImage.h> #import <math.h> #import "errdebug.h" @implementation ISndD static NXAtom rtfControlWord; static NXAtom fileExtension; static NXImage *icon; static NXImage *image; + initialize { rtfControlWord = NXUniqueStringNoCopy("MMsnd"); fileExtension = NXUniqueStringNoCopy("snd"); image = [[NXImage alloc] initFromSection:"SoundButton.tiff"]; [IMediaD getFileIconFor:(Class)self]; return(self); } + (NXAtom)rtfControlWord { return(rtfControlWord); } + (NXAtom)fileExtension; { return(fileExtension); } + (NXAtom)pasteboardType { return(NULL); } + setIcon:(NXImage *)theIcon { icon = theIcon; return(self); } + (NXImage *)icon { return(icon); } - (NXImage *)image { return(image); } - performDoubleClickAction:sender { if ([sound status] != SK_STATUS_PLAYING) { SNDReserve(SND_ACCESS_IN | SND_ACCESS_OUT | SND_ACCESS_DSP, MAXINT); soundReserved = YES; [sound play]; } else { [sound stop]; SNDUnreserve(SND_ACCESS_IN | SND_ACCESS_OUT | SND_ACCESS_DSP); soundReserved = NO; } return(self); } - (BOOL)readFromStream:(NXStream *)inStream { char tmpSndFile[64]; [super readFromStream:inStream]; // ## REWRITE! ## Really we can directly initialize the sound object // by writing our own initFromStream method for the Sound class sprintf(tmpSndFile, "/tmp/NewsBaseTmpSnDFile%d.snd", getpid()); if (NXSaveToFile(stream, tmpSndFile) != 0) { return(NO); } sound = [Sound allocFromZone:[self zone]]; if ([sound readSoundfile:tmpSndFile] != 0) { [sound free]; sound = nil; unlink(tmpSndFile); return(NO); } unlink(tmpSndFile); return(YES); } - free { if ([sound status] == SK_STATUS_PLAYING) { [sound stop]; SNDUnreserve(SND_ACCESS_IN | SND_ACCESS_OUT | SND_ACCESS_DSP); soundReserved = NO; } if (soundReserved == YES) { SNDUnreserve(SND_ACCESS_IN | SND_ACCESS_OUT | SND_ACCESS_DSP); soundReserved = NO; } [sound free]; return [super free]; } @end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.