Merge pull request #22816 from CastagnaIT/fix_tx3g
[xbmc.git] / xbmc / guilib / GUIBorderedImage.cpp
blob7c48ddb9e1567c540a0ee0e893ebfaa968f8df6b
1 /*
2 * Copyright (C) 2005-2018 Team Kodi
3 * This file is part of Kodi - https://kodi.tv
5 * SPDX-License-Identifier: GPL-2.0-or-later
6 * See LICENSES/README.md for more information.
7 */
9 #include "GUIBorderedImage.h"
11 CGUIBorderedImage::CGUIBorderedImage(int parentID,
12 int controlID,
13 float posX,
14 float posY,
15 float width,
16 float height,
17 const CTextureInfo& texture,
18 const CTextureInfo& borderTexture,
19 const CRect& borderSize)
20 : CGUIImage(parentID,
21 controlID,
22 posX + borderSize.x1,
23 posY + borderSize.y1,
24 width - borderSize.x1 - borderSize.x2,
25 height - borderSize.y1 - borderSize.y2,
26 texture),
27 m_borderImage(CGUITexture::CreateTexture(posX, posY, width, height, borderTexture)),
28 m_borderSize(borderSize)
30 ControlType = GUICONTROL_BORDEREDIMAGE;
33 CGUIBorderedImage::CGUIBorderedImage(const CGUIBorderedImage& right)
34 : CGUIImage(right), m_borderImage(right.m_borderImage->Clone()), m_borderSize(right.m_borderSize)
36 ControlType = GUICONTROL_BORDEREDIMAGE;
39 void CGUIBorderedImage::Process(unsigned int currentTime, CDirtyRegionList &dirtyregions)
41 CGUIImage::Process(currentTime, dirtyregions);
42 if (!m_borderImage->GetFileName().empty() && m_texture->ReadyToRender())
44 CRect rect = CRect(m_texture->GetXPosition(), m_texture->GetYPosition(),
45 m_texture->GetXPosition() + m_texture->GetWidth(),
46 m_texture->GetYPosition() + m_texture->GetHeight());
47 rect.Intersect(m_texture->GetRenderRect());
48 m_borderImage->SetPosition(rect.x1 - m_borderSize.x1, rect.y1 - m_borderSize.y1);
49 m_borderImage->SetWidth(rect.Width() + m_borderSize.x1 + m_borderSize.x2);
50 m_borderImage->SetHeight(rect.Height() + m_borderSize.y1 + m_borderSize.y2);
51 m_borderImage->SetDiffuseColor(m_diffuseColor);
52 if (m_borderImage->Process(currentTime))
53 MarkDirtyRegion();
57 void CGUIBorderedImage::Render()
59 if (!m_borderImage->GetFileName().empty() && m_texture->ReadyToRender())
60 m_borderImage->Render();
61 CGUIImage::Render();
64 CRect CGUIBorderedImage::CalcRenderRegion() const
66 // have to union the image as well as fading images may still exist that are bigger than our current border image
67 return CGUIImage::CalcRenderRegion().Union(m_borderImage->GetRenderRect());
70 void CGUIBorderedImage::AllocResources()
72 m_borderImage->AllocResources();
73 CGUIImage::AllocResources();
76 void CGUIBorderedImage::FreeResources(bool immediately)
78 m_borderImage->FreeResources(immediately);
79 CGUIImage::FreeResources(immediately);
82 void CGUIBorderedImage::DynamicResourceAlloc(bool bOnOff)
84 m_borderImage->DynamicResourceAlloc(bOnOff);
85 CGUIImage::DynamicResourceAlloc(bOnOff);