Skip to content

Commit 977a6dc

Browse files
committed
Use Windows constants and switch statement in screenshot code
1 parent efc773f commit 977a6dc

File tree

16 files changed

+70
-62
lines changed

16 files changed

+70
-62
lines changed

Generals/Code/GameEngine/Include/Common/MessageStream.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -257,8 +257,8 @@ class GameMessage : public MemoryPoolObject
257257
MSG_META_BEGIN_PREFER_SELECTION, ///< The Shift key has been depressed alone
258258
MSG_META_END_PREFER_SELECTION, ///< The Shift key has been released.
259259

260-
MSG_META_TAKE_SCREENSHOT, ///< take screenshot (JPEG)
261-
MSG_META_TAKE_SCREENSHOT_PNG, ///< take PNG screenshot
260+
MSG_META_TAKE_SCREENSHOT, ///< take JPEG screenshot (F12)
261+
MSG_META_TAKE_SCREENSHOT_JPEG, ///< take PNG screenshot (CTRL+F12, lossless)
262262
MSG_META_ALL_CHEER, ///< Yay! :)
263263
MSG_META_TOGGLE_ATTACKMOVE, ///< enter attack-move mode
264264

Generals/Code/GameEngine/Include/GameClient/Display.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
#include "View.h"
3333
#include "GameClient/Color.h"
3434
#include "GameClient/GameFont.h"
35+
#include "W3DDevice/GameClient/W3DScreenshot.h"
3536

3637
class View;
3738

@@ -168,8 +169,7 @@ class Display : public SubsystemInterface
168169
virtual void preloadModelAssets( AsciiString model ) = 0; ///< preload model asset
169170
virtual void preloadTextureAssets( AsciiString texture ) = 0; ///< preload texture asset
170171

171-
virtual void takeScreenShotCompressed(void) = 0; ///< saves JPEG screenshot
172-
virtual void takeScreenShotPNG(void) = 0; ///< saves PNG screenshot
172+
virtual void takeScreenShot(ScreenshotFormat format) = 0; ///< saves screenshot in specified format
173173
virtual void toggleMovieCapture(void) = 0; ///< starts saving frames to an avi or frame sequence
174174
virtual void toggleLetterBox(void) = 0; ///< enabled letter-boxed display
175175
virtual void enableLetterBox(Bool enable) = 0; ///< forces letter-boxed display on/off

Generals/Code/GameEngine/Source/Common/MessageStream.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ const char *GameMessage::getCommandTypeAsString(GameMessage::Type t)
364364
CASE_LABEL(MSG_META_BEGIN_PREFER_SELECTION)
365365
CASE_LABEL(MSG_META_END_PREFER_SELECTION)
366366
CASE_LABEL(MSG_META_TAKE_SCREENSHOT)
367-
CASE_LABEL(MSG_META_TAKE_SCREENSHOT_PNG)
367+
CASE_LABEL(MSG_META_TAKE_SCREENSHOT_JPEG)
368368
CASE_LABEL(MSG_META_ALL_CHEER)
369369
CASE_LABEL(MSG_META_TOGGLE_ATTACKMOVE)
370370
CASE_LABEL(MSG_META_BEGIN_CAMERA_ROTATE_LEFT)

Generals/Code/GameEngine/Source/GameClient/MessageStream/CommandXlat.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3410,14 +3410,14 @@ GameMessageDisposition CommandTranslator::translateGameMessage(const GameMessage
34103410
case GameMessage::MSG_META_TAKE_SCREENSHOT:
34113411
{
34123412
if (TheDisplay)
3413-
TheDisplay->takeScreenShotCompressed();
3413+
TheDisplay->takeScreenShot(SCREENSHOT_JPEG);
34143414
break;
34153415
}
34163416

3417-
case GameMessage::MSG_META_TAKE_SCREENSHOT_PNG:
3417+
case GameMessage::MSG_META_TAKE_SCREENSHOT_JPEG:
34183418
{
34193419
if (TheDisplay)
3420-
TheDisplay->takeScreenShotPNG();
3420+
TheDisplay->takeScreenShot(SCREENSHOT_PNG);
34213421
disp = DESTROY_MESSAGE;
34223422
break;
34233423
}

Generals/Code/GameEngine/Source/GameClient/MessageStream/MetaEvent.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,7 +163,7 @@ static const LookupListRec GameMessageMetaTypeNames[] =
163163
{ "END_PREFER_SELECTION", GameMessage::MSG_META_END_PREFER_SELECTION },
164164

165165
{ "TAKE_SCREENSHOT", GameMessage::MSG_META_TAKE_SCREENSHOT },
166-
{ "TAKE_SCREENSHOT_PNG", GameMessage::MSG_META_TAKE_SCREENSHOT_PNG },
166+
{ "TAKE_SCREENSHOT_JPEG", GameMessage::MSG_META_TAKE_SCREENSHOT_JPEG },
167167
{ "ALL_CHEER", GameMessage::MSG_META_ALL_CHEER },
168168

169169
{ "BEGIN_CAMERA_ROTATE_LEFT", GameMessage::MSG_META_BEGIN_CAMERA_ROTATE_LEFT },
@@ -795,7 +795,17 @@ MetaMapRec *MetaMap::getMetaMapRec(GameMessage::Type t)
795795
}
796796
}
797797
{
798-
MetaMapRec *map = TheMetaMap->getMetaMapRec(GameMessage::MSG_META_TAKE_SCREENSHOT_PNG);
798+
MetaMapRec *map = TheMetaMap->getMetaMapRec(GameMessage::MSG_META_TAKE_SCREENSHOT);
799+
if (map->m_key == MK_NONE)
800+
{
801+
map->m_key = MK_F12;
802+
map->m_transition = DOWN;
803+
map->m_modState = NONE;
804+
map->m_usableIn = COMMANDUSABLE_EVERYWHERE;
805+
}
806+
}
807+
{
808+
MetaMapRec *map = TheMetaMap->getMetaMapRec(GameMessage::MSG_META_TAKE_SCREENSHOT_JPEG);
799809
if (map->m_key == MK_NONE)
800810
{
801811
map->m_key = MK_F12;

Generals/Code/GameEngineDevice/Include/W3DDevice/GameClient/W3DDisplay.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,8 +120,7 @@ class W3DDisplay : public Display
120120

121121
virtual VideoBuffer* createVideoBuffer( void ) ; ///< Create a video buffer that can be used for this display
122122

123-
virtual void takeScreenShotCompressed(void); //save JPEG screenshot
124-
virtual void takeScreenShotPNG(void); //save PNG screenshot
123+
virtual void takeScreenShot(ScreenshotFormat format); //save screenshot in specified format
125124
virtual void toggleMovieCapture(void); //enable AVI or frame capture mode.
126125

127126
virtual void toggleLetterBox(void); ///<enabled letter-boxed display

Generals/Code/GameEngineDevice/Source/W3DDevice/GameClient/W3DScreenshot.cpp

Lines changed: 13 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ struct ScreenshotThreadData
55
unsigned char* imageData;
66
unsigned int width;
77
unsigned int height;
8-
char pathname[1024];
9-
char leafname[256];
8+
char pathname[_MAX_PATH];
9+
char leafname[_MAX_FNAME];
1010
int quality;
1111
ScreenshotFormat format;
1212
};
@@ -16,13 +16,14 @@ static DWORD WINAPI screenshotThreadFunc(LPVOID param)
1616
ScreenshotThreadData* data = (ScreenshotThreadData*)param;
1717

1818
int result = 0;
19-
if (data->format == SCREENSHOT_JPEG)
19+
switch (data->format)
2020
{
21-
result = stbi_write_jpg(data->pathname, data->width, data->height, 3, data->imageData, data->quality);
22-
}
23-
else if (data->format == SCREENSHOT_PNG)
24-
{
25-
result = stbi_write_png(data->pathname, data->width, data->height, 3, data->imageData, data->width * 3);
21+
case SCREENSHOT_JPEG:
22+
result = stbi_write_jpg(data->pathname, data->width, data->height, 3, data->imageData, data->quality);
23+
break;
24+
case SCREENSHOT_PNG:
25+
result = stbi_write_png(data->pathname, data->width, data->height, 3, data->imageData, data->width * 3);
26+
break;
2627
}
2728

2829
if (!result) {
@@ -37,8 +38,8 @@ static DWORD WINAPI screenshotThreadFunc(LPVOID param)
3738

3839
void W3D_TakeCompressedScreenshot(ScreenshotFormat format, int quality)
3940
{
40-
char leafname[256];
41-
char pathname[1024];
41+
char leafname[_MAX_FNAME];
42+
char pathname[_MAX_PATH];
4243
static int jpegFrameNumber = 1;
4344
static int pngFrameNumber = 1;
4445

@@ -123,12 +124,7 @@ void W3D_TakeCompressedScreenshot(ScreenshotFormat format, int quality)
123124
TheInGameUI->message(TheGameText->fetch("GUI:ScreenCapture"), ufileName.str());
124125
}
125126

126-
void W3DDisplay::takeScreenShotCompressed(void)
127-
{
128-
W3D_TakeCompressedScreenshot(SCREENSHOT_JPEG);
129-
}
130-
131-
void W3DDisplay::takeScreenShotPNG(void)
127+
void W3DDisplay::takeScreenShot(ScreenshotFormat format)
132128
{
133-
W3D_TakeCompressedScreenshot(SCREENSHOT_PNG);
129+
W3D_TakeCompressedScreenshot(format);
134130
}

Generals/Code/Tools/GUIEdit/Include/GUIEditDisplay.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -101,8 +101,7 @@ class GUIEditDisplay : public Display
101101
virtual void drawScaledVideoBuffer( VideoBuffer *buffer, VideoStreamInterface *stream ) { }
102102
virtual void drawVideoBuffer( VideoBuffer *buffer, Int startX, Int startY,
103103
Int endX, Int endY ) { }
104-
virtual void takeScreenShotCompressed(void){ }
105-
virtual void takeScreenShotPNG(void){ }
104+
virtual void takeScreenShot(ScreenshotFormat){ }
106105
virtual void toggleMovieCapture(void) {}
107106

108107
// methods that we need to stub

GeneralsMD/Code/GameEngine/Include/Common/MessageStream.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -257,8 +257,8 @@ class GameMessage : public MemoryPoolObject
257257
MSG_META_BEGIN_PREFER_SELECTION, ///< The Shift key has been depressed alone
258258
MSG_META_END_PREFER_SELECTION, ///< The Shift key has been released.
259259

260-
MSG_META_TAKE_SCREENSHOT, ///< take screenshot (JPEG)
261-
MSG_META_TAKE_SCREENSHOT_PNG, ///< take PNG screenshot
260+
MSG_META_TAKE_SCREENSHOT, ///< take JPEG screenshot (F12)
261+
MSG_META_TAKE_SCREENSHOT_JPEG, ///< take PNG screenshot (CTRL+F12, lossless)
262262
MSG_META_ALL_CHEER, ///< Yay! :)
263263
MSG_META_TOGGLE_ATTACKMOVE, ///< enter attack-move mode
264264

GeneralsMD/Code/GameEngine/Include/GameClient/Display.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
#include "View.h"
3333
#include "GameClient/Color.h"
3434
#include "GameClient/GameFont.h"
35+
#include "W3DDevice/GameClient/W3DScreenshot.h"
3536

3637
class View;
3738

@@ -168,8 +169,7 @@ class Display : public SubsystemInterface
168169
virtual void preloadModelAssets( AsciiString model ) = 0; ///< preload model asset
169170
virtual void preloadTextureAssets( AsciiString texture ) = 0; ///< preload texture asset
170171

171-
virtual void takeScreenShotCompressed(void) = 0; ///< saves JPEG screenshot
172-
virtual void takeScreenShotPNG(void) = 0; ///< saves PNG screenshot
172+
virtual void takeScreenShot(ScreenshotFormat format) = 0; ///< saves screenshot in specified format
173173
virtual void toggleMovieCapture(void) = 0; ///< starts saving frames to an avi or frame sequence
174174
virtual void toggleLetterBox(void) = 0; ///< enabled letter-boxed display
175175
virtual void enableLetterBox(Bool enable) = 0; ///< forces letter-boxed display on/off

0 commit comments

Comments
 (0)