xbmc
TextureDatabase.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 "TextureCacheJob.h"
12 #include "dbwrappers/Database.h"
13 #include "dbwrappers/DatabaseQuery.h"
14 
15 #include <string>
16 #include <vector>
17 
18 class CVariant;
19 
21 {
22 public:
23  CTextureRule() = default;
24  ~CTextureRule() override = default;
25 
26  static void GetAvailableFields(std::vector<std::string> &fieldList);
27 protected:
28  int TranslateField(const char *field) const override;
29  std::string TranslateField(int field) const override;
30  std::string GetField(int field, const std::string& type) const override;
31  FIELD_TYPE GetFieldType(int field) const override;
32  std::string FormatParameter(const std::string &negate,
33  const std::string &oper,
34  const CDatabase &db,
35  const std::string &type) const override;
36 };
37 
39 {
40 public:
47  static std::string GetWrappedImageURL(const std::string &image, const std::string &type = "", const std::string &options = "");
48  static std::string GetWrappedThumbURL(const std::string &image);
49 
55  static std::string UnwrapImageURL(const std::string &image);
56 };
57 
59 {
60 public:
62  ~CTextureDatabase() override;
63  bool Open() override;
64 
65  bool GetCachedTexture(const std::string &originalURL, CTextureDetails &details);
66  bool AddCachedTexture(const std::string &originalURL, const CTextureDetails &details);
67  bool SetCachedTextureValid(const std::string &originalURL, bool updateable);
68  bool ClearCachedTexture(const std::string &originalURL, std::string &cacheFile);
69  bool ClearCachedTexture(int textureID, std::string &cacheFile);
70  bool IncrementUseCount(const CTextureDetails &details);
71 
77  bool InvalidateCachedTexture(const std::string &originalURL);
78 
86  std::string GetTextureForPath(const std::string &url, const std::string &type);
87 
97  void SetTextureForPath(const std::string &url, const std::string &type, const std::string &texture);
98 
105  void ClearTextureForPath(const std::string &url, const std::string &type);
106 
107  bool GetTextures(CVariant &items, const Filter &filter);
108 
109  // rule creation
110  CDatabaseQueryRule *CreateRule() const override;
111  CDatabaseQueryRuleCombination *CreateCombination() const override;
112 protected:
118  unsigned int GetURLHash(const std::string &url) const;
119 
120  void CreateTables() override;
121  void CreateAnalytics() override;
122  void UpdateTables(int version) override;
123  int GetSchemaVersion() const override { return 13; }
124  const char* GetBaseDBName() const override { return "Textures"; }
125 };
Definition: DatabaseQuery.h:118
Definition: DatabaseQuery.h:22
Simple class for passing texture detail around.
Definition: TextureCacheJob.h:26
Definition: Database.h:29
Definition: TextureDatabase.h:20
Definition: Variant.h:29
Definition: DatabaseQuery.h:110
Definition: Database.h:26
Definition: TextureDatabase.h:58
Definition: TextureDatabase.h:38