add: Clipping mask.

This commit is contained in:
2024-06-01 17:28:20 +01:00
parent a2bac7a5f3
commit 96a5766760
13 changed files with 589 additions and 128 deletions

View File

@ -26,7 +26,11 @@ void CGraphicExpandedImageInstance::Delete(CGraphicExpandedImageInstance* pkImgI
ms_kPool.Free(pkImgInst);
}
#if defined(__BL_CLIP_MASK__)
void CGraphicExpandedImageInstance::OnRender(RECT* pClipRect)
#else
void CGraphicExpandedImageInstance::OnRender()
#endif
{
CGraphicImage * pImage = m_roImage.GetPointer();
CGraphicTexture * pTexture = pImage->GetTexturePointer();
@ -116,7 +120,7 @@ void CGraphicExpandedImageInstance::OnRender()
break;
}
// 2004.11.18.myevan.ctrl+alt+del <20>ݺ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ƨ<><C6A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// 2004.11.18.myevan.ctrl+alt+del <20>ݺ<EFBFBD> <20><><EFBFBD><EFBFBD> ƨ<><C6A8><EFBFBD> <20><><EFBFBD><EFBFBD>
if (CGraphicBase::SetPDTStream(vertices, 4))
{
CGraphicBase::SetDefaultIndexBuffer(CGraphicBase::DEFAULT_IB_FILL_RECT);

View File

@ -37,7 +37,11 @@ class CGraphicExpandedImageInstance : public CGraphicImageInstance
protected:
void Initialize();
#if defined(__BL_CLIP_MASK__)
void OnRender(RECT* pClipRect);
#else
void OnRender();
#endif
void OnSetImagePointer();
BOOL OnIsType(DWORD dwType);

View File

@ -31,17 +31,29 @@ void CGraphicImageInstance::Delete(CGraphicImageInstance* pkImgInst)
ms_kPool.Free(pkImgInst);
}
#if defined(__BL_CLIP_MASK__)
void CGraphicImageInstance::Render(RECT* pClipRect)
#else
void CGraphicImageInstance::Render()
#endif
{
if (IsEmpty())
return;
assert(!IsEmpty());
#if defined(__BL_CLIP_MASK__)
OnRender(pClipRect);
#else
OnRender();
#endif
}
#if defined(__BL_CLIP_MASK__)
void CGraphicImageInstance::OnRender(RECT* pClipRect)
#else
void CGraphicImageInstance::OnRender()
#endif
{
CGraphicImage * pImage = m_roImage.GetPointer();
CGraphicTexture * pTexture = pImage->GetTexturePointer();
@ -56,34 +68,109 @@ void CGraphicImageInstance::OnRender()
float sv = c_rRect.top * texReverseHeight;
float eu = (c_rRect.left + (c_rRect.right-c_rRect.left)) * texReverseWidth;
float ev = (c_rRect.top + (c_rRect.bottom-c_rRect.top)) * texReverseHeight;
TPDTVertex vertices[4];
vertices[0].position.x = m_v2Position.x-0.5f;
vertices[0].position.y = m_v2Position.y-0.5f;
vertices[0].position.z = 0.0f;
vertices[0].texCoord = TTextureCoordinate(su, sv);
vertices[0].diffuse = m_DiffuseColor;
vertices[1].position.x = m_v2Position.x + fimgWidth-0.5f;
vertices[1].position.y = m_v2Position.y-0.5f;
vertices[1].position.z = 0.0f;
vertices[1].texCoord = TTextureCoordinate(eu, sv);
vertices[1].diffuse = m_DiffuseColor;
#if defined(__BL_CLIP_MASK__)
float sx = m_v2Position.x - 0.5f;
float sy = m_v2Position.y - 0.5f;
float ex = m_v2Position.x + fimgWidth - 0.5f;
float ey = m_v2Position.y + fimgHeight - 0.5f;
vertices[2].position.x = m_v2Position.x-0.5f;
vertices[2].position.y = m_v2Position.y + fimgHeight-0.5f;
vertices[2].position.z = 0.0f;
vertices[2].texCoord = TTextureCoordinate(su, ev);
vertices[2].diffuse = m_DiffuseColor;
if (pClipRect)
{
const float width = ex - sx;
const float height = ey - sy;
const float uDiff = eu - su;
const float vDiff = ev - sv;
vertices[3].position.x = m_v2Position.x + fimgWidth-0.5f;
vertices[3].position.y = m_v2Position.y + fimgHeight-0.5f;
vertices[3].position.z = 0.0f;
vertices[3].texCoord = TTextureCoordinate(eu, ev);
vertices[3].diffuse = m_DiffuseColor;
if (ex < pClipRect->left)
return;
// 2004.11.18.myevan.ctrl+alt+del <20>ݺ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ƨ<><C6A8><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
if (ey < pClipRect->top)
return;
if (sx > pClipRect->right)
return;
if (sy > pClipRect->bottom)
return;
if (sx < pClipRect->left)
{
su += (pClipRect->left - sx) / width * uDiff;
sx = pClipRect->left;
}
if (sy < pClipRect->top)
{
sv += (pClipRect->top - sy) / height * vDiff;
sy = pClipRect->top;
}
if (ex > pClipRect->right)
{
eu -= (ex - pClipRect->right) / width * uDiff;
ex = pClipRect->right;
}
if (ey > pClipRect->bottom)
{
ev -= (ey - pClipRect->bottom) / height * vDiff;
ey = pClipRect->bottom;
}
}
TPDTVertex vertices[4];
vertices[0].position.x = sx;
vertices[0].position.y = sy;
vertices[0].position.z = 0.0f;
vertices[0].texCoord = TTextureCoordinate(su, sv);
vertices[0].diffuse = m_DiffuseColor;
vertices[1].position.x = ex;
vertices[1].position.y = sy;
vertices[1].position.z = 0.0f;
vertices[1].texCoord = TTextureCoordinate(eu, sv);
vertices[1].diffuse = m_DiffuseColor;
vertices[2].position.x = sx;
vertices[2].position.y = ey;
vertices[2].position.z = 0.0f;
vertices[2].texCoord = TTextureCoordinate(su, ev);
vertices[2].diffuse = m_DiffuseColor;
vertices[3].position.x = ex;
vertices[3].position.y = ey;
vertices[3].position.z = 0.0f;
vertices[3].texCoord = TTextureCoordinate(eu, ev);
vertices[3].diffuse = m_DiffuseColor;
#else
TPDTVertex vertices[4];
vertices[0].position.x = m_v2Position.x - 0.5f;
vertices[0].position.y = m_v2Position.y - 0.5f;
vertices[0].position.z = 0.0f;
vertices[0].texCoord = TTextureCoordinate(su, sv);
vertices[0].diffuse = m_DiffuseColor;
vertices[1].position.x = m_v2Position.x + fimgWidth - 0.5f;
vertices[1].position.y = m_v2Position.y - 0.5f;
vertices[1].position.z = 0.0f;
vertices[1].texCoord = TTextureCoordinate(eu, sv);
vertices[1].diffuse = m_DiffuseColor;
vertices[2].position.x = m_v2Position.x - 0.5f;
vertices[2].position.y = m_v2Position.y + fimgHeight - 0.5f;
vertices[2].position.z = 0.0f;
vertices[2].texCoord = TTextureCoordinate(su, ev);
vertices[2].diffuse = m_DiffuseColor;
vertices[3].position.x = m_v2Position.x + fimgWidth - 0.5f;
vertices[3].position.y = m_v2Position.y + fimgHeight - 0.5f;
vertices[3].position.z = 0.0f;
vertices[3].texCoord = TTextureCoordinate(eu, ev);
vertices[3].diffuse = m_DiffuseColor;
#endif
// 2004.11.18.myevan.ctrl+alt+del <20>ݺ<EFBFBD> <20><><EFBFBD><EFBFBD> ƨ<><C6A8><EFBFBD> <20><><EFBFBD><EFBFBD>
if (CGraphicBase::SetPDTStream(vertices, 4))
{
CGraphicBase::SetDefaultIndexBuffer(CGraphicBase::DEFAULT_IB_FILL_RECT);
@ -207,7 +294,7 @@ void CGraphicImageInstance::Initialize()
void CGraphicImageInstance::Destroy()
{
m_roImage.SetPointer(NULL); // CRef <20><><EFBFBD><EFBFBD> <20><><EFBFBD>۷<EFBFBD><DBB7><EFBFBD> ī<><C4AB>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>.
m_roImage.SetPointer(NULL); // CRef <20><><EFBFBD><EFBFBD> <20><><EFBFBD>۷<EFBFBD><DBB7><EFBFBD> ī<><C4AB>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>.
Initialize();
}

View File

@ -4,6 +4,7 @@
#include "GrpIndexBuffer.h"
#include "GrpVertexBufferDynamic.h"
#include "Pool.h"
#include "../UserInterface/Locale_inc.h"
class CGraphicImageInstance
{
@ -17,7 +18,11 @@ class CGraphicImageInstance
void Destroy();
#if defined(__BL_CLIP_MASK__)
void Render(RECT* pClipRect = NULL);
#else
void Render();
#endif
void SetDiffuseColor(float fr, float fg, float fb, float fa);
void SetPosition(float fx, float fy);
@ -38,7 +43,11 @@ class CGraphicImageInstance
protected:
void Initialize();
#if defined(__BL_CLIP_MASK__)
virtual void OnRender(RECT* pClipRect);
#else
virtual void OnRender();
#endif
virtual void OnSetImagePointer();
virtual BOOL OnIsType(DWORD dwType);

View File

@ -6,6 +6,7 @@
#include "../EterLocale/StringCodec.h"
#include "../EterBase/Utils.h"
#include "../EterLocale/Arabic.h"
#include "../UserInterface/Locale_inc.h"
extern DWORD GetDefaultCodePage();
@ -121,12 +122,12 @@ int ReadToken(const char* token)
void CGraphicTextInstance::Update()
{
if (m_isUpdate) // <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20>ٲ<EFBFBD><D9B2><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20>Ѵ<EFBFBD>.
if (m_isUpdate) // <20><><EFBFBD>ڿ<EFBFBD><DABF><EFBFBD> <20>ٲ<EFBFBD><D9B2><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʈ <20>Ѵ<EFBFBD>.
return;
if (m_roText.IsNull())
{
Tracef("CGraphicTextInstance::Update - <20><>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾҽ<CABE><D2BD>ϴ<EFBFBD>\n");
Tracef("CGraphicTextInstance::Update - <20><>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʾҽ<CABE><D2BD>ϴ<EFBFBD>\n");
return;
}
@ -139,7 +140,7 @@ void CGraphicTextInstance::Update()
UINT defCodePage = GetDefaultCodePage();
UINT dataCodePage = defCodePage; // <20>ƶ<EFBFBD> <20><> <20><>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> UTF8 <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
UINT dataCodePage = defCodePage; // <20>ƶ<EFBFBD> <20><> <20><>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> UTF8 <20><> <20><><EFBFBD><EFBFBD>Ϸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
CGraphicFontTexture::TCharacterInfomation* pSpaceInfo = pFontTexture->GetCharacterInfomation(dataCodePage, ' ');
@ -185,7 +186,7 @@ void CGraphicTextInstance::Update()
bool isEnglish = true;
int nEnglishBase = wArabicTextLen - 1;
//<<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ũ>>
//<<<3C><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ũ>>
int x = 0;
int len;
@ -194,7 +195,7 @@ void CGraphicTextInstance::Update()
std::wstring hyperlinkBuffer;
int no_hyperlink = 0;
// <20>ɺ<EFBFBD><C9BA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƶ<EFBFBD><C6B6><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE>Ѵ<EFBFBD>
// <20>ɺ<EFBFBD><C9BA><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ƶ<EFBFBD><C6B6><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>ؾ<EFBFBD><D8BE>Ѵ<EFBFBD>
if (Arabic_IsInSymbol(wArabicText[wArabicTextLen - 1]))
{
isEnglish = false;
@ -208,24 +209,24 @@ void CGraphicTextInstance::Update()
if (isEnglish)
{
// <<<3C>ɺ<EFBFBD><C9BA><EFBFBD> <20><><EFBFBD><EFBFBD> (ex. <20><>ȣ, <20><><EFBFBD><EFBFBD>)>> -> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>.
// <<(<28>ɺ<EFBFBD><C9BA><EFBFBD> <20>ƴ<EFBFBD> <20>͵<EFBFBD> : <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>, <20>ƶ<EFBFBD><C6B6><EFBFBD>)>>
// (1) <20><> <20><><EFBFBD><EFBFBD> <20>ɺ<EFBFBD> or
// <<<3C>ɺ<EFBFBD><C9BA><EFBFBD> <20><><EFBFBD> (ex. <20><>ȣ, <20><><EFBFBD><EFBFBD>)>> -> <20><><EFBFBD><EFBFBD> <20><><EFBFBD> <20><><EFBFBD><EFBFBD>.
// <<(<28>ɺ<EFBFBD><C9BA><EFBFBD> <20>ƴ<EFBFBD> <20>͵<EFBFBD> : <20><><EFBFBD><EFBFBD>, <20><><EFBFBD><EFBFBD>, <20>ƶ<EFBFBD><C6B6><EFBFBD>)>>
// (1) <20><> <20><><EFBFBD><EFBFBD> <20>ɺ<EFBFBD> or
// (2)
// 1) <20><> <20><><EFBFBD>ڰ<EFBFBD> <20>ƶ<EFBFBD><C6B6><EFBFBD> <20>ƴ<EFBFBD> &&
// 2) <20><> <20><><EFBFBD>ڰ<EFBFBD> <20>ƶ<EFBFBD><C6B6><EFBFBD> <20>ƴ<EFBFBD> &&
// 3) <20><> <20><><EFBFBD>ڰ<EFBFBD> <20>ɺ<EFBFBD>'|'<27><> <20>ƴ<EFBFBD> &&
// 1) <20><> <20><><EFBFBD>ڰ<EFBFBD> <20>ƶ<EFBFBD><C6B6><EFBFBD> <20>ƴ<EFBFBD> &&
// 2) <20><> <20><><EFBFBD>ڰ<EFBFBD> <20>ƶ<EFBFBD><C6B6><EFBFBD> <20>ƴ<EFBFBD> &&
// 3) <20><> <20><><EFBFBD>ڰ<EFBFBD> <20>ɺ<EFBFBD>'|'<27><> <20>ƴ<EFBFBD> &&
// or
// (3) <20><><EFBFBD><EFBFBD> <20>ɺ<EFBFBD><C9BA><EFBFBD> '|'
// <<<3C>ƶ<EFBFBD><C6B6><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ѿ<D1BE><EEB0A1> <20><><EFBFBD><EFBFBD> : <20>ɺ<EFBFBD><C9BA><EFBFBD><EFBFBD><EFBFBD>.>>
// 1) <20>ձ<EFBFBD><D5B1><EFBFBD> <20>ƶ<EFBFBD><C6B6><EFBFBD>
// 2) <20>ޱ<EFBFBD><DEB1><EFBFBD> <20>ƶ<EFBFBD><C6B6><EFBFBD>
// (3) <20><><EFBFBD><EFBFBD> <20>ɺ<EFBFBD><C9BA><EFBFBD> '|'
// <<<3C>ƶ<EFBFBD><C6B6><EFBFBD> <20><><EFBFBD><EFBFBD> <20>Ѿ<D1BE><EEB0A1> <20><><EFBFBD> : <20>ɺ<EFBFBD><C9BA><EFBFBD><EFBFBD><EFBFBD>.>>
// 1) <20>ձ<EFBFBD><D5B1><EFBFBD> <20>ƶ<EFBFBD><C6B6><EFBFBD>
// 2) <20>ޱ<EFBFBD><DEB1><EFBFBD> <20>ƶ<EFBFBD><C6B6><EFBFBD>
//
//
if (Arabic_IsInSymbol(wArabicChar) && (
(i == 0) ||
(i > 0 &&
!(Arabic_HasPresentation(wArabicText, i - 1) || Arabic_IsInPresentation(wArabicText[i + 1])) && //<2F>ձ<EFBFBD><D5B1><EFBFBD>, <20>ޱ<EFBFBD><DEB1>ڰ<EFBFBD> <20>ƶ<EFBFBD><C6B6><EFBFBD> <20>ƴ<EFBFBD>.
!(Arabic_HasPresentation(wArabicText, i - 1) || Arabic_IsInPresentation(wArabicText[i + 1])) && //<2F>ձ<EFBFBD><D5B1><EFBFBD>, <20>ޱ<EFBFBD><DEB1>ڰ<EFBFBD> <20>ƶ<EFBFBD><C6B6><EFBFBD> <20>ƴ<EFBFBD>.
wArabicText[i+1] != '|'
) ||
wArabicText[i] == '|'
@ -234,10 +235,10 @@ void CGraphicTextInstance::Update()
// pass
int temptest = 1;
}
// (1)<29>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD>̰ų<CCB0> (2)<29>ƶ<EFBFBD><C6B6><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɺ<EFBFBD><C9BA>̶<EFBFBD><CCB6><EFBFBD> <20>ƶ<EFBFBD><C6B6><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ȯ
// (1)<29>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD>̰ų<CCB0> (2)<29>ƶ<EFBFBD><C6B6><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɺ<EFBFBD><C9BA>̶<EFBFBD><CCB6> <20>ƶ<EFBFBD><C6B6><EFBFBD> <20><><EFBFBD> <20><>ȯ
else if (Arabic_IsInPresentation(wArabicChar) || Arabic_IsInSymbol(wArabicChar))
{
//<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20>׸<EFBFBD><D7B8><EFBFBD>.
//<2F><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><20>׸<EFBFBD><D7B8><EFBFBD>.
for (int e = i + 1; e <= nEnglishBase;) {
int ret = GetTextTag(&wArabicText[e], wArabicTextLen - e, len, hyperlinkBuffer);
@ -251,7 +252,7 @@ void CGraphicTextInstance::Update()
kHyperlink.ex += charWidth;
//x += charWidth;
//<2F><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>۸<EFBFBD>ũ<EFBFBD><C5A9> <20><>ǥ <20><><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>۸<EFBFBD>ũ<EFBFBD><C5A9> <20><>ǥ <20><><EFBFBD><EFBFBD>.
for (int j = 1; j <= no_hyperlink; j++)
{
if(m_hyperlinkVector.size() < j)
@ -279,7 +280,7 @@ void CGraphicTextInstance::Update()
if (hyperlinkStep == 1)
{
++hyperlinkStep;
kHyperlink.ex = kHyperlink.sx = 0; // <20><><EFBFBD><EFBFBD> <20>ؽ<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>۵Ǵ<DBB5> <20><>ġ
kHyperlink.ex = kHyperlink.sx = 0; // <20><><EFBFBD><EFBFBD> <20>ؽ<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>۵Ǵ<DBB5> <20><>ġ
}
else
{
@ -299,7 +300,7 @@ void CGraphicTextInstance::Update()
int charWidth = __DrawCharacter(pFontTexture, dataCodePage, Arabic_ConvSymbol(wArabicText[i]), dwColor);
kHyperlink.ex += charWidth;
//<2F><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>۸<EFBFBD>ũ<EFBFBD><C5A9> <20><>ǥ <20><><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>۸<EFBFBD>ũ<EFBFBD><C5A9> <20><>ǥ <20><><EFBFBD><EFBFBD>.
for (int j = 1; j <= no_hyperlink; j++)
{
if(m_hyperlinkVector.size() < j)
@ -313,16 +314,16 @@ void CGraphicTextInstance::Update()
isEnglish = false;
}
}
else //[[[<5B>ƶ<EFBFBD><C6B6><EFBFBD> <20><><EFBFBD><EFBFBD>]]]
else //[[[<5B>ƶ<EFBFBD><C6B6><EFBFBD> <20><><EFBFBD>]]]
{
// <20>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD>̰ų<CCB0> <20>ƶ<EFBFBD><C6B6><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɺ<EFBFBD><C9BA>̶<EFBFBD><CCB6><EFBFBD>
// <20>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD>̰ų<CCB0> <20>ƶ<EFBFBD><C6B6><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɺ<EFBFBD><C9BA>̶<EFBFBD><CCB6>
if (Arabic_IsInPresentation(wArabicChar) || Arabic_IsInSymbol(wArabicChar))
{
int charWidth = __DrawCharacter(pFontTexture, dataCodePage, Arabic_ConvSymbol(wArabicText[i]), dwColor);
kHyperlink.ex += charWidth;
x += charWidth;
//<2F><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>۸<EFBFBD>ũ<EFBFBD><C5A9> <20><>ǥ <20><><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>۸<EFBFBD>ũ<EFBFBD><C5A9> <20><>ǥ <20><><EFBFBD><EFBFBD>.
for (int j = 1; j <= no_hyperlink; j++)
{
if(m_hyperlinkVector.size() < j)
@ -333,7 +334,7 @@ void CGraphicTextInstance::Update()
tempLink.sx += charWidth;
}
}
else //<2F><><EFBFBD><EFBFBD><EFBFBD>̰ų<CCB0>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɺ<EFBFBD><C9BA>̶<EFBFBD><CCB6><EFBFBD>,
else //<2F><><EFBFBD><EFBFBD><EFBFBD>̰ų<CCB0>, <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ɺ<EFBFBD><C9BA>̶<EFBFBD><CCB6>,
{
nEnglishBase = i;
isEnglish = true;
@ -355,7 +356,7 @@ void CGraphicTextInstance::Update()
int charWidth = __DrawCharacter(pFontTexture, dataCodePage, wArabicText[e], dwColor);
kHyperlink.ex += charWidth;
//<2F><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>۸<EFBFBD>ũ<EFBFBD><C5A9> <20><>ǥ <20><><EFBFBD><EFBFBD>.
//<2F><><EFBFBD><EFBFBD> <20>߰<EFBFBD><DFB0><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>۸<EFBFBD>ũ<EFBFBD><C5A9> <20><>ǥ <20><><EFBFBD><EFBFBD>.
for (int j = 1; j <= no_hyperlink; j++)
{
if(m_hyperlinkVector.size() < j)
@ -383,7 +384,7 @@ void CGraphicTextInstance::Update()
if (hyperlinkStep == 1)
{
++hyperlinkStep;
kHyperlink.ex = kHyperlink.sx = 0; // <20><><EFBFBD><EFBFBD> <20>ؽ<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>۵Ǵ<DBB5> <20><>ġ
kHyperlink.ex = kHyperlink.sx = 0; // <20><><EFBFBD><EFBFBD> <20>ؽ<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>۵Ǵ<DBB5> <20><>ġ
}
else
{
@ -401,7 +402,7 @@ void CGraphicTextInstance::Update()
}
}
else // <20>ƶ<EFBFBD><C6B6><EFBFBD> <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD>.
else // <20>ƶ<EFBFBD><C6B6><EFBFBD> <20>ٸ<EFBFBD> <20><><EFBFBD><EFBFBD>.
{
int x = 0;
int len;
@ -440,7 +441,7 @@ void CGraphicTextInstance::Update()
if (hyperlinkStep == 1)
{
++hyperlinkStep;
kHyperlink.ex = kHyperlink.sx = x; // <20><><EFBFBD><EFBFBD> <20>ؽ<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>۵Ǵ<DBB5> <20><>ġ
kHyperlink.ex = kHyperlink.sx = x; // <20><><EFBFBD><EFBFBD> <20>ؽ<EFBFBD>Ʈ<EFBFBD><C6AE> <20><><EFBFBD>۵Ǵ<DBB5> <20><>ġ
}
else
{
@ -460,7 +461,7 @@ void CGraphicTextInstance::Update()
if (token < end)
{
int newCodePage = ReadToken(token);
dataCodePage = newCodePage; // <20>ƶ<EFBFBD> <20><> <20><>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> UTF8 <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ϸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
dataCodePage = newCodePage; // <20>ƶ<EFBFBD> <20><> <20><>Ʈ<EFBFBD><C6AE> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>͸<EFBFBD> UTF8 <20><> <20><><EFBFBD><EFBFBD>Ϸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
begin = token + 5;
}
else
@ -570,7 +571,7 @@ void CGraphicTextInstance::Render(RECT * pClipRect)
CGraphicFontTexture::TCharacterInfomation* pCurCharInfo;
// <20>׵θ<D7B5>
// <20>׵θ<D7B5>
if (m_isOutline)
{
fCurX=fStanX;
@ -586,7 +587,7 @@ void CGraphicTextInstance::Render(RECT * pClipRect)
fFontHeight=float(pCurCharInfo->height);
fFontAdvance=float(pCurCharInfo->advance);
// NOTE : <20><>Ʈ <20><><EFBFBD>¿<EFBFBD> Width <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ӵϴ<D3B4>. - [levites]
// NOTE : <20><>Ʈ <20><>¿<EFBFBD> Width <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ӵϴ<D3B4>. - [levites]
if ((fCurX+fFontWidth)-m_v3Position.x > m_fLimitWidth)
{
if (m_isMultiLine)
@ -600,6 +601,7 @@ void CGraphicTextInstance::Render(RECT * pClipRect)
}
}
#if !defined(__BL_CLIP_MASK__)
if (pClipRect)
{
if (fCurY <= pClipRect->top)
@ -608,23 +610,97 @@ void CGraphicTextInstance::Render(RECT * pClipRect)
continue;
}
}
#endif
fFontSx = fCurX - 0.5f;
fFontSy = fCurY - 0.5f;
fFontEx = fFontSx + fFontWidth;
fFontEy = fFontSy + fFontHeight;
#if defined(__BL_CLIP_MASK__)
float su = pCurCharInfo->left;
float sv = pCurCharInfo->top;
float eu = pCurCharInfo->right;
float ev = pCurCharInfo->bottom;
if (pClipRect)
{
const float width = pCurCharInfo->right - pCurCharInfo->left;
const float height = pCurCharInfo->bottom - pCurCharInfo->top;
if (fFontEx <= pClipRect->left)
{
fCurX += fFontAdvance;
continue;
}
if (fFontSx < pClipRect->left)
{
su += (pClipRect->left - fFontSx) / fFontWidth * width;
fFontSx = pClipRect->left;
}
if (fFontEy <= pClipRect->top)
{
fCurX += fFontAdvance;
continue;
}
if (fFontSy < pClipRect->top)
{
sv += (pClipRect->top - fFontSy) / fFontHeight * height;
fFontSy = pClipRect->top;
}
if (fFontSx >= pClipRect->right)
{
fCurX += fFontAdvance;
continue;
}
if (fFontEx > pClipRect->right)
{
eu -= (fFontEx - pClipRect->right) / fFontWidth * width;
fFontEx = pClipRect->right;
}
if (fFontSy >= pClipRect->bottom)
{
fCurX += fFontAdvance;
continue;
}
if (fFontEy > pClipRect->bottom)
{
ev -= (fFontEy - pClipRect->bottom) / fFontHeight * height;
fFontEy = pClipRect->bottom;
}
}
pFontTexture->SelectTexture(pCurCharInfo->index);
STATEMANAGER.SetTexture(0, pFontTexture->GetD3DTexture());
akVertex[0].u=pCurCharInfo->left;
akVertex[0].v=pCurCharInfo->top;
akVertex[1].u=pCurCharInfo->left;
akVertex[1].v=pCurCharInfo->bottom;
akVertex[2].u=pCurCharInfo->right;
akVertex[2].v=pCurCharInfo->top;
akVertex[3].u=pCurCharInfo->right;
akVertex[3].v=pCurCharInfo->bottom;
akVertex[0].u = su;
akVertex[0].v = sv;
akVertex[1].u = su;
akVertex[1].v = ev;
akVertex[2].u = eu;
akVertex[2].v = sv;
akVertex[3].u = eu;
akVertex[3].v = ev;
#else
pFontTexture->SelectTexture(pCurCharInfo->index);
STATEMANAGER.SetTexture(0, pFontTexture->GetD3DTexture());
akVertex[0].u = pCurCharInfo->left;
akVertex[0].v = pCurCharInfo->top;
akVertex[1].u = pCurCharInfo->left;
akVertex[1].v = pCurCharInfo->bottom;
akVertex[2].u = pCurCharInfo->right;
akVertex[2].v = pCurCharInfo->top;
akVertex[3].u = pCurCharInfo->right;
akVertex[3].v = pCurCharInfo->bottom;
#endif
akVertex[3].color = akVertex[2].color = akVertex[1].color = akVertex[0].color = m_dwOutLineColor;
@ -636,7 +712,7 @@ void CGraphicTextInstance::Render(RECT * pClipRect)
akVertex[2].y=fFontSy-feather;
akVertex[3].y=fFontEy+feather;
// <20><>
// <20><>
akVertex[0].x=fFontSx-fFontHalfWeight-feather;
akVertex[1].x=fFontSx-fFontHalfWeight-feather;
akVertex[2].x=fFontEx-fFontHalfWeight+feather;
@ -646,7 +722,7 @@ void CGraphicTextInstance::Render(RECT * pClipRect)
STATEMANAGER.DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
// <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD>
akVertex[0].x=fFontSx+fFontHalfWeight-feather;
akVertex[1].x=fFontSx+fFontHalfWeight-feather;
akVertex[2].x=fFontEx+fFontHalfWeight+feather;
@ -660,7 +736,7 @@ void CGraphicTextInstance::Render(RECT * pClipRect)
akVertex[2].x=fFontEx+feather;
akVertex[3].x=fFontEx+feather;
// <20><>
// <20><>
akVertex[0].y=fFontSy-fFontHalfWeight-feather;
akVertex[1].y=fFontEy-fFontHalfWeight+feather;
akVertex[2].y=fFontSy-fFontHalfWeight-feather;
@ -670,7 +746,7 @@ void CGraphicTextInstance::Render(RECT * pClipRect)
if (CGraphicBase::SetPDTStream((SPDTVertex*)akVertex, 4))
STATEMANAGER.DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
// <20>Ʒ<EFBFBD>
// <20>Ʒ<EFBFBD>
akVertex[0].y=fFontSy+fFontHalfWeight-feather;
akVertex[1].y=fFontEy+fFontHalfWeight+feather;
akVertex[2].y=fFontSy+fFontHalfWeight-feather;
@ -684,7 +760,7 @@ void CGraphicTextInstance::Render(RECT * pClipRect)
}
}
// <20><><EFBFBD><EFBFBD> <20><>Ʈ
// <20><><EFBFBD><EFBFBD> <20><>Ʈ
fCurX=fStanX;
fCurY=fStanY;
fFontMaxHeight=0.0f;
@ -698,7 +774,7 @@ void CGraphicTextInstance::Render(RECT * pClipRect)
fFontMaxHeight=max(fFontHeight, pCurCharInfo->height);
fFontAdvance=float(pCurCharInfo->advance);
// NOTE : <20><>Ʈ <20><><EFBFBD>¿<EFBFBD> Width <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ӵϴ<D3B4>. - [levites]
// NOTE : <20><>Ʈ <20><>¿<EFBFBD> Width <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ӵϴ<D3B4>. - [levites]
if ((fCurX+fFontWidth)-m_v3Position.x > m_fLimitWidth)
{
if (m_isMultiLine)
@ -712,6 +788,7 @@ void CGraphicTextInstance::Render(RECT * pClipRect)
}
}
#if !defined(__BL_CLIP_MASK__)
if (pClipRect)
{
if (fCurY <= pClipRect->top)
@ -720,12 +797,96 @@ void CGraphicTextInstance::Render(RECT * pClipRect)
continue;
}
}
#endif
fFontSx = fCurX-0.5f;
fFontSy = fCurY-0.5f;
fFontEx = fFontSx + fFontWidth;
fFontEy = fFontSy + fFontHeight;
#if defined(__BL_CLIP_MASK__)
float su = pCurCharInfo->left;
float sv = pCurCharInfo->top;
float eu = pCurCharInfo->right;
float ev = pCurCharInfo->bottom;
if (pClipRect)
{
const float width = pCurCharInfo->right - pCurCharInfo->left;
const float height = pCurCharInfo->bottom - pCurCharInfo->top;
if (fFontEx <= pClipRect->left)
{
fCurX += fFontAdvance;
continue;
}
if (fFontSx < pClipRect->left)
{
su += (pClipRect->left - fFontSx) / fFontWidth * width;
fFontSx = pClipRect->left;
}
if (fFontEy <= pClipRect->top)
{
fCurX += fFontAdvance;
continue;
}
if (fFontSy < pClipRect->top)
{
sv += (pClipRect->top - fFontSy) / fFontHeight * height;
fFontSy = pClipRect->top;
}
if (fFontSx >= pClipRect->right)
{
fCurX += fFontAdvance;
continue;
}
if (fFontEx > pClipRect->right)
{
eu -= (fFontEx - pClipRect->right) / fFontWidth * width;
fFontEx = pClipRect->right;
}
if (fFontSy >= pClipRect->bottom)
{
fCurX += fFontAdvance;
continue;
}
if (fFontEy > pClipRect->bottom)
{
ev -= (fFontEy - pClipRect->bottom) / fFontHeight * height;
fFontEy = pClipRect->bottom;
}
}
pFontTexture->SelectTexture(pCurCharInfo->index);
STATEMANAGER.SetTexture(0, pFontTexture->GetD3DTexture());
akVertex[0].x = fFontSx;
akVertex[0].y = fFontSy;
akVertex[0].u = su;
akVertex[0].v = sv;
akVertex[1].x = fFontSx;
akVertex[1].y = fFontEy;
akVertex[1].u = su;
akVertex[1].v = ev;
akVertex[2].x = fFontEx;
akVertex[2].y = fFontSy;
akVertex[2].u = eu;
akVertex[2].v = sv;
akVertex[3].x = fFontEx;
akVertex[3].y = fFontEy;
akVertex[3].u = eu;
akVertex[3].v = ev;
#else
pFontTexture->SelectTexture(pCurCharInfo->index);
STATEMANAGER.SetTexture(0, pFontTexture->GetD3DTexture());
@ -748,6 +909,7 @@ void CGraphicTextInstance::Render(RECT * pClipRect)
akVertex[3].y=fFontEy;
akVertex[3].u=pCurCharInfo->right;
akVertex[3].v=pCurCharInfo->bottom;
#endif
//m_dwColorInfoVector[i];
//m_dwTextColor;
@ -811,9 +973,9 @@ void CGraphicTextInstance::Render(RECT * pClipRect)
sy -= float(m_textHeight) / 2.0f;
break;
}
// <20><><EFBFBD><EFBFBD>ȭ <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><D8BD>ĸ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵٸ<EFBFBD>... STRIP<49><50> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD>, <20>ؽ<EFBFBD><D8BD>İ<EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰų<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DrawPrimitive<76><65> ȣ<><C8A3><EFBFBD><EFBFBD>
// <20>ִ<EFBFBD><D6B4><EFBFBD> <20><><EFBFBD>ڸ<EFBFBD> <20><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
// <20><><EFBFBD><EFBFBD>ȭ <20><><EFBFBD><EFBFBD>
// <20><><EFBFBD><EFBFBD><EFBFBD>ؽ<EFBFBD><D8BD>ĸ<EFBFBD> <20><><EFBFBD><EFBFBD>Ѵٸ<D1B4>... STRIP<49><50> <20><><EFBFBD><EFBFBD><EFBFBD>ϰ<EFBFBD>, <20>ؽ<EFBFBD><D8BD>İ<EFBFBD> <20><><EFBFBD><EFBFBD>ǰų<C7B0> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> DrawPrimitive<76><65> ȣ<><C8A3><EFBFBD><EFBFBD>
// <20>ִ<EFBFBD><D6B4><EFBFBD> <20><><EFBFBD>ڸ<EFBFBD> <20><><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>!
TPDTVertex vertices[4];
vertices[0].diffuse = diffuse;
@ -865,13 +1027,13 @@ void CGraphicTextInstance::Render(RECT * pClipRect)
STATEMANAGER.SetRenderState(D3DRS_FOGENABLE, dwFogEnable);
STATEMANAGER.SetRenderState(D3DRS_LIGHTING, dwLighting);
//<2F>ݰ<EFBFBD><DDB0><EFBFBD> <20><>ũ <20><><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD> <20>κ<EFBFBD>.
//<2F>ݰ<EFBFBD><DDB0><EFBFBD> <20><>ũ <20><><EFBFBD><EFBFBD>ִ<EFBFBD> <20>κ<EFBFBD>.
if (m_hyperlinkVector.size() != 0)
{
int lx = gs_mx - m_v3Position.x;
int ly = gs_my - m_v3Position.y;
//<2F>ƶ<EFBFBD><C6B6><EFBFBD> <20><>ǥ <20><>ȣ<EFBFBD><C8A3> <20>ٲ<EFBFBD><D9B2>ش<EFBFBD>.
//<2F>ƶ<EFBFBD><C6B6><EFBFBD> <20><>ǥ <20><>ȣ<EFBFBD><C8A3> <20>ٲ<EFBFBD><D9B2>ش<EFBFBD>.
if (GetDefaultCodePage() == CP_ARABIC) {
lx = -lx;
ly = -ly + m_textHeight;
@ -1063,7 +1225,7 @@ WORD CGraphicTextInstance::GetTextLineCount()
float fFontAdvance=float(pCurCharInfo->advance);
//float fFontHeight=float(pCurCharInfo->height);
// NOTE : <20><>Ʈ <20><><EFBFBD>¿<EFBFBD> Width <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ӵϴ<D3B4>. - [levites]
// NOTE : <20><>Ʈ <20><>¿<EFBFBD> Width <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>Ӵϴ<D3B4>. - [levites]
if (fx+fFontWidth > m_fLimitWidth)
{
fx = 0.0f;
@ -1110,7 +1272,7 @@ void CGraphicTextInstance::__Initialize()
m_vAlign = VERTICAL_ALIGN_TOP;
m_iMax = 0;
m_fLimitWidth = 1600.0f; // NOTE : <20>ػ<EFBFBD><D8BB><EFBFBD><EFBFBD><EFBFBD> <20>ִ<EFBFBD>ġ. <20>̺<EFBFBD><CCBA><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? - [levites]
m_fLimitWidth = 1600.0f; // NOTE : <20>ػ<EFBFBD><D8BB><EFBFBD> <20>ִ<EFBFBD>ġ. <20>̺<EFBFBD><CCBA><EFBFBD> <20><><EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>? - [levites]
m_isCursor = false;
m_isSecret = false;

View File

@ -8,7 +8,6 @@ BOOL g_bOutlineBoxEnable = FALSE;
namespace UI
{
CWindow::CWindow(PyObject * ppyObject) :
m_x(0),
m_y(0),
@ -30,6 +29,11 @@ namespace UI
m_HorizontalAlign = HORIZONTAL_ALIGN_LEFT;
m_VerticalAlign = VERTICAL_ALIGN_TOP;
m_rect.bottom = m_rect.left = m_rect.right = m_rect.top = 0;
#if defined(__BL_CLIP_MASK__)
m_bEnableMask = false;
m_pMaskWindow = NULL;
memset(&m_rMaskRect, 0, sizeof(m_rMaskRect));
#endif
m_limitBiasRect.bottom = m_limitBiasRect.left = m_limitBiasRect.right = m_limitBiasRect.top = 0;
}
@ -66,10 +70,13 @@ namespace UI
void CWindow::Clear()
{
// FIXME : Children<65><6E> <20><><EFBFBD><EFBFBD> Delete<74><65><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<CAB4>.
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Python<6F>ʿ<EFBFBD><CABF><EFBFBD> Destroy<6F><79> <20>ϳ<EFBFBD><CFB3><EFBFBD> <20>ٽ<EFBFBD> ȣ<><C8A3> <20><> <20><><EFBFBD>̹Ƿ<CCB9>..
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>´<EFBFBD>.
// <20><> <20><><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>´<EFBFBD> <20>ִ°<EFBFBD>? - [levites]
#if defined(__BL_CLIP_MASK__)
m_pMaskWindow = NULL;
#endif
// FIXME : Children<65><6E> <20><><EFBFBD> Delete<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ´<EFBFBD>.
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Python<6F>ʿ<EFBFBD><CABF><EFBFBD> Destroy<6F><79> <20>ϳ<EFBFBD><CFB3><EFBFBD> <20>ٽ<EFBFBD> ȣ<><C8A3> <20><> <20><><EFBFBD>̹Ƿ<CCB9>..
// <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ũ<EFBFBD><C5A9> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>´<EFBFBD>.
// <20><> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>´<EFBFBD> <20>ִ°<D6B4>? - [levites]
std::for_each(m_pChildList.begin(), m_pChildList.end(), FClear());
m_pChildList.clear();
@ -93,8 +100,8 @@ namespace UI
m_bShow = false;
}
// NOTE : IsShow<6F><77> "<22>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD>̴°<CCB4>?" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, __IsShowing<6E><67> "<22>ڽ<EFBFBD><DABD><EFBFBD> <20>׷<EFBFBD><D7B7><EFBFBD><EFBFBD><EFBFBD> <20>ִ°<D6B4>?" <20><> üũ<C3BC>Ѵ<EFBFBD>
// <20>ڽ<EFBFBD><DABD><EFBFBD> Show <20><><EFBFBD><EFBFBD> Tree <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Parent <20><> <20>ϳ<EFBFBD><CFB3><EFBFBD> Hide <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>.. - [levites]
// NOTE : IsShow<6F><77> "<22>ڽ<EFBFBD><DABD><EFBFBD> <20><><EFBFBD>̴°<CCB4>?" <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>, __IsShowing<6E><67> "<22>ڽ<EFBFBD><DABD><EFBFBD> <20>׷<EFBFBD><D7B7><EFBFBD><EFBFBD><EFBFBD> <20>ִ°<D6B4>?" <20><> üũ<C3BC>Ѵ<EFBFBD>
// <20>ڽ<EFBFBD><DABD><EFBFBD> Show <20><><EFBFBD><EFBFBD> Tree <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Parent <20><> <20>ϳ<EFBFBD><CFB3><EFBFBD> Hide <20><> <20><> <20><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD>.. - [levites]
bool CWindow::IsRendering()
{
if (!IsShow())
@ -427,6 +434,41 @@ namespace UI
PyCallClassMemberFunc(m_poHandler, "OnIMEUpdate", BuildEmptyTuple());
}
#if defined(__BL_CLIP_MASK__)
void CWindow::SetClippingMaskRect(const RECT& rMask)
{
m_bEnableMask = true;
m_rMaskRect = rMask;
TWindowContainer::const_reverse_iterator itor;
for (itor = m_pChildList.rbegin(); itor != m_pChildList.rend(); ++itor)
{
CWindow* pWindow = *itor;
if (pWindow)
pWindow->SetClippingMaskRect(rMask);
}
}
void CWindow::SetClippingMaskWindow(CWindow* pMaskWindow)
{
if (!pMaskWindow)
return;
m_bEnableMask = true;
m_pMaskWindow = pMaskWindow;
TWindowContainer::const_reverse_iterator itor;
for (itor = m_pChildList.rbegin(); itor != m_pChildList.rend(); ++itor)
{
CWindow* pWindow = *itor;
if (pWindow)
pWindow->SetClippingMaskWindow(pMaskWindow);
}
}
#endif
BOOL CWindow::RunIMETabEvent()
{
if (!IsRendering())
@ -577,7 +619,7 @@ namespace UI
BOOL CWindow::OnMouseLeftButtonUp()
{
PyCallClassMemberFunc(m_poHandler, "OnMouseLeftButtonUp", BuildEmptyTuple());
return TRUE; // NOTE : ButtonUp<55><70> <20><><EFBFBD>ܷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TRUE
return TRUE; // NOTE : ButtonUp<55><70> <20><><EFBFBD>ܷ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> TRUE
}
BOOL CWindow::OnMouseLeftButtonDoubleClick()
@ -1027,6 +1069,23 @@ namespace UI
m_TextInstance.Update();
}
#if defined(__BL_CLIP_MASK__)
void CTextLine::OnUpdate()
{
if (!IsShow())
return;
if (m_bEnableMask && m_pMaskWindow)
m_rMaskRect = m_pMaskWindow->GetRect();
m_TextInstance.Update();
}
void CTextLine::OnRender()
{
if (IsShow())
m_TextInstance.Render(m_bEnableMask ? &m_rMaskRect : NULL);
}
#else
void CTextLine::OnUpdate()
{
if (IsShow())
@ -1037,6 +1096,7 @@ namespace UI
if (IsShow())
m_TextInstance.Render();
}
#endif
void CTextLine::OnChangePosition()
{
@ -1271,9 +1331,37 @@ namespace UI
return m_pImageInstance->GetHeight();
}
#if defined(__BL_CLIP_MASK__)
void CImageBox::OnUpdate()
{
if (!m_pImageInstance)
return;
if (!IsShow())
return;
if (!m_bEnableMask)
return;
if (!m_pMaskWindow)
return;
m_rMaskRect = m_pMaskWindow->GetRect();
}
void CImageBox::OnRender()
{
if (!m_pImageInstance)
return;
if (IsShow())
m_pImageInstance->Render(m_bEnableMask ? &m_rMaskRect : NULL);
}
#else
void CImageBox::OnUpdate()
{
}
void CImageBox::OnRender()
{
if (!m_pImageInstance)
@ -1282,6 +1370,8 @@ namespace UI
if (IsShow())
m_pImageInstance->Render();
}
#endif
void CImageBox::OnChangePosition()
{
if (!m_pImageInstance)
@ -1291,7 +1381,7 @@ namespace UI
}
///////////////////////////////////////////////////////////////////////////////////////////////
// MarkBox - <20><>ũ <20><><EFBFBD>¿<EFBFBD> UI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// MarkBox - <20><>ũ <20><>¿<EFBFBD> UI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
///////////////////////////////////////////////////////////////////////////////////////////////
CMarkBox::CMarkBox(PyObject * ppyObject) : CWindow(ppyObject)
{
@ -1742,9 +1832,41 @@ namespace UI
PyCallClassMemberFunc(m_poHandler, "DownEvent", BuildEmptyTuple());
}
#if defined(__BL_CLIP_MASK__)
void CButton::OnUpdate()
{
if (!m_bEnableMask)
return;
if (!m_pMaskWindow)
return;
m_rMaskRect = m_pMaskWindow->GetRect();
}
void CButton::OnRender()
{
if (!IsShow())
return;
if (m_pcurVisual)
{
if (m_isFlash)
if (!IsIn())
if (int(timeGetTime() / 500) % 2)
{
return;
}
m_pcurVisual->Render(m_bEnableMask ? &m_rMaskRect : NULL);
}
PyCallClassMemberFunc(m_poHandler, "OnRender", BuildEmptyTuple());
}
#else
void CButton::OnUpdate()
{
}
void CButton::OnRender()
{
if (!IsShow())
@ -1764,6 +1886,8 @@ namespace UI
PyCallClassMemberFunc(m_poHandler, "OnRender", BuildEmptyTuple());
}
#endif
void CButton::OnChangePosition()
{
if (m_pcurVisual)

View File

@ -1,6 +1,7 @@
#pragma once
#include "../eterBase/Utils.h"
#include "../UserInterface/Locale_inc.h"
namespace UI
{
@ -28,16 +29,16 @@ namespace UI
enum EFlags
{
FLAG_MOVABLE = (1 << 0), // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> â
FLAG_LIMIT = (1 << 1), // â<><C3A2> ȭ<><C8AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EEB3AA> <20><><EFBFBD><EFBFBD>
FLAG_SNAP = (1 << 2), // <20><><EFBFBD><EFBFBD> <20><> <20><> <20>ִ<EFBFBD> â
FLAG_MOVABLE = (1 << 0), // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><> <20>ִ<EFBFBD> â
FLAG_LIMIT = (1 << 1), // â<><C3A2> ȭ<><C8AD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EEB3AA> <20><><EFBFBD><EFBFBD>
FLAG_SNAP = (1 << 2), // <20><><EFBFBD><EFBFBD> <20><> <20><> <20>ִ<EFBFBD> â
FLAG_DRAGABLE = (1 << 3),
FLAG_ATTACH = (1 << 4), // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>θ<EFBFBD><EFBFBD><EFBFBD> <20>پ<EFBFBD> <20>ִ<EFBFBD> â (For Drag / ex. ScriptWindow)
FLAG_RESTRICT_X = (1 << 5), // <20>¿<EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD>
FLAG_RESTRICT_Y = (1 << 6), // <20><><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD>
FLAG_ATTACH = (1 << 4), // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>θ<EFBFBD> <20>پ<EFBFBD> <20>ִ<EFBFBD> â (For Drag / ex. ScriptWindow)
FLAG_RESTRICT_X = (1 << 5), // <20>¿<EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD>
FLAG_RESTRICT_Y = (1 << 6), // <20><><EFBFBD><EFBFBD> <20>̵<EFBFBD> <20><><EFBFBD><EFBFBD>
FLAG_NOT_CAPTURE = (1 << 7),
FLAG_FLOAT = (1 << 8), // <20><><EFBFBD>߿<EFBFBD> <20><><EFBFBD>־ <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>ġ<EFBFBD><EFBFBD> <20>Ǵ<EFBFBD> â
FLAG_NOT_PICK = (1 << 9), // <20><><EFBFBD><EFBFBD><ECBDBA> <20><><EFBFBD><EFBFBD> Pick<63><6B><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> â
FLAG_FLOAT = (1 << 8), // <20><><EFBFBD>߿<EFBFBD> <20><><EFBFBD>־ <20><><EFBFBD><EFBFBD> <20><><EFBFBD>ġ<EFBFBD><C4A1> <20>Ǵ<EFBFBD> â
FLAG_NOT_PICK = (1 << 9), // <20><><EFBFBD><EFBFBD><ECBDBA> <20><><EFBFBD><EFBFBD> Pick<63><6B><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> â
FLAG_IGNORE_SIZE = (1 << 10),
FLAG_RTL = (1 << 11), // Right-to-left
};
@ -91,8 +92,8 @@ namespace UI
bool IsIn(long x, long y);
bool IsIn();
CWindow * PickWindow(long x, long y);
CWindow * PickTopWindow(long x, long y); // NOTE : Children<65><6E><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// üũ <20>ϴ<EFBFBD> Ưȭ<C6AF><C8AD> <20>Լ<EFBFBD>
CWindow * PickTopWindow(long x, long y); // NOTE : Children<65><6E><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// üũ <20>ϴ<EFBFBD> Ưȭ<C6AF><C8AD> <20>Լ<EFBFBD>
void __RemoveReserveChildren();
@ -159,6 +160,10 @@ namespace UI
/////////////////////////////////////
virtual BOOL IsWindow() { return TRUE; }
#if defined(__BL_CLIP_MASK__)
virtual void SetClippingMaskRect(const RECT& rMask);
virtual void SetClippingMaskWindow(CWindow* pMaskWindow);
#endif
/////////////////////////////////////
protected:
@ -166,10 +171,10 @@ namespace UI
EHorizontalAlign m_HorizontalAlign;
EVerticalAlign m_VerticalAlign;
long m_x, m_y; // X,Y <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǥ
long m_lWidth, m_lHeight; // ũ<><C5A9>
RECT m_rect; // Global <20><>ǥ
RECT m_limitBiasRect; // limit bias <20><>
long m_x, m_y; // X,Y <20><><EFBFBD><EFBFBD><EFBFBD>ǥ
long m_lWidth, m_lHeight; // ũ<><C5A9>
RECT m_rect; // Global <20><>ǥ
RECT m_limitBiasRect; // limit bias <20><>
bool m_bMovable;
bool m_bShow;
@ -183,7 +188,12 @@ namespace UI
BOOL m_isUpdatingChildren;
TWindowContainer m_pReserveChildList;
#if defined(__BL_CLIP_MASK__)
bool m_bEnableMask;
CWindow* m_pMaskWindow;
RECT m_rMaskRect;
#endif
#ifdef _DEBUG
public:
DWORD DEBUG_dwCounter;

View File

@ -534,7 +534,7 @@ namespace UI
if (m_pActiveWindow)
m_pActiveWindow->OnKillFocus();
// <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><ECB8AE>Ʈ<EFBFBD>ȿ<EFBFBD> <20>ִٸ<D6B4> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>..
// <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><ECB8AE>Ʈ<EFBFBD>ȿ<EFBFBD> <20>ִٸ<D6B4> <20><><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD>..
m_LockWindowList.remove(pWin);
if (m_pLockWindow)
@ -575,8 +575,8 @@ namespace UI
if (m_pActiveWindow)
{
// NOTE : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Window<6F><77> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Clear<61><72> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ұ<EFBFBD>?
// <20>ϴ<EFBFBD><CFB4><EFBFBD> <20>ߺ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȵǸ<C8B5> <20><>Ŀ<EFBFBD><C4BF> <20>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC> 5<><35> <20≯<EFBFBD><CCB8>̴<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>.. - [levites]
// NOTE : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Window<6F><77> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> Clear<61><72> <20><><EFBFBD><EFBFBD><EFBFBD> <20>ұ<EFBFBD>?
// <20>ϴ<EFBFBD><CFB4><EFBFBD> <20>ߺ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ȵǸ<C8B5> <20><>Ŀ<EFBFBD><C4BF> <20>Ǵ<EFBFBD> <20><><EFBFBD><EFBFBD> <20><>ü<EFBFBD><C3BC> 5<><35> <20≯<EFBFBD><CCB8>̴<EFBFBD> <20><><EFBFBD><EFBFBD> <20>ʿ<EFBFBD><CABF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><>.. - [levites]
m_ActiveWindowList.push_back(m_pActiveWindow);
m_pActiveWindow->OnKillFocus();
}
@ -618,8 +618,8 @@ namespace UI
CWindow * pParentWindow = pWin->GetParent();
pParentWindow->SetTop(pWin);
// NOTE : Capture<72><65> <20><><EFBFBD>µȴ<C2B5>..? - [levites]
// NOTE : <20>κ<EFBFBD><CEBA><EFBFBD><E4B8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E5B7A1> <20>ؼ<EFBFBD> <20>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ĸ<><20><><EFBFBD>Ƽ<EFBFBD> â<><C3A2> <20><>ư<EFBFBD><C6B0> <20>ι<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϴ<EFBFBD> <20><><EFBFBD>׸<EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
// NOTE : Capture<72><65> <20><><EFBFBD>µȴ<C2B5>..? - [levites]
// NOTE : <20>κ<EFBFBD><CEBA><EFBFBD><E4B8AE><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><EFBFBD><E5B7A1> <20>ؼ<EFBFBD> <20>ۿ<EFBFBD><DBBF><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> ĸ<><20><><EFBFBD>Ƽ<EFBFBD> â<><C3A2> <20><>ư<EFBFBD><C6B0> <20>ι<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ϴ<EFBFBD> <20><><EFBFBD>׸<EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
// ResetCapture();
}
@ -628,7 +628,7 @@ namespace UI
if (m_pLockWindow)
return;
// GameLayer<65><72> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20><>ŷ <20>ƴٸ<C6B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SetTop<6F><70> <20><><EFBFBD>ش<EFBFBD>.
// GameLayer<65><72> <20><><EFBFBD><EFBFBD> <20>ִ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><20><>ŷ <20>ƴٸ<C6B4> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SetTop<6F><70> <20><><EFBFBD>ش<EFBFBD>.
TLayerContainer::iterator itor = m_LayerWindowMap.find("UI");
if (itor == m_LayerWindowMap.end())
return;
@ -896,7 +896,7 @@ namespace UI
{
if (m_pLeftCaptureWindow->OnMouseLeftButtonUp())
{
// NOTE : <20><><EFBFBD>⼭ m_pLeftCaptureWindow<6F><77> NULL <20><> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>!! - [levites]
// NOTE : <20><><EFBFBD>⼭ m_pLeftCaptureWindow<6F><77> NULL <20><> <20><> <20>ֽ<EFBFBD><D6BD>ϴ<EFBFBD>!! - [levites]
m_pLeftCaptureWindow = NULL;
return;
}
@ -1099,7 +1099,7 @@ namespace UI
return;
}
// NOTE : <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> Activate<74>Ǿ<EFBFBD><C7BE>ִ<EFBFBD> EditLine<6E><65><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̺<EFBFBD>Ʈ
// NOTE : <20><>ü<EFBFBD><C3BC> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʰ<EFBFBD> Activate<74>Ǿ<EFBFBD><C7BE>ִ<EFBFBD> EditLine<6E><65><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>̺<EFBFBD>Ʈ
}
void CWindowManager::RunChangeCodePage()

View File

@ -3,6 +3,42 @@
#include "PythonSlotWindow.h"
#include "PythonGridSlotWindow.h"
#if defined(__BL_CLIP_MASK__)
PyObject* wndMgrSetClippingMaskRect(PyObject* poSelf, PyObject* poArgs)
{
UI::CWindow* pWindow;
if (!PyTuple_GetWindow(poArgs, 0, &pWindow))
return Py_BuildException();
RECT r;
if (!PyTuple_GetLong(poArgs, 1, &r.left))
return Py_BuildException();
if (!PyTuple_GetLong(poArgs, 2, &r.top))
return Py_BuildException();
if (!PyTuple_GetLong(poArgs, 3, &r.right))
return Py_BuildException();
if (!PyTuple_GetLong(poArgs, 4, &r.bottom))
return Py_BuildException();
pWindow->SetClippingMaskRect(r);
return Py_BuildNone();
}
PyObject* wndMgrSetClippingMaskWindow(PyObject* poSelf, PyObject* poArgs)
{
UI::CWindow* pWindow;
if (!PyTuple_GetWindow(poArgs, 0, &pWindow))
return Py_BuildException();
UI::CWindow* pMaskWindow;
if (!PyTuple_GetWindow(poArgs, 1, &pMaskWindow))
return Py_BuildException();
pWindow->SetClippingMaskWindow(pMaskWindow);
return Py_BuildNone();
}
#endif
bool PyTuple_GetWindow(PyObject* poArgs, int pos, UI::CWindow ** ppRetWindow)
{
int iHandle;
@ -1260,7 +1296,7 @@ PyObject * wndMgrSetSlotCoolTime(PyObject * poSelf, PyObject * poArgs)
PyObject * wndMgrSetToggleSlot(PyObject * poSelf, PyObject * poArgs)
{
assert(!"wndMgrSetToggleSlot - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20>Լ<EFBFBD>");
assert(!"wndMgrSetToggleSlot - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20>ʴ<EFBFBD> <20>Լ<EFBFBD>");
return Py_BuildNone();
}
@ -1883,13 +1919,13 @@ PyObject * wndMarkBox_SetImageFilename(PyObject * poSelf, PyObject * poArgs)
PyObject * wndMarkBox_SetImage(PyObject * poSelf, PyObject * poArgs)
{
// <20>ƹ<EFBFBD><C6B9>͵<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// <20>ƹ<EFBFBD><C6B9>͵<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
return Py_BuildNone();
}
PyObject * wndMarkBox_Load(PyObject * poSelf, PyObject * poArgs)
{
// <20>ƹ<EFBFBD><C6B9>͵<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
// <20>ƹ<EFBFBD><C6B9>͵<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
return Py_BuildNone();
}
@ -2300,6 +2336,11 @@ void initwndMgr()
{
static PyMethodDef s_methods[] =
{
#if defined(__BL_CLIP_MASK__)
{ "SetClippingMaskRect", wndMgrSetClippingMaskRect, METH_VARARGS },
{ "SetClippingMaskWindow", wndMgrSetClippingMaskWindow, METH_VARARGS },
#endif
// WindowManager
{ "SetMouseHandler", wndMgrSetMouseHandler, METH_VARARGS },
{ "SetScreenSize", wndMgrSetScreenSize, METH_VARARGS },
@ -2495,7 +2536,7 @@ void initwndMgr()
PyObject * poModule = Py_InitModule("wndMgr", s_methods);
// <20>ϳ<EFBFBD><CFB3><EFBFBD> <20><><EFBFBD>ųʸ<EFBFBD><EFBFBD><EFBFBD> <20>ʹ<EFBFBD> <20><><EFBFBD><EFBFBD> Function<6F><6E> <20><><EFBFBD><EFBFBD> <20>Ǵ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20>̷<EFBFBD><CCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD>ųʸ<EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> - [levites]
// <20>ϳ<EFBFBD><CFB3><EFBFBD> <20><>ųʸ<C5B3><CAB8><EFBFBD> <20>ʹ<EFBFBD> <20><><EFBFBD><EFBFBD> Function<6F><6E> <20><><EFBFBD><EFBFBD> <20>Ǵ<EFBFBD> <20><> <20><><EFBFBD><EFBFBD> <20>̷<EFBFBD><CCB7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ųʸ<C5B3><CAB8><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><> - [levites]
// PyObject * poMgrModule = Py_InitModule("wndMgr", s_methods);
// PyObject * poTextModule = Py_InitModule("wndText", s_methods);
// PyObject * poSlotModule = Py_InitModule("wndSlot", s_methods);

View File

@ -5,8 +5,8 @@
#define ENABLE_COSTUME_SYSTEM
#define ENABLE_ENERGY_SYSTEM
#define ENABLE_DRAGON_SOUL_SYSTEM
#define ENABLE_NEW_EQUIPMENT_SYSTEM
#define ENABLE_NEW_EQUIPMENT_SYSTEM
#define __BL_CLIP_MASK__
bool LocaleService_IsYMIR();
bool LocaleService_IsJAPAN();

View File

@ -1507,6 +1507,12 @@ void initapp()
PyModule_AddIntConstant(poModule, "ENABLE_DRAGON_SOUL_SYSTEM", 0);
#endif
#if defined(__BL_CLIP_MASK__)
PyModule_AddIntConstant(poModule, "__BL_CLIP_MASK__", true);
#else
PyModule_AddIntConstant(poModule, "__BL_CLIP_MASK__", false);
#endif
#ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
PyModule_AddIntConstant(poModule, "ENABLE_NEW_EQUIPMENT_SYSTEM", 1);
#else

View File

@ -474,7 +474,7 @@ void CPythonChat::AppendChat(int iType, const char * c_szChat)
TChatSet * pChatSet = &(itor->second);
//pChatLine->SetColor(itor->first, GetChatColor(iType));
// Edit Mode <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>߱<EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
// Edit Mode <20><> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>߱<EFBFBD> <20><><EFBFBD><EFBFBD> <20>߰<EFBFBD>
if (BOARD_STATE_EDIT == pChatSet->m_iBoardState)
{
ArrangeShowingChat(itor->first);
@ -512,12 +512,12 @@ DWORD CPythonChat::GetChatColor(int iType)
void CPythonChat::IgnoreCharacter(const char * c_szName)
{
TIgnoreCharacterSet::iterator itor = m_IgnoreCharacterSet.find(c_szName);
// NOTE : <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̶<EFBFBD><CCB6><EFBFBD>..
// NOTE : <20>̹<EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD>̶<EFBFBD><CCB6>..
if (m_IgnoreCharacterSet.end() != itor)
{
m_IgnoreCharacterSet.erase(itor);
}
// NOTE : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD>Ͷ<EFBFBD><CDB6><EFBFBD>..
// NOTE : <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> ij<><C4B3><EFBFBD>Ͷ<EFBFBD><CDB6>..
else
{
m_IgnoreCharacterSet.insert(c_szName);
@ -771,6 +771,14 @@ void CWhisper::Render(float fx, float fy)
RECT Rect = { fx, fy, fx+m_fWidth, fy+m_fHeight };
#if defined(__BL_CLIP_MASK__)
if (GetDefaultCodePage() == CP_ARABIC)
{
Rect.left = fx - m_fWidth;
Rect.right = fx;
}
#endif
for (int i = iStartLine; i >= 0; --i)
{
assert(i >= 0 && i < int(m_ChatLineDeque.size()));