TQSdecoderOptionsPage::TQSdecoderOptionsPage(TffdshowPageDec *Iparent): TconfPageDecVideo(Iparent) { dialogId = IDD_INTEL_QS_DECODEROPTIONS; inPreset = 1; //helpURL = _l("http://ffdshow-tryout.sourceforge.net/wiki/video:decoder_options"); static const TbindCheckbox<TQSdecoderOptionsPage> chb[] = { IDC_QS_ENABLE_TS_CORR , IDFF_QS_ENABLE_TS_CORR , NULL, IDC_QS_ENABLE_SW_EMULATION, IDFF_QS_ENABLE_SW_EMULATION, NULL, IDC_QS_FORCE_FIELD_ORDER , IDFF_QS_FORCE_FIELD_ORDER , NULL, IDC_QS_ENABLE_DVD_DECODE , IDFF_QS_ENABLE_DVD_DECODE , NULL, IDC_QS_ENABLE_DI , IDFF_QS_ENABLE_DI , NULL, IDC_QS_FORCE_DI , IDFF_QS_FORCE_DI , NULL, IDC_QS_ENABLE_FULL_RATE , IDFF_QS_ENABLE_FULL_RATE , NULL, 0, NULL, NULL }; bindCheckboxes(chb); static const TbindTrackbar<TQSdecoderOptionsPage> htbr[] = { IDC_QS_DETAIL , IDFF_QS_DETAIL , &TQSdecoderOptionsPage::detail2dlg, IDC_QS_DENOISE, IDFF_QS_DENOISE, &TQSdecoderOptionsPage::denoise2dlg, 0, 0, NULL }; bindHtracks(htbr); static const TbindCombobox<TQSdecoderOptionsPage> cbx[] = { IDC_QS_FIELD_ORDER, IDFF_QS_FIELD_ORDER, BINDCBX_SEL, NULL, IDC_QS_ENABLE_MT , IDFF_QS_ENABLE_MT , BINDCBX_SEL, NULL, 0 }; bindComboboxes(cbx); }
TinPage::TinPage(TffdshowPageEnc *Iparent):TconfPageEnc(Iparent) { dialogId=IDD_IN; ffproc=NULL; static const int props[]= {IDFF_enc_flip,IDFF_enc_forceIncsp,IDFF_enc_incsp,IDFF_enc_isProc,IDFF_enc_is_lavc_nr,IDFF_enc_lavc_nr,0}; propsIDs=props; static const TbindCheckbox<TinPage> chb[]= { IDC_CHB_PROC,IDFF_enc_isProc,NULL, IDC_CHB_FLIP,IDFF_enc_flip,NULL, IDC_CHB_FORCEINCSP,IDFF_enc_forceIncsp,&TinPage::incsp2dlg, IDC_CHB_DY_INTERLACED,IDFF_isDyInterlaced,&TinPage::interlaced2dlg, IDC_CHB_LAVC_NR,IDFF_enc_is_lavc_nr,&TinPage::lavcnr2dlg, 0,NULL,NULL }; bindCheckboxes(chb); static const TbindEditInt<TinPage> edInt[]= { IDC_ED_DY_INTERLACED,0,4096,IDFF_dyInterlaced,NULL, IDC_ED_LAVC_NR,0,10000,IDFF_enc_lavc_nr,NULL, 0 }; bindEditInts(edInt); static const TbindCombobox<TinPage> cbx[]= { IDC_CBX_INCSP,IDFF_enc_incsp,BINDCBX_DATA,NULL, 0 }; bindComboboxes(cbx); static const TbindButton<TinPage> bt[]= { IDC_BT_PROC_CONFIG,&TinPage::onProcConfig, 0,NULL }; bindButtons(bt); }
TsubtitlesTextPage::TsubtitlesTextPage(TffdshowPageDec *Iparent,const TfilterIDFF *idff):TconfPageDecVideo(Iparent,idff,5) { dialogId=IDD_SUBTITLESTEXT; static const TbindCheckbox<TsubtitlesTextPage> chb[]= { IDC_CHB_SUB_SPLIT,IDFF_fontSplitting,&TsubtitlesTextPage::split2dlg, IDC_CHB_SUB_MINDURATION,IDFF_subIsMinDuration,&TsubtitlesTextPage::min2dlg, //IDC_CHB_SUB_HQBORDER,IDFF_fontHqBorder,&TsubtitlesTextPage::memory2dlg, 0,NULL,NULL }; bindCheckboxes(chb); static const TbindTrackbar<TsubtitlesTextPage> htbr[]= { IDC_TBR_SUB_LINESPACING,IDFF_subLinespacing,&TsubtitlesTextPage::linespacing2dlg, 0,0,NULL }; bindHtracks(htbr); static const TbindCombobox<TsubtitlesTextPage> cbx[]= { IDC_CBX_SUB_MINDURATION,IDFF_subMinDurationType,BINDCBX_SEL,&TsubtitlesTextPage::min2dlg, IDC_CBX_SUBFIX_IL,IDFF_subFixLang,BINDCBX_SEL,NULL, IDC_CBX_SUBFIX_ORTOGRAPHY,IDFF_subFixDict,BINDCBX_TEXT,NULL, IDC_CBX_SUB_WORDWRAP,IDFF_subWordWrap,BINDCBX_SEL,&TsubtitlesTextPage::split2dlg, 0 }; bindComboboxes(cbx); static const TbindEditInt<TsubtitlesTextPage> edInt[]= { IDC_ED_SUB_SPLIT_BORDER,0,4096,IDFF_subSplitBorder,NULL, IDC_ED_SUB_MEMORY,0,256,IDFF_fontMemory, 0 }; bindEditInts(edInt); }
TdlgMiscPage::TdlgMiscPage(TffdshowPageBase *Iparent): TconfPageBase(Iparent) { dialogId = IDD_DLGMISC; static const TbindCheckbox<TdlgMiscPage> chb[] = { IDC_CHB_TRAYICONEXT, IDFF_trayIconExt, NULL, IDC_CHB_DLG_RESTOREPOS, IDFF_dlgRestorePos, NULL, IDC_CHB_STREAMSMENU, IDFF_streamsOptionsMenu, NULL, IDC_CHB_TRAYICON, IDFF_trayIcon, &TdlgMiscPage::tray2dlg, 0, NULL, NULL }; bindCheckboxes(chb); static const TbindRadiobutton<TdlgMiscPage> rbt[] = { IDC_RBT_ICON_NONE, IDFF_trayIconType, 0, &TdlgMiscPage::onIconTypeChange, IDC_RBT_ICON_MODERN, IDFF_trayIconType, 1, &TdlgMiscPage::onIconTypeChange, IDC_RBT_ICON_CLASSIC, IDFF_trayIconType, 2, &TdlgMiscPage::onIconTypeChange, 0, 0, 0, NULL }; bindRadioButtons(rbt); static const TbindCombobox<TdlgMiscPage> cbx[] = { IDC_CBX_SUBFILES_MODE, IDFF_streamsSubFilesMode, BINDCBX_SEL, NULL, 0 }; bindComboboxes(cbx); }
TavisynthPage::TavisynthPage(TffdshowPageDec *Iparent, const TfilterIDFF *idff): TconfPageDecVideo(Iparent, idff) { resInter = IDC_CHB_AVISYNTH; static const TbindCheckbox<TavisynthPage> chb[] = { IDC_CHB_AVISYNTH_FFDSHOW, IDFF_avisynthFfdshowSource, NULL, IDC_CHB_AVISYNTH_YV12, IDFF_avisynthInYV12, NULL, IDC_CHB_AVISYNTH_YUY2, IDFF_avisynthInYUY2, NULL, IDC_CHB_AVISYNTH_RGB32, IDFF_avisynthInRGB32, NULL, IDC_CHB_AVISYNTH_RGB24, IDFF_avisynthInRGB24, NULL, IDC_CHB_AVISYNTH_BUFFER, IDFF_avisynthEnableBuffering, NULL, 0, NULL, NULL }; bindCheckboxes(chb); static const TbindButton<TavisynthPage> bt[] = { IDC_BT_AVISYNTH_LOAD, &TavisynthPage::onLoad, IDC_BT_AVISYNTH_SAVE, &TavisynthPage::onSave, IDC_BT_AVISYNTH_USECURRENT, &TavisynthPage::onUseCurrent, 0, NULL }; bindButtons(bt); static const TbindCombobox<TavisynthPage> cbx[] = { IDC_CBX_AVISYNTH_PULLDOWN, IDFF_avisynthApplyPulldown, BINDCBX_SEL, NULL, 0 }; bindComboboxes(cbx); }
TOSDpageDec::TOSDpageDec(TffdshowPageDec *Iparent, const TfilterIDFF *idff): TconfPageDec(Iparent, idff, 0) { dialogId = IDD_OSD; idffInter = IDFF_isOSD; resInter = IDC_CHB_OSD; static const TbindCheckbox<TOSDpageDec> chb[] = { IDC_CHB_OSD_SAVE, IDFF_OSDisSave, &TOSDpageDec::save2dlg, IDC_CHB_OSD_IS_AUTO_HIDE, IDFF_OSDisAutoHide, &TOSDpageDec::save2dlg, 0, NULL, NULL }; bindCheckboxes(chb); static const TbindTrackbar<TOSDpageDec> htbr[] = { IDC_TBR_OSD_POSX, IDFF_OSDposX, &TOSDpageDec::pos2dlg, IDC_TBR_OSD_POSY, IDFF_OSDposY, &TOSDpageDec::pos2dlg, 0, 0, NULL }; bindHtracks(htbr); static const TbindCombobox<TOSDpageDec> cbx[] = { IDC_CBX_OSD_USERFORMAT, IDFF_OSD_userformat, BINDCBX_DATA, &TOSDpageDec::cfg2dlg, 0 }; bindComboboxes(cbx); static const TbindButton<TOSDpageDec> bt[] = { IDC_BT_OSD_LINE_UP, &TOSDpageDec::onLineUp, IDC_BT_OSD_LINE_DOWN, &TOSDpageDec::onLineDown, IDC_BT_OSD_SAVE, &TOSDpageDec::onSave, 0, NULL }; bindButtons(bt); }
TquantPage::TquantPage(TffdshowPageEnc *Iparent): TconfPageEnc(Iparent) { dialogId = IDD_QUANT; static const int props[] = {IDFF_enc_q_i_min, IDFF_enc_q_i_max, IDFF_enc_i_quant_factor, IDFF_enc_i_quant_offset, IDFF_enc_isInterQuantBias, IDFF_enc_interQuantBias, IDFF_enc_isIntraQuantBias, IDFF_enc_intraQuantBias, IDFF_enc_dct_algo, 0}; propsIDs = props; helpURL = _l("Quantization.html"); static const TbindCheckbox<TquantPage> chb[] = { IDC_CHB_QUANT_INTER_BIAS, IDFF_enc_isInterQuantBias, &TquantPage::bias2dlg, IDC_CHB_QUANT_INTRA_BIAS, IDFF_enc_isIntraQuantBias, &TquantPage::bias2dlg, 0, NULL, NULL }; bindCheckboxes(chb); static const TbindEditInt<TquantPage> edInt[] = { IDC_ED_QUANT_INTER_BIAS, -512, 512, IDFF_enc_interQuantBias, NULL, IDC_ED_QUANT_INTRA_BIAS, -512, 512, IDFF_enc_intraQuantBias, NULL, 0 }; bindEditInts(edInt); static const TbindEditReal<TquantPage> edReal[] = { IDC_ED_I_QUANTFACTOR, -31.0, 31.0, IDFF_enc_i_quant_factor, 100.0, NULL, IDC_ED_I_QUANTOFFSET, -31.0, 31.0, IDFF_enc_i_quant_offset, 100.0, NULL, 0 }; bindEditReals(edReal); static const TbindCombobox<TquantPage> cbx[] = { IDC_CBX_DCT_ALGO, IDFF_enc_dct_algo, BINDCBX_SEL, NULL, 0 }; bindComboboxes(cbx); }
ToutsfsPage::ToutsfsPage(TffdshowPageDec *Iparent): TconfPageDecAudio(Iparent) { dialogId = IDD_OUTSFS; inPreset = 1; idffOrder = maxOrder + 3; filterID = IDFF_filterOutputAudio; static const TbindCheckbox<ToutsfsPage> chb[] = { IDC_CHB_ALWAYEXTENSIBLE, -IDFF_alwaysextensible, NULL, IDC_CHB_ALLOWOUTSTREAM, IDFF_allowOutStream, NULL, IDC_CHB_AOUT_CONNECTTO_SPDIF, IDFF_aoutConnectToOnlySpdif, NULL, IDC_CHB_AOUT_AC3ENCODE_MODE, IDFF_aoutAC3EncodeMode, NULL, IDC_CHB_ALWAYEXTENSIBLE_IEC61937, IDFF_aoutUseIEC61937, NULL, 0, NULL, NULL }; bindCheckboxes(chb); static const TbindCombobox<ToutsfsPage> cbx[] = { IDC_CBX_OUT_AC3, IDFF_outAC3bitrate, BINDCBX_DATA, NULL, IDC_CBX_AOUT_CONNECTTO, IDFF_aoutConnectTo, BINDCBX_SEL, &ToutsfsPage::connect2dlg, IDC_CBX_OUT_PASSTHROUGH_DEVICEID, IDFF_aoutpassthroughDeviceId, BINDCBX_SEL, NULL, 0 }; bindComboboxes(cbx); static const TbindEditInt<ToutsfsPage> edInt[] = { IDC_ED_AUDIO_DELAY, INT_MIN / 2, INT_MAX / 2, IDFF_audio_decoder_delay, NULL, 0, NULL, NULL }; bindEditInts(edInt); }
TresizeSettingsPage::TresizeSettingsPage(TffdshowPageDec *Iparent, const TfilterIDFF *idff): TconfPageDecVideo(Iparent, idff, 3) { dialogId = IDD_RESIZESETTINGS; static const TbindCheckbox<TresizeSettingsPage> chb[] = { IDC_CHB_RESIZE_METHOD_LOCK, IDFF_resizeMethodsLocked, &TresizeSettingsPage::cfg2dlg, IDC_CHB_RESIZE_ACCURATE_ROUNDING, IDFF_resizeAccurateRounding, NULL, 0, NULL, NULL }; bindCheckboxes(chb); static const TbindTrackbar<TresizeSettingsPage> htbr[] = { IDC_TBR_RESIZE_GBLUR_LUM, IDFF_resizeGblurLum, &TresizeSettingsPage::blurSharpen2dlg, IDC_TBR_RESIZE_GBLUR_CHROM, IDFF_resizeGblurChrom, &TresizeSettingsPage::blurSharpen2dlg, IDC_TBR_RESIZE_SHARPEN_LUM, IDFF_resizeSharpenLum, &TresizeSettingsPage::blurSharpen2dlg, IDC_TBR_RESIZE_SHARPEN_CHROM, IDFF_resizeSharpenChrom, &TresizeSettingsPage::blurSharpen2dlg, IDC_TBR_RESIZE_HWARP, IDFF_resizeSimpleWarpXparam, &TresizeSettingsPage::warp2dlg, IDC_TBR_RESIZE_VWARP, IDFF_resizeSimpleWarpYparam, &TresizeSettingsPage::warp2dlg, 0, 0, NULL }; bindHtracks(htbr); static const TbindCombobox<TresizeSettingsPage> cbx[] = { IDC_CBX_RESIZE_METHOD_LUMA , IDFF_resizeMethodLuma , BINDCBX_DATA, &TresizeSettingsPage::paramLuma2dlg, IDC_CBX_RESIZE_METHOD_CHROMA, IDFF_resizeMethodChroma, BINDCBX_DATA, &TresizeSettingsPage::paramChroma2dlg, 0 }; bindComboboxes(cbx); }
TdecoderOptionsPage::TdecoderOptionsPage(TffdshowPageDec *Iparent): TconfPageDecVideo(Iparent) { dialogId = IDD_DECODEROPTIONS; inPreset = 1; helpURL = _l("http://ffdshow-tryout.sourceforge.net/wiki/video:decoder_options"); static const TbindCheckbox<TdecoderOptionsPage> chb[] = { IDC_CHB_DROP_ON_DELAY, IDFF_dropOnDelay, NULL, IDC_CHB_H264_SKIP_ON_DELAY, IDFF_h264skipOnDelay, NULL, IDC_CHB_SOFT_TELECINE, IDFF_softTelecine, NULL, 0, NULL, NULL }; bindCheckboxes(chb); static const TbindEditInt<TdecoderOptionsPage> edInt[] = { IDC_ED_NUMTHREADS, 1, 8, IDFF_numLAVCdecThreads, NULL, IDC_ED_DROP_ON_DELAY_TIME, 0, 20000, IDFF_dropOnDelayTime, NULL, IDC_ED_H264SKIP_ON_DELAY_TIME, 0, 20000, IDFF_h264skipOnDelayTime, NULL, 0, NULL, NULL }; bindEditInts(edInt); static const TbindCombobox<TdecoderOptionsPage> cbx[] = { IDC_CBX_IDCT, IDFF_idct, BINDCBX_SEL, NULL, 0 }; bindComboboxes(cbx); static const TbindButton<TdecoderOptionsPage> bt[] = { IDC_BT_QUANTMATRIX_EXPORT, &TdecoderOptionsPage::onMatrixExport, 0, NULL }; bindButtons(bt); }
TdeinterlacePageYadif::TdeinterlacePageYadif(Twindow *parent):TdeinterlacePanel(IDD_DEINTERLACE_YADIF,parent) { static const TbindCombobox<TdeinterlacePageYadif> cbx[]= { IDC_CBX_YADIF_PARITY, IDFF_yadifFieldOrder, BINDCBX_DATA, &TdeinterlacePageYadif::cfg2dlg, 0 }; bindComboboxes(cbx); createDialog(dialogId,parent->m_hwnd); }
TprocsfsPage::TprocsfsPage(TffdshowPageDec *Iparent):TconfPageDecAudio(Iparent) { dialogId=IDD_PROCSFS; inPreset=1; static const TbindCheckbox<TprocsfsPage> chb[]= { IDC_CHB_DITHERING,IDFF_dithering,NULL, 0,NULL,NULL }; bindCheckboxes(chb); static const TbindCombobox<TprocsfsPage> cbx[]= { IDC_CBX_NOISESHAPING,IDFF_noiseShaping,BINDCBX_SEL,NULL, 0 }; bindComboboxes(cbx); }
TquantTablesPageBase::TquantTablesPageBase(IffdshowBase *Ideci):Twindow(Ideci) { dialogId=IDD_QUANT_TABLES_BASE; static const TbindButton<TquantTablesPageBase> bt[]= { IDC_BT_QUANT_TABLE_LOAD,&TquantTablesPageBase::onLoad, IDC_BT_QUANT_TABLE_SAVE,&TquantTablesPageBase::onSave, 0,NULL }; bindButtons(bt); static const TbindCombobox<TquantTablesPageBase> cbx[]= { IDC_CBX_QUANT_TABLE,0,BINDCBX_NONE,&TquantTablesPageBase::table2dlg, 0 }; bindComboboxes(cbx); }
TdeinterlacePage::TdeinterlacePage(TffdshowPageDec *Iparent, const TfilterIDFF *idff): TconfPageDecVideo(Iparent, idff) { helpURL = _l("http://ffdshow-tryout.sourceforge.net/wiki/video:decoder_options"); resInter = IDC_CHB_DEINTERLACE; static const TbindCheckbox<TdeinterlacePage> chb[] = { IDC_CHB_DEINTERLACEALWAYS, IDFF_deinterlaceAlways, NULL, IDC_CHB_SWAP_FIELDS, IDFF_swapFields, NULL, 0, NULL, NULL }; bindCheckboxes(chb); static const TbindCombobox<TdeinterlacePage> cbx[] = { IDC_CBX_DEINT_METHOD, IDFF_deinterlaceMethod, BINDCBX_DATA, &TdeinterlacePage::deint2dlg, 0 }; bindComboboxes(cbx); }
TgenericHuffyuvPage::TgenericHuffyuvPage(TffdshowPageEnc *Iparent): TconfPageEnc(Iparent) { dialogId = IDD_GENERIC_HUFFYUV; static const int props[] = {IDFF_enc_huffyuv_csp, IDFF_enc_huffyuv_pred, IDFF_enc_huffyuv_ctx, 0}; propsIDs = props; static const TbindCheckbox<TgenericHuffyuvPage> chb[] = { IDC_CHB_GRAY, IDFF_enc_gray, NULL, IDC_CHB_HUFFYUV_CTX, IDFF_enc_huffyuv_ctx, NULL, 0, NULL, NULL }; bindCheckboxes(chb); static const TbindCombobox<TgenericHuffyuvPage> cbx[] = { IDC_CBX_HUFFYUV_CSP, IDFF_enc_huffyuv_csp, BINDCBX_SEL, NULL, IDC_CBX_HUFFYUV_PRED, IDFF_enc_huffyuv_pred, BINDCBX_SEL, NULL, 0 }; bindComboboxes(cbx); }
TgenericFFV1page::TgenericFFV1page(TffdshowPageEnc *Iparent) : TconfPageEnc(Iparent) { dialogId = IDD_GENERIC_FFV1; static const int props[] = {IDFF_enc_ffv1_csp, IDFF_enc_ffv1_coder, IDFF_enc_ffv1_context, IDFF_enc_ffv1_key_interval, 0}; propsIDs = props; static const TbindEditInt<TgenericFFV1page> edInt[] = { //IDC_ED_FFV1_CONTEXT ,0,10 ,IDFF_enc_ffv1_context ,NULL, IDC_ED_MAXKEYINTERVAL, 1, 500, IDFF_enc_ffv1_key_interval, NULL, 0 }; bindEditInts(edInt); static const TbindCombobox<TgenericFFV1page> cbx[] = { IDC_CBX_FFV1_CSP, IDFF_enc_ffv1_csp, BINDCBX_DATA, NULL, IDC_CBX_FFV1_CODER, IDFF_enc_ffv1_coder, BINDCBX_SEL, NULL, IDC_CBX_FFV1_CONTEXT, IDFF_enc_ffv1_context, BINDCBX_SEL, NULL, 0 }; bindComboboxes(cbx); }
ToutPage::ToutPage(TffdshowPageEnc *Iparent):TconfPageEnc(Iparent),parentE(Iparent) { dialogId=IDD_OUT; static const int props[]= {IDFF_enc_storeAVI,IDFF_enc_storeExt,IDFF_enc_storeExtFlnm,IDFF_enc_muxer,0}; propsIDs=props; static const TbindCheckbox<ToutPage> chb[]= { IDC_CHB_STORE_EXTERNAL,IDFF_enc_storeExt,&ToutPage::out2dlg, IDC_CHB_STORE_AVI,IDFF_enc_storeAVI,NULL, 0,NULL,NULL }; bindCheckboxes(chb); static const TbindCombobox<ToutPage> cbx[]= { IDC_CBX_MUXER,IDFF_enc_muxer,BINDCBX_SEL,NULL, 0 }; bindComboboxes(cbx); static const TbindButton<ToutPage> bt[]= { IDC_BT_STORE_EXTERNAL,&ToutPage::onStoreExternal, 0,NULL }; bindButtons(bt); }
TbitmapPage::TbitmapPage(TffdshowPageDec *Iparent,const TfilterIDFF *idff):TconfPageDecVideo(Iparent,idff) { resInter=IDC_CHB_BITMAP; static const TbindTrackbar<TbitmapPage> htbr[]= { IDC_TBR_BITMAP_POSX,IDFF_bitmapPosx,&TbitmapPage::pos2dlg, IDC_TBR_BITMAP_POSY,IDFF_bitmapPosy,&TbitmapPage::pos2dlg, IDC_TBR_BITMAP_OPACITY,IDFF_bitmapStrength,&TbitmapPage::opacity2dlg, 0,0,NULL }; bindHtracks(htbr); static const TbindCombobox<TbitmapPage> cbx[]= { IDC_CBX_BITMAP_ALIGN,IDFF_bitmapAlign,BINDCBX_SEL,NULL, IDC_CBX_BITMAP_MODE,IDFF_bitmapMode,BINDCBX_SEL,NULL, 0 }; bindComboboxes(cbx); static const TbindButton<TbitmapPage> bt[]= { IDC_BT_BITMAP_FLNM,&TbitmapPage::onFlnm, 0,NULL }; bindButtons(bt); }
TlevelsPage::TlevelsPage(TffdshowPageDec *Iparent,const TfilterIDFF *idff):TconfPageDecVideo(Iparent,idff),filter(NULL) { resInter=IDC_CHB_LEVELS; helpURL=_l("levels.html"); curvesflnm[0]='\0'; static const TbindCheckbox<TlevelsPage> chb[]= { IDC_CHB_LEVELS_ONLYLUMA,IDFF_levelsOnlyLuma,&TlevelsPage::levels2dlg, IDC_CHB_LEVELS_SHOW_HISTOGRAM,IDFF_buildHistogram,NULL, IDC_CHB_LEVELS_SHOW_HISTOGRAM_FULL,IDFF_levelsFullY,&TlevelsPage::map2dlg, IDC_CHB_LEVELS_INPUT_AUTO,IDFF_levelsInAuto,NULL, IDC_CHB_LEVELS_RGB,IDFF_levelsForceRGB,&TlevelsPage::mode2dlg, 0,NULL,NULL }; bindCheckboxes(chb); static const TbindTrackbar<TlevelsPage> htbr[]= { IDC_TBR_LEVELS_GAMMA,IDFF_levelsGamma,&TlevelsPage::levels2dlg, IDC_TBR_LEVELS_POSTERIZE,IDFF_levelsPosterize,&TlevelsPage::levels2dlg, 0,0,NULL }; bindHtracks(htbr); static const TbindCombobox<TlevelsPage> cbx[]= { IDC_CBX_LEVELS_MODE,IDFF_levelsMode,BINDCBX_SEL,&TlevelsPage::mode2dlg, 0 }; bindComboboxes(cbx); static const TbindButton<TlevelsPage> bt[]= { IDC_BT_LEVELS_CURVES_LOAD,&TlevelsPage::onCurveLoad, 0,NULL }; bindButtons(bt); static const TbindEditInt<TlevelsPage> edInt[]= { IDC_ED_Y_MAX_DELTA ,1,50,IDFF_levelsYmaxDelta,NULL, IDC_ED_Y_THRESHOLD ,1,150,IDFF_levelsYthreshold,NULL, IDC_ED_Y_TEMPORAL ,1,20,IDFF_levelsYtemporal,NULL, 0 }; bindEditInts(edInt); }