Annotation of hatari/src/screenSnapShot.c, revision 1.1

1.1     ! root        1: /*
        !             2:   Hatari
        !             3: 
        !             4:   Screen Snapshot
        !             5: */
        !             6: 
        !             7: #include "main.h"
        !             8: #include "misc.h"
        !             9: #include "pcx.h"
        !            10: #include "screen.h"
        !            11: #include "screenSnapShot.h"
        !            12: #include "statusBar.h"
        !            13: #include "video.h"
        !            14: #include "vdi.h"
        !            15: 
        !            16: //#define ALLOW_SCREEN_GRABS  /* FIXME */
        !            17: 
        !            18: int nScreenShots=0;                  // Number of screen shots saved
        !            19: BOOL bRecordingAnimation=FALSE;      // Recording animation?
        !            20: BOOL bGrabWhenChange;
        !            21: int GrabFrameCounter,GrabFrameLatch;
        !            22: 
        !            23: //-----------------------------------------------------------------------
        !            24: /*
        !            25:   Check if we have pressed PrintScreen
        !            26: */
        !            27: void ScreenSnapShot_CheckPrintKey(void)
        !            28: {
        !            29: #ifdef ALLOW_SCREEN_GRABS
        !            30:   // Did press Print Screen key?
        !            31:   if (GetAsyncKeyState(VK_SNAPSHOT)&0x0001) {  // Print Key pressed(not held)
        !            32:     // Save our screen
        !            33:     ScreenSnapShot_SaveScreen();
        !            34:   }
        !            35: #endif  //ALLOW_SCREEN_GRABS
        !            36: }
        !            37: 
        !            38: //-----------------------------------------------------------------------
        !            39: /*
        !            40:   Save screen shot out .PCX file with filename 'grab0000.pcx','grab0001.pcx'....
        !            41: */
        !            42: void ScreenSnapShot_SaveScreen(void)
        !            43: {
        !            44:   char szFileName[MAX_FILENAME_LENGTH];
        !            45: 
        !            46:   // Only do when NOT in full screen and NOT VDI resolution
        !            47:   if (!bInFullScreen && !bUseVDIRes) {
        !            48:     // Create our filename
        !            49:     sprintf(szFileName,"%s/grab%4.4d.pcx",szWorkingDir,nScreenShots);
        !            50:     nScreenShots++;
        !            51:     // And save as 1/24-bit PCX
        !            52:     if (bUseHighRes)
        !            53:       PCX_SaveScreenShot_Mono(szFileName);
        !            54:     else
        !            55:       PCX_SaveScreenShot(szFileName);
        !            56:   }
        !            57: }
        !            58: 
        !            59: //-----------------------------------------------------------------------
        !            60: /*
        !            61:   Are we recording an animation?
        !            62: */
        !            63: BOOL ScreenSnapShot_AreWeRecording(void)
        !            64: {
        !            65:   return(bRecordingAnimation);
        !            66: }
        !            67: 
        !            68: /*-----------------------------------------------------------------------*/
        !            69: /*
        !            70:   Start recording animation
        !            71: */
        !            72: void ScreenSnapShot_BeginRecording(BOOL bCaptureChange, int nFramesPerSecond)
        !            73: {
        !            74:   /* Set in globals */
        !            75:   bGrabWhenChange = bCaptureChange;
        !            76:   /* Set animation timer rate */
        !            77:   GrabFrameCounter = 0;
        !            78:   GrabFrameLatch = (int)(50.0f/(float)nFramesPerSecond);
        !            79:   /* Start animation */
        !            80:   bRecordingAnimation = TRUE;
        !            81:   /* Set status bar */
        !            82:   StatusBar_SetIcon(STATUS_ICON_SCREEN,ICONSTATE_ON);
        !            83:   /* And inform user */
        !            84:   Main_Message("Screen-Shot recording started.",PROG_NAME /*,MB_OK|MB_ICONINFORMATION*/);
        !            85: }
        !            86: 
        !            87: /*-----------------------------------------------------------------------*/
        !            88: /*
        !            89:   Stop recording animation
        !            90: */
        !            91: void ScreenSnapShot_EndRecording()
        !            92: {
        !            93:   /* Were we recording? */
        !            94:   if (bRecordingAnimation) {
        !            95:     /* Stop animation */
        !            96:     bRecordingAnimation = FALSE;
        !            97:     /* Turn off icon */
        !            98:     StatusBar_SetIcon(STATUS_ICON_SCREEN,ICONSTATE_OFF);
        !            99:     /* And inform user */
        !           100:     Main_Message("Screen-Shot recording stopped.",PROG_NAME /*,MB_OK|MB_ICONINFORMATION*/);
        !           101:   }
        !           102: }
        !           103: 
        !           104: //-----------------------------------------------------------------------
        !           105: /*
        !           106:   Recording animation frame
        !           107: */
        !           108: void ScreenSnapShot_RecordFrame(BOOL bFrameChanged)
        !           109: {
        !           110:   // As we recording? And running in a Window
        !           111:   if (bRecordingAnimation && !bInFullScreen) {
        !           112:     // Yes, but on a change basis or a timer?
        !           113:     if (bGrabWhenChange) {
        !           114:       // On change, so did change this frame?
        !           115:       if (bFrameChanged)
        !           116:         ScreenSnapShot_SaveScreen();
        !           117:     }
        !           118:     else {
        !           119:       // On timer, check for latch and save
        !           120:       GrabFrameCounter++;
        !           121:       if (GrabFrameCounter>=GrabFrameLatch) {
        !           122:         ScreenSnapShot_SaveScreen();
        !           123:         GrabFrameCounter = 0;
        !           124:       }
        !           125:     }
        !           126:   }
        !           127: }

unix.superglobalmegacorp.com

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