1//************************************ bs::framework - Copyright 2018 Marko Pintera **************************************//
2//*********** Licensed under the MIT license. See LICENSE.md for full terms. This notice is not to be removed. ***********//
3#pragma once
4
5#include "BsCorePrerequisites.h"
6
7namespace bs
8{
9 /** @addtogroup Utility-Core-Internal
10 * @{
11 */
12
13 /** Manipulates icons in executable files. */
14 class BS_CORE_EXPORT IconUtility
15 {
16 public:
17 /**
18 * Updates icons in the provided executable. Only icons that already exist in the executable can be updated, no new
19 * icons can be inserted. Icons must be square.
20 *
21 * @param[in] filePath Path to the executable.
22 * @param[in] icons Pixels of images to replace. Each entry maps an icon width (and height, since they're
23 * square) to its pixels.
24 */
25 static void updateIconExe(const Path& filePath, const Map<UINT32, SPtr<PixelData>>& icons);
26
27 private:
28 /**
29 * Updates data of an existing icon with new pixels.
30 *
31 * @param[in] iconData Existing icon bytes, in Windows ICO format.
32 * @param[in] icons Pixels of images to replace. Each entry maps an icon width (and height, since they're
33 * square) to its pixels.
34 */
35 static void updateIconData(UINT8* iconData, const Map<UINT32, SPtr<PixelData>>& icons);
36 };
37
38 /** @} */
39}