Скачиваний:
28
Добавлен:
02.05.2014
Размер:
10.07 Кб
Скачать
// PixForm.cpp : implementation file
//

#include "stdafx.h"
#include "PixFrmt.h"
#include "PixForm.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CPixForm dialog


CPixForm::CPixForm(CWnd* pParent /*=NULL*/)
	: CDialog(CPixForm::IDD, pParent)
{
	//{{AFX_DATA_INIT(CPixForm)
	  m_bDrwBitmap   = FALSE;
	  m_bDrwWindow   = FALSE;
	  m_bDblBuffer   = FALSE;
	  m_bSuppGDI     = FALSE;
	  m_bSuppOpenGL  = FALSE;
    m_nTypeRGBA    = -1;
	  m_bStereo      = FALSE;
    m_nAccumBits   = 0;
	  m_nAlphaBits   = 0;
	  m_nColorBits   = 0;
	  m_nStencilBits = 0;
	  m_nDepthBits   = 0;
    m_nLayer       = -1;
	  m_nIndex       = 0;
    m_bDblBuffDnCr = FALSE;
	  m_bNeedPal     = FALSE;
	  m_bNeedSysPal  = FALSE;
	  m_bStereoDnCr  = FALSE;
	  m_nAuxBuffer = 0;
	//}}AFX_DATA_INIT
}


void CPixForm::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPixForm)
	DDX_Check(pDX, IDC_DRWBITMAP, m_bDrwBitmap);
	DDX_Check(pDX, IDC_DRWWINDOW, m_bDrwWindow);
	DDX_Check(pDX, IDC_DOUBLEBUFFER, m_bDblBuffer);
	DDX_Check(pDX, IDC_SUPPORTGDI, m_bSuppGDI);
	DDX_Check(pDX, IDC_SUPPORTOPENGL, m_bSuppOpenGL);
	DDX_Radio(pDX, IDC_TYPERGBA, m_nTypeRGBA);
	DDX_Check(pDX, IDC_STEREO, m_bStereo);
	DDX_Text(pDX, IDC_ACCUMBITS, m_nAccumBits);
	DDV_MinMaxInt(pDX, m_nAccumBits, 0, 64);
	DDX_Text(pDX, IDC_ALPHABITS, m_nAlphaBits);
	DDV_MinMaxInt(pDX, m_nAlphaBits, 0, 64);
	DDX_Text(pDX, IDC_COLORBITS, m_nColorBits);
	DDV_MinMaxInt(pDX, m_nColorBits, 0, 64);
	DDX_Text(pDX, IDC_STENCILBITS, m_nStencilBits);
	DDV_MinMaxInt(pDX, m_nStencilBits, 0, 64);
	DDX_Text(pDX, IDC_DEPTHBITS, m_nDepthBits);
	DDV_MinMaxInt(pDX, m_nDepthBits, 0, 64);
	DDX_Radio(pDX, IDC_MAINPLANE, m_nLayer);
	DDX_Text(pDX, IDC_INDEX, m_nIndex);
	DDV_MinMaxInt(pDX, m_nIndex, 1, 24);
	DDX_Check(pDX, IDC_DBUFFERDONTCARE, m_bDblBuffDnCr);
	DDX_Check(pDX, IDC_NEEDPALETTE, m_bNeedPal);
	DDX_Check(pDX, IDC_NEEDSYSTEMPALETTE, m_bNeedSysPal);
	DDX_Check(pDX, IDC_STEREODONTCARE, m_bStereoDnCr);
	DDX_Text(pDX, IDC_AUXBUFFERS, m_nAuxBuffer);
	DDV_MinMaxInt(pDX, m_nAuxBuffer, 0, 64);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CPixForm, CDialog)
	//{{AFX_MSG_MAP(CPixForm)
	ON_BN_CLICKED(IDC_MOREPFD, OnMorePFD)
	ON_BN_CLICKED(IDC_FIRST_PFD, OnFirstPFD)
	ON_BN_CLICKED(IDC_PREV_PFD, OnPrevPFD)
	ON_BN_CLICKED(IDC_NEXT_PFD, OnNextPFD)
	ON_BN_CLICKED(IDC_LAST_PFD, OnLastPFD)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPixForm message handlers

BOOL CPixForm::OnInitDialog() 
{
  PIXELFORMATDESCRIPTOR pfd;

	CDialog::OnInitDialog();
  CenterWindow();
	
  m_nCurIndex = m_pOGL->m_hrc ? 
                ::GetPixelFormat(m_pOGL->m_pdc->m_hDC) : 1;

  if(::DescribePixelFormat(m_pOGL->m_pdc->m_hDC, m_nCurIndex,
                           sizeof(PIXELFORMATDESCRIPTOR), &pfd))
    UpdateDlg(&pfd);

  return TRUE;
}

void CPixForm::UpdateDlg(PIXELFORMATDESCRIPTOR *pfd)
{
  CheckDlgButton(IDC_DRWWINDOW,
                 pfd->dwFlags & PFD_DRAW_TO_WINDOW ? 1 : 0) ;
  CheckDlgButton(IDC_DRWBITMAP,
                 pfd->dwFlags & PFD_DRAW_TO_BITMAP ? 1 : 0) ;
  CheckDlgButton(IDC_SUPPORTGDI,
                 pfd->dwFlags & PFD_SUPPORT_GDI ? 1 : 0) ;
  CheckDlgButton(IDC_SUPPORTOPENGL,
                 pfd->dwFlags & PFD_SUPPORT_OPENGL ? 1 : 0) ;
  CheckDlgButton(IDC_DOUBLEBUFFER,
                 pfd->dwFlags & PFD_DOUBLEBUFFER ? 1 : 0) ;
  CheckDlgButton(IDC_STEREO,
 		             pfd->dwFlags & PFD_STEREO ? 1 : 0) ;
  CheckDlgButton(IDC_DBUFFERDONTCARE,
                 pfd->dwFlags & PFD_DOUBLEBUFFER_DONTCARE ? 1 : 0) ;
  CheckDlgButton(IDC_STEREODONTCARE,
                 pfd->dwFlags & PFD_STEREO_DONTCARE ? 1 : 0) ;
  CheckDlgButton(IDC_NEEDPALETTE,
                 pfd->dwFlags & PFD_NEED_PALETTE ? 1 : 0) ;
  CheckDlgButton(IDC_NEEDSYSTEMPALETTE,
                 pfd->dwFlags & PFD_NEED_SYSTEM_PALETTE ? 1 : 0) ;
  
  CheckDlgButton(IDC_DBUFFERDONTCARE,
                 pfd->dwFlags & PFD_DOUBLEBUFFER_DONTCARE ? 1 : 0); 
  CheckDlgButton(IDC_STEREODONTCARE,
                 pfd->dwFlags & PFD_STEREO_DONTCARE ? 1 : 0); 

  SetDlgItemInt(IDC_COLORBITS,   pfd->cColorBits,   TRUE);
  SetDlgItemInt(IDC_ALPHABITS,   pfd->cAlphaBits,   TRUE);
  SetDlgItemInt(IDC_ACCUMBITS,   pfd->cAccumBits,   TRUE);
  SetDlgItemInt(IDC_DEPTHBITS,   pfd->cDepthBits,   TRUE);
  SetDlgItemInt(IDC_STENCILBITS, pfd->cStencilBits, TRUE);
  SetDlgItemInt(IDC_AUXBUFFERS,  pfd->cAuxBuffers,  TRUE);

  int type = IDC_MAINPLANE;
  switch(pfd->iLayerType){
    case PFD_OVERLAY_PLANE : type = IDC_OVERLAYPLANE; break;
    case PFD_UNDERLAY_PLANE: type = IDC_UNDERLAYPLANE; break;
  }
  CheckRadioButton(IDC_MAINPLANE, IDC_UNDERLAYPLANE, type);

  type = IDC_TYPERGBA;
  if(pfd->iPixelType != PFD_TYPE_RGBA)
    type = IDC_TYPECOLORINDEX;
  CheckRadioButton(IDC_TYPERGBA,  IDC_TYPECOLORINDEX, type);

  SetDlgItemInt(IDC_INDEX, m_nCurIndex, TRUE);

}

void CPixForm::OnFirstPFD() 
{
	PIXELFORMATDESCRIPTOR pfd;
  m_nCurIndex = 1;

  if(::DescribePixelFormat(m_pOGL->m_pdc->m_hDC, m_nCurIndex,
                           sizeof(PIXELFORMATDESCRIPTOR), &pfd))
    UpdateDlg(&pfd);
}

void CPixForm::OnPrevPFD() 
{
 	PIXELFORMATDESCRIPTOR pfd;
  int nCurIndex = (m_nCurIndex > 1) ? 
                     --m_nCurIndex : (m_nCurIndex = 1);

  if(::DescribePixelFormat(m_pOGL->m_pdc->m_hDC, nCurIndex,
                           sizeof(PIXELFORMATDESCRIPTOR), &pfd))
    UpdateDlg(&pfd);
}

void CPixForm::OnNextPFD() 
{
 	PIXELFORMATDESCRIPTOR pfd;
  int nCurIndex = (m_nCurIndex < 24) ? 
                     ++m_nCurIndex : (m_nCurIndex = 24);

  if(::DescribePixelFormat(m_pOGL->m_pdc->m_hDC, nCurIndex,
                           sizeof(PIXELFORMATDESCRIPTOR), &pfd))
    UpdateDlg(&pfd);
}

void CPixForm::OnLastPFD() 
{
	PIXELFORMATDESCRIPTOR pfd;
  m_nCurIndex = 24;

  if(::DescribePixelFormat(m_pOGL->m_pdc->m_hDC, m_nCurIndex,
                           sizeof(PIXELFORMATDESCRIPTOR), &pfd))
    UpdateDlg(&pfd);
}

void CPixForm::OnMorePFD() 
{
	CMorePFD MorePFD;
	PIXELFORMATDESCRIPTOR pfd;

  if(::DescribePixelFormat(m_pOGL->m_pdc->m_hDC, m_nCurIndex,
                           sizeof(PIXELFORMATDESCRIPTOR), &pfd))
	{
	  MorePFD.m_ppfd = (LPPIXELFORMATDESCRIPTOR)&pfd;
	  MorePFD.DoModal();
	}
}

/////////////////////////////////////////////////////////////////////////////
// CMorePFD dialog

CMorePFD::CMorePFD(CWnd* pParent /*=NULL*/)
	: CDialog(CMorePFD::IDD, pParent)
{
	//{{AFX_DATA_INIT(CMorePFD)
	  m_accumalphabits = 0;
	  m_accumbluebits  = 0;
	  m_accumgreenbits = 0;
	  m_accumredbits   = 0;
	  m_alphabits      = 0;
	  m_alphashift     = 0;
	  m_bluebits       = 0;
	  m_blueshift      = 0;
	  m_damagemask     = 0;
	  m_greenbits      = 0;
	  m_greenshift     = 0;
	  m_layermask      = 0;
	  m_redbits        = 0;
	  m_redshift       = 0;
	  m_visiblemask    = 0;
	//}}AFX_DATA_INIT
}


void CMorePFD::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CMorePFD)
		DDX_Text(pDX, IDC_ACCUMALPHABITS, m_accumalphabits);
    DDV_MinMaxInt(pDX, m_accumalphabits, 0, 32);
	  DDX_Text(pDX, IDC_ACCUMBLUEBITS, m_accumbluebits);
	  DDV_MinMaxInt(pDX, m_accumbluebits, 0, 32);
	  DDX_Text(pDX, IDC_ACCUMGREENBITS, m_accumgreenbits);
	  DDV_MinMaxInt(pDX, m_accumgreenbits, 0, 32);
	  DDX_Text(pDX, IDC_ACCUMREDBITS, m_accumredbits);
	  DDX_Text(pDX, IDC_ALPHABITS, m_alphabits);
	  DDV_MinMaxInt(pDX, m_alphabits, 0, 32);
	  DDX_Text(pDX, IDC_ALPHASHIFT, m_alphashift);
	  DDV_MinMaxInt(pDX, m_alphashift, 0, 32);
	  DDX_Text(pDX, IDC_BLUEBITS, m_bluebits);
	  DDV_MinMaxInt(pDX, m_bluebits, 0, 32);
	  DDX_Text(pDX, IDC_BLUESHIFT, m_blueshift);
	  DDV_MinMaxInt(pDX, m_blueshift, 0, 32);
	  DDX_Text(pDX, IDC_DAMAGEMASK, m_damagemask);
	  DDX_Text(pDX, IDC_GREENBITS, m_greenbits);
	  DDV_MinMaxInt(pDX, m_greenbits, 0, 32);
	  DDX_Text(pDX, IDC_GREENSHIFT, m_greenshift);
	  DDV_MinMaxInt(pDX, m_greenshift, 0, 32);
	  DDX_Text(pDX, IDC_LAYERMASK, m_layermask);
	  DDX_Text(pDX, IDC_REDBITS, m_redbits);
	  DDV_MinMaxInt(pDX, m_redbits, 0, 32);
	  DDX_Text(pDX, IDC_REDSHIFT, m_redshift);
	  DDV_MinMaxInt(pDX, m_redshift, 0, 32);
	  DDX_Text(pDX, IDC_VISIBLEMASK, m_visiblemask);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CMorePFD, CDialog)
	//{{AFX_MSG_MAP(CMorePFD)
		// NOTE: the ClassWizard will add message map macros here
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CMorePFD message handlers

BOOL CMorePFD::OnInitDialog()
{
	CDialog::OnInitDialog();
	
	LPPIXELFORMATDESCRIPTOR ppfd = (LPPIXELFORMATDESCRIPTOR)m_ppfd;

	CenterWindow(NULL);
 	SetDlgItemInt(IDC_ACCUMALPHABITS, ppfd->cAccumAlphaBits, TRUE);
 	SetDlgItemInt(IDC_ACCUMBLUEBITS,  ppfd->cAccumBlueBits,  TRUE);
 	SetDlgItemInt(IDC_ACCUMGREENBITS, ppfd->cAccumGreenBits, TRUE);
 	SetDlgItemInt(IDC_ACCUMREDBITS,   ppfd->cAccumRedBits,   TRUE);
 	SetDlgItemInt(IDC_ALPHABITS,      ppfd->cAlphaBits,      TRUE);
 	SetDlgItemInt(IDC_ALPHASHIFT,     ppfd->cAlphaShift,     TRUE);
 	SetDlgItemInt(IDC_BLUEBITS,       ppfd->cBlueBits,       TRUE);
 	SetDlgItemInt(IDC_BLUESHIFT,      ppfd->cBlueShift,      TRUE);
 	SetDlgItemInt(IDC_DAMAGEMASK,     ppfd->dwDamageMask,    TRUE);
 	SetDlgItemInt(IDC_GREENBITS,      ppfd->cGreenBits,      TRUE);
 	SetDlgItemInt(IDC_GREENSHIFT,     ppfd->cGreenShift,     TRUE);
 	SetDlgItemInt(IDC_LAYERMASK,      ppfd->dwLayerMask,     TRUE);
 	SetDlgItemInt(IDC_REDBITS,        ppfd->cRedBits,        TRUE);
 	SetDlgItemInt(IDC_REDSHIFT,       ppfd->cRedShift,       TRUE);
 	SetDlgItemInt(IDC_VISIBLEMASK,    ppfd->dwVisibleMask,   TRUE);
    
	return TRUE;
}

Соседние файлы в папке PixFrmtCheck