Browse Source
Merge pull request #11812 from german77/save_capture
Merge pull request #11812 from german77/save_capture
service: caps: Implement SaveScreenShotEx0 and variantsnce_cpp
committed by
GitHub
11 changed files with 2225 additions and 14 deletions
-
2externals/CMakeLists.txt
-
1677externals/stb/stb_image_write.cpp
-
297externals/stb/stb_image_write.h
-
7src/core/hle/service/caps/caps.cpp
-
83src/core/hle/service/caps/caps_manager.cpp
-
11src/core/hle/service/caps/caps_manager.h
-
75src/core/hle/service/caps/caps_ss.cpp
-
8src/core/hle/service/caps/caps_ss.h
-
69src/core/hle/service/caps/caps_su.cpp
-
8src/core/hle/service/caps/caps_su.h
-
2src/core/hle/service/caps/caps_types.h
1677
externals/stb/stb_image_write.cpp
File diff suppressed because it is too large
View File
File diff suppressed because it is too large
View File
@ -0,0 +1,297 @@ |
|||||
|
// SPDX-FileCopyrightText: stb http://nothings.org/stb |
||||
|
// SPDX-License-Identifier: MIT |
||||
|
|
||||
|
/* stb_image_write - v1.16 - public domain - http://nothings.org/stb |
||||
|
writes out PNG/BMP/TGA/JPEG/HDR images to C stdio - Sean Barrett 2010-2015 |
||||
|
no warranty implied; use at your own risk |
||||
|
|
||||
|
Before #including, |
||||
|
|
||||
|
#define STB_IMAGE_WRITE_IMPLEMENTATION |
||||
|
|
||||
|
in the file that you want to have the implementation. |
||||
|
|
||||
|
Will probably not work correctly with strict-aliasing optimizations. |
||||
|
|
||||
|
ABOUT: |
||||
|
|
||||
|
This header file is a library for writing images to C stdio or a callback. |
||||
|
|
||||
|
The PNG output is not optimal; it is 20-50% larger than the file |
||||
|
written by a decent optimizing implementation; though providing a custom |
||||
|
zlib compress function (see STBIW_ZLIB_COMPRESS) can mitigate that. |
||||
|
This library is designed for source code compactness and simplicity, |
||||
|
not optimal image file size or run-time performance. |
||||
|
|
||||
|
BUILDING: |
||||
|
|
||||
|
You can #define STBIW_ASSERT(x) before the #include to avoid using assert.h. |
||||
|
You can #define STBIW_MALLOC(), STBIW_REALLOC(), and STBIW_FREE() to replace |
||||
|
malloc,realloc,free. |
||||
|
You can #define STBIW_MEMMOVE() to replace memmove() |
||||
|
You can #define STBIW_ZLIB_COMPRESS to use a custom zlib-style compress function |
||||
|
for PNG compression (instead of the builtin one), it must have the following signature: |
||||
|
unsigned char * my_compress(unsigned char *data, int data_len, int *out_len, int quality); |
||||
|
The returned data will be freed with STBIW_FREE() (free() by default), |
||||
|
so it must be heap allocated with STBIW_MALLOC() (malloc() by default), |
||||
|
|
||||
|
UNICODE: |
||||
|
|
||||
|
If compiling for Windows and you wish to use Unicode filenames, compile |
||||
|
with |
||||
|
#define STBIW_WINDOWS_UTF8 |
||||
|
and pass utf8-encoded filenames. Call stbiw_convert_wchar_to_utf8 to convert |
||||
|
Windows wchar_t filenames to utf8. |
||||
|
|
||||
|
USAGE: |
||||
|
|
||||
|
There are five functions, one for each image file format: |
||||
|
|
||||
|
int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); |
||||
|
int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); |
||||
|
int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); |
||||
|
int stbi_write_jpg(char const *filename, int w, int h, int comp, const void *data, int quality); |
||||
|
int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); |
||||
|
|
||||
|
void stbi_flip_vertically_on_write(int flag); // flag is non-zero to flip data vertically |
||||
|
|
||||
|
There are also five equivalent functions that use an arbitrary write function. You are |
||||
|
expected to open/close your file-equivalent before and after calling these: |
||||
|
|
||||
|
int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); |
||||
|
int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); |
||||
|
int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); |
||||
|
int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); |
||||
|
int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); |
||||
|
|
||||
|
where the callback is: |
||||
|
void stbi_write_func(void *context, void *data, int size); |
||||
|
|
||||
|
You can configure it with these global variables: |
||||
|
int stbi_write_tga_with_rle; // defaults to true; set to 0 to disable RLE |
||||
|
int stbi_write_png_compression_level; // defaults to 8; set to higher for more compression |
||||
|
int stbi_write_force_png_filter; // defaults to -1; set to 0..5 to force a filter mode |
||||
|
|
||||
|
|
||||
|
You can define STBI_WRITE_NO_STDIO to disable the file variant of these |
||||
|
functions, so the library will not use stdio.h at all. However, this will |
||||
|
also disable HDR writing, because it requires stdio for formatted output. |
||||
|
|
||||
|
Each function returns 0 on failure and non-0 on success. |
||||
|
|
||||
|
The functions create an image file defined by the parameters. The image |
||||
|
is a rectangle of pixels stored from left-to-right, top-to-bottom. |
||||
|
Each pixel contains 'comp' channels of data stored interleaved with 8-bits |
||||
|
per channel, in the following order: 1=Y, 2=YA, 3=RGB, 4=RGBA. (Y is |
||||
|
monochrome color.) The rectangle is 'w' pixels wide and 'h' pixels tall. |
||||
|
The *data pointer points to the first byte of the top-left-most pixel. |
||||
|
For PNG, "stride_in_bytes" is the distance in bytes from the first byte of |
||||
|
a row of pixels to the first byte of the next row of pixels. |
||||
|
|
||||
|
PNG creates output files with the same number of components as the input. |
||||
|
The BMP format expands Y to RGB in the file format and does not |
||||
|
output alpha. |
||||
|
|
||||
|
PNG supports writing rectangles of data even when the bytes storing rows of |
||||
|
data are not consecutive in memory (e.g. sub-rectangles of a larger image), |
||||
|
by supplying the stride between the beginning of adjacent rows. The other |
||||
|
formats do not. (Thus you cannot write a native-format BMP through the BMP |
||||
|
writer, both because it is in BGR order and because it may have padding |
||||
|
at the end of the line.) |
||||
|
|
||||
|
PNG allows you to set the deflate compression level by setting the global |
||||
|
variable 'stbi_write_png_compression_level' (it defaults to 8). |
||||
|
|
||||
|
HDR expects linear float data. Since the format is always 32-bit rgb(e) |
||||
|
data, alpha (if provided) is discarded, and for monochrome data it is |
||||
|
replicated across all three channels. |
||||
|
|
||||
|
TGA supports RLE or non-RLE compressed data. To use non-RLE-compressed |
||||
|
data, set the global variable 'stbi_write_tga_with_rle' to 0. |
||||
|
|
||||
|
JPEG does ignore alpha channels in input data; quality is between 1 and 100. |
||||
|
Higher quality looks better but results in a bigger image. |
||||
|
JPEG baseline (no JPEG progressive). |
||||
|
|
||||
|
CREDITS: |
||||
|
|
||||
|
|
||||
|
Sean Barrett - PNG/BMP/TGA |
||||
|
Baldur Karlsson - HDR |
||||
|
Jean-Sebastien Guay - TGA monochrome |
||||
|
Tim Kelsey - misc enhancements |
||||
|
Alan Hickman - TGA RLE |
||||
|
Emmanuel Julien - initial file IO callback implementation |
||||
|
Jon Olick - original jo_jpeg.cpp code |
||||
|
Daniel Gibson - integrate JPEG, allow external zlib |
||||
|
Aarni Koskela - allow choosing PNG filter |
||||
|
|
||||
|
bugfixes: |
||||
|
github:Chribba |
||||
|
Guillaume Chereau |
||||
|
github:jry2 |
||||
|
github:romigrou |
||||
|
Sergio Gonzalez |
||||
|
Jonas Karlsson |
||||
|
Filip Wasil |
||||
|
Thatcher Ulrich |
||||
|
github:poppolopoppo |
||||
|
Patrick Boettcher |
||||
|
github:xeekworx |
||||
|
Cap Petschulat |
||||
|
Simon Rodriguez |
||||
|
Ivan Tikhonov |
||||
|
github:ignotion |
||||
|
Adam Schackart |
||||
|
Andrew Kensler |
||||
|
|
||||
|
LICENSE |
||||
|
|
||||
|
See end of file for license information. |
||||
|
|
||||
|
*/ |
||||
|
|
||||
|
#ifndef INCLUDE_STB_IMAGE_WRITE_H |
||||
|
#define INCLUDE_STB_IMAGE_WRITE_H |
||||
|
|
||||
|
#include <stdlib.h> |
||||
|
|
||||
|
// if STB_IMAGE_WRITE_STATIC causes problems, try defining STBIWDEF to 'inline' or 'static inline' |
||||
|
#ifndef STBIWDEF |
||||
|
#ifdef STB_IMAGE_WRITE_STATIC |
||||
|
#define STBIWDEF static |
||||
|
#else |
||||
|
#ifdef __cplusplus |
||||
|
#define STBIWDEF extern "C" |
||||
|
#else |
||||
|
#define STBIWDEF extern |
||||
|
#endif |
||||
|
#endif |
||||
|
#endif |
||||
|
|
||||
|
#ifndef STB_IMAGE_WRITE_STATIC // C++ forbids static forward declarations |
||||
|
STBIWDEF int stbi_write_tga_with_rle; |
||||
|
STBIWDEF int stbi_write_png_compression_level; |
||||
|
STBIWDEF int stbi_write_force_png_filter; |
||||
|
#endif |
||||
|
|
||||
|
#ifndef STBI_WRITE_NO_STDIO |
||||
|
STBIWDEF int stbi_write_png(char const *filename, int w, int h, int comp, const void *data, int stride_in_bytes); |
||||
|
STBIWDEF int stbi_write_bmp(char const *filename, int w, int h, int comp, const void *data); |
||||
|
STBIWDEF int stbi_write_tga(char const *filename, int w, int h, int comp, const void *data); |
||||
|
STBIWDEF int stbi_write_hdr(char const *filename, int w, int h, int comp, const float *data); |
||||
|
STBIWDEF int stbi_write_jpg(char const *filename, int x, int y, int comp, const void *data, int quality); |
||||
|
|
||||
|
#ifdef STBIW_WINDOWS_UTF8 |
||||
|
STBIWDEF int stbiw_convert_wchar_to_utf8(char *buffer, size_t bufferlen, const wchar_t* input); |
||||
|
#endif |
||||
|
#endif |
||||
|
|
||||
|
typedef void stbi_write_func(void *context, void *data, int size); |
||||
|
|
||||
|
STBIWDEF int stbi_write_png_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data, int stride_in_bytes); |
||||
|
STBIWDEF int stbi_write_bmp_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); |
||||
|
STBIWDEF int stbi_write_tga_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const void *data); |
||||
|
STBIWDEF int stbi_write_hdr_to_func(stbi_write_func *func, void *context, int w, int h, int comp, const float *data); |
||||
|
STBIWDEF int stbi_write_jpg_to_func(stbi_write_func *func, void *context, int x, int y, int comp, const void *data, int quality); |
||||
|
STBIWDEF unsigned char *stbi_write_png_to_mem(const unsigned char *pixels, int stride_bytes, int x, int y, int n, int *out_len); |
||||
|
|
||||
|
STBIWDEF void stbi_flip_vertically_on_write(int flip_boolean); |
||||
|
|
||||
|
#endif//INCLUDE_STB_IMAGE_WRITE_H |
||||
|
|
||||
|
/* Revision history |
||||
|
1.16 (2021-07-11) |
||||
|
make Deflate code emit uncompressed blocks when it would otherwise expand |
||||
|
support writing BMPs with alpha channel |
||||
|
1.15 (2020-07-13) unknown |
||||
|
1.14 (2020-02-02) updated JPEG writer to downsample chroma channels |
||||
|
1.13 |
||||
|
1.12 |
||||
|
1.11 (2019-08-11) |
||||
|
|
||||
|
1.10 (2019-02-07) |
||||
|
support utf8 filenames in Windows; fix warnings and platform ifdefs |
||||
|
1.09 (2018-02-11) |
||||
|
fix typo in zlib quality API, improve STB_I_W_STATIC in C++ |
||||
|
1.08 (2018-01-29) |
||||
|
add stbi__flip_vertically_on_write, external zlib, zlib quality, choose PNG filter |
||||
|
1.07 (2017-07-24) |
||||
|
doc fix |
||||
|
1.06 (2017-07-23) |
||||
|
writing JPEG (using Jon Olick's code) |
||||
|
1.05 ??? |
||||
|
1.04 (2017-03-03) |
||||
|
monochrome BMP expansion |
||||
|
1.03 ??? |
||||
|
1.02 (2016-04-02) |
||||
|
avoid allocating large structures on the stack |
||||
|
1.01 (2016-01-16) |
||||
|
STBIW_REALLOC_SIZED: support allocators with no realloc support |
||||
|
avoid race-condition in crc initialization |
||||
|
minor compile issues |
||||
|
1.00 (2015-09-14) |
||||
|
installable file IO function |
||||
|
0.99 (2015-09-13) |
||||
|
warning fixes; TGA rle support |
||||
|
0.98 (2015-04-08) |
||||
|
added STBIW_MALLOC, STBIW_ASSERT etc |
||||
|
0.97 (2015-01-18) |
||||
|
fixed HDR asserts, rewrote HDR rle logic |
||||
|
0.96 (2015-01-17) |
||||
|
add HDR output |
||||
|
fix monochrome BMP |
||||
|
0.95 (2014-08-17) |
||||
|
add monochrome TGA output |
||||
|
0.94 (2014-05-31) |
||||
|
rename private functions to avoid conflicts with stb_image.h |
||||
|
0.93 (2014-05-27) |
||||
|
warning fixes |
||||
|
0.92 (2010-08-01) |
||||
|
casts to unsigned char to fix warnings |
||||
|
0.91 (2010-07-17) |
||||
|
first public release |
||||
|
0.90 first internal release |
||||
|
*/ |
||||
|
|
||||
|
/* |
||||
|
------------------------------------------------------------------------------ |
||||
|
This software is available under 2 licenses -- choose whichever you prefer. |
||||
|
------------------------------------------------------------------------------ |
||||
|
ALTERNATIVE A - MIT License |
||||
|
Copyright (c) 2017 Sean Barrett |
||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of |
||||
|
this software and associated documentation files (the "Software"), to deal in |
||||
|
the Software without restriction, including without limitation the rights to |
||||
|
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies |
||||
|
of the Software, and to permit persons to whom the Software is furnished to do |
||||
|
so, subject to the following conditions: |
||||
|
The above copyright notice and this permission notice shall be included in all |
||||
|
copies or substantial portions of the Software. |
||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE |
||||
|
SOFTWARE. |
||||
|
------------------------------------------------------------------------------ |
||||
|
ALTERNATIVE B - Public Domain (www.unlicense.org) |
||||
|
This is free and unencumbered software released into the public domain. |
||||
|
Anyone is free to copy, modify, publish, use, compile, sell, or distribute this |
||||
|
software, either in source code form or as a compiled binary, for any purpose, |
||||
|
commercial or non-commercial, and by any means. |
||||
|
In jurisdictions that recognize copyright laws, the author or authors of this |
||||
|
software dedicate any and all copyright interest in the software to the public |
||||
|
domain. We make this dedication for the benefit of the public at large and to |
||||
|
the detriment of our heirs and successors. We intend this dedication to be an |
||||
|
overt act of relinquishment in perpetuity of all present and future rights to |
||||
|
this software under copyright law. |
||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
||||
|
AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN |
||||
|
ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION |
||||
|
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. |
||||
|
------------------------------------------------------------------------------ |
||||
|
*/ |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue