// OBDlg.cpp : implementation file // #include "stdafx.h" #include "cldprn32.h" #include "OBDlg.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif #define CREATE_TITLE TEXT("Create Image Overlay Box") #define UPDATE_TITLE TEXT("Update Image Overlay Box") #define CREATE_LABEL TEXT("&Create") #define UPDATE_LABEL TEXT("&Update") ///////////////////////////////////////////////////////////////////////////// // CImageOverlayBoxDlg dialog CImageOverlayBoxDlg::CImageOverlayBoxDlg(CImageOverlayBox& ImageOverlayBox, CWnd* pParent /*=NULL*/) : CDialog(CImageOverlayBoxDlg::IDD, pParent), m_bCreationMode(TRUE), m_ImageOverlayBox(ImageOverlayBox), m_OverlayFilenameChkBox(IDC_EDIT_OVERLAYFILE), m_OverlayOriginRowChkBox(IDC_EDIT_OVERLAYORIGINROW), m_OverlayOriginColumnChkBox(IDC_EDIT_OVERLAYORIGINCOLUMN), m_OverlayMagnificationTypeChkBox(IDC_COMBO_OVERLAYMAGNIFICATIONTYPE), m_OverlaySmoothingTypeChkBox(IDC_EDIT_OVERLAYSMOOTHINGTYPE), m_OverlayOrImageMagnificationChkBox(IDC_COMBO_OVERLAYORIMAGEMAGNIFICATION), m_MagnifyToNumberOfColumnsChkBox(IDC_EDIT_MAGNIFYTONUMBEROFCOLUMNS), m_OverlayForegroundDensityChkBox(IDC_COMBO_OVERLAYFOREGROUNDDENSITY), m_OverlayBackgroundDensityChkBox(IDC_COMBO_OVERLAYBACKGROUNDDENSITY) { //{{AFX_DATA_INIT(CImageOverlayBoxDlg) // NOTE: the ClassWizard will add member initialization here //}}AFX_DATA_INIT } void CImageOverlayBoxDlg::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CImageOverlayBoxDlg) DDX_Control(pDX, IDC_COMBO_OVERLAYBACKGROUNDDENSITY, m_OverlayBackgroundDensityCombo); DDX_Control(pDX, IDC_COMBO_OVERLAYFOREGROUNDDENSITY, m_OverlayForegroundDensityCombo); DDX_Control(pDX, IDC_COMBO_OVERLAYORIMAGEMAGNIFICATION, m_OverlayOrImageMagnificationCombo); DDX_Control(pDX, IDC_COMBO_OVERLAYMAGNIFICATIONTYPE, m_OverlayMagnificationTypeCombo); DDX_Control(pDX, IDC_CHECK_LOADOVERLAYFROMFILE, m_OverlayFilenameChkBox); DDX_Control(pDX, IDC_CHECK_OVERLAYORIGINROW, m_OverlayOriginRowChkBox); DDX_Control(pDX, IDC_CHECK_OVERLAYORIGINCOLUMN, m_OverlayOriginColumnChkBox); DDX_Control(pDX, IDC_CHECK_OVERLAYMAGNIFICATIONTYPE, m_OverlayMagnificationTypeChkBox); DDX_Control(pDX, IDC_CHECK_OVERLAYSMOOTHINGTYPE, m_OverlaySmoothingTypeChkBox); DDX_Control(pDX, IDC_CHECK_OVERLAYORIMAGEMAGNIFICATION, m_OverlayOrImageMagnificationChkBox); DDX_Control(pDX, IDC_CHECK_MAGNIFYTONUMBEROFCOLUMNS, m_MagnifyToNumberOfColumnsChkBox); DDX_Control(pDX, IDC_CHECK_OVERLAYFOREGROUNDDENSITY, m_OverlayForegroundDensityChkBox); DDX_Control(pDX, IDC_CHECK_OVERLAYBACKGROUNDDENSITY, m_OverlayBackgroundDensityChkBox); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CImageOverlayBoxDlg, CDialog) //{{AFX_MSG_MAP(CImageOverlayBoxDlg) ON_EN_CHANGE(IDC_EDIT_OVERLAYFILE, OnChangeEditOverlayFile) ON_CBN_SELCHANGE(IDC_COMBO_OVERLAYMAGNIFICATIONTYPE, OnSelChangeComboOverlayMagnificationType) ON_BN_CLICKED(IDC_BUTTON_CREATEUPDATE, OnButtonCreateUpdate) ON_BN_CLICKED(IDC_BUTTON_BROWSE, OnButtonBrowse) //}}AFX_MSG_MAP END_MESSAGE_MAP() void CImageOverlayBoxDlg::InitializeFields() { // Overlay filename SetDlgItemText(IDC_EDIT_OVERLAYFILE, m_ImageOverlayBox.m_sOverlayFilename); GetDlgItem(IDC_BUTTON_BROWSE)->EnableWindow(m_OverlayFilenameChkBox.m_bChecked); OnChangeEditOverlayFile(); // Overlay Origin (row) SetDlgItemInt(IDC_EDIT_OVERLAYORIGINROW, m_ImageOverlayBox.m_iOverlayOriginRow); // Overlay Origin (column) SetDlgItemInt(IDC_EDIT_OVERLAYORIGINCOLUMN, m_ImageOverlayBox.m_iOverlayOriginColumn); // Overlay Magnification Type m_OverlayMagnificationTypeCombo.AddString(TEXT("REPLICATE")); m_OverlayMagnificationTypeCombo.AddString(TEXT("BILINEAR")); m_OverlayMagnificationTypeCombo.AddString(TEXT("CUBIC")); m_OverlayMagnificationTypeCombo.SetCurSel(0); m_OverlayMagnificationTypeCombo.SelectString(-1, m_ImageOverlayBox.m_sOverlayMagnificationType); // Overlay Smoothing Type SetDlgItemText(IDC_EDIT_OVERLAYSMOOTHINGTYPE, m_ImageOverlayBox.m_sOverlaySmoothingType); UpdateOverlaySmoothingTypeControlsState(); // Overlay or Image Magnification m_OverlayOrImageMagnificationCombo.AddString(TEXT("IMAGE")); m_OverlayOrImageMagnificationCombo.AddString(TEXT("OVERLAY")); m_OverlayOrImageMagnificationCombo.SetCurSel(0); m_OverlayOrImageMagnificationCombo.SelectString(-1, m_ImageOverlayBox.m_sOverlayOrImageMagnification); // Magnify to Number of Columns if (m_ImageOverlayBox.m_iMagnifyToNumberOfColumns >= 0) { SetDlgItemInt(IDC_EDIT_MAGNIFYTONUMBEROFCOLUMNS, m_ImageOverlayBox.m_iMagnifyToNumberOfColumns, FALSE); } // Overlay Foreground Density m_OverlayForegroundDensityCombo.AddString(TEXT("BLACK")); m_OverlayForegroundDensityCombo.AddString(TEXT("WHITE")); m_OverlayForegroundDensityCombo.SetCurSel(0); m_OverlayForegroundDensityCombo.SelectString(-1, m_ImageOverlayBox.m_sOverlayForegroundDensity); // Overlay Background Density m_OverlayBackgroundDensityCombo.AddString(TEXT("BLACK")); m_OverlayBackgroundDensityCombo.AddString(TEXT("WHITE")); m_OverlayBackgroundDensityCombo.SetCurSel(0); m_OverlayBackgroundDensityCombo.SelectString(-1, m_ImageOverlayBox.m_sOverlayBackgroundDensity); } void CImageOverlayBoxDlg::UpdateOverlaySmoothingTypeControlsState() { // The Overlay Smoothing Type is only valid for Overlay Magnification Type = CUBIC if (m_OverlayMagnificationTypeChkBox.GetCheck() == 1) { CString sValue; m_OverlayMagnificationTypeCombo.GetWindowText(sValue); m_OverlaySmoothingTypeChkBox.EnableWindow(sValue == TEXT("CUBIC")); } else { m_OverlaySmoothingTypeChkBox.EnableWindow(FALSE); } } ///////////////////////////////////////////////////////////////////////////// // CImageOverlayBoxDlg message handlers BOOL CImageOverlayBoxDlg::OnInitDialog() { CDialog::OnInitDialog(); SetWindowText(m_bCreationMode ? CREATE_TITLE : UPDATE_TITLE); SetDlgItemText(IDC_BUTTON_CREATEUPDATE, m_bCreationMode ? CREATE_LABEL : UPDATE_LABEL); m_OverlayFilenameChkBox.m_bChecked = m_ImageOverlayBox.m_bOverlayFilenameChecked; m_OverlayOriginRowChkBox.m_bChecked = m_ImageOverlayBox.m_bOverlayOriginChecked; m_OverlayOriginColumnChkBox.m_bChecked = m_ImageOverlayBox.m_bOverlayOriginChecked; m_OverlayMagnificationTypeChkBox.m_bChecked = m_ImageOverlayBox.m_bOverlayMagnificationTypeChecked; m_OverlaySmoothingTypeChkBox.m_bChecked = m_ImageOverlayBox.m_bOverlaySmoothingTypeChecked; m_OverlayOrImageMagnificationChkBox.m_bChecked = m_ImageOverlayBox.m_bMagnificationChecked; m_MagnifyToNumberOfColumnsChkBox.m_bChecked = m_ImageOverlayBox.m_bMagnificationChecked; m_OverlayForegroundDensityChkBox.m_bChecked = m_ImageOverlayBox.m_bOverlayForegroundDensityChecked; m_OverlayBackgroundDensityChkBox.m_bChecked = m_ImageOverlayBox.m_bOverlayBackgroundDensityChecked; // The Overlay Pixel Data Sequence is mandatory when creating, but optional when updating if (m_bCreationMode) { RECT rect; // Overlay filename m_OverlayFilenameChkBox.GetWindowRect(&rect); ScreenToClient(&rect); GetDlgItem(IDC_STATIC_LOADOVERLAYFROMFILE)->SetWindowPos(NULL, rect.left, rect.top, 0, 0, SWP_NOSIZE | SWP_NOZORDER); m_OverlayFilenameChkBox.ShowWindow(SW_HIDE); m_OverlayFilenameChkBox.m_bChecked = TRUE; // Overlay Origin (row) m_OverlayOriginRowChkBox.GetWindowRect(&rect); ScreenToClient(&rect); GetDlgItem(IDC_STATIC_OVERLAYORIGINROW)->SetWindowPos(NULL, rect.left, rect.top, 0, 0, SWP_NOSIZE | SWP_NOZORDER); m_OverlayOriginRowChkBox.ShowWindow(SW_HIDE); m_OverlayOriginRowChkBox.m_bChecked = TRUE; // Overlay Origin (column) m_OverlayOriginColumnChkBox.GetWindowRect(&rect); ScreenToClient(&rect); GetDlgItem(IDC_STATIC_OVERLAYORIGINCOLUMN)->SetWindowPos(NULL, rect.left, rect.top, 0, 0, SWP_NOSIZE | SWP_NOZORDER); m_OverlayOriginColumnChkBox.ShowWindow(SW_HIDE); m_OverlayOriginColumnChkBox.m_bChecked = TRUE; } else { GetDlgItem(IDC_STATIC_LOADOVERLAYFROMFILE)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC_OVERLAYORIGINROW)->ShowWindow(SW_HIDE); GetDlgItem(IDC_STATIC_OVERLAYORIGINCOLUMN)->ShowWindow(SW_HIDE); } m_OverlayFilenameChkBox.Initialize(); m_OverlayOriginRowChkBox.Initialize(); m_OverlayOriginColumnChkBox.Initialize(); m_OverlayMagnificationTypeChkBox.Initialize(); m_OverlaySmoothingTypeChkBox.Initialize(); m_OverlayOrImageMagnificationChkBox.Initialize(); m_MagnifyToNumberOfColumnsChkBox.Initialize(); m_OverlayForegroundDensityChkBox.Initialize(); m_OverlayBackgroundDensityChkBox.Initialize(); InitializeFields(); return TRUE; } void CImageOverlayBoxDlg::OnButtonBrowse() { CFileDialog FileDialog(TRUE, NULL, NULL, OFN_FILEMUSTEXIST | OFN_HIDEREADONLY, TEXT("All Files (*.*)|*.*||"), this); if (FileDialog.DoModal() != IDOK) { return; } SetDlgItemText(IDC_EDIT_OVERLAYFILE, FileDialog.GetPathName()); } void CImageOverlayBoxDlg::OnButtonCreateUpdate() { // If we are updating the Image Overlay Box, then at least one attribute must be specified if (!m_bCreationMode) { CAttribCheckBox* AttribCheckBoxes[] = { &m_OverlayFilenameChkBox, &m_OverlayOriginRowChkBox, &m_OverlayOriginColumnChkBox, &m_OverlayMagnificationTypeChkBox, &m_OverlaySmoothingTypeChkBox, &m_OverlayOrImageMagnificationChkBox, &m_MagnifyToNumberOfColumnsChkBox, &m_OverlayForegroundDensityChkBox, &m_OverlayBackgroundDensityChkBox }; int iCount = sizeof(AttribCheckBoxes) / sizeof(AttribCheckBoxes[0]); for (int i = 0; i < iCount; i++) { if (AttribCheckBoxes[i]->m_bEnabled && AttribCheckBoxes[i]->m_bChecked) break; } if (i >= iCount) { MessageBox(TEXT("Please specify at least one attribute to be updated."), TEXT("Print SCU"), MB_ICONEXCLAMATION); return; } } CString sValue; // Overlay filename GetDlgItemText(IDC_EDIT_OVERLAYFILE, m_ImageOverlayBox.m_sOverlayFilename); m_ImageOverlayBox.m_sOverlayFilename.TrimLeft(); m_ImageOverlayBox.m_sOverlayFilename.TrimRight(); m_ImageOverlayBox.m_bOverlayFilenameChecked = m_OverlayFilenameChkBox.m_bChecked; // Overlay Origin (row) m_ImageOverlayBox.m_iOverlayOriginRow = (int) GetDlgItemInt(IDC_EDIT_OVERLAYORIGINROW); m_ImageOverlayBox.m_bOverlayOriginChecked = m_OverlayOriginRowChkBox.m_bChecked; // Overlay Origin (column) m_ImageOverlayBox.m_iOverlayOriginColumn = (int) GetDlgItemInt(IDC_EDIT_OVERLAYORIGINCOLUMN); // Overlay Magnification Type m_OverlayMagnificationTypeCombo.GetWindowText(m_ImageOverlayBox.m_sOverlayMagnificationType); m_ImageOverlayBox.m_bOverlayMagnificationTypeChecked = m_OverlayMagnificationTypeChkBox.m_bChecked; // Overlay Smoothing Type GetDlgItemText(IDC_EDIT_OVERLAYSMOOTHINGTYPE, m_ImageOverlayBox.m_sOverlaySmoothingType); m_ImageOverlayBox.m_bOverlaySmoothingTypeChecked = m_OverlaySmoothingTypeChkBox.m_bChecked; // Overlay or Image Magnification m_OverlayOrImageMagnificationCombo.GetWindowText(m_ImageOverlayBox.m_sOverlayOrImageMagnification); m_ImageOverlayBox.m_bMagnificationChecked = m_OverlayOrImageMagnificationChkBox.m_bChecked; // Magnify to Number of Columns GetDlgItemText(IDC_EDIT_MAGNIFYTONUMBEROFCOLUMNS, sValue); if (!m_MagnifyToNumberOfColumnsChkBox.m_bChecked && sValue.IsEmpty()) { m_ImageOverlayBox.m_iMagnifyToNumberOfColumns = -1; } else { m_ImageOverlayBox.m_iMagnifyToNumberOfColumns = atoi(sValue); } // Overlay Foreground Density m_OverlayForegroundDensityCombo.GetWindowText(m_ImageOverlayBox.m_sOverlayForegroundDensity); m_ImageOverlayBox.m_bOverlayForegroundDensityChecked = m_OverlayForegroundDensityChkBox.m_bChecked; // Overlay Background Density m_OverlayBackgroundDensityCombo.GetWindowText(m_ImageOverlayBox.m_sOverlayBackgroundDensity); m_ImageOverlayBox.m_bOverlayBackgroundDensityChecked = m_OverlayBackgroundDensityChkBox.m_bChecked; CDialog::OnOK(); } BOOL CImageOverlayBoxDlg::OnCommand(WPARAM wParam, LPARAM lParam) { static BOOL bClickOverlayOrImageMagnification = TRUE; static BOOL bClickMagnifyToNumberOfColumns = TRUE; static BOOL bClickOverlayOriginRow = TRUE; static BOOL bClickOverlayOriginColumn = TRUE; switch (wParam) { case IDC_CHECK_LOADOVERLAYFROMFILE: GetDlgItem(IDC_BUTTON_BROWSE)->EnableWindow(m_OverlayFilenameChkBox.GetCheck() == 1); OnChangeEditOverlayFile(); break; case IDC_CHECK_OVERLAYORIMAGEMAGNIFICATION: if (bClickMagnifyToNumberOfColumns) { bClickOverlayOrImageMagnification = FALSE; m_MagnifyToNumberOfColumnsChkBox.SendMessage(BM_CLICK); } else { bClickMagnifyToNumberOfColumns = TRUE; } break; case IDC_CHECK_MAGNIFYTONUMBEROFCOLUMNS: if (bClickOverlayOrImageMagnification) { bClickMagnifyToNumberOfColumns = FALSE; m_OverlayOrImageMagnificationChkBox.SendMessage(BM_CLICK); } else { bClickOverlayOrImageMagnification = TRUE; } break; case IDC_CHECK_OVERLAYORIGINROW: if (bClickOverlayOriginColumn) { bClickOverlayOriginRow = FALSE; m_OverlayOriginColumnChkBox.SendMessage(BM_CLICK); } else { bClickOverlayOriginColumn = TRUE; } break; case IDC_CHECK_OVERLAYORIGINCOLUMN: if (bClickOverlayOriginRow) { bClickOverlayOriginColumn = FALSE; m_OverlayOriginRowChkBox.SendMessage(BM_CLICK); } else { bClickOverlayOriginRow = TRUE; } break; case IDC_CHECK_OVERLAYMAGNIFICATIONTYPE: UpdateOverlaySmoothingTypeControlsState(); break; } return CDialog::OnCommand(wParam, lParam); } void CImageOverlayBoxDlg::OnChangeEditOverlayFile() { CString sOverlayFilename; GetDlgItemText(IDC_EDIT_OVERLAYFILE, sOverlayFilename); sOverlayFilename.TrimLeft(); GetDlgItem(IDC_BUTTON_CREATEUPDATE)->EnableWindow(sOverlayFilename.GetLength() || (!m_bCreationMode && m_OverlayFilenameChkBox.GetCheck() == 0)); } void CImageOverlayBoxDlg::OnSelChangeComboOverlayMagnificationType() { UpdateOverlaySmoothingTypeControlsState(); }