rendered paste body#include "include.h"#include "GUIListLabel.h"#include "../xbmc/utils/CharsetConverter.h"CGUIListLabel::CGUIListLabel(DWORD dwParentID, DWORD dwControlId, float posX, float posY, float width, float height, const CLabelInfo& labelInfo) : CGUIControl(dwParentID, dwControlId, posX, posY, width, height){ m_selected = false; m_scrolling = false; m_label = labelInfo;}CGUIListLabel::~CGUIListLabel(void){}void CGUIListLabel::SetScrolling(bool scrolling){ m_scrolling = scrolling; if (!scrolling) m_scrollInfo.Reset();}void CGUIListLabel::SetSelected(bool selected){ m_selected = selected;}void CGUIListLabel::Render(){ if (m_label.font && !m_text.IsEmpty()) { DWORD color = m_selected ? m_label.selectedColor : m_label.textColor; float x2 = m_renderRect.x1 + m_textWidth; if (m_scrolling && m_renderRect.x2 < x2) m_label.font->DrawScrollingText(m_renderRect.x1, m_renderRect.y1, m_label.angle, &color, 1, m_label.shadowColor, m_text, m_renderRect.Width(), m_scrollInfo); else m_label.font->DrawTextWidth(m_renderRect.x1, m_renderRect.y1, m_label.angle, color, m_label.shadowColor, m_text, m_renderRect.Width()); } CGUIControl::Render();}void CGUIListLabel::SetLabel(const CStdString &label){ CStdStringW newText; g_charsetConverter.utf8ToW(label, newText); if (newText != m_text) { // changed label - reset scrolling m_scrollInfo.Reset(); m_text = newText; } // and recalculate our text if (m_label.font) { float width, height; m_label.font->GetTextExtent(m_text, &m_textWidth, &height); width = (m_textWidth < m_width) ? m_textWidth : m_width; if (m_label.align & XBFONT_CENTER_Y) m_renderRect.y1 = m_posY + (m_height - height) * 0.5f; else m_renderRect.y1 = m_posY; if (m_label.align & XBFONT_RIGHT) m_renderRect.x1 = m_posX - width; else if (m_label.align & XBFONT_CENTER_X) m_renderRect.x1 = m_posX - width * 0.5f; else m_renderRect.x1 = m_posX; m_renderRect.x2 = m_renderRect.x1 + width; m_renderRect.y2 = m_renderRect.y1 + height; }}