aboutsummaryrefslogtreecommitdiff
path: root/guilib/SkinInfo.h
blob: 9275596af3e713849e68d483fb76670cba57433a (plain)
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
88
89
90
91
92
93
94
95
#pragma once

/*
 *      Copyright (C) 2005-2008 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
 *
 */

#include "GraphicContext.h" // needed for the RESOLUTION members
#include "GUIIncludes.h"    // needed for the GUIInclude member

#define CREDIT_LINE_LENGTH 50

class CSkinInfo
{
public:
  class CStartupWindow
  {
  public:
    CStartupWindow(int id, const CStdString &name)
    {
      m_id = id; m_name = name;
    };
    int m_id;
    CStdString m_name;
  };

  CSkinInfo();
  ~CSkinInfo();

  void Load(const CStdString& strSkinDir); // load the skin.xml file if it exists, and configure our directories etc.
  bool Check(const CStdString& strSkinDir); // checks if everything is present and accounted for without loading the skin

  bool HasSkinFile(const CStdString &strFile);
  CStdString GetSkinPath(const CStdString& strFile, RESOLUTION *res, const CStdString& strBaseDir="");  // retrieve the best skin file for the resolution we are in - res will be made the resolution we are loading from
  wchar_t* GetCreditsLine(int i);

  CStdString GetDirFromRes(RESOLUTION res);
  CStdString GetBaseDir();
  double GetMinVersion();
  double GetVersion(){ return m_Version;};
  int GetStartWindow();

  void ResolveIncludes(TiXmlElement *node, const CStdString &type = "");
  bool ResolveConstant(const CStdString &constant, float &value);
  bool ResolveConstant(const CStdString &constant, unsigned int &value);

  double GetEffectsSlowdown() const { return m_effectsSlowDown; };

  const std::vector<CStartupWindow> &GetStartupWindows() { return m_startupWindows; };

  bool OnlyAnimateToHome() { return m_onlyAnimateToHome; };

  inline float GetSkinZoom() { return m_skinzoom; };

  inline const RESOLUTION& GetDefaultWideResolution() { return m_DefaultResolutionWide; };
  inline const RESOLUTION& GetDefaultResolution() { return m_DefaultResolution; };

  void SetDefaults();
protected:
  void LoadIncludes();
  bool LoadStartupWindows(const TiXmlElement *startup);

  wchar_t credits[6][CREDIT_LINE_LENGTH];  // credits info
  int m_iNumCreditLines;  // number of credit lines
  RESOLUTION m_DefaultResolution; // default resolution for the skin in 4:3 modes
  RESOLUTION m_DefaultResolutionWide; // default resolution for the skin in 16:9 modes
  CStdString m_strBaseDir;
  double m_Version;

  double m_effectsSlowDown;
  CGUIIncludes m_includes;

  std::vector<CStartupWindow> m_startupWindows;
  bool m_onlyAnimateToHome;

  float m_skinzoom;
};

extern CSkinInfo g_SkinInfo;