You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
5.0 KiB
116 lines
5.0 KiB
//====== Copyright ? 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 "isteamclient.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" |
|
|
|
// callbacks |
|
#if defined( VALVE_CALLBACK_PACK_SMALL ) |
|
#pragma pack( push, 4 ) |
|
#elif defined( VALVE_CALLBACK_PACK_LARGE ) |
|
#pragma pack( push, 8 ) |
|
#else |
|
#error isteamclient.h must be included |
|
#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 |
|
|
|
|