用于EagleEye3.0 规则集漏报和误报测试的示例项目,项目收集于github和gitee
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

129 lines
2.5 KiB

#include "stdafx.h"
#include "sdemoskin.h"
#include "helper/SDIBHelper.h"
namespace SOUI
{
SDemoSkin::SDemoSkin():m_csSize(0, 0),m_bkColor(RGB(255, 255, 255)), m_bIsColor(false), m_ISetOrLoadSkinHandler(NULL)
{
}
SDemoSkin::SDemoSkin(ISetOrLoadSkinHandler *handle) : m_csSize(0, 0), m_bkColor(RGB(255, 255, 255)), m_bIsColor(false), m_ISetOrLoadSkinHandler(handle)
{
}
bool SDemoSkin::SetImage(SStringW imgfile)
{
m_bIsColor = false;
m_FilePath = imgfile;
IBitmap *image = LOADIMAGE2(L"file:" + imgfile);
if (image)
{
SSkinImgList::SetImage(image);
image->Release();
return true;
}
return false;
}
bool SDemoSkin::SetColor(COLORREF bkColor)
{
m_FilePath.Empty();
m_bIsColor = true;
m_bkColor = bkColor;
return true;
}
void SDemoSkin::ClearSkin()
{
m_FilePath.Empty();
m_bIsColor = false;
SSkinImgList::SetImage(NULL);
}
SIZE SDemoSkin::GetSkinSize()
{
return SSkinImgList::GetSkinSize();
}
BOOL SDemoSkin::IgnoreState()
{
return TRUE;
}
bool SDemoSkin::SaveSkin()
{
if (m_ISetOrLoadSkinHandler == NULL)
return false;
SkinSaveInf saveInf;
if (m_bIsColor)
{
saveInf.color = m_bkColor;
return m_ISetOrLoadSkinHandler->SaveSkin(color, saveInf);
}
else if(!m_FilePath.IsEmpty())
{
saveInf.margin = m_rcMargin;
saveInf.filepath = m_FilePath;
return m_ISetOrLoadSkinHandler->SaveSkin(sys, saveInf);
}
else
{
return m_ISetOrLoadSkinHandler->SaveSkin(builtin, saveInf);
}
return false;
}
bool SDemoSkin::LoadSkin(SkinType skinType, SkinLoadInf &skinLoadInf)
{
switch (skinType)
{
case color:
return SetColor(skinLoadInf.color);
case sys:
m_rcMargin = skinLoadInf.margin;
return SetImage(skinLoadInf.filepath);
default:
break;
}
return false;
}
int SDemoSkin::GetStates()
{
return 1;
}
void SDemoSkin::SetHander(ISetOrLoadSkinHandler* skinhander)
{
m_ISetOrLoadSkinHandler = skinhander;
}
void SDemoSkin::_Draw(IRenderTarget * pRT, LPCRECT rcDraw, DWORD dwState, BYTE byAlpha)
{
if (m_bIsColor)
{
COLORREF bkColor = m_bkColor | (byAlpha << 24);
pRT->FillSolidRect(rcDraw, bkColor);
}
else if (GetImage())
{
SIZE sz = GetSkinSize();
CPoint pt(0, 0);
CRect rcSour(pt, sz);
pRT->DrawBitmap9Patch(rcDraw, GetImage(), &rcSour, &m_rcMargin, GetExpandMode(), byAlpha);
}
}
COLORREF SDemoSkin::GetThemeColor() const
{
if (m_bIsColor)
return m_bkColor;
else if (GetImage())
return SDIBHelper::CalcAvarageColor(GetImage());
else
return CR_INVALID;
}
}