This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
2020-08-04 13:13:01 -04:00

108 lines
4.4 KiB
C++

//========= Copyright 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
//-----------------------------------------------------------------------------
// 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;
};
#define STEAMSCREENSHOTS_INTERFACE_VERSION \
"STEAMSCREENSHOTS_INTERFACE_VERSION002"
// 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