本文整理汇总了C++中CTextureDatabase::SetTextureForPath方法的典型用法代码示例。如果您正苦于以下问题:C++ CTextureDatabase::SetTextureForPath方法的具体用法?C++ CTextureDatabase::SetTextureForPath怎么用?C++ CTextureDatabase::SetTextureForPath使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CTextureDatabase
的用法示例。
在下文中一共展示了CTextureDatabase::SetTextureForPath方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: FillThumb
bool CProgramThumbLoader::FillThumb(CFileItem &item)
{
// no need to do anything if we already have a thumb set
if (CheckAndCacheThumb(item) || item.HasThumbnail())
return true;
// see whether we have a cached image for this item
CStdString thumb = GetCachedThumb(item);
if (!thumb.IsEmpty())
{
item.SetThumbnailImage(CTextureCache::Get().CheckAndCacheImage(thumb));
return true;
}
thumb = GetLocalThumb(item);
if (!thumb.IsEmpty())
{
CTextureDatabase db;
if (db.Open())
db.SetTextureForPath(item.GetPath(), thumb);
thumb = CTextureCache::Get().CheckAndCacheImage(thumb);
}
item.SetThumbnailImage(thumb);
return true;
}
示例2: ProcessFoldersAndArchives
void CPictureThumbLoader::ProcessFoldersAndArchives(CFileItem *pItem)
{
if (pItem->HasThumbnail())
return;
CTextureDatabase db;
db.Open();
if (pItem->IsCBR() || pItem->IsCBZ())
{
CStdString strTBN(URIUtils::ReplaceExtension(pItem->GetPath(),".tbn"));
if (CFile::Exists(strTBN))
{
db.SetTextureForPath(pItem->GetPath(), "thumb", strTBN);
CTextureCache::Get().BackgroundCacheImage(strTBN);
pItem->SetThumbnailImage(strTBN);
return;
}
}
if ((pItem->m_bIsFolder || pItem->IsCBR() || pItem->IsCBZ()) && !pItem->m_bIsShareOrDrive && !pItem->IsParentFolder())
{
// first check for a folder.jpg
CStdString thumb = "folder.jpg";
CStdString strPath = pItem->GetPath();
if (pItem->IsCBR())
{
URIUtils::CreateArchivePath(strPath,"rar",pItem->GetPath(),"");
thumb = "cover.jpg";
}
if (pItem->IsCBZ())
{
URIUtils::CreateArchivePath(strPath,"zip",pItem->GetPath(),"");
thumb = "cover.jpg";
}
if (pItem->IsMultiPath())
strPath = CMultiPathDirectory::GetFirstPath(pItem->GetPath());
thumb = URIUtils::AddFileToFolder(strPath, thumb);
if (CFile::Exists(thumb))
{
db.SetTextureForPath(pItem->GetPath(), "thumb", thumb);
CTextureCache::Get().BackgroundCacheImage(thumb);
pItem->SetThumbnailImage(thumb);
return;
}
if (!pItem->IsPlugin())
{
// we load the directory, grab 4 random thumb files (if available) and then generate
// the thumb.
CFileItemList items;
CDirectory::GetDirectory(strPath, items, g_settings.m_pictureExtensions, DIR_FLAG_NO_FILE_DIRS);
// create the folder thumb by choosing 4 random thumbs within the folder and putting
// them into one thumb.
// count the number of images
for (int i=0; i < items.Size();)
{
if (!items[i]->IsPicture() || items[i]->IsZIP() || items[i]->IsRAR() || items[i]->IsPlayList())
{
items.Remove(i);
}
else
i++;
}
if (items.IsEmpty())
{
if (pItem->IsCBZ() || pItem->IsCBR())
{
CDirectory::GetDirectory(strPath, items, g_settings.m_pictureExtensions, DIR_FLAG_NO_FILE_DIRS);
for (int i=0;i<items.Size();++i)
{
CFileItemPtr item = items[i];
if (item->m_bIsFolder)
{
ProcessFoldersAndArchives(item.get());
pItem->SetThumbnailImage(items[i]->GetThumbnailImage());
pItem->SetIconImage(items[i]->GetIconImage());
return;
}
}
}
return; // no images in this folder
}
// randomize them
items.Randomize();
if (items.Size() < 4 || pItem->IsCBR() || pItem->IsCBZ())
{ // less than 4 items, so just grab the first thumb
items.Sort(SORT_METHOD_LABEL, SORT_ORDER_ASC);
CStdString thumb = CTextureCache::GetWrappedThumbURL(items[0]->GetPath());
db.SetTextureForPath(pItem->GetPath(), "thumb", thumb);
CTextureCache::Get().BackgroundCacheImage(thumb);
pItem->SetThumbnailImage(thumb);
}
else
{
// ok, now we've got the files to get the thumbs from, lets create it...
// we basically load the 4 images and combine them
//.........这里部分代码省略.........
示例3: OnContextButton
//.........这里部分代码省略.........
local->SetLabel(g_localizeStrings.Get(20017));
items.Add(local);
}
// and add a "no thumb" entry as well
CFileItemPtr nothumb(new CFileItem("thumb://None", false));
nothumb->SetIconImage(item->GetIconImage());
nothumb->SetLabel(g_localizeStrings.Get(20018));
items.Add(nothumb);
std::string strThumb;
VECSOURCES shares;
g_mediaManager.GetLocalDrives(shares);
if (!CGUIDialogFileBrowser::ShowAndGetImage(items, shares, g_localizeStrings.Get(1030), strThumb))
return false;
if (strThumb == "thumb://Current")
return true;
if (strThumb == "thumb://Local")
strThumb = folderThumb;
if (strThumb == "thumb://None")
strThumb = "";
if (!share->m_ignore)
{
CMediaSourceSettings::GetInstance().UpdateSource(type,share->strName,"thumbnail",strThumb);
CMediaSourceSettings::GetInstance().Save();
}
else if (!strThumb.empty())
{ // this is some sort of an auto-share, so store in the texture database
CTextureDatabase db;
if (db.Open())
db.SetTextureForPath(item->GetPath(), "thumb", strThumb);
}
CGUIMessage msg(GUI_MSG_NOTIFY_ALL,0,0,GUI_MSG_UPDATE_SOURCES);
g_windowManager.SendThreadMessage(msg);
return true;
}
case CONTEXT_BUTTON_ADD_LOCK:
{
// prompt user for mastercode when changing lock settings) only for default user
if (!g_passwordManager.IsMasterLockUnlocked(true))
return false;
std::string strNewPassword = "";
if (!CGUIDialogLockSettings::ShowAndGetLock(share->m_iLockMode,strNewPassword))
return false;
// password entry and re-entry succeeded, write out the lock data
share->m_iHasLock = 2;
CMediaSourceSettings::GetInstance().UpdateSource(type, share->strName, "lockcode", strNewPassword);
strNewPassword = StringUtils::Format("%i", share->m_iLockMode);
CMediaSourceSettings::GetInstance().UpdateSource(type, share->strName, "lockmode", strNewPassword);
CMediaSourceSettings::GetInstance().UpdateSource(type, share->strName, "badpwdcount", "0");
CMediaSourceSettings::GetInstance().Save();
CGUIMessage msg(GUI_MSG_NOTIFY_ALL,0,0,GUI_MSG_UPDATE_SOURCES);
g_windowManager.SendThreadMessage(msg);
return true;
}
case CONTEXT_BUTTON_RESET_LOCK:
{
// prompt user for profile lock when changing lock settings
if (!g_passwordManager.IsMasterLockUnlocked(true))
示例4: ProcessFoldersAndArchives
void CPictureThumbLoader::ProcessFoldersAndArchives(CFileItem *pItem)
{
if (pItem->HasArt("thumb"))
return;
CTextureDatabase db;
db.Open();
if ((pItem->m_bIsFolder) && !pItem->m_bIsShareOrDrive
&& !pItem->IsParentFolder() && !pItem->IsPath("add"))
{
// first check for a folder.jpg
std::string thumb = "folder.jpg";
CURL pathToUrl = pItem->GetURL();
if (pItem->IsMultiPath())
pathToUrl = CURL(CMultiPathDirectory::GetFirstPath(pItem->GetPath()));
thumb = URIUtils::AddFileToFolder(pathToUrl.Get(), thumb);
if (CFile::Exists(thumb))
{
db.SetTextureForPath(pItem->GetPath(), "thumb", thumb);
CTextureCache::GetInstance().BackgroundCacheImage(thumb);
pItem->SetArt("thumb", thumb);
return;
}
// we load the directory, grab 4 random thumb files (if available) and then generate
// the thumb.
CFileItemList items;
CDirectory::GetDirectory(pathToUrl, items, g_advancedSettings.m_pictureExtensions, DIR_FLAG_NO_FILE_DIRS);
// create the folder thumb by choosing 4 random thumbs within the folder and putting
// them into one thumb.
// count the number of images
for (int i=0; i < items.Size();)
{
if (!items[i]->IsPicture() || items[i]->IsPlayList())
{
items.Remove(i);
}
else
i++;
}
if (items.IsEmpty())
return; // no images in this folder
// randomize them
items.Randomize();
if (items.Size() < 4)
{ // less than 4 items, so just grab the first thumb
items.Sort(SortByLabel, SortOrderAscending);
std::string thumb = CTextureUtils::GetWrappedThumbURL(items[0]->GetPath());
db.SetTextureForPath(pItem->GetPath(), "thumb", thumb);
CTextureCache::GetInstance().BackgroundCacheImage(thumb);
pItem->SetArt("thumb", thumb);
}
else
{
// ok, now we've got the files to get the thumbs from, lets create it...
// we basically load the 4 images and combine them
vector<string> files;
for (int thumb = 0; thumb < 4; thumb++)
files.push_back(items[thumb]->GetPath());
std::string thumb = CTextureUtils::GetWrappedImageURL(pItem->GetPath(), "picturefolder");
std::string relativeCacheFile = CTextureCache::GetCacheFile(thumb) + ".png";
if (CPicture::CreateTiledThumb(files, CTextureCache::GetCachedPath(relativeCacheFile)))
{
CTextureDetails details;
details.file = relativeCacheFile;
details.width = g_advancedSettings.GetThumbSize();
details.height = g_advancedSettings.GetThumbSize();
CTextureCache::GetInstance().AddCachedTexture(thumb, details);
db.SetTextureForPath(pItem->GetPath(), "thumb", thumb);
pItem->SetArt("thumb", CTextureCache::GetCachedPath(relativeCacheFile));
}
}
// refill in the icon to get it to update
pItem->FillInDefaultIcon();
}
}
示例5: OnContextButton
//.........这里部分代码省略.........
return false;
if (strThumb == "thumb://Current")
return true;
if (strThumb == "thumb://Local")
strThumb = folderThumb;
if (strThumb == "thumb://None")
strThumb = "";
if (!share->m_ignore)
{
g_settings.UpdateSource(type,share->strName,"thumbnail",strThumb);
g_settings.SaveSources();
}
else if (!strThumb.IsEmpty())
{ // this is some sort of an auto-share, so we have to cache it based on the criteria we use to retrieve them
CStdString cachedThumb;
if (type == "music")
{
cachedThumb = item->m_strPath;
URIUtils::RemoveSlashAtEnd(cachedThumb);
cachedThumb = CUtil::GetCachedMusicThumb(cachedThumb);
}
else if (type == "video")
cachedThumb = item->GetCachedVideoThumb();
else // assume "programs"
{ // store the thumb for this share
CTextureDatabase db;
if (db.Open())
{
cachedThumb = CTextureCache::GetUniqueImage(item->m_strPath, URIUtils::GetExtension(strThumb));
db.SetTextureForPath(item->m_strPath, cachedThumb);
}
}
XFILE::CFile::Cache(strThumb, cachedThumb);
}
CGUIMessage msg(GUI_MSG_NOTIFY_ALL,0,0,GUI_MSG_UPDATE_SOURCES);
g_windowManager.SendThreadMessage(msg);
return true;
}
case CONTEXT_BUTTON_ADD_LOCK:
{
// prompt user for mastercode when changing lock settings) only for default user
if (!g_passwordManager.IsMasterLockUnlocked(true))
return false;
CStdString strNewPassword = "";
if (!CGUIDialogLockSettings::ShowAndGetLock(share->m_iLockMode,strNewPassword))
return false;
// password entry and re-entry succeeded, write out the lock data
share->m_iHasLock = 2;
g_settings.UpdateSource(type, share->strName, "lockcode", strNewPassword);
strNewPassword.Format("%i",share->m_iLockMode);
g_settings.UpdateSource(type, share->strName, "lockmode", strNewPassword);
g_settings.UpdateSource(type, share->strName, "badpwdcount", "0");
g_settings.SaveSources();
CGUIMessage msg(GUI_MSG_NOTIFY_ALL,0,0,GUI_MSG_UPDATE_SOURCES);
g_windowManager.SendThreadMessage(msg);
return true;
}
case CONTEXT_BUTTON_RESET_LOCK: