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.
9 #include "GUIBorderedImage.h"
11 CGUIBorderedImage::CGUIBorderedImage(int parentID
,
17 const CTextureInfo
& texture
,
18 const CTextureInfo
& borderTexture
,
19 const CRect
& borderSize
)
24 width
- borderSize
.x1
- borderSize
.x2
,
25 height
- borderSize
.y1
- borderSize
.y2
,
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
))
57 void CGUIBorderedImage::Render()
59 if (!m_borderImage
->GetFileName().empty() && m_texture
->ReadyToRender())
60 m_borderImage
->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
);