ManaPlus
src
resources
sdlscreenshothelper.cpp
Go to the documentation of this file.
1
/*
2
* The ManaPlus Client
3
* Copyright (C) 2004-2009 The Mana World Development Team
4
* Copyright (C) 2009-2010 The Mana Developers
5
* Copyright (C) 2011-2019 The ManaPlus Developers
6
* Copyright (C) 2019-2021 Andrei Karas
7
*
8
* This file is part of The ManaPlus Client.
9
*
10
* This program is free software; you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation; either version 2 of the License, or
13
* any later version.
14
*
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
19
*
20
* You should have received a copy of the GNU General Public License
21
* along with this program. If not, see <http://www.gnu.org/licenses/>.
22
*/
23
24
#include "
resources/sdlscreenshothelper.h
"
25
26
#include "render/graphics.h"
27
28
#include "
utils/sdlcheckutils.h
"
29
30
PRAGMA48
(GCC diagnostic push)
31
PRAGMA48
(GCC diagnostic ignored
"-Wshadow"
)
32
#ifndef SDL_BIG_ENDIAN
33
#include <SDL_endian.h>
34
#endif
// SDL_BYTEORDER
35
PRAGMA48
(GCC diagnostic pop)
36
37
#include "debug.h"
38
39
SdlScreenshotHelper::SdlScreenshotHelper
() :
40
ScreenshotHelper
()
41
{
42
}
43
44
SdlScreenshotHelper::~SdlScreenshotHelper
()
45
{
46
}
47
48
void
SdlScreenshotHelper::prepare
()
49
{
50
}
51
52
SDL_Surface *
SdlScreenshotHelper::getScreenshot
()
53
{
54
if
(
mainGraphics
==
nullptr
)
55
return
nullptr
;
56
57
#if SDL_BYTEORDER == SDL_BIG_ENDIAN
58
const
int
rmask = 0xff000000;
59
const
int
gmask = 0x00ff0000;
60
const
int
bmask = 0x0000ff00;
61
#else
// SDL_BYTEORDER == SDL_BIG_ENDIAN
62
63
const
int
rmask = 0x000000ff;
64
const
int
gmask = 0x0000ff00;
65
const
int
bmask = 0x00ff0000;
66
#endif
// SDL_BYTEORDER == SDL_BIG_ENDIAN
67
68
const
int
amask = 0x00000000;
69
70
SDL_Surface *
const
screenshot
=
MSDL_CreateRGBSurface
(SDL_SWSURFACE,
71
mainGraphics
->
mWidth
,
mainGraphics
->
mHeight
,
72
24,
73
rmask, gmask, bmask, amask);
74
75
#ifndef USE_SDL2
76
if
(
screenshot
!=
nullptr
)
77
SDL_BlitSurface(
mainGraphics
->
mWindow
,
nullptr
,
screenshot
,
nullptr
);
78
#endif
// USE_SDL2
79
80
return
screenshot
;
81
}
Graphics::mWidth
int mWidth
Definition:
graphics.h:484
Graphics::mWindow
SDL_Surface * mWindow
Definition:
graphics.h:523
Graphics::mHeight
int mHeight
Definition:
graphics.h:485
ScreenshotHelper
Definition:
screenshothelper.h:35
SdlScreenshotHelper::SdlScreenshotHelper
SdlScreenshotHelper()
Definition:
sdlscreenshothelper.cpp:39
SdlScreenshotHelper::prepare
void prepare()
Definition:
sdlscreenshothelper.cpp:48
SdlScreenshotHelper::getScreenshot
SDL_Surface * getScreenshot()
Definition:
sdlscreenshothelper.cpp:52
SdlScreenshotHelper::~SdlScreenshotHelper
~SdlScreenshotHelper()
Definition:
sdlscreenshothelper.cpp:44
MSDL_CreateRGBSurface
#define MSDL_CreateRGBSurface(flags, w, h, d, r, g, b, a)
Definition:
debug.h:55
mainGraphics
Graphics * mainGraphics
Definition:
graphics.cpp:109
PRAGMA48
#define PRAGMA48(str)
Definition:
localconsts.h:199
Actions::screenshot
bool screenshot(InputEvent &event)
Definition:
actions.cpp:51
sdlcheckutils.h
sdlscreenshothelper.h
Generated on Wed Mar 17 2021 19:19:10 for ManaPlus by
1.9.1