Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

file 87 lines (77 sloc) 3.444 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87
/*
* Copyright (C) 2005-2010 Team XBMC
* http://www.xbmc.org
*
* This Program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2, or (at your option)
* any later version.
*
* This Program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with XBMC; see the file COPYING. If not, write to
* the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
* http://www.gnu.org/copyleft/gpl.html
*
*/

#pragma once

#include "dbwrappers/Database.h"
#include "TextureCacheJob.h"

class CTextureDatabase : public CDatabase
{
public:
  CTextureDatabase();
  virtual ~CTextureDatabase();
  virtual bool Open();

  bool GetCachedTexture(const CStdString &originalURL, CTextureDetails &details);
  bool AddCachedTexture(const CStdString &originalURL, const CTextureDetails &details);
  bool SetCachedTextureValid(const CStdString &originalURL, bool updateable);
  bool ClearCachedTexture(const CStdString &originalURL, CStdString &cacheFile);
  bool IncrementUseCount(const CTextureDetails &details);

  /*! \brief Invalidate a previously cached texture
Invalidates the texture hash, and sets the texture update time to the current time so that
next texture load it will be re-cached.
\param url texture path
*/
  bool InvalidateCachedTexture(const CStdString &originalURL);

  /*! \brief Get a texture associated with the given path
Used for retrieval of previously discovered images to save
stat() on the filesystem all the time
\param url path that may be associated with a texture
\param type type of image to look for
\return URL of the texture associated with the given path
*/
  CStdString GetTextureForPath(const CStdString &url, const CStdString &type);

  /*! \brief Set a texture associated with the given path
Used for setting of previously discovered images to save
stat() on the filesystem all the time. Should be used to set
the actual image path, not the cached image path (the image will be
cached at load time.)
\param url path that was used to find the texture
\param type type of image to associate
\param texture URL of the texture to associate with the path
*/
  void SetTextureForPath(const CStdString &url, const CStdString &type, const CStdString &texture);

  /*! \brief Clear a texture associated with the given path
\param url path that was used to find the texture
\param type type of image to associate
\param texture URL of the texture to associate with the path
\sa GetTextureForPath, SetTextureForPath
*/
  void ClearTextureForPath(const CStdString &url, const CStdString &type);

protected:
  /*! \brief retrieve a hash for the given url
Computes a hash of the current url to use for lookups in the database
\param url url to hash
\return a hash for this url
*/
  unsigned int GetURLHash(const CStdString &url) const;

  virtual bool CreateTables();
  virtual bool UpdateOldVersion(int version);
  virtual int GetMinVersion() const { return 13; };
  const char *GetBaseDBName() const { return "Textures"; };
};
Something went wrong with that request. Please try again.