/xbmc/guilib/GUITextBox.h
http://github.com/xbmc/xbmc · C Header · 97 lines · 59 code · 20 blank · 18 comment · 0 complexity · a8d2018a72a30671a1ab7f5e87b397dd MD5 · raw file
- /*
- * Copyright (C) 2005-2018 Team Kodi
- * This file is part of Kodi - https://kodi.tv
- *
- * SPDX-License-Identifier: GPL-2.0-or-later
- * See LICENSES/README.md for more information.
- */
- #pragma once
- /*!
- \file GUITextBox.h
- \brief
- */
- #include "GUIControl.h"
- #include "GUILabel.h"
- #include "GUITextLayout.h"
- #include "guilib/guiinfo/GUIInfoLabel.h"
- /*!
- \ingroup controls
- \brief
- */
- class TiXmlNode;
- class CGUITextBox : public CGUIControl, public CGUITextLayout
- {
- public:
- CGUITextBox(int parentID, int controlID, float posX, float posY, float width, float height,
- const CLabelInfo &labelInfo, int scrollTime = 200,
- const CLabelInfo* labelInfoMono = nullptr);
- CGUITextBox(const CGUITextBox &from);
- ~CGUITextBox(void) override;
- CGUITextBox *Clone() const override { return new CGUITextBox(*this); };
- void DoProcess(unsigned int currentTime, CDirtyRegionList &dirtyregions) override;
- void Process(unsigned int currentTime, CDirtyRegionList &dirtyregions) override;
- void Render() override;
- bool OnMessage(CGUIMessage& message) override;
- float GetHeight() const override;
- void SetMinHeight(float minHeight);
- void SetPageControl(int pageControl);
- bool CanFocus() const override;
- void SetInfo(const KODI::GUILIB::GUIINFO::CGUIInfoLabel &info);
- void SetAutoScrolling(const TiXmlNode *node);
- void SetAutoScrolling(int delay, int time, int repeatTime, const std::string &condition = "");
- void ResetAutoScrolling();
- bool GetCondition(int condition, int data) const override;
- virtual std::string GetLabel(int info) const;
- std::string GetDescription() const override;
- void Scroll(unsigned int offset);
- protected:
- void UpdateVisibility(const CGUIListItem *item = NULL) override;
- bool UpdateColors() override;
- void UpdateInfo(const CGUIListItem *item = NULL) override;
- void UpdatePageControl();
- void ScrollToOffset(int offset, bool autoScroll = false);
- unsigned int GetRows() const;
- int GetCurrentPage() const;
- int GetNumPages() const;
- // auto-height
- float m_minHeight;
- float m_renderHeight;
- // offset of text in the control for scrolling
- unsigned int m_offset;
- float m_scrollOffset;
- float m_scrollSpeed;
- int m_scrollTime;
- unsigned int m_itemsPerPage;
- float m_itemHeight;
- unsigned int m_lastRenderTime;
- CLabelInfo m_label;
- TransformMatrix m_cachedTextMatrix;
- // autoscrolling
- INFO::InfoPtr m_autoScrollCondition;
- int m_autoScrollTime; // time to scroll 1 line (ms)
- int m_autoScrollDelay; // delay before scroll (ms)
- unsigned int m_autoScrollDelayTime; // current offset into the delay
- CAnimation *m_autoScrollRepeatAnim;
- int m_pageControl;
- KODI::GUILIB::GUIINFO::CGUIInfoLabel m_info;
- };