nim_duilib/duilib/Utils/Shadow.h

98 lines
1.8 KiB
C
Raw Normal View History

2019-04-19 17:19:57 +08:00
#ifndef UI_UTILS_SHADOW_H_
#define UI_UTILS_SHADOW_H_
#pragma once
namespace ui
{
class Box;
class UILIB_API Shadow
{
public:
Shadow();
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƿ񸽼<EFBFBD><EFBFBD><EFBFBD>ӰЧ<EFBFBD><EFBFBD>
* @param[in] bShadowAttached <EFBFBD><EFBFBD><EFBFBD><EFBFBD> true Ϊ<EFBFBD>ǣ<EFBFBD>false Ϊ<EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD>
*/
void SetShadowAttached(bool bShadowAttached) { m_bShadowAttached = bShadowAttached; }
/**
* @brief <EFBFBD>ж<EFBFBD><EFBFBD>Ƿ<EFBFBD><EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD> true <EFBFBD><EFBFBD>ʾ<EFBFBD>Ѿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ false
*/
bool IsShadowAttached() const { return m_bShadowAttached; }
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD>ľŹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] rect Ҫ<EFBFBD><EFBFBD><EFBFBD>õľŹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD>
*/
void SetShadowCorner(const UiRect &rect);
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>Ӱ<EFBFBD>ľŹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD>ľŹ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*/
UiRect GetShadowCorner() const;
/**
* @brief <EFBFBD><EFBFBD><EFBFBD>ݳ<EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD>Χ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD>߿<EFBFBD>
* @return <EFBFBD><EFBFBD>
*/
void ResetShadowBox();
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӰͼƬ
* @param[in] image ͼƬ·<EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD>
*/
void SetShadowImage(const std::wstring &image);
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD>ӰͼƬλ<EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ӰͼƬλ<EFBFBD><EFBFBD>
*/
std::wstring GetShadowImage() const;
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD>ӵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param[in] pRoot <EFBFBD><EFBFBD><EFBFBD>ڵĶ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD>ظ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
*/
Box* AttachShadow(Box* pRoot);
/**
* @brief <EFBFBD><EFBFBD><EFBFBD>ô<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>󻯻<EFBFBD><EFBFBD>ǻ<EFBFBD>ԭ״̬
* @param[in] isMaximized <EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ true <EFBFBD><EFBFBD>ʾ<EFBFBD><EFBFBD><EFBFBD>󻯣<EFBFBD>false Ϊ<EFBFBD><EFBFBD>ԭ<EFBFBD><EFBFBD>ʼ״̬
* @return <EFBFBD><EFBFBD>
*/
void MaximizedOrRestored(bool isMaximized);
/**
* @brief <EFBFBD><EFBFBD>ȡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ӱ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
*/
Control* GetRoot();
/**
* @brief <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͼƬ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @return <EFBFBD><EFBFBD>
*/
void ClearImageCache();
private:
bool m_bShadowAttached;
bool m_bUseDefaultImage;
std::wstring m_strImage;
UiRect m_rcCurShadowCorner;
UiRect m_rcDefaultShadowCorner;
UiRect m_rcShadowCornerBackup;
Box* m_pRoot;
};
}
#endif // UI_UTILS_SHADOW_H_