[Windows] Fix driver version detection of AMD RDNA+ GPU on Windows 10
[xbmc.git] / xbmc / pictures / PictureFolderImageFileLoader.cpp
blobb80749b086b57148619a9a439ebac6d952ffb2bd
1 /*
2 * Copyright (C) 2023 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 "PictureFolderImageFileLoader.h"
11 #include "FileItem.h"
12 #include "FileItemList.h"
13 #include "Picture.h"
14 #include "ServiceBroker.h"
15 #include "TextureCache.h"
16 #include "filesystem/Directory.h"
17 #include "guilib/Texture.h"
18 #include "settings/Settings.h"
19 #include "settings/SettingsComponent.h"
20 #include "utils/FileExtensionProvider.h"
22 using namespace XFILE;
24 bool CPictureFolderImageFileLoader::CanLoad(const std::string& specialType) const
26 return specialType == "picturefolder";
29 std::unique_ptr<CTexture> CPictureFolderImageFileLoader::Load(const std::string& specialType,
30 const std::string& filePath,
31 unsigned int preferredWidth,
32 unsigned int preferredHeight) const
34 CFileItemList imagesInFolder;
35 CDirectory::GetDirectory(filePath, imagesInFolder,
36 CServiceBroker::GetFileExtensionProvider().GetPictureExtensions(),
37 DIR_FLAG_NO_FILE_DIRS);
39 for (int i = 0; i < imagesInFolder.Size();)
41 if (!imagesInFolder[i]->IsPicture() || imagesInFolder[i]->IsZIP() ||
42 imagesInFolder[i]->IsRAR() || imagesInFolder[i]->IsPlayList())
44 imagesInFolder.Remove(i);
46 else
47 i++;
49 if (imagesInFolder.IsEmpty())
51 return {};
54 imagesInFolder.Randomize();
55 std::vector<std::string> imagesToTile;
56 int size = std::min(4, imagesInFolder.Size());
57 imagesToTile.reserve(size);
58 for (int thumb = 0; thumb < size; thumb++)
60 imagesToTile.push_back(imagesInFolder[thumb]->GetPath());
63 return CPicture::CreateTiledThumb(imagesToTile);