Annotation of src/smack.h, revision 1.1

1.1     ! root        1: #ifndef SMACKH
        !             2: #define SMACKH
        !             3: 
        !             4: #include "rad.h"
        !             5: 
        !             6: RCSTART
        !             7: 
        !             8: #define SMACKVERSION "2.0y"
        !             9: 
        !            10: typedef struct SmackSumTag {
        !            11:   u32 TotalTime;         // total time
        !            12:   u32 MS100PerFrame;     // MS*100 per frame (100000/MS100PerFrame=Frames/Sec)
        !            13:   u32 TotalOpenTime;     // Time to open and prepare for decompression
        !            14:   u32 TotalFrames;       // Total Frames displayed
        !            15:   u32 SkippedFrames;     // Total number of skipped frames
        !            16:   u32 TotalBlitTime;     // Total time spent blitting
        !            17:   u32 TotalReadTime;     // Total time spent reading 
        !            18:   u32 TotalDecompTime;   // Total time spent decompressing
        !            19:   u32 TotalBackReadTime; // Total time spent reading in background
        !            20:   u32 TotalReadSpeed;    // Total io speed (bytes/second)
        !            21:   u32 SlowestFrameTime;  // Slowest single frame time
        !            22:   u32 Slowest2FrameTime; // Second slowest single frame time
        !            23:   u32 SlowestFrameNum;   // Slowest single frame number
        !            24:   u32 Slowest2FrameNum;  // Second slowest single frame number
        !            25:   u32 AverageFrameSize;  // Average size of the frame
        !            26:   u32 Highest1SecRate;   // Highest 1 sec data rate
        !            27:   u32 Highest1SecFrame;  // Highest 1 sec data rate starting frame
        !            28:   u32 HighestMemAmount;  // Highest amount of memory allocated
        !            29:   u32 TotalExtraMemory;  // Total extra memory allocated
        !            30:   u32 HighestExtraUsed;  // Highest extra memory actually used
        !            31: } SmackSum;
        !            32: 
        !            33: typedef struct SmackTag {
        !            34:   u32 Version;           // SMK2 only right now
        !            35:   u32 Width;             // Width (1 based, 640 for example)
        !            36:   u32 Height;            // Height (1 based, 480 for example)
        !            37:   u32 Frames;            // Number of frames (1 based, 100 = 100 frames)
        !            38:   u32 MSPerFrame;        // Frame Rate
        !            39:   u32 SmackerType;       // bit 0 set=ring frame
        !            40:   u32 LargestInTrack[7]; // Largest single size for each track
        !            41:   u32 tablesize;         // Size of the init tables
        !            42:   u32 codesize;          // Compression info   
        !            43:   u32 absize;            // ditto
        !            44:   u32 detailsize;        // ditto
        !            45:   u32 typesize;          // ditto
        !            46:   u32 TrackType[7];      // high byte=0x80-Comp,0x40-PCM data,0x20-16 bit,0x10-stereo
        !            47:   u32 extra;             // extra value (should be zero)
        !            48:   u32 NewPalette;        // set to one if the palette changed
        !            49:   u8  Palette[772];      // palette data
        !            50:   u32 FrameNum;          // Frame Number to be displayed
        !            51:   u32 LastRectx;         // Rect set in from SmackToBufferRect (X coord)
        !            52:   u32 LastRecty;         // Rect set in from SmackToBufferRect (Y coord)
        !            53:   u32 LastRectw;         // Rect set in from SmackToBufferRect (Width)
        !            54:   u32 LastRecth;         // Rect set in from SmackToBufferRect (Height)
        !            55:   u32 OpenFlags;         // flags used on open
        !            56:   u32 LeftOfs;           // Left Offset used in SmackTo
        !            57:   u32 TopOfs;            // Top Offset used in SmackTo
        !            58: } Smack;              
        !            59: 
        !            60: #define SmackHeaderSize(smk) ((((u8*)&((smk)->extra))-((u8*)(smk)))+4)
        !            61: 
        !            62: //=======================================================================
        !            63: #define SMACKNEEDPAN    0x00020L // Will be setting the pan
        !            64: #define SMACKNEEDVOLUME 0x00040L // Will be setting the volume
        !            65: #define SMACKFRAMERATE  0x00080L // Override fr (call SmackFrameRate first)
        !            66: #define SMACKLOADEXTRA  0x00100L // Load the extra buffer during SmackOpen
        !            67: #define SMACKPRELOADALL 0x00200L // Preload the entire animation
        !            68: #define SMACKNOSKIP     0x00400L // Don't skip frames if falling behind
        !            69: #define SMACKSIMULATE   0x00800L // Simulate the speed (call SmackSim first)
        !            70: #define SMACKFILEHANDLE 0x01000L // Use when passing in a file handle
        !            71: #define SMACKTRACK1     0x02000L // Play audio track 1
        !            72: #define SMACKTRACK2     0x04000L // Play audio track 2
        !            73: #define SMACKTRACK3     0x08000L // Play audio track 3
        !            74: #define SMACKTRACK4     0x10000L // Play audio track 4
        !            75: #define SMACKTRACK5     0x20000L // Play audio track 5
        !            76: #define SMACKTRACK6     0x40000L // Play audio track 6
        !            77: #define SMACKTRACK7     0x80000L // Play audio track 7
        !            78: #define SMACKTRACKS (SMACKTRACK1|SMACKTRACK2|SMACKTRACK3|SMACKTRACK4|SMACKTRACK5|SMACKTRACK6|SMACKTRACK7)
        !            79: 
        !            80: #define SMACKAUTOEXTRA 0xffffffffL // NOT A FLAG! - Use as extrabuf param 
        !            81: //=======================================================================
        !            82:   
        !            83: #define SMACKSURFACEFAST     0
        !            84: #define SMACKSURFACESLOW     1
        !            85: #define SMACKSURFACEDIRECT   2
        !            86: 
        !            87: 
        !            88: Smack PTR4* RADEXPLINK SmackOpen(char PTR4* name,u32 flags,u32 extrabuf);
        !            89: 
        !            90: #ifdef __RADMAC__
        !            91:   #include <files.h>
        !            92: 
        !            93:   Smack PTR4* RADEXPLINK SmackMacOpen(FSSpec* fsp,u32 flags,u32 extrabuf);
        !            94: #endif
        !            95: 
        !            96: u32  RADEXPLINK SmackDoFrame(Smack PTR4* smk);
        !            97: void RADEXPLINK SmackNextFrame(Smack PTR4* smk);
        !            98: u32  RADEXPLINK SmackWait(Smack PTR4* smk);
        !            99: void RADEXPLINK SmackClose(Smack PTR4* smk);
        !           100: 
        !           101: void RADEXPLINK SmackVolumePan(Smack PTR4* smk, u32 trackflag,u32 volume,u32 pan);    
        !           102: 
        !           103: void RADEXPLINK SmackSummary(Smack PTR4* smk,SmackSum PTR4* sum);
        !           104: 
        !           105: u32  RADEXPLINK SmackSoundInTrack(Smack PTR4* smk,u32 trackflags);
        !           106: u32  RADEXPLINK SmackSoundOnOff(Smack PTR4* smk,u32 on);
        !           107: 
        !           108: #ifdef __RADMAC__
        !           109:   void RADEXPLINK SmackToScreen(Smack PTR4* smk,u32 left,u32 top);
        !           110: #else
        !           111:   void RADEXPLINK SmackToScreen(Smack PTR4* smk,u32 left,u32 top,u32 BytesPS,u16 PTR4* WinTbl,u32 SetBank);
        !           112: #endif
        !           113: 
        !           114: void RADEXPLINK SmackToBuffer(Smack PTR4* smk,u32 left,u32 top,u32 Pitch,u32 destheight,void PTR4* buf,u32 Reversed);
        !           115: u32  RADEXPLINK SmackToBufferRect(Smack PTR4* smk, u32 SmackSurface);
        !           116: 
        !           117: void RADEXPLINK SmackGoto(Smack PTR4* smk,u32 frame);
        !           118: void RADEXPLINK SmackColorRemap(Smack PTR4* smk,void PTR4* remappal,u32 numcolors,u32 paltype);
        !           119: void RADEXPLINK SmackColorTrans(Smack PTR4* smk,void PTR4* trans);
        !           120: void RADEXPLINK SmackFrameRate(u32 forcerate);
        !           121: void RADEXPLINK SmackSimulate(u32 sim);
        !           122: 
        !           123: u32  RADEXPLINK SmackGetTrackData(Smack PTR4* smk,void PTR4* dest,u32 trackflag);
        !           124: 
        !           125: void RADEXPLINK SmackSoundCheck();
        !           126: 
        !           127: //======================================================================
        !           128: #ifdef __RADDOS__
        !           129: 
        !           130:   #define SMACKSOUNDNONE -1
        !           131: 
        !           132:   extern void* cdecl SmackTimerSetupAddr;
        !           133:   extern void* cdecl SmackTimerReadAddr;
        !           134:   extern void* cdecl SmackTimerDoneAddr;
        !           135: 
        !           136:   typedef void RADLINK (*SmackTimerSetupType)();
        !           137:   typedef u32 RADLINK (*SmackTimerReadType)();
        !           138:   typedef void RADLINK (*SmackTimerDoneType)();
        !           139: 
        !           140:   #define SmackTimerSetup() ((SmackTimerSetupType)(SmackTimerSetupAddr))()
        !           141:   #define SmackTimerRead() ((SmackTimerReadType)(SmackTimerReadAddr))()
        !           142:   #define SmackTimerDone() ((SmackTimerDoneType)(SmackTimerDoneAddr))()
        !           143: 
        !           144:   u8 RADEXPLINK SmackSoundUseMSS(void* DigDriver,u32 MaxTimerSpeed);
        !           145:   void RADEXPLINK SmackSoundMSSLiteInit();
        !           146:   void RADEXPLINK SmackSoundMSSLiteDone();
        !           147: 
        !           148:   u8 RADEXPLINK SmackSoundUseSOS3r(u32 SOSDriver,u32 MaxTimerSpeed);
        !           149:   u8 RADEXPLINK SmackSoundUseSOS3s(u32 SOSDriver,u32 MaxTimerSpeed);
        !           150:   u8 RADEXPLINK SmackSoundUseSOS4r(u32 SOSDriver,u32 MaxTimerSpeed);
        !           151:   u8 RADEXPLINK SmackSoundUseSOS4s(u32 SOSDriver,u32 MaxTimerSpeed);
        !           152: 
        !           153:   #ifdef __SW_3R
        !           154:     #define SmackSoundUseSOS3 SmackSoundUseSOS3r
        !           155:     #define SmackSoundUseSOS4 SmackSoundUseSOS4r
        !           156:   #else
        !           157:     #define SmackSoundUseSOS3 SmackSoundUseSOS3s
        !           158:     #define SmackSoundUseSOS4 SmackSoundUseSOS4s
        !           159:   #endif
        !           160: 
        !           161: #else
        !           162: 
        !           163:   #define SMACKRESRESET    0
        !           164:   #define SMACKRES640X400  1
        !           165:   #define SMACKRES640X480  2
        !           166:   #define SMACKRES800X600  3
        !           167:   #define SMACKRES1024X768 4
        !           168: 
        !           169:   u32 RADEXPLINK SmackSetSystemRes(u32 mode);  // use SMACKRES* values
        !           170: 
        !           171:   #ifdef __RADMAC__
        !           172: 
        !           173:     #include <windows.h>
        !           174:     #include <palettes.h>
        !           175:     #include <qdoffscreen.h>
        !           176:     #include <timer.h>
        !           177: 
        !           178:     typedef struct SmkTMInfoTag {
        !           179:       TMTask smTask;
        !           180:       u32 milli;
        !           181:     } SmkTMInfo;
        !           182:     
        !           183:     extern SmkTMInfo __SmackTimeInfo;
        !           184: 
        !           185:     void RADEXPLINK SmackTimerSetup();
        !           186:     void RADEXPLINK SmackTimerDone();
        !           187:     #define SmackTimerRead() (__SmackTimeInfo.milli)
        !           188: 
        !           189:     #define SMACKAUTOBLIT    0
        !           190:     #define SMACKDIRECTBLIT  1
        !           191:     #define SMACKGWORLDBLIT  2
        !           192: 
        !           193:     typedef struct SmackBufTag {
        !           194:       u32 Reversed;
        !           195:       u32 SurfaceType;    // SMACKSURFACExxxxxx
        !           196:       u32 BlitType;       // SMACKxxxxxBLIT
        !           197:       u32 Width;
        !           198:       u32 Height;
        !           199:       u32 Pitch;
        !           200:       u32 Zoomed;
        !           201:       u32 ZWidth;
        !           202:       u32 ZHeight;
        !           203:       u32 DispColors;     // colors on screen
        !           204:       u32 MaxPalColors;
        !           205:       u32 PalColorsInUse;
        !           206:       u32 StartPalColor;
        !           207:       u32 EndPalColor;
        !           208:       void* Buffer;
        !           209:       void* Palette;
        !           210:       u32 PalType;
        !           211: 
        !           212:       WindowPtr wp;
        !           213:       GWorldPtr gwp;
        !           214:       CTabHandle cth;
        !           215:       PaletteHandle palh;
        !           216:     } SmackBuf;
        !           217: 
        !           218:   #else
        !           219: 
        !           220:     #ifdef __RADWIN__
        !           221: 
        !           222:       #define INCLUDE_MMSYSTEM_H
        !           223:       #include "windows.h"
        !           224:       #include "windowsx.h"
        !           225: 
        !           226:       #define SMACKAUTOBLIT        0
        !           227:       #define SMACKFULL320X240BLIT 1
        !           228:       #define SMACKFULL320X200BLIT 2
        !           229:       #define SMACKSTANDARDBLIT    3
        !           230:       #define SMACKWINGBLIT        4
        !           231: 
        !           232:       #define WM_SMACKACTIVATE WM_USER+0x5678
        !           233: 
        !           234:       typedef struct SmackBufTag {
        !           235:         u32 Reversed;             // 1 if the buffer is upside down
        !           236:         u32 SurfaceType;          // SMACKSURFACExxxx defines
        !           237:         u32 BlitType;             // SMACKxxxxBLIT defines
        !           238:         u32 FullScreen;           // 1 if full-screen
        !           239:         u32 Width;
        !           240:         u32 Height;
        !           241:         u32 Zoomed;
        !           242:         u32 ZWidth;
        !           243:         u32 ZHeight;
        !           244:         u32 DispColors;           // colors on the screen
        !           245:         u32 MaxPalColors;         // total possible colors in palette (usually 256)
        !           246:         u32 PalColorsInUse;       // Used colors in palette (usually 236)
        !           247:         u32 StartPalColor;        // first usable color index (usually 10)
        !           248:         u32 EndPalColor;          // last usable color index (usually 246)
        !           249:         RGBQUAD Palette[256];
        !           250:         u32 PalType;
        !           251: 
        !           252:         void PTR4* Buffer;
        !           253:         void PTR4* DIBRestore;
        !           254:         u32 OurBitmap;
        !           255:         u32 OrigBitmap;
        !           256:         u32 OurPalette;
        !           257:         u32 WinGDC;
        !           258:         u32 FullFocused;
        !           259:         u32 ParentHwnd;
        !           260:         u32 OldParWndProc;
        !           261:         u32 OldDispWndProc;
        !           262:         u32 DispHwnd;
        !           263:         u32 WinGBufHandle;
        !           264:       } SmackBuf;
        !           265: 
        !           266:       void RADEXPLINK SmackGet(Smack PTR4* smk,void PTR4* dest);
        !           267:       void RADEXPLINK SmackBufferGet( SmackBuf PTR4* sbuf, void PTR4* dest);
        !           268:       
        !           269:       u8 RADEXPLINK SmackSoundUseMSS(void PTR4* dd);
        !           270:       u8 RADEXPLINK SmackSoundUseDirectSound(HWND hw);
        !           271: 
        !           272:       #define SmackTimerSetup()
        !           273:       #define SmackTimerDone()
        !           274:       #define SmackTimerRead timeGetTime
        !           275: 
        !           276:     #endif
        !           277: 
        !           278:   #endif
        !           279: 
        !           280:   #ifdef __RADMAC__
        !           281:     SmackBuf PTR4* RADEXPLINK SmackBufferOpen( WindowPtr wp, u16 BlitType, u16 width, u16 height, u16 ZoomW, u16 ZoomH );
        !           282:     u16  RADEXPLINK SmackBufferBlit( SmackBuf PTR4* sbuf, u16 hwndx, u16 hwndy, u16 subx, u16 suby, u16 subw, u16 subh );
        !           283:     void RADEXPLINK SmackBufferFromScreen( SmackBuf PTR4* destbuf, u16 x, u16 y);
        !           284:   #else
        !           285:     SmackBuf PTR4* RADEXPLINK SmackBufferOpen( HWND wnd, u16 BlitType, u16 width, u16 height, u16 ZoomW, u16 ZoomH );
        !           286:     u16  RADEXPLINK SmackBufferBlit( SmackBuf PTR4* sbuf, HDC dc, u16 hwndx, u16 hwndy, u16 subx, u16 suby, u16 subw, u16 subh );
        !           287:     void RADEXPLINK SmackBufferFromScreen( SmackBuf PTR4* destbuf, HWND hw, u16 x, u16 y);
        !           288:   #endif
        !           289: 
        !           290:   char PTR4* RADEXPLINK SmackBufferString(char PTR4* dest,u16 BlitType);
        !           291: 
        !           292:   void RADEXPLINK SmackBufferNewPalette( SmackBuf PTR4* sbuf, void PTR4* pal, u16 paltype );
        !           293:   u16  RADEXPLINK SmackBufferSetPalette( SmackBuf PTR4* sbuf );
        !           294:   void RADEXPLINK SmackBufferClose( SmackBuf PTR4* sbuf );
        !           295:  
        !           296:   void RADEXPLINK SmackBufferClear( SmackBuf PTR4* destbuf, u16 color);
        !           297:   void RADEXPLINK SmackBufferToBuffer( SmackBuf PTR4* destbuf, u16 destx, u16 desty, SmackBuf PTR4* sourcebuf,u16 sourcex,u16 sourcey,u16 sourcew,u16 sourceh);
        !           298:   void RADEXPLINK SmackBufferToBufferTrans( SmackBuf PTR4* destbuf, u16 destx, u16 desty, SmackBuf PTR4* sourcebuf,u16 sourcex,u16 sourcey,u16 sourcew,u16 sourceh,u16 TransColor);
        !           299:   void RADEXPLINK SmackBufferCopyPalette( SmackBuf PTR4* destbuf, SmackBuf PTR4* sourcebuf, u16 remap);
        !           300: 
        !           301:   u16  RADEXPLINK SmackBufferFocused( SmackBuf PTR4* sbuf);
        !           302: 
        !           303: #endif
        !           304: 
        !           305: RCEND
        !           306: 
        !           307: #endif

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.