mirror of
https://github.com/OpenTTD/OpenTTD.git
synced 2025-03-07 06:39:08 +00:00
(svn r20508) -Add [FS#3973]: A new screenshot type that makes a zoomed-in screenshot of the visible viewport. (Eddi)
This commit is contained in:
parent
0796ba3d26
commit
71ff3c4bb4
@ -1226,9 +1226,10 @@ DEF_CONSOLE_CMD(ConAlias)
|
|||||||
DEF_CONSOLE_CMD(ConScreenShot)
|
DEF_CONSOLE_CMD(ConScreenShot)
|
||||||
{
|
{
|
||||||
if (argc == 0) {
|
if (argc == 0) {
|
||||||
IConsoleHelp("Create a screenshot of the game. Usage: 'screenshot [big | no_con] [file name]'");
|
IConsoleHelp("Create a screenshot of the game. Usage: 'screenshot [big | giant | no_con] [file name]'");
|
||||||
IConsoleHelp("'big' makes a screenshot of the whole map, 'no_con' hides the console to create "
|
IConsoleHelp("'big' makes a zoomed-in screenshot of the visible area, 'giant' makes a screenshot of the "
|
||||||
"the screenshot. Screenshots of whole map are always drawn without console");
|
"whole map, 'no_con' hides the console to create the screenshot. 'big' or 'giant' "
|
||||||
|
"screenshots are always drawn without console");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1240,6 +1241,10 @@ DEF_CONSOLE_CMD(ConScreenShot)
|
|||||||
if (argc > 1) {
|
if (argc > 1) {
|
||||||
if (strcmp(argv[1], "big") == 0) {
|
if (strcmp(argv[1], "big") == 0) {
|
||||||
/* screenshot big [filename] */
|
/* screenshot big [filename] */
|
||||||
|
type = SC_ZOOMEDIN;
|
||||||
|
if (argc > 2) name = argv[2];
|
||||||
|
} else if (strcmp(argv[1], "giant") == 0) {
|
||||||
|
/* screenshot giant [filename] */
|
||||||
type = SC_WORLD;
|
type = SC_WORLD;
|
||||||
if (argc > 2) name = argv[2];
|
if (argc > 2) name = argv[2];
|
||||||
} else if (strcmp(argv[1], "no_con") == 0) {
|
} else if (strcmp(argv[1], "no_con") == 0) {
|
||||||
|
@ -442,6 +442,7 @@ STR_ABOUT_MENU_SEPARATOR :
|
|||||||
STR_ABOUT_MENU_TOGGLE_CONSOLE :Toggle console
|
STR_ABOUT_MENU_TOGGLE_CONSOLE :Toggle console
|
||||||
STR_ABOUT_MENU_AI_DEBUG :AI debug
|
STR_ABOUT_MENU_AI_DEBUG :AI debug
|
||||||
STR_ABOUT_MENU_SCREENSHOT :Screenshot
|
STR_ABOUT_MENU_SCREENSHOT :Screenshot
|
||||||
|
STR_ABOUT_MENU_ZOOMIN_SCREENSHOT :Zoomed in screenshot
|
||||||
STR_ABOUT_MENU_GIANT_SCREENSHOT :Whole map screenshot
|
STR_ABOUT_MENU_GIANT_SCREENSHOT :Whole map screenshot
|
||||||
STR_ABOUT_MENU_ABOUT_OPENTTD :About 'OpenTTD'
|
STR_ABOUT_MENU_ABOUT_OPENTTD :About 'OpenTTD'
|
||||||
STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite aligner
|
STR_ABOUT_MENU_SPRITE_ALIGNER :Sprite aligner
|
||||||
|
@ -23,6 +23,8 @@
|
|||||||
#include "company_func.h"
|
#include "company_func.h"
|
||||||
#include "strings_func.h"
|
#include "strings_func.h"
|
||||||
#include "gui.h"
|
#include "gui.h"
|
||||||
|
#include "window_gui.h"
|
||||||
|
#include "window_func.h"
|
||||||
|
|
||||||
#include "table/strings.h"
|
#include "table/strings.h"
|
||||||
|
|
||||||
@ -602,12 +604,34 @@ static const char *MakeScreenshotName(const char *ext)
|
|||||||
return _full_screenshot_name;
|
return _full_screenshot_name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Make a screenshot of the current screen. */
|
||||||
static bool MakeSmallScreenshot()
|
static bool MakeSmallScreenshot()
|
||||||
{
|
{
|
||||||
const ScreenshotFormat *sf = _screenshot_formats + _cur_screenshot_format;
|
const ScreenshotFormat *sf = _screenshot_formats + _cur_screenshot_format;
|
||||||
return sf->proc(MakeScreenshotName(sf->extension), CurrentScreenCallback, NULL, _screen.width, _screen.height, BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(), _cur_palette);
|
return sf->proc(MakeScreenshotName(sf->extension), CurrentScreenCallback, NULL, _screen.width, _screen.height, BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(), _cur_palette);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Make a zoomed-in screenshot of the currently visible area. */
|
||||||
|
static bool MakeZoomedInScreenshot()
|
||||||
|
{
|
||||||
|
Window *w = FindWindowById(WC_MAIN_WINDOW, 0);
|
||||||
|
ViewPort vp;
|
||||||
|
|
||||||
|
vp.zoom = ZOOM_LVL_WORLD_SCREENSHOT;
|
||||||
|
vp.left = w->viewport->left;
|
||||||
|
vp.top = w->viewport->top;
|
||||||
|
vp.virtual_left = w->viewport->virtual_left;
|
||||||
|
vp.virtual_top = w->viewport->virtual_top;
|
||||||
|
vp.virtual_width = w->viewport->virtual_width;
|
||||||
|
vp.width = vp.virtual_width;
|
||||||
|
vp.virtual_height = w->viewport->virtual_height;
|
||||||
|
vp.height = vp.virtual_height;
|
||||||
|
|
||||||
|
const ScreenshotFormat *sf = _screenshot_formats + _cur_screenshot_format;
|
||||||
|
return sf->proc(MakeScreenshotName(sf->extension), LargeWorldCallback, &vp, vp.width, vp.height, BlitterFactoryBase::GetCurrentBlitter()->GetScreenDepth(), _cur_palette);
|
||||||
|
}
|
||||||
|
|
||||||
|
/** Make a screenshot of the whole map. */
|
||||||
static bool MakeWorldScreenshot()
|
static bool MakeWorldScreenshot()
|
||||||
{
|
{
|
||||||
ViewPort vp;
|
ViewPort vp;
|
||||||
@ -654,6 +678,10 @@ bool MakeScreenshot(ScreenshotType t, const char *name)
|
|||||||
ret = MakeSmallScreenshot();
|
ret = MakeSmallScreenshot();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case SC_ZOOMEDIN:
|
||||||
|
ret = MakeZoomedInScreenshot();
|
||||||
|
break;
|
||||||
|
|
||||||
case SC_WORLD:
|
case SC_WORLD:
|
||||||
ret = MakeWorldScreenshot();
|
ret = MakeWorldScreenshot();
|
||||||
break;
|
break;
|
||||||
|
@ -21,6 +21,7 @@ void SetScreenshotFormat(uint i);
|
|||||||
enum ScreenshotType {
|
enum ScreenshotType {
|
||||||
SC_VIEWPORT, ///< Screenshot of viewport
|
SC_VIEWPORT, ///< Screenshot of viewport
|
||||||
SC_RAW, ///< Raw screenshot from blitter buffer
|
SC_RAW, ///< Raw screenshot from blitter buffer
|
||||||
|
SC_ZOOMEDIN, ///< Zoomed in screenshot of the visible area
|
||||||
SC_WORLD, ///< World screenshot
|
SC_WORLD, ///< World screenshot
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -758,7 +758,7 @@ static void MenuClickNewspaper(int index)
|
|||||||
|
|
||||||
static void ToolbarHelpClick(Window *w)
|
static void ToolbarHelpClick(Window *w)
|
||||||
{
|
{
|
||||||
PopupMainToolbMenu(w, TBN_HELP, STR_ABOUT_MENU_LAND_BLOCK_INFO, _settings_client.gui.newgrf_developer_tools ? 8 : 7);
|
PopupMainToolbMenu(w, TBN_HELP, STR_ABOUT_MENU_LAND_BLOCK_INFO, _settings_client.gui.newgrf_developer_tools ? 9 : 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void MenuClickSmallScreenshot()
|
static void MenuClickSmallScreenshot()
|
||||||
@ -766,6 +766,11 @@ static void MenuClickSmallScreenshot()
|
|||||||
MakeScreenshot(SC_VIEWPORT, NULL);
|
MakeScreenshot(SC_VIEWPORT, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void MenuClickZoomedInScreenshot()
|
||||||
|
{
|
||||||
|
MakeScreenshot(SC_ZOOMEDIN, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
static void MenuClickWorldScreenshot()
|
static void MenuClickWorldScreenshot()
|
||||||
{
|
{
|
||||||
MakeScreenshot(SC_WORLD, NULL);
|
MakeScreenshot(SC_WORLD, NULL);
|
||||||
@ -774,13 +779,14 @@ static void MenuClickWorldScreenshot()
|
|||||||
static void MenuClickHelp(int index)
|
static void MenuClickHelp(int index)
|
||||||
{
|
{
|
||||||
switch (index) {
|
switch (index) {
|
||||||
case 0: PlaceLandBlockInfo(); break;
|
case 0: PlaceLandBlockInfo(); break;
|
||||||
case 2: IConsoleSwitch(); break;
|
case 2: IConsoleSwitch(); break;
|
||||||
case 3: ShowAIDebugWindow(); break;
|
case 3: ShowAIDebugWindow(); break;
|
||||||
case 4: MenuClickSmallScreenshot(); break;
|
case 4: MenuClickSmallScreenshot(); break;
|
||||||
case 5: MenuClickWorldScreenshot(); break;
|
case 5: MenuClickZoomedInScreenshot(); break;
|
||||||
case 6: ShowAboutWindow(); break;
|
case 6: MenuClickWorldScreenshot(); break;
|
||||||
case 7: ShowSpriteAlignerWindow(); break;
|
case 7: ShowAboutWindow(); break;
|
||||||
|
case 8: ShowSpriteAlignerWindow(); break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1252,6 +1258,7 @@ enum MainToolbarHotkeys {
|
|||||||
MTHK_BUILD_TREES,
|
MTHK_BUILD_TREES,
|
||||||
MTHK_MUSIC,
|
MTHK_MUSIC,
|
||||||
MTHK_SMALL_SCREENSHOT,
|
MTHK_SMALL_SCREENSHOT,
|
||||||
|
MTHK_ZOOMEDIN_SCREENSHOT,
|
||||||
MTHK_GIANT_SCREENSHOT,
|
MTHK_GIANT_SCREENSHOT,
|
||||||
MTHK_CHEATS,
|
MTHK_CHEATS,
|
||||||
MTHK_TERRAFORM,
|
MTHK_TERRAFORM,
|
||||||
@ -1327,6 +1334,7 @@ struct MainToolbarWindow : Window {
|
|||||||
case MTHK_BUILD_TREES: ShowBuildTreesToolbar(); break;
|
case MTHK_BUILD_TREES: ShowBuildTreesToolbar(); break;
|
||||||
case MTHK_MUSIC: ShowMusicWindow(); break;
|
case MTHK_MUSIC: ShowMusicWindow(); break;
|
||||||
case MTHK_SMALL_SCREENSHOT: MenuClickSmallScreenshot(); break;
|
case MTHK_SMALL_SCREENSHOT: MenuClickSmallScreenshot(); break;
|
||||||
|
case MTHK_ZOOMEDIN_SCREENSHOT: MenuClickZoomedInScreenshot(); break;
|
||||||
case MTHK_GIANT_SCREENSHOT: MenuClickWorldScreenshot(); break;
|
case MTHK_GIANT_SCREENSHOT: MenuClickWorldScreenshot(); break;
|
||||||
case MTHK_CHEATS: if (!_networking) ShowCheatWindow(); break;
|
case MTHK_CHEATS: if (!_networking) ShowCheatWindow(); break;
|
||||||
case MTHK_TERRAFORM: ShowTerraformToolbar(); break;
|
case MTHK_TERRAFORM: ShowTerraformToolbar(); break;
|
||||||
@ -1411,6 +1419,7 @@ Hotkey<MainToolbarWindow> MainToolbarWindow::maintoolbar_hotkeys[] = {
|
|||||||
Hotkey<MainToolbarWindow>(WKC_SHIFT | WKC_F11, "build_trees", MTHK_BUILD_TREES),
|
Hotkey<MainToolbarWindow>(WKC_SHIFT | WKC_F11, "build_trees", MTHK_BUILD_TREES),
|
||||||
Hotkey<MainToolbarWindow>(WKC_SHIFT | WKC_F12, "music", MTHK_MUSIC),
|
Hotkey<MainToolbarWindow>(WKC_SHIFT | WKC_F12, "music", MTHK_MUSIC),
|
||||||
Hotkey<MainToolbarWindow>(WKC_CTRL | 'S', "small_screenshot", MTHK_SMALL_SCREENSHOT),
|
Hotkey<MainToolbarWindow>(WKC_CTRL | 'S', "small_screenshot", MTHK_SMALL_SCREENSHOT),
|
||||||
|
Hotkey<MainToolbarWindow>(WKC_CTRL | 'P', "zoomedin_screenshot", MTHK_ZOOMEDIN_SCREENSHOT),
|
||||||
Hotkey<MainToolbarWindow>((uint16)0, "giant_screenshot", MTHK_GIANT_SCREENSHOT),
|
Hotkey<MainToolbarWindow>((uint16)0, "giant_screenshot", MTHK_GIANT_SCREENSHOT),
|
||||||
Hotkey<MainToolbarWindow>(WKC_CTRL | WKC_ALT | 'C', "cheats", MTHK_CHEATS),
|
Hotkey<MainToolbarWindow>(WKC_CTRL | WKC_ALT | 'C', "cheats", MTHK_CHEATS),
|
||||||
Hotkey<MainToolbarWindow>('L', "terraform", MTHK_TERRAFORM),
|
Hotkey<MainToolbarWindow>('L', "terraform", MTHK_TERRAFORM),
|
||||||
@ -1529,6 +1538,7 @@ enum MainToolbarEditorHotkeys {
|
|||||||
MTEHK_MUSIC,
|
MTEHK_MUSIC,
|
||||||
MTEHK_LANDINFO,
|
MTEHK_LANDINFO,
|
||||||
MTEHK_SMALL_SCREENSHOT,
|
MTEHK_SMALL_SCREENSHOT,
|
||||||
|
MTEHK_ZOOMEDIN_SCREENSHOT,
|
||||||
MTEHK_GIANT_SCREENSHOT,
|
MTEHK_GIANT_SCREENSHOT,
|
||||||
MTEHK_ZOOM_IN,
|
MTEHK_ZOOM_IN,
|
||||||
MTEHK_ZOOM_OUT,
|
MTEHK_ZOOM_OUT,
|
||||||
@ -1624,6 +1634,7 @@ public:
|
|||||||
case MTEHK_MUSIC: ShowMusicWindow(); break;
|
case MTEHK_MUSIC: ShowMusicWindow(); break;
|
||||||
case MTEHK_LANDINFO: PlaceLandBlockInfo(); break;
|
case MTEHK_LANDINFO: PlaceLandBlockInfo(); break;
|
||||||
case MTEHK_SMALL_SCREENSHOT: MenuClickSmallScreenshot(); break;
|
case MTEHK_SMALL_SCREENSHOT: MenuClickSmallScreenshot(); break;
|
||||||
|
case MTEHK_ZOOMEDIN_SCREENSHOT: MenuClickZoomedInScreenshot(); break;
|
||||||
case MTEHK_GIANT_SCREENSHOT: MenuClickWorldScreenshot(); break;
|
case MTEHK_GIANT_SCREENSHOT: MenuClickWorldScreenshot(); break;
|
||||||
case MTEHK_ZOOM_IN: ToolbarZoomInClick(this); break;
|
case MTEHK_ZOOM_IN: ToolbarZoomInClick(this); break;
|
||||||
case MTEHK_ZOOM_OUT: ToolbarZoomOutClick(this); break;
|
case MTEHK_ZOOM_OUT: ToolbarZoomOutClick(this); break;
|
||||||
@ -1700,6 +1711,7 @@ Hotkey<ScenarioEditorToolbarWindow> ScenarioEditorToolbarWindow::scenedit_mainto
|
|||||||
Hotkey<ScenarioEditorToolbarWindow>(WKC_F11, "industry_list", MTEHK_MUSIC),
|
Hotkey<ScenarioEditorToolbarWindow>(WKC_F11, "industry_list", MTEHK_MUSIC),
|
||||||
Hotkey<ScenarioEditorToolbarWindow>(WKC_F12, "train_list", MTEHK_LANDINFO),
|
Hotkey<ScenarioEditorToolbarWindow>(WKC_F12, "train_list", MTEHK_LANDINFO),
|
||||||
Hotkey<ScenarioEditorToolbarWindow>(WKC_CTRL | 'S', "small_screenshot", MTEHK_SMALL_SCREENSHOT),
|
Hotkey<ScenarioEditorToolbarWindow>(WKC_CTRL | 'S', "small_screenshot", MTEHK_SMALL_SCREENSHOT),
|
||||||
|
Hotkey<ScenarioEditorToolbarWindow>(WKC_CTRL | 'P', "zoomedin_screenshot", MTEHK_ZOOMEDIN_SCREENSHOT),
|
||||||
Hotkey<ScenarioEditorToolbarWindow>((uint16)0, "giant_screenshot", MTEHK_GIANT_SCREENSHOT),
|
Hotkey<ScenarioEditorToolbarWindow>((uint16)0, "giant_screenshot", MTEHK_GIANT_SCREENSHOT),
|
||||||
Hotkey<ScenarioEditorToolbarWindow>(_maintoolbar_zoomin_keys, "zoomin", MTEHK_ZOOM_IN),
|
Hotkey<ScenarioEditorToolbarWindow>(_maintoolbar_zoomin_keys, "zoomin", MTEHK_ZOOM_IN),
|
||||||
Hotkey<ScenarioEditorToolbarWindow>(_maintoolbar_zoomout_keys, "zoomout", MTEHK_ZOOM_OUT),
|
Hotkey<ScenarioEditorToolbarWindow>(_maintoolbar_zoomout_keys, "zoomout", MTEHK_ZOOM_OUT),
|
||||||
|
Loading…
Reference in New Issue
Block a user