LOCAL void TintFill_OnCommand(HWND hDlg, int id, HWND hControl, UINT codeNotify) /************************************************************************/ { int i; BOOL Bool; MERGE_MODE MergeMode; switch (id) { case IDC_TINTFILL: if ( !SaveToolPreferences( id ) ) break; break; case IDC_MERGEMODE: if ((MergeMode = HandleMergeCombo( hDlg, id, FALSE, MM_NORMAL, codeNotify )) < 0) break; Fill.FillMergeMode = MergeMode; SetCommonMergeMode(Fill.FillMergeMode); break; case IDC_TRANSPARENT: if ( GetFocus() != GetDlgItem( hDlg, id ) ) break; if ( codeNotify != EN_CHANGE ) break; i = GetDlgItemSpin( hDlg, id, &Bool, NO ); Fill.FillOpacity = 255-TOGRAY(i); SetCommonOpacity(Fill.FillOpacity); break; case IDOK: // AstralDlgEnd( hDlg, TRUE ); break; case IDCANCEL: // AstralDlgEnd( hDlg, FALSE ); break; default: break; } }
BOOL CSizeImageDlg::DoSizeControls( ITEMID id, UINT codeNotify, BOOL bResAdjust ) { BOOL bResult = TRUE; HWND hDlg = GetSafeHwnd(); BOOL Bool; long x, y; int npix, nlin; HWND hWnd, hControl; RECT rArea; LFIXED scale; LPIMAGE lpImage; FRMDATATYPE Type; lpImage = GetImage(); ImgGetInfo(lpImage, NULL, NULL, NULL, &Type); npix = CROPWIDTH(); nlin = CROPHEIGHT(); switch( id ) { case IDC_SMARTSIZE: m_SmartSize = !m_SmartSize; CheckDlgButton( IDC_SMARTSIZE, m_SmartSize ); break; case IDC_MAINTAINSIZE: m_MaintainSize = !m_MaintainSize; if (m_MaintainSize) m_Distortable = NO; ControlEnable(hDlg, IDC_DISTORT, !m_MaintainSize); ControlEnable(hDlg, IDC_SMARTSIZE, !m_MaintainSize); Bool = !m_MaintainSize || m_Units != IDC_PREF_UNITPIXELS; ControlEnable(hDlg, IDC_WIDTH, Bool); ControlEnable(hDlg, IDC_HEIGHT, Bool); ControlEnable(hDlg, IDC_SCALEX, Bool); ControlEnable(hDlg, IDC_SCALEY, Bool); if (m_MaintainSize) { m_Resolution = m_CropResolution = m_OrigResolution; m_Width = FGET( npix, m_CropResolution ); m_Height = FGET( nlin, m_CropResolution ); SetUnitResolution( m_CropResolution ); SetDlgItemSpin( hDlg, IDC_RES, m_Resolution, NO ); SetDlgItemSpinFixed( hDlg, IDC_WIDTH, m_Width, YES ); SetDlgItemSpinFixed( hDlg, IDC_HEIGHT, m_Height, YES ); } CheckDlgButton( IDC_MAINTAINSIZE, m_MaintainSize ); CheckDlgButton( IDC_SMARTSIZE, !m_MaintainSize && m_SmartSize ); break; case IDC_PREF_UNITS: { WORD wUnits; if ( !(wUnits = HandleCombo( hDlg, id, codeNotify )) ) break; m_Units = wUnits; SetUnitInfo((UNIT_TYPE)(m_Units-IDC_PREF_UNITINCHES), m_UnitRes, m_Points); CheckComboItem(hDlg, IDC_PREF_UNITS, IDC_PREF_UNITFIRST, IDC_PREF_UNITLAST, m_Units); Bool = !m_MaintainSize || m_Units != IDC_PREF_UNITPIXELS; ControlEnable(hDlg, IDC_WIDTH, Bool); ControlEnable(hDlg, IDC_HEIGHT, Bool); ControlEnable(hDlg, IDC_SCALEX, Bool); ControlEnable(hDlg, IDC_SCALEY, Bool); if (m_MaintainSize && m_Units == IDC_PREF_UNITPIXELS) { m_CropResolution = m_Resolution; SetUnitResolution( m_CropResolution ); m_Width = FGET( npix, m_CropResolution ); m_Height = FGET( nlin, m_CropResolution ); y = FMUL( m_CropResolution, m_Height ); m_ScaleY = ((y*100L) + nlin/2) / nlin; SetDlgItemSpin( hDlg, IDC_SCALEY, m_ScaleY, NO ); x = FMUL( m_CropResolution, m_Width ); m_ScaleX = ((x*100L) + npix/2) / npix; SetDlgItemSpin( hDlg, IDC_SCALEX, m_ScaleX, NO ); } SetDlgItemSpinFixed( hDlg, IDC_WIDTH, m_Width, YES ); SetDlgItemSpinFixed( hDlg, IDC_HEIGHT, m_Height, YES ); SetUnitLabels(); } break; case IDC_DISTORT: m_Distortable = !m_Distortable; CheckDlgButton( IDC_DISTORT, m_Distortable ); if (m_Distortable) m_MaintainSize = NO; ControlEnable(hDlg, IDC_MAINTAINSIZE, !m_MaintainSize); if ( m_ScaleX != m_ScaleY ) { m_ScaleX = m_ScaleY; x = (((long)npix * m_ScaleX)+50L)/100L; m_Width = FGET( x, m_CropResolution ); SetDlgItemSpinFixed( hDlg, IDC_WIDTH, m_Width, YES ); SetDlgItemSpin( hDlg, IDC_SCALEX, m_ScaleX, NO ); } CheckDlgButton( IDC_SMARTSIZE,m_SmartSize && !m_Distortable); ControlEnable( hDlg, IDC_SMARTSIZE, !m_Distortable && CANDOTRANSPARENCY(Type)); ControlEnable(hDlg, IDC_MAINTAINSIZE, !m_Distortable && lpImage); if ( Page.PrintNumeric ) break; if ( !(hWnd = ::GetDlgItem( hDlg,IDC_PRINTVIEWPAGE)) ) break; if ( !(hControl = ::GetDlgItem( hDlg,IDC_PRINTVIEWIMAGE)) ) break; SetLongBit(hControl, GWL_STYLE, IS_RATIO_CONSTRAIN, !m_Distortable ); if (!m_Distortable) { ::GetWindowRect(hControl, &rArea); ::ScreenToClient(hWnd, (LPPOINT)&rArea.left); ::ScreenToClient(hWnd, (LPPOINT)&rArea.right); ::MoveWindow(hControl, rArea.left, rArea.top, RectWidth(&rArea)-1, RectHeight(&rArea)-1, TRUE); } break; case IDC_HEIGHT: if ( ::GetFocus() != ::GetDlgItem( hDlg,id ) ) break; if ( codeNotify != EN_CHANGE ) break; m_Height = GetDlgItemSpinFixed( hDlg, IDC_HEIGHT, &Bool, YES); if (m_MaintainSize) { scale = FGET(FUNITY, m_Height); m_Resolution = FMUL(nlin, scale); SetUnitResolution( m_Resolution ); SetDlgItemSpin( hDlg, IDC_RES, m_Resolution, NO ); } // y = number of new pixels x 100 y = FMUL( m_CropResolution, m_Height ); // calculate scale factor = (new pixels * 100) / old pixels m_ScaleY = ((y * 100L) + nlin/2) / nlin; SetDlgItemSpin( hDlg, IDC_SCALEY, m_ScaleY, NO ); if ( !m_Distortable ) { m_ScaleX = m_ScaleY; x = (((long)npix * (long)y) + (nlin/2))/ (long)nlin; m_Width = FGET( x, m_CropResolution ); SetDlgItemSpinFixed( hDlg, IDC_WIDTH, m_Width, YES ); SetDlgItemSpin( hDlg, IDC_SCALEX, m_ScaleX, NO ); } ImageMemory( hDlg, IDC_MEMORY, m_MaintainSize ? FGET(npix,1) : m_Width, m_MaintainSize ? FGET(nlin,1) : m_Height, m_MaintainSize ? 1 : m_Resolution, m_Depth ); break; case IDC_WIDTH: if ( ::GetFocus() != ::GetDlgItem( hDlg, id ) ) break; if ( codeNotify != EN_CHANGE ) break; m_Width = GetDlgItemSpinFixed( hDlg, IDC_WIDTH, &Bool, YES ); if (m_MaintainSize) { scale = FGET(FUNITY, m_Width); m_Resolution = FMUL(npix, scale); SetUnitResolution( m_Resolution ); SetDlgItemSpin( hDlg, IDC_RES, m_Resolution, NO ); } x = FMUL( m_CropResolution, m_Width ); m_ScaleX = ((x * 100L) + npix/2L) / (long)npix; SetDlgItemSpin( hDlg, IDC_SCALEX, m_ScaleX, NO ); if ( !m_Distortable ) { m_ScaleY = m_ScaleX; y = (((long)nlin * (long)x) + (npix/2))/ (long)npix; m_Height = FGET( y, m_CropResolution ); SetDlgItemSpinFixed( hDlg, IDC_HEIGHT, m_Height, YES ); SetDlgItemSpin( hDlg, IDC_SCALEY, m_ScaleY, NO ); } ImageMemory( hDlg, IDC_MEMORY, m_MaintainSize ? FGET(npix,1) : m_Width, m_MaintainSize ? FGET(nlin,1) : m_Height, m_MaintainSize ? 1 : m_Resolution, m_Depth ); break; case IDC_RES: if ( ::GetFocus() != ::GetDlgItem( hDlg, id ) ) break; if ( codeNotify != EN_CHANGE ) break; m_Resolution = GetDlgItemSpin( hDlg, IDC_RES, &Bool, NO ); if ( m_Resolution <= 0 ) m_Resolution = 2; if (m_MaintainSize) { m_Width = FGET(npix, m_Resolution); m_Height = FGET(nlin, m_Resolution); SetUnitResolution( m_Resolution ); if (m_Units != IDC_PREF_UNITPIXELS) { SetDlgItemSpinFixed( hDlg, IDC_WIDTH, m_Width, YES ); SetDlgItemSpinFixed( hDlg, IDC_HEIGHT, m_Height, YES ); y = FMUL( m_CropResolution, m_Height ); m_ScaleY = ((y*100L) + nlin/2) / nlin; SetDlgItemSpin( hDlg, IDC_SCALEY, m_ScaleY, NO ); x = FMUL( m_CropResolution, m_Width ); m_ScaleX = ((x*100L) + npix/2) / npix; SetDlgItemSpin( hDlg, IDC_SCALEX, m_ScaleX, NO ); } } if ( m_Units == IDC_PREF_UNITPIXELS ) { if ( bResAdjust ) { // Extract the values again (inch values changed) m_CropResolution = m_Resolution; SetUnitResolution( m_Resolution ); ::SetFocus( hWnd = ::GetDlgItem( hDlg,IDC_HEIGHT ) ); FORWARD_WM_COMMAND(hDlg, IDC_HEIGHT, hWnd, EN_CHANGE, ::SendMessage); ::SetFocus( hWnd = ::GetDlgItem( hDlg,IDC_WIDTH ) ); FORWARD_WM_COMMAND(hDlg, IDC_WIDTH, hWnd, EN_CHANGE, ::SendMessage); ::SetFocus( ::GetDlgItem( hDlg,id ) ); } else { // Change the edit box SetUnitResolution( m_Resolution ); SetDlgItemSpinFixed( hDlg, IDC_WIDTH, m_Width, YES); SetDlgItemSpinFixed( hDlg, IDC_HEIGHT, m_Height, YES ); } } ImageMemory( hDlg, IDC_MEMORY, m_MaintainSize ? FGET(npix,1) : m_Width, m_MaintainSize ? FGET(nlin,1) : m_Height, m_MaintainSize ? 1 : m_Resolution, m_Depth ); break; case IDC_SCALEX: if ( GetFocus() != GetDlgItem( id ) ) break; if ( codeNotify != EN_CHANGE ) break; m_ScaleX = GetDlgItemSpin( hDlg, IDC_SCALEX, &Bool, NO ); x = (((long)npix * m_ScaleX)+50L)/100L; m_Width = FGET( x, m_CropResolution ); SetDlgItemSpinFixed( hDlg, IDC_WIDTH, m_Width, YES ); if (m_MaintainSize) { scale = FGET(FUNITY, m_Width); m_Resolution = FMUL(npix, scale); SetUnitResolution( m_Resolution ); SetDlgItemSpin( hDlg, IDC_RES, m_Resolution, NO ); } if ( !m_Distortable ) { m_ScaleY = m_ScaleX; y = (((long)nlin * m_ScaleY)+50)/100L; m_Height = FGET( y, m_CropResolution ); SetDlgItemSpinFixed( hDlg, IDC_HEIGHT, m_Height, YES ); SetDlgItemSpin( hDlg, IDC_SCALEY, m_ScaleY, NO ); } ImageMemory( hDlg, IDC_MEMORY, m_MaintainSize ? FGET(npix,1) : m_Width, m_MaintainSize ? FGET(nlin,1) : m_Height, m_MaintainSize ? 1 : m_Resolution, m_Depth ); break; case IDC_SCALEY: if ( GetFocus() != GetDlgItem( id ) ) break; if ( codeNotify != EN_CHANGE ) break; m_ScaleY = GetDlgItemSpin( hDlg, IDC_SCALEY, &Bool, NO ); y = (((long)nlin * m_ScaleY)+50)/100L; m_Height = FGET( y, m_CropResolution ); SetDlgItemSpinFixed( hDlg, IDC_HEIGHT, m_Height, YES ); if (m_MaintainSize) { scale = FGET(FUNITY, m_Height); m_Resolution = FMUL(nlin, scale); SetUnitResolution( m_Resolution ); SetDlgItemSpin( hDlg, IDC_RES, m_Resolution, NO ); } if ( !m_Distortable ) { m_ScaleX = m_ScaleY; x = (((long)npix * m_ScaleX)+50L)/100L; m_Width = FGET( x, m_CropResolution ); SetDlgItemSpinFixed( hDlg, IDC_WIDTH, m_Width, YES); SetDlgItemSpin( hDlg, IDC_SCALEX, m_ScaleX, NO ); } ImageMemory( hDlg, IDC_MEMORY, m_MaintainSize ? FGET(npix,1) : m_Width, m_MaintainSize ? FGET(nlin,1) : m_Height, m_MaintainSize ? 1 : m_Resolution, m_Depth ); break; case IDC_MEMORY: default: bResult = FALSE; break; } return bResult; }
BOOL CChromaDlg::OnCommand(WPARAM wParam, LPARAM lParam) { HWND hDlg = GetSafeHwnd(); BOOL bReturn = TRUE; UINT id = LOWORD(wParam); HWND hControl = (HWND)lParam; int codeNotify = HIWORD(wParam); int i; long Color; HWND hActiveWnd; char Buff[10]; BYTE mask; hActiveWnd = m_pView->GetSafeHwnd(); switch (id) { case IDC_CHROMASELECT: i = TableHandleCombo(hDlg, &iCombo[0], nCombo, id, codeNotify); if (i != IDC_CHROMA_NORMAL && i != IDC_CHROMA_HSL && i != IDC_CHROMA_LUMIN) break; lpChromaMask->ChromaColorMode = i; lpChromaMask->SetupChroma(); break; case IDC_MAP_PROBE: ::GetWindowText(hControl, Buff, 10); id = atoi(Buff); if (id < 1 || id > 8) break; id += IDC_MASKCOLOR1 - 1; GetDlgItem(id)->ShowWindow(SW_SHOW); GetDlgItem(id)->SetFocus(); ::ShowWindow(hControl, SW_HIDE); case IDC_MASKCOLOR1: case IDC_MASKCOLOR2: case IDC_MASKCOLOR3: case IDC_MASKCOLOR4: case IDC_MASKCOLOR5: case IDC_MASKCOLOR6: case IDC_MASKCOLOR7: case IDC_MASKCOLOR8: lpChromaMask->ActiveChromaMask = i = id - IDC_MASKCOLOR1; if (codeNotify != 1 /*Not A DoubleClick*/) { if (hActiveWnd) bProbePending = YES; } else { bProbePending = NO; if (!ColorPicker(&lpChromaMask->MaskColor[i], NULL)) break; CopyRGB(&lpChromaMask->MaskColor[i].rgb, &Color); SetWindowLong(::GetDlgItem(hDlg, id), GWL_ACTIVE, Color); AstralControlRepaint(hDlg, IDC_MASKCOLOR1+i); } mask = 1 << (id - IDC_MASKCOLOR1); if (lpChromaMask->Mask & mask) break; id = id - IDC_MASKCOLOR1 + IDC_MASKACTIVE1; case IDC_MASKACTIVE1: case IDC_MASKACTIVE2: case IDC_MASKACTIVE3: case IDC_MASKACTIVE4: case IDC_MASKACTIVE5: case IDC_MASKACTIVE6: case IDC_MASKACTIVE7: case IDC_MASKACTIVE8: { mask = 1 << (id - IDC_MASKACTIVE1); lpChromaMask->Mask ^= mask; CheckDlgButton(id, lpChromaMask->Mask & mask); lpChromaMask->SetupChroma(); } break; case IDC_CHROMA_FADE: if (::GetFocus() != ::GetDlgItem(hDlg, id)) break; if ( codeNotify == EN_CHANGE ) { BOOL Bool; lpChromaMask->Fade = GetDlgItemSpin(hDlg, id, &Bool, NO); lpChromaMask->SetupChroma(); } break; case IDC_MASKRANGE1: case IDC_MASKRANGE2: case IDC_MASKRANGE3: case IDC_MASKRANGE4: case IDC_MASKRANGE5: case IDC_MASKRANGE6: case IDC_MASKRANGE7: case IDC_MASKRANGE8: if (::GetFocus() != ::GetDlgItem(hDlg, id)) break; if ( codeNotify == EN_CHANGE ) { BOOL Bool; lpChromaMask->MaskRange[id-IDC_MASKRANGE1] = GetDlgItemSpin(hDlg, id, &Bool, NO); lpChromaMask->SetupChroma(); } break; case IDC_MASKMODE_ADD: case IDC_MASKMODE_SUBTRACT: case IDC_MASKMODE_REVERSE: lpChromaMask->ChromaCombineMode = SHAPE_REVERSE + (id - IDC_MASKMODE_REVERSE); CheckRadioButton(IDC_MASKMODE_REVERSE, IDC_MASKMODE_SUBTRACT,id); break; case IDC_DELETEMASK: lpChromaMask->Delete = !lpChromaMask->Delete; CheckDlgButton(id, lpChromaMask->Delete); break; case IDC_CHROMA: if (hActiveWnd) { idLastTool = ActivateTool(id); CreateProc(hActiveWnd, 0, 0, this); bPreview = YES; } break; case IDC_RESET: if ( bPreview ) DeactivateTool(); bPreview = NO; break; default: bReturn = FALSE; break; } return bReturn ? bReturn : CPPViewModalDlg::OnCommand(wParam, lParam); }
//************************************************************************ // change_mark // PARAMETERS: // int nMark- which mark (0 for highlights etc) // int val- New value. // int inval- the 'readout' value of the given mark (INT_MAX for none) // Currently used only for midtone // DESCRIPTION: // Sets the mark, updates other marks to keep them valid. // Sets and redraws all appropriate controls. // Updates the map. //************************************************************************ void CToneBalanceDlg::change_mark(LPQUARTERSTRUCT lpData, int nMark, int val, int inval) //************************************************************************ { HWND hHisto, hTag; int i; BOOL Bool; int Marks[3]; HWND hDlg = GetSafeHwnd(); // set value and adjust others Marks[0] = lpData->iShadow; Marks[2] = lpData->iHighlight; if (m_bUseMidPer) Marks[1] = Marks[0] + (LONG)lpData->MidtonePer*(Marks[2]-Marks[0])/255; else Marks[1] = lpData->iMidtone; if (nMark == 0) { Marks[0] = lpData->iShadow = val; if (Marks[2] < Marks[0]) Marks[2] = Marks[0]; if (m_bUseMidPer) Marks[1] = Marks[0] + (LONG)lpData->MidtonePer*(Marks[2]-Marks[0])/255; else if (Marks[1] < Marks[0]) Marks[1] = Marks[0]; } else if (nMark == 2) { Marks[2] = lpData->iHighlight = val; if (Marks[0] > Marks[2]) Marks[0] = Marks[2]; if (m_bUseMidPer) Marks[1] = Marks[0] + (LONG)lpData->MidtonePer*(Marks[2]-Marks[0])/255; else if (Marks[1] > Marks[2]) Marks[1] = Marks[2]; } else if (nMark == 1) { Marks[1] = lpData->iMidtone = Bound(val, Marks[0], Marks[2]); if (Marks[2]-Marks[0]) lpData->MidtonePer = (lpData->iMidtone - Marks[0])*255L/(Marks[2]-Marks[0]); } else return; // update anything that needs it // spins i = GetDlgItemSpin(hDlg, IDC_QUART1_VALUE, &Bool, NO); i = FROM_DISPLAY(i); if (!Bool || i != Marks[0]) InitDlgItemSpin(hDlg, IDC_QUART1_VALUE, TO_DISPLAY(Marks[0]), NO, 0, MAX_SPIN ); if (inval != INT_MAX && nMark==1) { } else { // update percent if (m_bUseMidPer) { i = GetDlgItemSpin(hDlg, IDC_QUART2_VALUE, &Bool, NO); if (!Bool || (i*255L/100) != lpData->MidtonePer) InitDlgItemSpin(hDlg, IDC_QUART2_VALUE, lpData->MidtonePer*100L/255, NO, 0, MAX_SPIN ); } else { i = GetDlgItemSpin(hDlg, IDC_QUART2_VALUE, &Bool, NO); i = FROM_DISPLAY(i); if (!Bool || i != Marks[1]) InitDlgItemSpin(hDlg, IDC_QUART2_VALUE, TO_DISPLAY(Marks[1]), NO, 0, MAX_SPIN ); } } i = GetDlgItemSpin(hDlg, IDC_QUART3_VALUE, &Bool, NO); i = FROM_DISPLAY(i); if (!Bool || i != Marks[2]) InitDlgItemSpin(hDlg, IDC_QUART3_VALUE, TO_DISPLAY(Marks[2]), NO, 0, MAX_SPIN ); // histogram hHisto = ::GetDlgItem(hDlg, IDC_HISTOGRAM); hTag = ::GetDlgItem(hDlg, IDC_TAGS); for (i=0;i<3;i++) { if (Marks[i] != Histo_GetMark(hHisto,i)) Histo_SetMark(hHisto,i, Marks[i], NO); if (Marks[i] != Tag_GetMark(hTag,i)) Tag_SetMark(hTag,i, Marks[i], NO); } lpData->lpMap->Pnt[0].x = Marks[0]; lpData->lpMap->Pnt[1].x = Marks[1]; lpData->lpMap->Pnt[2].x = Marks[2]; }
BOOL CToneBalanceDlg::OnCommand( WPARAM wParam, LPARAM lParam ) { int id = LOWORD(wParam); //unpack the message WORD codeNotify = HIWORD(wParam); HWND hControl = (HWND) lParam; HWND hDlg = GetSafeHwnd(); int i, val; BOOL Bool; HWND hActiveWnd; LPIMAGE lpImage = NULL; lpImage = GetImage(); switch (id) { case IDC_CHANNELS: i=ChannelsCombo_Handle(id, codeNotify); if (!i) break; m_lpData->wChannel = i; set_quarter_channel(m_lpData->wChannel); break; case IDC_QUART1_PROBE: case IDC_QUART2_PROBE: case IDC_QUART3_PROBE: if (!Probe_Begin(codeNotify)) break; CheckDlgButton(id, YES ); m_lpData->iProbe = id-IDC_QUART1_PROBE; if (m_lpData->iProbe == 0) m_lpData->OriginalValue = m_lpData->iShadow; else if (m_lpData->iProbe == 1) m_lpData->OriginalValue = m_lpData->iMidtone; else m_lpData->OriginalValue = m_lpData->iHighlight; // unpreview UnAutoPreview(); break; case IDC_QUART1_VALUE: case IDC_QUART2_VALUE: case IDC_QUART3_VALUE: if ( ::GetFocus() != ::GetDlgItem( hDlg, id ) ) break; if ( codeNotify != EN_CHANGE) break; val = GetDlgItemSpin(hDlg, id, &Bool, NO); if (!Bool) break; // convert to 'real' location if (id == IDC_QUART2_VALUE && m_bUseMidPer) i = m_lpData->iShadow + (LONG)val*(m_lpData->iHighlight-m_lpData->iShadow)/100; else i = FROM_DISPLAY(val); if (id != IDC_QUART2_VALUE) val = INT_MAX; change_mark(m_lpData, id-IDC_QUART1_VALUE, i, val); AutoPreview(m_lpData->lpMap, m_bAutoPreview, NO); break; case IDC_MINHIGHLIGHT: if ( ::GetFocus() != ::GetDlgItem( hDlg, id ) ) break; if ( codeNotify != EN_CHANGE) break; i = GetDlgItemSpin(hDlg, id, &Bool, NO); if (!Bool) break; i = FROM_DISPLAY(i); m_lpData->lpMap->Pnt[2].y = i; m_lpData->lpMap->Pnt[1].y = (m_lpData->lpMap->Pnt[2].y+m_lpData->lpMap->Pnt[0].y)/2; AutoPreview(m_lpData->lpMap,m_bAutoPreview, YES); break; case IDC_MAXSHADOW: if ( ::GetFocus() != ::GetDlgItem( hDlg, id ) ) break; if ( codeNotify != EN_CHANGE) break; i = GetDlgItemSpin(hDlg, id, &Bool, NO); if (!Bool) break; i = FROM_DISPLAY(i); m_lpData->lpMap->Pnt[0].y = i; m_lpData->lpMap->Pnt[1].y = (m_lpData->lpMap->Pnt[2].y+m_lpData->lpMap->Pnt[0].y)/2; AutoPreview(m_lpData->lpMap, m_bAutoPreview, YES); break; case IDC_HISTOGRAM: // value changed if (WITHIN(codeNotify, HTN_CHANGED_FIRST, HTN_CHANGED_LAST)) { i = codeNotify-HTN_CHANGED_FIRST; Bool = TRUE; } else if (WITHIN(codeNotify, HTN_CHANGING_FIRST, HTN_CHANGING_LAST)) { i = codeNotify-HTN_CHANGING_FIRST; Bool = FALSE; } else break; val = Histo_GetMark(hControl, i); change_mark(m_lpData, i, val, INT_MAX); AutoPreview(m_lpData->lpMap, m_bAutoPreview, Bool); break; case IDC_TAGS: // value changed if (WITHIN(codeNotify, TN_CHANGED_FIRST, TN_CHANGED_LAST)) { i = codeNotify-TN_CHANGED_FIRST; Bool = TRUE; } else if (WITHIN(codeNotify, TN_CHANGING_FIRST, TN_CHANGING_LAST)) { i = codeNotify-TN_CHANGING_FIRST; Bool = FALSE; } else break; val = Tag_GetMark(hControl, i); change_mark(m_lpData, i, val, INT_MAX); AutoPreview(m_lpData->lpMap, m_bAutoPreview, Bool); break; // case IDC_PREVIEW: // AutoPreview_Button(m_lpData->lpMap); // break; // case IDC_QUART_DEFAULTS: // // setup channel with sacrifice defaults // set_sacrifice(m_lpData, m_lpData->wChannel); // // setup the actual histogram and controls // set_quarter_channel(m_lpData->wChannel); // AutoPreview(m_lpData->lpMap, m_bAutoPreview, YES); // break; default: break; } return CWnd::OnCommand(wParam, lParam); }
LOCAL void Convert_OnCommand(HWND hDlg, int id, HWND hControl, UINT codeNotify) /************************************************************************/ { BOOL Bool; switch (id) { case IDC_MINITYPES: // case IDC_MINI256: // case IDC_MINI16: // case IDC_MINI8: // case IDC_MINICUSTOM: if ( !(id = HandleCombo( hDlg, id, codeNotify )) ) break; Convert.MiniType = id; if (Convert.MiniType == IDC_MINI256) Convert.ConvertColors = 256; else if (Convert.MiniType == IDC_MINI16) Convert.ConvertColors = 16; else if (Convert.MiniType == IDC_MINI8) Convert.ConvertColors = 8; Convert_Enable(hDlg); break; case IDC_DITHERTYPES: // case IDC_DITHERPATTERN: // case IDC_DITHERSCATTERED: // case IDC_DITHERNONE: if ( !(id = HandleCombo( hDlg, id, codeNotify )) ) break; if ( id == IDC_DITHERPATTERN ) { Convert.fDither = YES; Convert.fScatter = NO; Convert.ConvertDitherType = DT_PATTERN; } else if ( id == IDC_DITHERSCATTERED ) { Convert.fDither = NO; Convert.fScatter = YES; Convert.ConvertDitherType = DT_SCATTER; } else { Convert.fDither = NO; Convert.fScatter = NO; Convert.ConvertDitherType = DT_NONE; } break; case IDC_PALETTETYPES: // case IDC_PALETTEOPTIMIZED: // case IDC_PALETTESTANDARD: // case IDC_PALETTECUSTOM: if ( !(id = HandleCombo( hDlg, id, codeNotify )) ) break; if (id == IDC_PALETTEOPTIMIZED) Convert.ConvertType = CT_OPTIMIZED; else if (id == IDC_PALETTESTANDARD) Convert.ConvertType = CT_STANDARD; else Convert.ConvertType = CT_CUSTOM; Convert.fOptimize = ( id == IDC_PALETTEOPTIMIZED ); Convert_Enable(hDlg); break; case IDC_PALETTECOLORS: if ( GetFocus() != GetDlgItem( hDlg, id ) ) break; if ( codeNotify != EN_CHANGE ) break; Convert.ConvertColors = GetDlgItemSpin( hDlg, id, &Bool, NO ); break; case IDC_EXTNAMES: GetExtName( hDlg, IDC_EXTNAMES, IDC_FILENAME, Convert.ConvertPalette, IDN_PALETTE, codeNotify ); break; case IDC_EXTMANAGE: PopupMenu( hDlg, id, IDC_FILENAME ); break; case IDC_ADDEXT: case IDC_DELETEEXT: case IDC_RENAMEEXT: ExtNameManager( hDlg, IDC_EXTNAMES, IDC_FILENAME, Convert.ConvertPalette, IDN_PALETTE, id, NO ); break; case IDOK: // make sure we can open a colormap if (Convert.ConvertType == CT_CUSTOM) { FNAME szFileName; LPCOLORMAP lpColorMap; if ( !LookupExtFile( Convert.ConvertPalette, szFileName, IDN_PALETTE ) ) break; if (!(lpColorMap = Palette_ReadColorMap(szFileName))) break; FrameDestroyColorMap(lpColorMap); } AstralDlgEnd( hDlg, TRUE ); break; case IDCANCEL: AstralDlgEnd( hDlg, FALSE ); break; default: break; } }
LOCAL void Flood_OnCommand(HWND hDlg, int id, HWND hControl, UINT codeNotify) /************************************************************************/ { BOOL Bool; MERGE_MODE MergeMode; int i; switch (id) { case IDC_FLOOD: if ( !SaveToolPreferences( id ) ) break; break; case IDC_TRANSPARENT: if ( GetFocus() != GetDlgItem( hDlg, id ) ) break; if ( codeNotify != EN_CHANGE ) break; i = GetDlgItemSpin( hDlg, id, &Bool, NO ); Fill.FloodOpacity = 255-TOGRAY(i); SetCommonOpacity(Fill.FloodOpacity); break; case IDC_COLORMODEL: // case IDC_MODEL_RGB: // case IDC_MODEL_HSL: // case IDC_MODEL_LIGHTNESS: // case IDC_MODEL_HUE: if ( !(id = HandleCombo( hDlg, id, codeNotify )) ) break; Fill.idFillColorModel = id - IDC_FIRST_MODEL; SetCommonColorModel(Fill.idFillColorModel); break; case IDC_MERGEMODE: if ((MergeMode = HandleMergeCombo( hDlg, id, FALSE, MM_NORMAL, codeNotify )) < 0) break; Fill.FloodMergeMode = MergeMode; SetCommonMergeMode(Fill.FloodMergeMode); break; case IDOK: // AstralDlgEnd( hDlg, TRUE ); break; case IDCANCEL: // AstralDlgEnd( hDlg, FALSE ); break; case IDC_FLOODRANGE: Fill.FloodRange = GetDlgItemSpin( hDlg, id, &Bool, NO ); SetCommonRange(Fill.FloodRange); break; case IDC_FLOODFADE: Fill.FloodFade = GetDlgItemSpin( hDlg, id, &Bool, NO ); break; default: break; } }
LOCAL void TextureFill_OnCommand(HWND hDlg, int id, HWND hControl, UINT codeNotify) /************************************************************************/ { int i; BOOL Bool; MERGE_MODE MergeMode; switch (id) { case IDC_TEXTUREFILL: if ( !SaveToolPreferences( id ) ) break; break; case IDC_TEXTUREFLIPX: Texture.fHorzFlip = !Texture.fHorzFlip; CheckDlgButton( hDlg, IDC_TEXTUREFLIPX, Texture.fHorzFlip); break; case IDC_TEXTUREFLIPY: Texture.fVertFlip = !Texture.fVertFlip; CheckDlgButton( hDlg, IDC_TEXTUREFLIPY, Texture.fVertFlip); break; case IDC_EXTNAMES: GetExtName( hDlg, IDC_EXTNAMES, IDC_FILENAME, Texture.TextureName, IDN_TEXTURE, codeNotify ); break; case IDC_EXTMANAGE: PopupMenu( hDlg, id, IDC_FILENAME ); break; case IDC_ADDEXT: case IDC_DELETEEXT: case IDC_RENAMEEXT: ExtNameManager( hDlg, IDC_EXTNAMES, IDC_FILENAME, Texture.TextureName, IDN_TEXTURE, id, NO ); break; case IDC_MERGEMODE: if ((MergeMode = HandleMergeCombo( hDlg, id, FALSE, MM_NORMAL, codeNotify )) < 0) break; Texture.TextureMergeMode = MergeMode; SetCommonMergeMode(Texture.TextureMergeMode); break; case IDC_TRANSPARENT: if ( GetFocus() != GetDlgItem( hDlg, id ) ) break; if ( codeNotify != EN_CHANGE ) break; i = GetDlgItemSpin( hDlg, id, &Bool, NO ); Texture.TextureOpacity = 255-TOGRAY(i); SetCommonOpacity(Texture.TextureOpacity); break; default: break; } }
LOCAL void Vignette_OnCommand(HWND hDlg, int id, HWND hControl, UINT codeNotify) /************************************************************************/ { int i; BOOL Bool; MERGE_MODE MergeMode; switch (id) { case IDC_VIGNETTE: if ( !SaveToolPreferences( id ) ) break; break; case IDC_VIGNETTETYPE: // case IDC_VIGLINEAR: // case IDC_VIGRADIAL: // case IDC_VIGCIRCLE: // case IDC_VIGELLIPSE: // case IDC_VIGSQUARE: // case IDC_VIGRECTANGLE: if ( !(id = HandleCombo( hDlg, id, codeNotify )) ) break; Vignette.Gradient = id; break; case IDC_COLORMODEL: // case IDC_MODEL_RGB: // case IDC_MODEL_HL: if ( !(id = HandleCombo( hDlg, id, codeNotify )) ) break; Vignette.VigColorModel = id-IDC_FIRST_MODEL; SetCommonColorModel(Vignette.VigColorModel); break; case IDC_VIGREPEAT: if ( GetFocus() != GetDlgItem( hDlg, id ) ) break; if ( codeNotify != EN_CHANGE ) break; Vignette.RepeatCount = GetDlgItemSpin( hDlg, id, &Bool, NO); ControlEnable( hDlg, IDC_VIGTRANSITION, Vignette.RepeatCount > 1 ); break; case IDC_VIGTRANSITION: // case IDC_VIGSOFTTRANSITION: // case IDC_VIGHARDTRANSITION: if ( !(id = HandleCombo( hDlg, id, codeNotify )) ) break; Vignette.SoftTransition = id - IDC_VIGHARDTRANSITION; break; case IDC_MERGEMODE: if ((MergeMode = HandleMergeCombo( hDlg, id, FALSE, MM_NORMAL, codeNotify )) < 0) break; Vignette.VigMergeMode = MergeMode; SetCommonMergeMode(Vignette.VigMergeMode); break; case IDC_MIDPOINT: if ( GetFocus() != GetDlgItem( hDlg, id ) ) break; if ( codeNotify != EN_CHANGE ) break; i = GetDlgItemSpin( hDlg, id, &Bool, NO ); Vignette.Midpoint = (i * 255L) / 100L; break; case IDC_TRANSPARENT: if ( GetFocus() != GetDlgItem( hDlg, id ) ) break; if ( codeNotify != EN_CHANGE ) break; i = GetDlgItemSpin( hDlg, id, &Bool, NO ); Vignette.VigOpacity = 255-TOGRAY(i); SetCommonOpacity(Vignette.VigOpacity); break; case IDOK: // AstralDlgEnd( hDlg, TRUE ); break; case IDCANCEL: // AstralDlgEnd( hDlg, FALSE ); break; default: break; } }
LOCAL void ShieldFloat_OnCommand(HWND hDlg, int id, HWND hControl, UINT codeNotify) /************************************************************************/ { int i; BOOL Bool, active; BYTE mask; long Color; ITEMID idLastTool; HWND hActiveWnd; char Buff[10]; hActiveWnd = GetActiveDoc(); switch (id) { case IDC_MAP_PROBE: GetWindowText(hControl, Buff, 10); id = atoi(Buff); if (id < 1 || id > 8) break; id += IDC_MASKCOLOR1 - 1; ShowWindow(GetDlgItem(hDlg, id), SW_SHOW); SetFocus(GetDlgItem(hDlg, id)); ShowWindow(hControl, SW_HIDE); case IDC_MASKCOLOR1: case IDC_MASKCOLOR2: case IDC_MASKCOLOR3: case IDC_MASKCOLOR4: case IDC_MASKCOLOR5: case IDC_MASKCOLOR6: case IDC_MASKCOLOR7: case IDC_MASKCOLOR8: ColorMask.MaskShield = i = id - IDC_MASKCOLOR1; if ( codeNotify != 1 /*Not A DoubleClick*/ ) { if ( hActiveWnd ) bProbePending = YES; } else { bProbePending = NO; if ( !ColorPicker( &ColorMask.MaskColor[i], NULL ) ) break; CopyRGB( &ColorMask.MaskColor[i].rgb, &Color ); SetWindowLong( GetDlgItem( hDlg, id ), GWL_ACTIVE, Color ); AstralControlRepaint( hDlg, IDC_MASKCOLOR1 + i ); } mask = 1 << (id - IDC_MASKCOLOR1); if (ColorMask.Mask & mask) { SetupShield(); break; } id = id - IDC_MASKCOLOR1 + IDC_MASKACTIVE1; case IDC_MASKACTIVE1: case IDC_MASKACTIVE2: case IDC_MASKACTIVE3: case IDC_MASKACTIVE4: case IDC_MASKACTIVE5: case IDC_MASKACTIVE6: case IDC_MASKACTIVE7: case IDC_MASKACTIVE8: mask = 1 << (id - IDC_MASKACTIVE1); ColorMask.Mask ^= mask; active = ColorMask.Mask & mask; CheckDlgButton( hDlg, id, active ); SetupShield(); break; case IDC_MASKRANGE1: case IDC_MASKRANGE2: case IDC_MASKRANGE3: case IDC_MASKRANGE4: case IDC_MASKRANGE5: case IDC_MASKRANGE6: case IDC_MASKRANGE7: case IDC_MASKRANGE8: if ( GetFocus() != GetDlgItem( hDlg, id ) ) break; if ( codeNotify != EN_CHANGE ) break; ColorMask.MaskRange[id-IDC_MASKRANGE1] = GetDlgItemSpin( hDlg, id, &Bool, NO ); SetupShield(); break; case IDC_SHIELD_IFHIDDEN: ColorMask.IfHidden = !ColorMask.IfHidden; CheckDlgButton( hDlg, id, !ColorMask.IfHidden ); break; case IDC_SHIELDSELECT: // case IDC_MASKINCLUDE: // case IDC_MASKEXCLUDE: if ( !(id = HandleCombo( hDlg, id, codeNotify )) ) break; ColorMask.Include = ( id == IDC_MASKINCLUDE ); if ( Tool.hRibbon ) SendMessage( Tool.hRibbon, WM_SHIELDCHANGE, 0, 0L ); break; case IDC_PREVIEW: if (!hActiveWnd) break; idLastTool = ActivateTool(id); CreateProc( hActiveWnd, 0, 0, idLastTool ); bPreview = YES; break; case IDC_RESET: TurnOffShieldPreview(); break; default: break; } }