Counter Strike : Global Offensive Source Code
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.

96 lines
4.2 KiB

  1. //====== Copyright � 1996-2008, Valve Corporation, All rights reserved. =======
  2. //
  3. // Purpose: public interface to user remote file storage in Steam
  4. //
  5. //=============================================================================
  6. #ifndef ISTEAMSCREENSHOTS_H
  7. #define ISTEAMSCREENSHOTS_H
  8. #ifdef _WIN32
  9. #pragma once
  10. #endif
  11. #include "isteamclient.h"
  12. const uint32 k_nScreenshotMaxTaggedUsers = 32;
  13. const uint32 k_nScreenshotMaxTaggedPublishedFiles = 32;
  14. const int k_cubUFSTagTypeMax = 255;
  15. const int k_cubUFSTagValueMax = 255;
  16. // Required with of a thumbnail provided to AddScreenshotToLibrary. If you do not provide a thumbnail
  17. // one will be generated.
  18. const int k_ScreenshotThumbWidth = 200;
  19. // Handle is valid for the lifetime of your process and no longer
  20. typedef uint32 ScreenshotHandle;
  21. #define INVALID_SCREENSHOT_HANDLE 0
  22. //-----------------------------------------------------------------------------
  23. // Purpose: Functions for adding screenshots to the user's screenshot library
  24. //-----------------------------------------------------------------------------
  25. class ISteamScreenshots
  26. {
  27. public:
  28. // Writes a screenshot to the user's screenshot library given the raw image data, which must be in RGB format.
  29. // The return value is a handle that is valid for the duration of the game process and can be used to apply tags.
  30. virtual ScreenshotHandle WriteScreenshot( void *pubRGB, uint32 cubRGB, int nWidth, int nHeight ) = 0;
  31. // 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
  32. // 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.
  33. // The return value is a handle that is valid for the duration of the game process and can be used to apply tags.
  34. // JPEG, TGA, and PNG formats are supported.
  35. virtual ScreenshotHandle AddScreenshotToLibrary( const char *pchFilename, const char *pchThumbnailFilename, int nWidth, int nHeight ) = 0;
  36. // 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.
  37. virtual void TriggerScreenshot() = 0;
  38. // Toggles whether the overlay handles screenshots when the user presses the screenshot hotkey, or the game handles them. If the game is hooking screenshots,
  39. // then the ScreenshotRequested_t callback will be sent if the user presses the hotkey, and the game is expected to call WriteScreenshot or AddScreenshotToLibrary
  40. // in response.
  41. virtual void HookScreenshots( bool bHook ) = 0;
  42. // Sets metadata about a screenshot's location (for example, the name of the map)
  43. virtual bool SetLocation( ScreenshotHandle hScreenshot, const char *pchLocation ) = 0;
  44. // Tags a user as being visible in the screenshot
  45. virtual bool TagUser( ScreenshotHandle hScreenshot, CSteamID steamID ) = 0;
  46. // Tags a published file as being visible in the screenshot
  47. virtual bool TagPublishedFile( ScreenshotHandle hScreenshot, PublishedFileId_t unPublishedFileID ) = 0;
  48. };
  49. #define STEAMSCREENSHOTS_INTERFACE_VERSION "STEAMSCREENSHOTS_INTERFACE_VERSION002"
  50. // callbacks
  51. #if defined( VALVE_CALLBACK_PACK_SMALL )
  52. #pragma pack( push, 4 )
  53. #elif defined( VALVE_CALLBACK_PACK_LARGE )
  54. #pragma pack( push, 8 )
  55. #else
  56. #error isteamclient.h must be included
  57. #endif
  58. //-----------------------------------------------------------------------------
  59. // Purpose: Screenshot successfully written or otherwise added to the library
  60. // and can now be tagged
  61. //-----------------------------------------------------------------------------
  62. struct ScreenshotReady_t
  63. {
  64. enum { k_iCallback = k_iSteamScreenshotsCallbacks + 1 };
  65. ScreenshotHandle m_hLocal;
  66. EResult m_eResult;
  67. };
  68. //-----------------------------------------------------------------------------
  69. // Purpose: Screenshot has been requested by the user. Only sent if
  70. // HookScreenshots() has been called, in which case Steam will not take
  71. // the screenshot itself.
  72. //-----------------------------------------------------------------------------
  73. struct ScreenshotRequested_t
  74. {
  75. enum { k_iCallback = k_iSteamScreenshotsCallbacks + 2 };
  76. };
  77. #pragma pack( pop )
  78. #endif // ISTEAMSCREENSHOTS_H