Exemple #1
0
void DrawScene()
{

	BeginScene(1);
	ImageToScreen(pimage_bg,0,0);

	RenderQuad(pimage_box,0,0,0,0,70,185,1,1,0,maskbox);
	RenderQuad(pimage_box,0,0,0,0,70,5,1,1,0,maskbox);
	DrawImage(pimage_icon[0],0,0,0,0,-20,-37,128,128);
	DrawImage(pimage_icon[1],0,0,0,0,-20,143,128,128);
	ImageToScreen(pimage_text,0,0);

	EndScene();
}
Exemple #2
0
void DrawScene()
{

	BeginScene(1);
	ImageToScreen(pimage_bg,0,0);

	//RenderQuad(pimage_box,0,0,0,0,70,185,1,1,0,maskbox);
	//RenderQuad(pimage_box,0,0,0,0,70,5,1,1,0,maskbox);
	//DrawImage(pimage_icon[0],0,0,0,0,-20,-37,128,128);
	//DrawImage(pimage_icon[1],0,0,0,0,-20,143,128,128);
	ImageToScreen(pimage_text,0,0);
	//DrawEllipse(50,50,11,21,0xff0000ff,DISPLAY_PIXEL_FORMAT_8888);
	DrawEllipse(50,50,10,20,0xff0000ff,DISPLAY_PIXEL_FORMAT_8888);
	DrawEllipse(50,50,9,19,0x3f0000ff,DISPLAY_PIXEL_FORMAT_8888);
	EndScene();
}
Exemple #3
0
BOOL CTexViewer::OnSetCursor(CWnd* pWnd, UINT nHitTest, UINT message) 
{
	switch(m_eEditMode)
	{
	case EDITMODE_SELECT:
		{
			HCURSOR hCur = m_hCursorSelect;
			eDRAGTYPE		eDT = m_eDragType;
			if (DRAGTYPE_NONE == m_eDragType)	// 드레그 Type이 NONE이면 cursor의 위치를 얻어서 테스트하기
			{
				CPoint pt;
				if (GetCursorPos(&pt))
				{
					ScreenToClient(&pt);
					CRect rcReal = m_rcSelectedRect;
					ImageToScreen(&rcReal);
					eDT = CheckDragType(rcReal, pt);
				}
			}

			switch(eDT)
			{
			case DRAGTYPE_NONE:			break;
			case DRAGTYPE_MOVE:
				hCur=m_hCursorSizeAll;		break;
			case DRAGTYPE_LEFT:
			case DRAGTYPE_RIGHT:
				hCur=m_hCursorSizeWE;			break;
			case DRAGTYPE_TOP:
			case DRAGTYPE_BOTTOM:
				hCur=m_hCursorSizeNS;			break;
			case DRAGTYPE_LEFTTOP:
			case DRAGTYPE_RIGHTBOTTOM:
				hCur=m_hCursorSizeNWSE;			break;
			case DRAGTYPE_RIGHTTOP:
			case DRAGTYPE_LEFTBOTTOM:
				hCur=m_hCursorSizeNESW;			break;
			}
			SetCursor(hCur);
			return TRUE;
		}
		break;
	case EDITMODE_ZOOM:
		if (GetAsyncKeyState(VK_MENU) & 0xff00)	SetCursor(m_hCursorZoomOut);
		else SetCursor(m_hCursorZoomIn);
		return TRUE;
		break;
	case EDITMODE_HAND:
		SetCursor(m_hCursorHand);
		return TRUE;
		break;
	}
	
	return CWnd::OnSetCursor(pWnd, nHitTest, message);
}
Exemple #4
0
void DrawScene()
{
	BeginScene(1);
	ImageToScreen(p_bg,0,0);
	DrawImage(p_logo,0,0,0,0,128,0,256,256);
	DrawImageMask(p_logo,0,0,0,0,0/*dx*/,0/*dy*/,128/*dw*/,128/*dh*/,logomask1);
	DrawImageMask(p_logo,0,0,0,0,480-128/*dx*/,272-128/*dy*/,128/*dw*/,128/*dh*/,0x7fffffff);
	DrawImageMask(p_logo,0,0,0,0,0/*dx*/,272-128/*dy*/,128/*dw*/,128/*dh*/,logomask2);
	DrawImageMask(p_logo,0,0,0,0,480-128/*dx*/,0/*dy*/,128/*dw*/,128/*dh*/,logomask2);
	EndScene();
}
Exemple #5
0
void CTexViewer::OnLButtonDown(UINT nFlags, CPoint point) 
{
	m_bDrag = TRUE;
	SetCapture();

	if (EDITMODE_SELECT == m_eEditMode)
	{
		// 지정된 사각형이 있으면 그 사각형을 변형하는지 체크하자
		if (-1 != m_rcSelectedRect.left)
		{
			CRect rcReal = m_rcSelectedRect;
			ImageToScreen(&rcReal);
			m_eDragType = CheckDragType(rcReal, point);
		}
		else m_eDragType = DRAGTYPE_NONE;

		if (DRAGTYPE_NONE == m_eDragType)
		{
			CPoint pt = point;
			ScreenToImage(&pt);				// image 좌표로 변환
			m_rcSelectedRect.SetRect(pt, pt);
			m_eDragType = DRAGTYPE_SELECT;
			m_bDeselect = TRUE;
			Invalidate();
		}
		else if (DRAGTYPE_MOVE == m_eDragType)
		{
			m_ptClickOffset = point;
			ScreenToImage(&m_ptClickOffset);
			m_ptClickOffset = m_ptClickOffset-m_rcSelectedRect.TopLeft();
		}
	}
	GetParent()->PostMessage(UM_UPDATE_INFO, TRUE, MAKELPARAM((short)point.y,(short)point.x));
	
	m_ptMouseOld = point;
	CWnd::OnLButtonDown(nFlags, point);
}
Exemple #6
0
void CTexViewer::OnLButtonUp(UINT nFlags, CPoint point) 
{
	if (m_bDrag)
	{
		m_bDrag = FALSE;
		if (EDITMODE_SELECT == m_eEditMode)
		{
			if (DRAGTYPE_SELECT == m_eDragType)
			{
				if (m_bDeselect) m_rcSelectedRect.SetRect(-1,-1,-1,-1);	// deselect
				else
				{
					CPoint pt = point;
					ScreenToImage(&pt);				// image 좌표로 변환
					
					// 사각형의 left,top은 작은 좌표 right, bottom은 큰 좌표로 정리하기
					if (m_rcSelectedRect.left > pt.x)
					{
						m_rcSelectedRect.right = m_rcSelectedRect.left;
						m_rcSelectedRect.left = pt.x;
					}
					else m_rcSelectedRect.right = pt.x;
					if (m_rcSelectedRect.top > pt.y)
					{
						m_rcSelectedRect.bottom = m_rcSelectedRect.top;
						m_rcSelectedRect.top = pt.y;
					}
					else m_rcSelectedRect.bottom = pt.y;
				}			
			}
			else
			{
				ProcessDrag(point);
			}
			m_eDragType = DRAGTYPE_NONE;
			if (m_iCurSelectedImage>=0) m_ImageRects[m_iCurSelectedImage] = m_rcSelectedRect;	// 만약 ImageType별로 저장한다면 선택된 사각형을 copy해주기
			Invalidate();
		}
		else if (EDITMODE_ZOOM == m_eEditMode)
		{
			if (m_ptMouseOld == point)
			{
				CRect rc;
				GetClientRect(&rc);
				CPoint ptPrev = point;
				ScreenToImage(&ptPrev);	// zoom 하기 전의 image좌표 저장
				Zoom((GetAsyncKeyState(VK_MENU) & 0xff00) ? FALSE : TRUE);
				CPoint ptNext = ptPrev;
				ImageToScreen(&ptNext);	// zoom 한 후의 image좌표를 screen좌표로 전환
				ptNext.x = int((ptNext.x-rc.CenterPoint().x)/m_fScale);		//화면 가운데로 오게끔 설정
				ptNext.y = int((ptNext.y-rc.CenterPoint().y)/m_fScale);
				SetLeftTopInImage( m_ptLeftTopInImage + ptNext);	//차이만큼 옮기기
			}
			else
			{
			}
		}
		else if (EDITMODE_HAND == m_eEditMode)
		{
			CPoint ptDiff = m_ptMouseOld - point;
			ptDiff.x = (int)(ptDiff.x / m_fScale);
			ptDiff.y = (int)(ptDiff.y / m_fScale);
			SetLeftTopInImage(m_ptLeftTopInImage+ptDiff);
		}
	}
	m_ptMouseOld = point;
	ReleaseCapture();
	GetParent()->PostMessage(UM_UPDATE_INFO, TRUE, MAKELPARAM((short)point.y,(short)point.x));
	CWnd::OnLButtonUp(nFlags, point);
}