Files
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
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.
2026-06-24 21:28:16 -05:00

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;
}
}
}