kodi
GUIRangesControl.h
Go to the documentation of this file.
1 /*
2  * Copyright (C) 2019 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 
16 #include "GUIControl.h"
17 #include "GUITexture.h"
18 
19 #include <utility>
20 #include <vector>
21 
27 {
28  class CGUIRange
29  {
30  public:
31  CGUIRange(float fPosX, float fPosY, float fWidth, float fHeight,
32  const CTextureInfo& lowerTextureInfo, const CTextureInfo& fillTextureInfo,
33  const CTextureInfo& upperTextureInfo, const std::pair<float, float>& percentages);
34 
35  CGUIRange(const CGUIRange& range);
36 
37  void AllocResources();
38  void FreeResources(bool bImmediately);
39  void DynamicResourceAlloc(bool bOnOff);
40  void SetInvalid();
41  bool SetDiffuseColor(const KODI::GUILIB::GUIINFO::CGUIInfoColor& color);
42 
43  bool Process(unsigned int iCurrentTime);
44  void Render();
45  bool UpdateLayout(float fBackgroundTextureHeight, float fPosX, float fPosY, float fWidth, float fScaleX, float fScaleY);
46 
47  private:
48  std::unique_ptr<CGUITexture> m_guiLowerTexture;
49  std::unique_ptr<CGUITexture> m_guiFillTexture;
50  std::unique_ptr<CGUITexture> m_guiUpperTexture;
51  std::pair<float,float> m_percentValues;
52  };
53 
54 public:
55  CGUIRangesControl(int iParentID, int iControlID, float fPosX, float fPosY,
56  float fWidth, float fHeight, const CTextureInfo& backGroundTexture,
57  const CTextureInfo& leftTexture, const CTextureInfo& midTexture,
58  const CTextureInfo& rightTexture, const CTextureInfo& overlayTexture,
59  int iInfo);
60  ~CGUIRangesControl() override = default;
61  CGUIRangesControl* Clone() const override { return new CGUIRangesControl(*this); }
62 
63  void Process(unsigned int iCurrentTime, CDirtyRegionList& dirtyregions) override;
64  void Render() override;
65  bool CanFocus() const override;
66  void AllocResources() override;
67  void FreeResources(bool bImmediately = false) override;
68  void DynamicResourceAlloc(bool bOnOff) override;
69  void SetInvalid() override;
70  void SetPosition(float fPosX, float fPosY) override;
71  void UpdateInfo(const CGUIListItem* item = nullptr) override;
72 
73 protected:
74  void SetRanges(const std::vector<std::pair<float, float>>& ranges);
75  void ClearRanges();
76 
77  bool UpdateColors(const CGUIListItem* item) override;
78  bool UpdateLayout();
79 
80  std::unique_ptr<CGUITexture> m_guiBackground;
81  std::unique_ptr<CGUITexture> m_guiOverlay;
82  const CTextureInfo m_guiLowerTextureInfo;
83  const CTextureInfo m_guiFillTextureInfo;
84  const CTextureInfo m_guiUpperTextureInfo;
85  std::vector<CGUIRange> m_ranges;
86  int m_iInfoCode = 0;
87  std::string m_prevRanges;
88 
89 private:
90  CGUIRangesControl(const CGUIRangesControl& control);
91 };
Definition: GUIListItem.h:29
Definition: GUIRangesControl.h:26
Base class for controls.
Definition: GUIControl.h:83
Definition: GUITexture.h:51
Definition: GUIInfoColor.h:30