fakk2-sdk/source/utils/dlgedit/objprops.cpp
2000-09-17 00:00:00 +00:00

183 lines
4.2 KiB
C++

// ObjProps.cpp : implementation file
//
#include "stdafx.h"
#include "dlgedit.h"
#include "ObjProps.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CObjProps dialog
CObjProps::CObjProps(CWnd* pParent /*=NULL*/)
: CDialog(CObjProps::IDD, pParent)
{
//{{AFX_DATA_INIT(CObjProps)
m_attribs = _T("");
m_title = _T("");
m_position = _T("");
m_name = _T("");
m_class = _T("");
m_stuffcommand = _T("");
m_linkcvar = _T("");
m_bgalpha = _T("");
m_fgalpha = _T("");
m_fgcolor = _T("");
m_bgcolor = _T("");
m_borderstyle = _T("");
//}}AFX_DATA_INIT
}
void CObjProps::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CObjProps)
DDX_Text(pDX, IDC_ATTRIBS, m_attribs);
DDX_Text(pDX, IDC_TITLE, m_title);
DDX_Text(pDX, IDC_POSITION, m_position);
DDX_Text(pDX, IDC_NAME, m_name);
DDX_CBString(pDX, IDC_CLASS, m_class);
DDX_Text(pDX, IDC_STUFFCOMMAND, m_stuffcommand);
DDX_Text(pDX, IDC_CVAR, m_linkcvar);
DDX_Text(pDX, IDC_BGALPHA, m_bgalpha);
DDX_Text(pDX, IDC_FGALPHA, m_fgalpha);
DDX_CBString(pDX, IDC_BORDERSTYLE, m_borderstyle);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CObjProps, CDialog)
//{{AFX_MSG_MAP(CObjProps)
ON_WM_DRAWITEM()
ON_BN_CLICKED(IDC_BGCOLOR, OnBgcolor)
ON_BN_CLICKED(IDC_FGCOLOR, OnFgcolor)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CObjProps message handlers
void CObjProps::OnOK()
{
if ( !UpdateData ( TRUE ) )
return;
if ( m_name == "" || m_class == "" )
{
MessageBox ( "Name and class must all be filled in" );
return;
}
int i[4];
if ( sscanf ( m_position, "%d %d %d %d", i, i+1, i+2, i+3 ) != 4 )
{
MessageBox ( "x, y, width, height must be space-separated list of ints" );
return;
}
CDialog::OnOK();
}
void CObjProps::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT dis)
{
float color[3];
CDC dc;
if ( ( nIDCtl != IDC_BGCOLOR ) && ( nIDCtl != IDC_FGCOLOR ) )
return;
dc.Attach ( dis->hDC );
if ( nIDCtl == IDC_BGCOLOR )
sscanf( m_bgcolor, "%f %f %f", &color[0], &color[1], &color[2] );
else
sscanf( m_fgcolor, "%f %f %f", &color[0], &color[1], &color[2] );
dc.FillSolidRect ( &dis->rcItem, RGB ( color[0] * 255, color[1] * 255, color[2] * 255 ) );
dc.Detach ();
CDialog::OnDrawItem(nIDCtl, dis);
}
void CObjProps::OnFgcolor()
{
float color[3]={ 0,0,0 };
CHOOSECOLOR cc;
static COLORREF custom[16];;
COLORREF result;
cc.lStructSize = sizeof(cc);
cc.hwndOwner = NULL;
cc.lpCustColors = custom;
#if 0
cc.rgbResult = (int)(color[0]*255) +
((int)(color[1]*255) <<8) +
((int)(color[2]*255)<<16);
#endif
cc.Flags = CC_FULLOPEN;//|CC_RGBINIT;
CColorDialog cd;
cd.m_cc = cc;
if ( IDOK != cd.DoModal () )
return;
result = cd.GetColor();
color[0] = (float)(result&255)/255.0f;
color[1] = (float)(result>>8&255)/255.0f;
color[2] = (float)(result>>16&255)/255.0f;
m_fgcolor.Format( "%0.2f %0.2f %0.2f", color[0], color[1], color[2] );
GetDlgItem ( IDC_FGCOLOR )->RedrawWindow ();
}
void CObjProps::OnBgcolor()
{
float color[3]={ 0,0,0 };
CHOOSECOLOR cc;
static COLORREF custom[16];;
COLORREF result;
cc.lStructSize = sizeof(cc);
cc.hwndOwner = NULL;
cc.lpCustColors = custom;
#if 0
cc.rgbResult = (int)(color[0]*255) +
((int)(color[1]*255) <<8) +
((int)(color[2]*255)<<16);
#endif
cc.Flags = CC_FULLOPEN;//|CC_RGBINIT;
CColorDialog cd;
cd.m_cc = cc;
if ( IDOK != cd.DoModal () )
return;
result = cd.GetColor();
color[0] = (float)(result&255)/255.0f;
color[1] = (float)(result>>8&255)/255.0f;
color[2] = (float)(result>>16&255)/255.0f;
m_bgcolor.Format( "%0.2f %0.2f %0.2f", color[0], color[1], color[2] );
GetDlgItem ( IDC_BGCOLOR )->RedrawWindow ();
}