xbmc
TextureBundleXBT.h
1 /*
2  * Copyright (C) 2005-2018 Team Kodi
3  * This file is part of Kodi - https://kodi.tv
4  *
5  * SPDX-License-Identifier: GPL-2.0-or-later
6  * See LICENSES/README.md for more information.
7  */
8 
9 #pragma once
10 
11 #include "Texture.h"
12 
13 #include <cstdint>
14 #include <ctime>
15 #include <memory>
16 #include <optional>
17 #include <string>
18 #include <utility>
19 #include <vector>
20 
21 class CXBTFReader;
22 class CXBTFFrame;
23 
25 {
26 public:
28  explicit CTextureBundleXBT(bool themeBundle);
30 
31  void SetThemeBundle(bool themeBundle);
32  bool HasFile(const std::string& Filename);
33  std::vector<std::string> GetTexturesFromPath(const std::string& path);
34  static std::string Normalize(std::string name);
35 
36  struct Texture
37  {
38  std::unique_ptr<CTexture> texture;
39  int width;
40  int height;
41  };
42 
46  std::optional<Texture> LoadTexture(const std::string& filename);
47 
48  struct Animation
49  {
50  std::vector<std::pair<std::unique_ptr<CTexture>, int>> textures;
51  int width;
52  int height;
53  int loops;
54  };
55 
59  std::optional<Animation> LoadAnim(const std::string& filename);
60 
62  static std::vector<uint8_t> UnpackFrame(const CXBTFReader& reader, const CXBTFFrame& frame);
63 
64  void CloseBundle();
65 
66 private:
67  bool OpenBundle();
68  std::unique_ptr<CTexture> ConvertFrameToTexture(const std::string& name, const CXBTFFrame& frame);
69 
70  time_t m_TimeStamp;
71 
72  bool m_themeBundle;
73  std::string m_path;
74  std::shared_ptr<CXBTFReader> m_XBTFReader;
75 };
76 
77 
Definition: XBTF.h:23
Definition: TextureBundleXBT.h:24
Definition: TextureBundleXBT.h:36
std::optional< Texture > LoadTexture(const std::string &filename)
See CTextureBundle::LoadTexture.
Definition: TextureBundleXBT.cpp:151
Definition: TextureBundleXBT.h:48
static std::vector< uint8_t > UnpackFrame(const CXBTFReader &reader, const CXBTFFrame &frame)
Definition: TextureBundleXBT.cpp:262
std::optional< Animation > LoadAnim(const std::string &filename)
See CTextureBundle::LoadAnim.
Definition: TextureBundleXBT.cpp:176
Definition: XBTFReader.h:18