Complete disaster-recovery snapshot: engine/game source, game data assets, VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive. Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false, no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
135 lines
3.1 KiB
C++
135 lines
3.1 KiB
C++
// TextureView.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "Megatron.h"
|
|
#include "TextureView.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CTextureView
|
|
|
|
IMPLEMENT_DYNCREATE(CTextureView, CView)
|
|
|
|
CTextureView::CTextureView()
|
|
{
|
|
}
|
|
|
|
CTextureView::~CTextureView()
|
|
{
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CTextureView, CView)
|
|
//{{AFX_MSG_MAP(CTextureView)
|
|
//}}AFX_MSG_MAP
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CTextureView drawing
|
|
|
|
void CTextureView::OnDraw(CDC* pDC)
|
|
{
|
|
// CDocument* pDoc = GetDocument();
|
|
if (m_image.IsData())
|
|
{
|
|
CBitmap bmp;
|
|
BYTE *pData = m_image.Lock();
|
|
if (pData)
|
|
{
|
|
bmp.CreateBitmap(m_image.GetWidth(),m_image.GetHeight(),1,m_image.GetBpp(),pData);
|
|
// Get the size of the bitmap
|
|
BITMAP bmpInfo;
|
|
bmp.GetBitmap(&bmpInfo);
|
|
|
|
// Create an in-memory DC compatible with the
|
|
// display DC we're using to paint
|
|
CDC dcMemory;
|
|
dcMemory.CreateCompatibleDC(pDC);
|
|
|
|
// Select the bitmap into the in-memory DC
|
|
CBitmap* pOldBitmap = dcMemory.SelectObject(&bmp);
|
|
|
|
// Find a centerpoint for the bitmap in the client area
|
|
CRect rect;
|
|
GetClientRect(&rect);
|
|
int nX = rect.left + (rect.Width() - bmpInfo.bmWidth) / 2;
|
|
int nY = rect.top + (rect.Height() - bmpInfo.bmHeight) / 2;
|
|
|
|
// Copy the bits from the in-memory DC into the on-
|
|
// screen DC to actually do the painting. Use the centerpoint
|
|
// we computed for the target offset.
|
|
pDC->BitBlt(nX, nY, bmpInfo.bmWidth, bmpInfo.bmHeight, &dcMemory,
|
|
0, 0, SRCCOPY);
|
|
|
|
dcMemory.SelectObject(pOldBitmap);
|
|
}
|
|
m_image.UnLock();
|
|
}
|
|
}
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CTextureView diagnostics
|
|
|
|
#ifdef _DEBUG
|
|
void CTextureView::AssertValid() const
|
|
{
|
|
CView::AssertValid();
|
|
}
|
|
|
|
void CTextureView::Dump(CDumpContext& dc) const
|
|
{
|
|
CView::Dump(dc);
|
|
}
|
|
#endif //_DEBUG
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CTextureView message handlers
|
|
|
|
void CTextureView::OnInitialUpdate()
|
|
{
|
|
CView::OnInitialUpdate();
|
|
CRect rc;
|
|
GetClientRect(&rc);
|
|
/* m_edit.Create(WS_CHILD | WS_VISIBLE,rc,this,NULL);
|
|
m_edit.ShowWindow(SW_SHOW);
|
|
m_edit.SetWindowText("Hello texture view");*/
|
|
}
|
|
|
|
void CTextureView::OnUpdate(CView* pSender, LPARAM lHint, CObject* pHint)
|
|
{
|
|
if (lHint)
|
|
{
|
|
Stuff::Page *page = (Stuff::Page *)lHint;
|
|
|
|
CString imagename = page->GetName();
|
|
|
|
// TODO: How do I load an image from Gos?
|
|
CMegatronApp *pApp = (CMegatronApp *)AfxGetApp();
|
|
CString path = pApp->m_strRunDir+"\\content\\textures\\"+imagename;
|
|
|
|
m_image.Delete();
|
|
|
|
CString fullname = path+".tga";
|
|
if (gos_DoesFileExist(fullname))
|
|
{
|
|
m_image.Load((char *)(LPCTSTR)fullname);
|
|
Invalidate();
|
|
return;
|
|
}
|
|
|
|
fullname = path+".png";
|
|
if (gos_DoesFileExist(fullname))
|
|
{
|
|
m_image.Load((char *)(LPCTSTR)fullname);
|
|
Invalidate();
|
|
return;
|
|
}
|
|
}
|
|
}
|