%% options copyright owner = Dirk Krause copyright year = 2020-xxxx SPDX-License-Identifier: BSD-3-Clause %% wx-gui type = dialog contents = sizerHorizontal [wxBoxSizer sizerHorizontal] direction = horizontal contents = $space(10) contents = sizerVertical contents = $space(10) [wxBoxSizer sizerVertical] direction = vertical contents = $space(10) contents = sizerRgbToGray centered-x contents = sizerOptions centered-x contents = $space(10) contents = sizerButtons centered-x contents = $space(10) [wxBoxSizer sizerRgbToGray] direction = horizontal contents = lConversionMethods centered-y contents = $space(10) contents = chConversionMethods centered-y [wxStaticText lConversionMethods] text = pTexts[462] [wxChoice chConversionMethods] choices = 14 saConversionMethods tip = pTexts[463] [wxGridBagSizer sizerOptions] grid = 5 5 contents = cbKeepAspectRatio 0 0 1 2 left centered-y contents = cbUseAlphaChannel +1 0 1 2 left centered-y contents = cbDCTData +1 0 1 2 left centered-y contents = cbInterpolation +1 0 1 2 left centered-y contents = $space(20,1) +1 0 1 1 left centered-y contents = cbDCTInterpolation . +1 1 1 left centered-y contents = cbEnforceBackground +1 0 1 2 left centered-y [wxCheckBox cbKeepAspectRatio] text = pTexts[464] tip = pTexts[465] [wxCheckBox cbUseAlphaChannel] text = pTexts[466] tip = pTexts[467] [wxCheckBox cbDCTData] id = WXD_ID_DCT text = pTexts[470] tip = pTexts[471] [wxCheckBox cbInterpolation] id = WXD_ID_INT text = pTexts[468] tip = pTexts[469] [wxCheckBox cbDCTInterpolation] text = pTexts[472] tip = pTexts[473] [wxCheckBox cbEnforceBackground] text = pTexts[474] tip = pTexts[475] [wxStdDialogButtonSizer sizerButtons] contents = buttonOK contents = buttonCancel [wxButton buttonOK] id = wxID_OK text = pTexts[476] tip = pTexts[478] [wxButton buttonCancel] id = wxID_CANCEL text = pTexts[477] tip = pTexts[479] %% header start #ifndef WXDKDRAW_H_INCLUDED #include "wxdkdraw.h" #endif #ifndef WXDKDRAWFRAME_H_INCLUDED #include "WxdkdrawFrame.h" #endif %% class start /** Dialog to set image options. These options are not used by wxdkdraw but by wxd2lat when producing output for LaTeX. */ class WxdkdrawDlgImageOptions : public wxDialog { private: /** Events to process. */ #if wxCHECK_VERSION(3,0,0) wxDECLARE_EVENT_TABLE(); #else DECLARE_EVENT_TABLE() #endif %% class end protected: /** Parent frame (the programs main window). */ WxdkdrawFrame *m_pParent; /** Image object to modify. */ Wxd_object_t *m_pObject; /** Localized text fragments. */ wxChar const * const *m_sTexts; public: /** Control IDs. */ enum { WXD_ID_DCT = (wxID_HIGHEST + 1), /**< DCT check box. */ WXD_ID_INT , /**< Image interpolation. */ }; /** Constructor. @param pParent Parent frame (main window). @param pObject Image object to modify. @param pTexts Localized text fragments. */ WxdkdrawDlgImageOptions( WxdkdrawFrame *pParent, Wxd_object_t *pObject, wxChar const * const *pTexts ); /** OK button handler. @param event Event to process. */ void OnOK(wxCommandEvent & event); /** Cancel button handler. @param event Event to process. */ void OnCancel(wxCommandEvent & event); /** DCT checkbox handler. @param event Event to process. */ void OnDCT(wxCommandEvent & event); /** Image interpolation checkbox handler. @param event Event to process. */ void OnInterpolation(wxCommandEvent & event); protected: /** Correct GUI. */ void CorrectGUI(bool bUpdate = true); }; %% header end %% module start #ifndef WXDKDRAWDLGIMAGEOPTIONS_H_INCLUDED #include "WxdkdrawDlgImageOptions.h" #endif $!trace-include /** Events to process in this dialog. */ #if wxCHECK_VERSION(3,0,0) wxBEGIN_EVENT_TABLE(WxdkdrawDlgImageOptions,wxDialog) #else BEGIN_EVENT_TABLE(WxdkdrawDlgImageOptions,wxDialog) #endif EVT_BUTTON(\ wxID_OK,\ WxdkdrawDlgImageOptions::OnOK\ ) EVT_BUTTON(\ wxID_CANCEL,\ WxdkdrawDlgImageOptions::OnCancel\ ) EVT_CHECKBOX(\ WxdkdrawDlgImageOptions::WXD_ID_DCT,\ WxdkdrawDlgImageOptions::OnDCT\ ) EVT_CHECKBOX(\ WxdkdrawDlgImageOptions::WXD_ID_INT,\ WxdkdrawDlgImageOptions::OnInterpolation\ ) #if wxCHECK_VERSION(3,0,0) wxEND_EVENT_TABLE() #else END_EVENT_TABLE() #endif %% constructor start WxdkdrawDlgImageOptions::WxdkdrawDlgImageOptions( WxdkdrawFrame *pParent, Wxd_object_t *pObject, wxChar const * const *pTexts ) : wxDialog( pParent, wxID_ANY, pTexts[461], wxDefaultPosition, wxDefaultSize, ( (wxDEFAULT_DIALOG_STYLE) & (~(wxRESIZE_BORDER)) & (~(wxCLOSE_BOX)) & (~(wxSYSTEM_MENU)) ) ) { wxString saConversionMethods[] = { wxString(pTexts[480]), wxString(pTexts[481]), wxString(pTexts[482]), wxString(pTexts[483]), wxString(pTexts[484]), wxString(pTexts[485]), wxString(pTexts[486]), wxString(pTexts[487]), wxString(pTexts[488]), wxString(pTexts[489]), wxString(pTexts[490]), wxString(pTexts[491]), wxString(pTexts[492]), wxString(pTexts[493]) }; int sel; m_pParent = pParent; m_pObject = pObject; m_sTexts = pTexts; %% constructor end if (dkctGUILayoutOK) { /* Fix dialog size */ wxSize minsize = GetMinSize(); SetMaxSize(minsize); /* Load flags into GUI */ sel = (int)((m_pObject->det).i.r2g) + 1; if ( 0 > sel) { sel = 0; } if (13 < sel) { sel = 13; } chConversionMethods->SetSelection(sel); cbKeepAspectRatio->SetValue( 0 != (WXD_IMFL_ASPECT & ((m_pObject->det).i.fl)) ); cbUseAlphaChannel->SetValue( 0 != (WXD_IMFL_USE_ALPHA & ((m_pObject->det).i.fl)) ); cbDCTData->SetValue( 0 != (WXD_IMFL_USE_DCT & ((m_pObject->det).i.fl)) ); cbInterpolation->SetValue( 0 != (WXD_IMFL_IMG_INT & ((m_pObject->det).i.fl)) ); cbDCTInterpolation->SetValue( 0 != (WXD_IMFL_DCT_INT & ((m_pObject->det).i.fl)) ); cbEnforceBackground->SetValue( 0 != (WXD_IMFL_FORCE_BG & ((m_pObject->det).i.fl)) ); CorrectGUI(false); } } %% module end void WxdkdrawDlgImageOptions::OnOK(wxCommandEvent & WXUNUSED(event)) { uint8_t back = (uint8_t)0U; if (cbKeepAspectRatio->GetValue()) { back |= (uint8_t)(WXD_IMFL_ASPECT); } if (cbUseAlphaChannel->GetValue()) { back |= (uint8_t)(WXD_IMFL_USE_ALPHA); } if (cbDCTData->GetValue()) { back |= (uint8_t)(WXD_IMFL_USE_DCT); } if (cbInterpolation->GetValue()) { back |= (uint8_t)(WXD_IMFL_IMG_INT); } if (cbDCTInterpolation->GetValue()) { back |= (uint8_t)(WXD_IMFL_DCT_INT); } if (cbEnforceBackground->GetValue()) { back |= (uint8_t)(WXD_IMFL_FORCE_BG); } (m_pObject->det).i.fl = back; (m_pObject->det).i.r2g = (int8_t)(chConversionMethods->GetSelection() - 1); if (-1 > (m_pObject->det).i.r2g) { (m_pObject->det).i.r2g = -1; } if (12 < (m_pObject->det).i.r2g) { (m_pObject->det).i.r2g = 12; } if(IsModal()) { EndModal(wxID_OK); } else { SetReturnCode(wxID_OK); Show(false); } } void WxdkdrawDlgImageOptions::OnCancel(wxCommandEvent & WXUNUSED(event)) { if(IsModal()) { EndModal(wxID_CANCEL); } else { SetReturnCode(wxID_CANCEL); Show(false); } } void WxdkdrawDlgImageOptions::CorrectGUI(bool bUpdate) { if ((cbDCTData->GetValue()) && (cbInterpolation->GetValue())) { cbDCTInterpolation->Enable(); } else { cbDCTInterpolation->Enable(false); } if (bUpdate) { Refresh(); Update(); } } void WxdkdrawDlgImageOptions::OnDCT(wxCommandEvent & WXUNUSED(event)) { CorrectGUI(); } void WxdkdrawDlgImageOptions::OnInterpolation(wxCommandEvent & WXUNUSED(event)) { CorrectGUI(); } /* vim: set ai sw=4 ts=4 : */