mirror of
https://gitlab.com/kelteseth/ScreenPlay.git
synced 2024-11-06 19:12:30 +01:00
116 lines
5.4 KiB
C++
116 lines
5.4 KiB
C++
//====== Copyright <20> 1996-2008, Valve Corporation, All rights reserved. =======
|
||
//
|
||
// Purpose: public interface to user remote file storage in Steam
|
||
//
|
||
//=============================================================================
|
||
|
||
#ifndef ISTEAMSCREENSHOTS_H
|
||
#define ISTEAMSCREENSHOTS_H
|
||
#ifdef _WIN32
|
||
#pragma once
|
||
#endif
|
||
|
||
#include "steam_api_common.h"
|
||
|
||
const uint32 k_nScreenshotMaxTaggedUsers = 32;
|
||
const uint32 k_nScreenshotMaxTaggedPublishedFiles = 32;
|
||
const int k_cubUFSTagTypeMax = 255;
|
||
const int k_cubUFSTagValueMax = 255;
|
||
|
||
// Required with of a thumbnail provided to AddScreenshotToLibrary. If you do not provide a thumbnail
|
||
// one will be generated.
|
||
const int k_ScreenshotThumbWidth = 200;
|
||
|
||
// Handle is valid for the lifetime of your process and no longer
|
||
typedef uint32 ScreenshotHandle;
|
||
#define INVALID_SCREENSHOT_HANDLE 0
|
||
|
||
enum EVRScreenshotType {
|
||
k_EVRScreenshotType_None = 0,
|
||
k_EVRScreenshotType_Mono = 1,
|
||
k_EVRScreenshotType_Stereo = 2,
|
||
k_EVRScreenshotType_MonoCubemap = 3,
|
||
k_EVRScreenshotType_MonoPanorama = 4,
|
||
k_EVRScreenshotType_StereoPanorama = 5
|
||
};
|
||
|
||
//-----------------------------------------------------------------------------
|
||
// Purpose: Functions for adding screenshots to the user's screenshot library
|
||
//-----------------------------------------------------------------------------
|
||
class ISteamScreenshots {
|
||
public:
|
||
// Writes a screenshot to the user's screenshot library given the raw image data, which must be in RGB format.
|
||
// The return value is a handle that is valid for the duration of the game process and can be used to apply tags.
|
||
virtual ScreenshotHandle WriteScreenshot(void* pubRGB, uint32 cubRGB, int nWidth, int nHeight) = 0;
|
||
|
||
// Adds a screenshot to the user's screenshot library from disk. If a thumbnail is provided, it must be 200 pixels wide and the same aspect ratio
|
||
// as the screenshot, otherwise a thumbnail will be generated if the user uploads the screenshot. The screenshots must be in either JPEG or TGA format.
|
||
// The return value is a handle that is valid for the duration of the game process and can be used to apply tags.
|
||
// JPEG, TGA, and PNG formats are supported.
|
||
virtual ScreenshotHandle AddScreenshotToLibrary(const char* pchFilename, const char* pchThumbnailFilename, int nWidth, int nHeight) = 0;
|
||
|
||
// Causes the Steam overlay to take a screenshot. If screenshots are being hooked by the game then a ScreenshotRequested_t callback is sent back to the game instead.
|
||
virtual void TriggerScreenshot() = 0;
|
||
|
||
// Toggles whether the overlay handles screenshots when the user presses the screenshot hotkey, or the game handles them. If the game is hooking screenshots,
|
||
// then the ScreenshotRequested_t callback will be sent if the user presses the hotkey, and the game is expected to call WriteScreenshot or AddScreenshotToLibrary
|
||
// in response.
|
||
virtual void HookScreenshots(bool bHook) = 0;
|
||
|
||
// Sets metadata about a screenshot's location (for example, the name of the map)
|
||
virtual bool SetLocation(ScreenshotHandle hScreenshot, const char* pchLocation) = 0;
|
||
|
||
// Tags a user as being visible in the screenshot
|
||
virtual bool TagUser(ScreenshotHandle hScreenshot, CSteamID steamID) = 0;
|
||
|
||
// Tags a published file as being visible in the screenshot
|
||
virtual bool TagPublishedFile(ScreenshotHandle hScreenshot, PublishedFileId_t unPublishedFileID) = 0;
|
||
|
||
// Returns true if the app has hooked the screenshot
|
||
virtual bool IsScreenshotsHooked() = 0;
|
||
|
||
// Adds a VR screenshot to the user's screenshot library from disk in the supported type.
|
||
// pchFilename should be the normal 2D image used in the library view
|
||
// pchVRFilename should contain the image that matches the correct type
|
||
// The return value is a handle that is valid for the duration of the game process and can be used to apply tags.
|
||
// JPEG, TGA, and PNG formats are supported.
|
||
virtual ScreenshotHandle AddVRScreenshotToLibrary(EVRScreenshotType eType, const char* pchFilename, const char* pchVRFilename) = 0;
|
||
};
|
||
|
||
#define STEAMSCREENSHOTS_INTERFACE_VERSION "STEAMSCREENSHOTS_INTERFACE_VERSION003"
|
||
|
||
// Global interface accessor
|
||
inline ISteamScreenshots* SteamScreenshots();
|
||
STEAM_DEFINE_USER_INTERFACE_ACCESSOR(ISteamScreenshots*, SteamScreenshots, STEAMSCREENSHOTS_INTERFACE_VERSION);
|
||
|
||
// callbacks
|
||
#if defined(VALVE_CALLBACK_PACK_SMALL)
|
||
#pragma pack(push, 4)
|
||
#elif defined(VALVE_CALLBACK_PACK_LARGE)
|
||
#pragma pack(push, 8)
|
||
#else
|
||
#error steam_api_common.h should define VALVE_CALLBACK_PACK_xxx
|
||
#endif
|
||
//-----------------------------------------------------------------------------
|
||
// Purpose: Screenshot successfully written or otherwise added to the library
|
||
// and can now be tagged
|
||
//-----------------------------------------------------------------------------
|
||
struct ScreenshotReady_t {
|
||
enum { k_iCallback = k_iSteamScreenshotsCallbacks + 1 };
|
||
ScreenshotHandle m_hLocal;
|
||
EResult m_eResult;
|
||
};
|
||
|
||
//-----------------------------------------------------------------------------
|
||
// Purpose: Screenshot has been requested by the user. Only sent if
|
||
// HookScreenshots() has been called, in which case Steam will not take
|
||
// the screenshot itself.
|
||
//-----------------------------------------------------------------------------
|
||
struct ScreenshotRequested_t {
|
||
enum { k_iCallback = k_iSteamScreenshotsCallbacks + 2 };
|
||
};
|
||
|
||
#pragma pack(pop)
|
||
|
||
#endif // ISTEAMSCREENSHOTS_H
|