Files
Client/GameTools/EffectEditor/PointSlider.cpp
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

190 lines
4.1 KiB
C++

// PointSlider.cpp : implementation file
//
#include "stdafx.h"
#include "effecteditor.h"
#include "PointSlider.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CPointSlider
CPointSlider::CPointSlider()
{
m_nPointSize = 10;
m_nBoundaryMax = 100;
m_nBoundaryMin = 0;
m_nSelectPoint = -1;
}
CPointSlider::~CPointSlider()
{
}
BEGIN_MESSAGE_MAP(CPointSlider, CStatic)
//{{AFX_MSG_MAP(CPointSlider)
ON_WM_PAINT()
ON_WM_MOUSEMOVE()
ON_WM_LBUTTONDOWN()
ON_WM_LBUTTONUP()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CPointSlider message handlers
int CPointSlider::GetWidth()
{
RECT rcRect;
GetClientRect(&rcRect);
return rcRect.right - rcRect.left;
}
int CPointSlider::GetHeight()
{
RECT rcRect;
GetClientRect(&rcRect);
return rcRect.bottom - rcRect.top;
}
void CPointSlider::SetPoint(int nPoint)
{
list<int>::iterator it;
BOOL bExist = FALSE;
for(it = m_lstPoint.begin(); it != m_lstPoint.end(); it++)
{
if((*it) == nPoint) { bExist = TRUE; break; }
}
if(!bExist)
{
m_lstPoint.push_back(nPoint);
Invalidate(TRUE);
}
}
void CPointSlider::SetBoundary(int nMin, int nMax)
{
m_nBoundaryMax = nMax;
m_nBoundaryMin = nMin;
}
void CPointSlider::OnPaint()
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
CDC memDC;
CBitmap memBmp, *oldBmp;
list<int>::iterator it;
int nPoint, nCenter, nSize = m_nPointSize / 2;
memDC.CreateCompatibleDC(&dc);
memBmp.CreateCompatibleBitmap(&dc, GetWidth(), GetHeight());
oldBmp = (CBitmap *)memDC.SelectObject(&memBmp);
memDC.FillSolidRect(0, 0, GetWidth(), GetHeight(), 0x00444444);
HBRUSH red, white, *old;
red = CreateSolidBrush(0x000000FF);
white = CreateSolidBrush(0x00FFFFFF);
old = (HBRUSH *)memDC.SelectObject(white);
for(it = m_lstPoint.begin(); it != m_lstPoint.end(); it++)
{
nPoint = *(it);
nCenter = (int)(((float)GetWidth() / (float)(m_nBoundaryMax - m_nBoundaryMin)) * nPoint);
if(m_nSelectPoint > -1 && m_nSelectPoint == nPoint)
{
memDC.SelectObject(red);
memDC.Ellipse(nCenter - nSize, 0, nCenter + nSize, GetHeight());
} else
{
memDC.SelectObject(white);
memDC.Ellipse(nCenter - nSize, 0, nCenter + nSize, GetHeight());
}
}
memDC.SelectObject(old);
DeleteObject(white);
DeleteObject(red);
dc.BitBlt(0, 0, GetWidth(), GetHeight(), &memDC, 0, 0, SRCCOPY);
memDC.SelectObject(oldBmp);
// Do not call CStatic::OnPaint() for painting messages
}
void CPointSlider::DeletePoint(int nPoint)
{
list<int>::iterator it;
for(it = m_lstPoint.begin(); it != m_lstPoint.end(); it++)
{
if((*it) == nPoint) { m_lstPoint.erase(it); break; }
}
}
void CPointSlider::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CStatic::OnMouseMove(nFlags, point);
}
void CPointSlider::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
list<int>::iterator it;
int nSize = m_nPointSize / 2, nCenter;
BOOL bSelect = FALSE;
for(it = m_lstPoint.begin(); it != m_lstPoint.end(); it++)
{
nCenter = (int)(((float)GetWidth() / (float)(m_nBoundaryMax - m_nBoundaryMin)) * (*it));
if(nCenter - nSize <= point.x && point.x <= nCenter + nSize)
{
m_nSelectPoint = (*it);
bSelect = TRUE;
Invalidate(TRUE);
long wP = ((short)m_nSelectPoint << 16) | 0x0000FFFF;
long lP = (long)this->m_hWnd;
::SendMessage(this->GetParent()->m_hWnd, WM_HSCROLL, wP, lP);
break;
}
}
if(!bSelect)
{
m_nSelectPoint = -1;
Invalidate(TRUE);
}
CStatic::OnLButtonDown(nFlags, point);
}
void CPointSlider::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
CStatic::OnLButtonUp(nFlags, point);
}
BOOL CPointSlider::PreTranslateMessage(MSG* pMsg)
{
// TODO: Add your specialized code here and/or call the base class
if(pMsg->message == WM_KEYDOWN)
{
MessageBox("!423","135");
}
return CStatic::PreTranslateMessage(pMsg);
}