Annotation of src/smack.h, revision 1.1.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.