mirror of
https://port.numenaute.org/aleajactaest/khanat-opennel-code.git
synced 2024-11-10 01:09:50 +00:00
Added: Image mouseover effect
--HG-- branch : develop
This commit is contained in:
parent
c6a0b3ed9b
commit
f80c8e7d81
4 changed files with 53 additions and 20 deletions
|
@ -807,25 +807,27 @@ namespace NLGUI
|
||||||
|
|
||||||
// ImageDownload system
|
// ImageDownload system
|
||||||
enum TDataType {ImgType= 0, BnpType};
|
enum TDataType {ImgType= 0, BnpType};
|
||||||
|
enum TImageType {NormalImage=0, OverImage};
|
||||||
|
|
||||||
struct CDataImageDownload
|
struct CDataImageDownload
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CDataImageDownload(CViewBase *img, CStyleParams style): Image(img), Style(style)
|
CDataImageDownload(CViewBase *img, CStyleParams style, TImageType type): Image(img), Style(style), Type(type)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
public:
|
public:
|
||||||
CViewBase * Image;
|
CViewBase * Image;
|
||||||
CStyleParams Style;
|
CStyleParams Style;
|
||||||
|
TImageType Type;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct CDataDownload
|
struct CDataDownload
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
CDataDownload(const std::string &u, const std::string &d, TDataType t, CViewBase *i, const std::string &s, const std::string &m, const CStyleParams &style = CStyleParams())
|
CDataDownload(const std::string &u, const std::string &d, TDataType t, CViewBase *i, const std::string &s, const std::string &m, const CStyleParams &style = CStyleParams(), const TImageType imagetype = NormalImage)
|
||||||
: data(NULL), fp(NULL), url(u), dest(d), type(t), luaScript(s), md5sum(m), redirects(0)
|
: data(NULL), fp(NULL), url(u), dest(d), type(t), luaScript(s), md5sum(m), redirects(0)
|
||||||
{
|
{
|
||||||
if (t == ImgType) imgs.push_back(CDataImageDownload(i, style));
|
if (t == ImgType) imgs.push_back(CDataImageDownload(i, style, imagetype));
|
||||||
}
|
}
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
@ -848,12 +850,12 @@ namespace NLGUI
|
||||||
|
|
||||||
void initImageDownload();
|
void initImageDownload();
|
||||||
void checkImageDownload();
|
void checkImageDownload();
|
||||||
void addImageDownload(const std::string &url, CViewBase *img, const CStyleParams &style = CStyleParams());
|
void addImageDownload(const std::string &url, CViewBase *img, const CStyleParams &style = CStyleParams(), const TImageType type = NormalImage);
|
||||||
std::string localImageName(const std::string &url);
|
std::string localImageName(const std::string &url);
|
||||||
std::string getAbsoluteUrl(const std::string &url);
|
std::string getAbsoluteUrl(const std::string &url);
|
||||||
|
|
||||||
bool isTrustedDomain(const std::string &domain);
|
bool isTrustedDomain(const std::string &domain);
|
||||||
void setImage(CViewBase *view, const std::string &file);
|
void setImage(CViewBase *view, const std::string &file, const TImageType type);
|
||||||
void setImageSize(CViewBase *view, const CStyleParams &style = CStyleParams());
|
void setImageSize(CViewBase *view, const CStyleParams &style = CStyleParams());
|
||||||
|
|
||||||
// BnpDownload system
|
// BnpDownload system
|
||||||
|
|
|
@ -149,6 +149,8 @@ namespace NLGUI
|
||||||
HTML_ATTR(IMG,USEMAP),
|
HTML_ATTR(IMG,USEMAP),
|
||||||
HTML_ATTR(IMG,VSPACE),
|
HTML_ATTR(IMG,VSPACE),
|
||||||
HTML_ATTR(IMG,WIDTH),
|
HTML_ATTR(IMG,WIDTH),
|
||||||
|
// not sorted to keep enum values
|
||||||
|
HTML_ATTR(IMG,DATA_OVER_SRC),
|
||||||
};
|
};
|
||||||
|
|
||||||
enum
|
enum
|
||||||
|
|
|
@ -172,10 +172,12 @@ namespace NLGUI
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update view after download has finished
|
// Update view after download has finished
|
||||||
void CGroupHTML::setImage(CViewBase * view, const string &file)
|
void CGroupHTML::setImage(CViewBase * view, const string &file, const TImageType type)
|
||||||
{
|
{
|
||||||
CCtrlButton *btn = dynamic_cast<CCtrlButton*>(view);
|
CCtrlButton *btn = dynamic_cast<CCtrlButton*>(view);
|
||||||
if(btn)
|
if(btn)
|
||||||
|
{
|
||||||
|
if (type == NormalImage)
|
||||||
{
|
{
|
||||||
btn->setTexture (file);
|
btn->setTexture (file);
|
||||||
btn->setTexturePushed(file);
|
btn->setTexturePushed(file);
|
||||||
|
@ -186,6 +188,11 @@ namespace NLGUI
|
||||||
paragraphChange();
|
paragraphChange();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
{
|
||||||
|
btn->setTextureOver(file);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
{
|
{
|
||||||
CViewBitmap *btm = dynamic_cast<CViewBitmap*>(view);
|
CViewBitmap *btm = dynamic_cast<CViewBitmap*>(view);
|
||||||
if(btm)
|
if(btm)
|
||||||
|
@ -389,7 +396,7 @@ namespace NLGUI
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add a image download request in the multi_curl
|
// Add a image download request in the multi_curl
|
||||||
void CGroupHTML::addImageDownload(const string &url, CViewBase *img, const CStyleParams &style)
|
void CGroupHTML::addImageDownload(const string &url, CViewBase *img, const CStyleParams &style, TImageType type)
|
||||||
{
|
{
|
||||||
string finalUrl = getAbsoluteUrl(url);
|
string finalUrl = getAbsoluteUrl(url);
|
||||||
|
|
||||||
|
@ -401,7 +408,7 @@ namespace NLGUI
|
||||||
#ifdef LOG_DL
|
#ifdef LOG_DL
|
||||||
nlwarning("already downloading '%s' img %p", finalUrl.c_str(), img);
|
nlwarning("already downloading '%s' img %p", finalUrl.c_str(), img);
|
||||||
#endif
|
#endif
|
||||||
Curls[i].imgs.push_back(CDataImageDownload(img, style));
|
Curls[i].imgs.push_back(CDataImageDownload(img, style, type));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -412,7 +419,7 @@ namespace NLGUI
|
||||||
nlwarning("add to download '%s' dest '%s' img %p", finalUrl.c_str(), dest.c_str(), img);
|
nlwarning("add to download '%s' dest '%s' img %p", finalUrl.c_str(), dest.c_str(), img);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
Curls.push_back(CDataDownload(finalUrl, dest, ImgType, img, "", "", style));
|
Curls.push_back(CDataDownload(finalUrl, dest, ImgType, img, "", "", style, type));
|
||||||
if (Curls.size() < options.curlMaxConnections) {
|
if (Curls.size() < options.curlMaxConnections) {
|
||||||
if (!startCurlDownload(Curls.back()))
|
if (!startCurlDownload(Curls.back()))
|
||||||
{
|
{
|
||||||
|
@ -728,7 +735,7 @@ namespace NLGUI
|
||||||
CFile::moveFile(it->dest, tmpfile);
|
CFile::moveFile(it->dest, tmpfile);
|
||||||
for(uint i = 0; i < it->imgs.size(); i++)
|
for(uint i = 0; i < it->imgs.size(); i++)
|
||||||
{
|
{
|
||||||
setImage(it->imgs[i].Image, it->dest);
|
setImage(it->imgs[i].Image, it->dest, it->imgs[i].Type);
|
||||||
setImageSize(it->imgs[i].Image, it->imgs[i].Style);
|
setImageSize(it->imgs[i].Image, it->imgs[i].Style);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1695,17 +1702,25 @@ namespace NLGUI
|
||||||
if (present[MY_HTML_IMG_TITLE] && value[MY_HTML_IMG_TITLE])
|
if (present[MY_HTML_IMG_TITLE] && value[MY_HTML_IMG_TITLE])
|
||||||
tooltip = value[MY_HTML_IMG_TITLE];
|
tooltip = value[MY_HTML_IMG_TITLE];
|
||||||
|
|
||||||
|
// Mouse over image
|
||||||
|
const char *overSrc = value[MY_HTML_IMG_SRC];
|
||||||
|
if (present[MY_HTML_IMG_DATA_OVER_SRC] && value[MY_HTML_IMG_DATA_OVER_SRC])
|
||||||
|
{
|
||||||
|
overSrc = value[MY_HTML_IMG_DATA_OVER_SRC];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
if (getA() && getParent () && getParent ()->getParent())
|
if (getA() && getParent () && getParent ()->getParent())
|
||||||
{
|
{
|
||||||
string params = "name=" + getId() + "|url=" + getLink ();
|
string params = "name=" + getId() + "|url=" + getLink ();
|
||||||
addButton(CCtrlButton::PushButton, value[MY_HTML_IMG_SRC], value[MY_HTML_IMG_SRC], value[MY_HTML_IMG_SRC],
|
addButton(CCtrlButton::PushButton, value[MY_HTML_IMG_SRC], value[MY_HTML_IMG_SRC], value[MY_HTML_IMG_SRC],
|
||||||
"", "browse", params.c_str(), tooltip, style);
|
overSrc, "browse", params.c_str(), tooltip, style);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
if (tooltip)
|
if (tooltip || overSrc)
|
||||||
{
|
{
|
||||||
addButton(CCtrlButton::PushButton, value[MY_HTML_IMG_SRC], value[MY_HTML_IMG_SRC], value[MY_HTML_IMG_SRC],
|
addButton(CCtrlButton::PushButton, value[MY_HTML_IMG_SRC], value[MY_HTML_IMG_SRC], value[MY_HTML_IMG_SRC],
|
||||||
"", "", "", tooltip, style);
|
overSrc, "", "", tooltip, style);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
@ -4606,6 +4621,18 @@ namespace NLGUI
|
||||||
}
|
}
|
||||||
|
|
||||||
string over = overBitmap.empty()?"":CFile::getPath(overBitmap) + CFile::getFilenameWithoutExtension(overBitmap) + ".tga";
|
string over = overBitmap.empty()?"":CFile::getPath(overBitmap) + CFile::getFilenameWithoutExtension(overBitmap) + ".tga";
|
||||||
|
// schedule mouseover bitmap for download if its different from normal
|
||||||
|
if (!over.empty() && !CPath::exists(over))
|
||||||
|
{
|
||||||
|
if (overBitmap != normalBitmap)
|
||||||
|
{
|
||||||
|
over = localImageName(overBitmap);
|
||||||
|
if (!CFile::fileExists(over))
|
||||||
|
{
|
||||||
|
addImageDownload(overBitmap, ctrlButton, style, TImageType::OverImage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ctrlButton->setType (type);
|
ctrlButton->setType (type);
|
||||||
if (!normal.empty())
|
if (!normal.empty())
|
||||||
|
|
|
@ -150,6 +150,8 @@ namespace NLGUI
|
||||||
HTML_ATTR(IMG,USEMAP),
|
HTML_ATTR(IMG,USEMAP),
|
||||||
HTML_ATTR(IMG,VSPACE),
|
HTML_ATTR(IMG,VSPACE),
|
||||||
HTML_ATTR(IMG,WIDTH),
|
HTML_ATTR(IMG,WIDTH),
|
||||||
|
// not sorted to keep enum values
|
||||||
|
HTML_ATTR(IMG,DATA-OVER-SRC),
|
||||||
{ 0 }
|
{ 0 }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue