forked from metin2/client
add: Clipping mask.
This commit is contained in:
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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)
|
||||
|
@ -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;
|
||||
|
@ -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()
|
||||
|
@ -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);
|
||||
|
@ -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();
|
||||
|
@ -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
|
||||
|
@ -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()));
|
||||
|
Reference in New Issue
Block a user