Browse Source
Merge pull request #11812 from german77/save_capture
Merge pull request #11812 from german77/save_capture
service: caps: Implement SaveScreenShotEx0 and variantspull/15/merge
committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
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