Esempio n. 1
0
void plAgeDescInterface::IInitControls()
{
#ifdef MAXASS_AVAILABLE
    // Fill the branch combo box
    SendDlgItemMessage( fhDlg, IDC_BRANCHCOMBO, CB_RESETCONTENT, 0, 0 );
    const jvTypeArray &branches = (*fAssetManIface)->GetBranches();
    int i, curr = 0;
    for( i = 0; i < branches.Size(); i++ )
    {
        int idx = SendDlgItemMessage( fhDlg, IDC_BRANCHCOMBO, CB_ADDSTRING, 0, (LPARAM)(const char *)( branches[ i ].Name ) );
        SendDlgItemMessage( fhDlg, IDC_BRANCHCOMBO, CB_SETITEMDATA, idx, (LPARAM)branches[ i ].Id );

        if( branches[ i ].Id == fAssetManIface->GetCurrBranch() )
            curr = i;
    }
    SendDlgItemMessage( fhDlg, IDC_BRANCHCOMBO, CB_SETCURSEL, curr, 0 );


    fSpin = SetupFloatSpinner(fhDlg, IDC_DAYLEN_SPINNER, IDC_DAYLEN_EDIT, 1.f, 100.f, 24.f);
    fCapSpin = SetupIntSpinner(fhDlg, IDC_CAP_SPINNER, IDC_CAP_EDIT, 1, 250, kDefaultCapacity);
    fSeqPrefixSpin = SetupIntSpinner(fhDlg, IDC_SEQPREFIX_SPIN, IDC_SEQPREFIX_EDIT, 1, 102400, 1);

    SendDlgItemMessage( fhDlg, IDC_AGELIST_STATIC, WM_SETFONT, (WPARAM)fBoldFont, MAKELPARAM( TRUE, 0 ) );
    SendDlgItemMessage( fhDlg, IDC_AGEDESC, WM_SETFONT, (WPARAM)fBoldFont, MAKELPARAM( TRUE, 0 ) );
#endif

    ISetControlDefaults();
    IEnableControls(false);
}
Esempio n. 2
0
static INT_PTR CALLBACK NumMapsDlgProc(
		HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
	{
	switch (msg) {
		case WM_INITDIALOG: {
			ISpinnerControl *spin = 
				SetupIntSpinner(
					hWnd,IDC_COMP_NUMMAPSSPIN,IDC_COMP_NUMMAPS,
					2,1000,(int)lParam);
			ReleaseISpinner(spin);
			CenterWindow(hWnd,GetParent(hWnd));
			break;
			}

		case WM_COMMAND:
			switch (LOWORD(wParam)) {
				case IDOK: {
					ISpinnerControl *spin = 
						GetISpinner(GetDlgItem(hWnd,IDC_COMP_NUMMAPSSPIN));
					EndDialog(hWnd,spin->GetIVal());
					ReleaseISpinner(spin);
					break;
					}

				case IDCANCEL:
					EndDialog(hWnd,-1);
					break;
				}
			break;

		default:
			return FALSE;
		}
	return TRUE;
	}
Esempio n. 3
0
void VertexPaint::BeginEditParams( IObjParam *ip, ULONG flags,Animatable *prev )
	{
	
	this->ip = ip;
	editMod = this;
	if (!hParams) {
		hParams = ip->AddRollupPage( 
				hInstance, 
				MAKEINTRESOURCE(IDD_PANEL),
				VertexPaintDlgProc, 
				GetString(IDS_PARAMS), 
				(LPARAM)this);

		// Subclass the palette controls
		hPaletteWnd[ 0] = GetDlgItem(hParams, IDC_PALETTE_1);
		hPaletteWnd[ 1] = GetDlgItem(hParams, IDC_PALETTE_2);
		hPaletteWnd[ 2] = GetDlgItem(hParams, IDC_PALETTE_3);
		hPaletteWnd[ 3] = GetDlgItem(hParams, IDC_PALETTE_4);
		hPaletteWnd[ 4] = GetDlgItem(hParams, IDC_PALETTE_5);
		hPaletteWnd[ 5] = GetDlgItem(hParams, IDC_PALETTE_6);
		hPaletteWnd[ 6] = GetDlgItem(hParams, IDC_PALETTE_7);

		int	i;
		for (i=0; i<NUMPALETTES; i++) {
			colorSwatchOriginalWndProc = (WNDPROC) SetWindowLongPtr(hPaletteWnd[i], GWLP_WNDPROC, (LONG_PTR) colorSwatchSubclassWndProc); 
			}

		SendMessage(hParams, WM_POSTINIT, 0, 0);
		}
	else {
		SetWindowLongPtr(hParams,GWLP_USERDATA,(LONG_PTR)this);
		}

	iTint = SetupIntSpinner (hParams, IDC_TINT_SPIN, IDC_TINT, 0, 100, (int) (fTint*100.0f));

	// Init Gradient Bend spinner
	iGradientBend = SetupIntSpinner (hParams, IDC_BEND_SPIN, IDC_BEND, 0, 100, (int) (fGradientBend*100.0f));

	
	// Set show end result.
	oldShowEnd = ip->GetShowEndResult() ? TRUE : FALSE;
	ip->SetShowEndResult (GetFlag (VP_DISP_END_RESULT));

	// Force an eval to update caches.
	NotifyDependents(FOREVER, PART_VERTCOLOR, REFMSG_CHANGE);
	}
Esempio n. 4
0
INT_PTR CALLBACK UnwrapRelaxFloaterDlgProc(
	HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
	UnwrapMod *mod = DLGetWindowLongPtr<UnwrapMod*>(hWnd);
	//POINTS p = MAKEPOINTS(lParam); commented out by sca 10/7/98 -- causing warning since unused.

	static ISpinnerControl *iAmount = NULL;
	static ISpinnerControl *iIterations = NULL;
	static ISpinnerControl *iStretch = NULL;

	static BOOL bBoundary = TRUE;
	static BOOL bCorner = FALSE;
	static float amount = 1.0f;
	static int iterations = 1;

	switch (msg) {
	  case WM_INITDIALOG:
		  {


			  mod = (UnwrapMod*)lParam;
			  mod->relaxHWND = hWnd;

			  DLSetWindowLongPtr(hWnd, lParam);
			  ::SetWindowContextHelpId(hWnd, idh_unwrap_relax);

			  ICustButton *iButton = GetICustButton(GetDlgItem(hWnd, IDC_RUN_BUTTON));
			  if (iButton)
			  {
				  iButton->SetType(CBT_CHECK);
				  iButton->SetCheck(FALSE);
				  iButton->SetHighlightColor(GREEN_WASH);
				  ReleaseICustButton(iButton);
			  }

			  //create relax amount spinner and set value
			  iAmount = SetupFloatSpinner(
				  hWnd,IDC_RELAX_AMOUNTSPIN,IDC_RELAX_AMOUNT,
				  0.0f,1.0f,mod->relaxAmount);  
			  iAmount->SetScale(0.01f);
			  amount = mod->relaxAmount;

			  iIterations = SetupIntSpinner(
				  hWnd,IDC_RELAX_ITERATIONSSPIN,IDC_RELAX_ITERATIONS,
				  0,100000,mod->relaxIteration);   
			  iIterations->SetScale(1.f);
			  iterations = mod->relaxIteration;

			  iStretch = SetupFloatSpinner(
				  hWnd,IDC_RELAX_STRETCHSPIN,IDC_RELAX_STRETCH,
				  0.0f,1.0f,mod->relaxStretch); 
			  iStretch->SetScale(0.001f);

			  HWND hType = GetDlgItem(hWnd,IDC_RELAXTYPE_COMBO);
			  SendMessage(hType, CB_RESETCONTENT, 0, 0);
			  SendMessage(hType, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR) GetString(IDS_PW_RELAX_FACE));
			  SendMessage(hType, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR) GetString(IDS_PW_RELAX_EDGE));
			  SendMessage(hType, CB_ADDSTRING, 0, (LPARAM)(LPCTSTR) GetString(IDS_PW_RELAX_CENTERS));
			  SendMessage(hType, CB_SETCURSEL, (mod->relaxType), 0L);

			  //set align cluster
			  bBoundary = mod->relaxBoundary;
			  bCorner = mod->relaxSaddle;
			  CheckDlgButton(hWnd,IDC_BOUNDARY_CHECK,bBoundary);
			  CheckDlgButton(hWnd,IDC_CORNERS_CHECK,bCorner);

			  //restore window pos
			  mod->SetRelaxDialogPos();
			  //start the hold begin

			  if (mod->relaxType == 2)
			  {           
				  iStretch->Enable(FALSE);
				  HWND hCheck = GetDlgItem(hWnd,IDC_BOUNDARY_CHECK);
				  EnableWindow(hCheck,TRUE);
				  hCheck = GetDlgItem(hWnd,IDC_CORNERS_CHECK);
				  EnableWindow(hCheck,TRUE);
			  }
			  else
			  {           
				  iStretch->Enable(TRUE);
				  HWND hCheck = GetDlgItem(hWnd,IDC_BOUNDARY_CHECK);
				  EnableWindow(hCheck,TRUE);
				  hCheck = GetDlgItem(hWnd,IDC_CORNERS_CHECK);
				  EnableWindow(hCheck,FALSE);
			  }

			  break;
		  }
	  case WM_SYSCOMMAND:
		  if ((wParam & 0xfff0) == SC_CONTEXTHELP) 
		  {
			  MaxSDK::IHelpSystem::GetInstance()->ShowProductHelpForTopic(idh_unwrap_relax); 
		  }
		  return FALSE;
		  break;
	  case CC_SPINNER_BUTTONDOWN:
		  if (LOWORD(wParam) == IDC_UNWRAP_BIASSPIN) 
		  {
		  }
		  break;

	  case WM_CUSTEDIT_ENTER:
	  case CC_SPINNER_BUTTONUP:
		  mod->RelaxThreadOp(UnwrapMod::KThreadReStart,hWnd);
		  break;



	  case WM_CLOSE:

		  mod->RelaxThreadOp(UnwrapMod::KThreadEnd,hWnd);

		  if (iAmount) ReleaseISpinner(iAmount);
		  if (iIterations) ReleaseISpinner(iIterations);
		  if (iStretch) ReleaseISpinner(iStretch);
		  iAmount = NULL;
		  iIterations = NULL;
		  iStretch = NULL;

		  mod->hRelaxDialog = NULL;
		  EndDialog(hWnd,0);
		  break;
	  case WM_ACTIVATE:
		  mod->RelaxThreadOp(UnwrapMod::KThreadEnd,hWnd);
		  break;


	  case WM_COMMAND:
		  switch (LOWORD(wParam)) 
		  {

		  case IDC_BOUNDARY_CHECK:
		  case IDC_CORNERS_CHECK:
			  mod->RelaxThreadOp(UnwrapMod::KThreadReStart,hWnd);
			  break;

		  case IDC_RUN_BUTTON:
			  {



				  ICustButton *iButton = GetICustButton(GetDlgItem(hWnd, IDC_RUN_BUTTON));
				  if (iButton && iButton->IsChecked())
				  {
					  theHold.Begin();
					  mod->HoldPoints();
					  theHold.Accept(GetString(IDS_PW_RELAX));

					  mod->RelaxThreadOp(UnwrapMod::KThreadStart,hWnd);

				  }
				  else
					  mod->RelaxThreadOp(UnwrapMod::KThreadEnd,hWnd);

				  mod->InvalidateView();
				  TimeValue t = GetCOREInterface()->GetTime();
				  mod->NotifyDependents(FOREVER, PART_TEXMAP, REFMSG_CHANGE);
				  GetCOREInterface()->RedrawViews(t);

				  break;
			  }

			  break;
		  case IDC_APPLY:
			  {
				  //make sure when end any existing threads
				  mod->RelaxThreadOp(UnwrapMod::KThreadEnd,hWnd);



				  theHold.Begin();
				  mod->HoldPoints();
				  theHold.Accept(GetString(IDS_PW_RELAX));

				  bBoundary = IsDlgButtonChecked(hWnd,IDC_BOUNDARY_CHECK);
				  bCorner = IsDlgButtonChecked(hWnd,IDC_CORNERS_CHECK);

				  amount = iAmount->GetFVal();
				  float stretch = iStretch->GetFVal();
				  iterations = iIterations->GetIVal();

				  HWND hType = GetDlgItem(hWnd,IDC_RELAXTYPE_COMBO);
				  int type = SendMessage(hType, CB_GETCURSEL, 0L, 0);

				  HWND hStatus = GetDlgItem(hWnd,IDC_STATUSTEXT);

				  if (type == 0)
					  mod->fnRelaxByFaceAngle(iterations,stretch,amount,bBoundary,hStatus);
				  else if (type == 1)
					  mod->fnRelaxByEdgeAngle(iterations,stretch,amount,bBoundary,hStatus);
				  else if (type == 2)
					  mod->RelaxVerts2(amount,iterations,bBoundary,bCorner);

				  mod->InvalidateView();
				  TimeValue t = GetCOREInterface()->GetTime();
				  mod->NotifyDependents(FOREVER, PART_TEXMAP, REFMSG_CHANGE);
				  GetCOREInterface()->RedrawViews(t);

				  mod->relaxAmount = amount;
				  mod->relaxIteration = iterations;
				  mod->relaxStretch = stretch;
				  mod->relaxType = type;
				  mod->relaxBoundary = bBoundary;
				  mod->relaxSaddle = bCorner;

				  break;
			  }

		  case IDC_REVERT:
			  {
				  mod->RelaxThreadOp(UnwrapMod::KThreadEnd,hWnd);

				  mod->hRelaxDialog = NULL;
				  EndDialog(hWnd,0);
				  break;
			  }
		  case IDC_RELAXTYPE_COMBO:
			  if (HIWORD(wParam)== CBN_SELCHANGE)
			  {
				  mod->RelaxThreadOp(UnwrapMod::KThreadReStart,hWnd);

				  HWND hType = GetDlgItem(hWnd,IDC_RELAXTYPE_COMBO);
				  int type = SendMessage(hType, CB_GETCURSEL, 0L, 0);
				  if (type == 2)
				  {           
					  iStretch->Enable(FALSE);
					  HWND hCheck = GetDlgItem(hWnd,IDC_BOUNDARY_CHECK);
					  EnableWindow(hCheck,TRUE);
					  hCheck = GetDlgItem(hWnd,IDC_CORNERS_CHECK);
					  EnableWindow(hCheck,TRUE);
				  }
				  else
				  {           
					  iStretch->Enable(TRUE);
					  HWND hCheck = GetDlgItem(hWnd,IDC_BOUNDARY_CHECK);
					  EnableWindow(hCheck,TRUE);
					  hCheck = GetDlgItem(hWnd,IDC_CORNERS_CHECK);
					  EnableWindow(hCheck,FALSE);
				  }

			  }
			  break;

		  case IDC_DEFAULT:
			  {
				  mod->RelaxThreadOp(UnwrapMod::KThreadEnd,hWnd);
				  //get bias
				  amount = iAmount->GetFVal();
				  iterations = iIterations->GetIVal();
				  float stretch = iStretch->GetFVal();
				  HWND hType = GetDlgItem(hWnd,IDC_RELAXTYPE_COMBO);
				  int type = SendMessage(hType, CB_GETCURSEL, 0L, 0);

				  mod->relaxAmount = amount;
				  mod->relaxIteration = iterations;
				  mod->relaxStretch = stretch;
				  mod->relaxType = type;


				  //get align
				  bCorner = IsDlgButtonChecked(hWnd,IDC_CORNERS_CHECK);
				  bBoundary = IsDlgButtonChecked(hWnd,IDC_BOUNDARY_CHECK);
				  mod->relaxBoundary = bBoundary;
				  mod->relaxSaddle = bCorner;
				  //set as defaults
				  break;
			  }
		  }
		  break;

	  default:
		  return FALSE;
	}
	return TRUE;
}
Esempio n. 5
0
BOOL OrenNayarShaderDlg::PanelProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam ) 
{
	int id = LOWORD(wParam);
	int code = HIWORD(wParam);
    switch (msg) {
		case WM_INITDIALOG:
			{
			int i;
			
			HDC theHDC = GetDC(hwndDlg);
			hOldPal = GetGPort()->PlugPalette(theHDC);
			ReleaseDC(hwndDlg,theHDC);

			for (i=0; i<NCOLBOX; i++) {
   				cs[i] = GetIColorSwatch(GetDlgItem(hwndDlg, colID[i]),
   					GetMtlColor(i, pShader), GetColorName(i));
			}

			hwHilite = GetDlgItem(hwndDlg, IDC_HIGHLIGHT);
			SetWindowLongPtr( hwHilite, GWLP_WNDPROC, (LONG_PTR)HiliteWndProc);

			shSpin = SetupIntSpinner(hwndDlg, IDC_SH_SPIN, IDC_SH_EDIT, 0,100, 0);
			ssSpin = SetupIntSpinner(hwndDlg, IDC_SS_SPIN, IDC_SS_EDIT, 0,999, 0);
			softSpin = SetupFloatSpinner(hwndDlg, IDC_SOFT_SPIN, IDC_SOFT_EDIT, 0.0f,1.0f,0.0f,.01f);
			trSpin = SetupIntSpinner(hwndDlg, IDC_TR_SPIN, IDC_TR_EDIT, 0,100, 0);
			dlevSpin = SetupIntSpinner(hwndDlg, IDC_DIFFLEV_SPIN, IDC_DIFFLEV_EDIT, 0, 400, 0);
			roughSpin = SetupIntSpinner(hwndDlg, IDC_DIFFROUGH_SPIN, IDC_DIFFROUGH_EDIT, 0, 100, 0);

			for (int j=0; j<NMBUTS; j++) {
				texMBut[j] = GetICustButton(GetDlgItem(hwndDlg,texMButtonsIDC[j]));
				assert( texMBut[j] );
				texMBut[j]->SetRightClickNotify(TRUE);
				texMBut[j]->SetDADMgr(&dadMgr);
			}

			SetupLockButton(hwndDlg,IDC_LOCK_AD,FALSE);
			SetupLockButton(hwndDlg,IDC_LOCK_DS,FALSE);
			SetupPadLockButton(hwndDlg,IDC_LOCK_ADTEX, TRUE);

/* // mjm - 5.10.99 - isn't this already created above when i == N_SI_CLR?
			// create both a self-illum color as well as a spinner
			cs[N_SI_CLR] = GetIColorSwatch(GetDlgItem(hwndDlg, colID[N_SI_CLR] ),
   											GetMtlColor(N_SI_CLR, pShader), GetColorName(N_SI_CLR));
*/
			siSpin = SetupIntSpinner(hwndDlg, IDC_SI_SPIN, IDC_SI_EDIT, 0,100, 0);
			
			if( pShader->IsSelfIllumClrOn() ) {
				// enable the color swatch, disable the spinner
				ShowWindow( GetDlgItem(hwndDlg, IDC_SI_EDIT), SW_HIDE );
				ShowWindow( GetDlgItem(hwndDlg, IDC_SI_SPIN), SW_HIDE );
			} else {
				// disable the color swatch
				ShowWindow( cs[N_SI_CLR]->GetHwnd(), SW_HIDE );
			}
			LoadDialog(TRUE);
		}
		break;

		case WM_COMMAND: 
			{
			for ( int i=0; i<NMBUTS; i++) {
				if (id == texMButtonsIDC[i]) {
					PostMessage(hwmEdit,WM_TEXMAP_BUTTON, texmapFromMBut[i],(LPARAM)pMtl );
					UpdateMapButtons();
					goto exit;
					}
				}
			}
		    switch (id) {

				case IDC_LOCK_AD:
					SetLockAD(IsButtonChecked(hwndDlg, IDC_LOCK_AD));
					UpdateMtlDisplay();
					break;
				
				case IDC_LOCK_DS:
					SetLockDS(IsButtonChecked(hwndDlg, IDC_LOCK_DS));
					UpdateMtlDisplay();
					break;
				
				case IDC_LOCK_ADTEX:{
					BOOL on = IsButtonChecked(hwndDlg, IDC_LOCK_ADTEX);
					SetLockADTex(on);
					UpdateMtlDisplay();
				} break;

				case IDC_SI_COLORON:{
					int isOn = GetCheckBox(hwndDlg, IDC_SI_COLORON );
					pShader->SetSelfIllumClrOn( isOn );			
					if ( isOn ) {
						// enable the color swatch, disable the spinner
						ShowWindow( GetDlgItem(hwndDlg, IDC_SI_EDIT), SW_HIDE );
						ShowWindow( GetDlgItem(hwndDlg, IDC_SI_SPIN), SW_HIDE );
						ShowWindow( cs[N_SI_CLR]->GetHwnd(), SW_SHOW );
					} else {
						// disable the color swatch
						ShowWindow( cs[N_SI_CLR]->GetHwnd(), SW_HIDE );
						ShowWindow( GetDlgItem(hwndDlg, IDC_SI_EDIT), SW_SHOW );
						ShowWindow( GetDlgItem(hwndDlg, IDC_SI_SPIN), SW_SHOW );
					}
				    NotifyChanged();
//					UpdateMtlDisplay();
				}
				break;
			}
			break;
		case CC_COLOR_SEL: {
			int id = LOWORD(wParam);
			SelectEditColor(ColorIDCToIndex(id));
		}			
		break;
		case CC_COLOR_DROP:	{
			int id = LOWORD(wParam);
			SelectEditColor(ColorIDCToIndex(id));
			UpdateMtlDisplay();				
		}
		break;
		case CC_COLOR_BUTTONDOWN:
			theHold.Begin();
		 break;
		case CC_COLOR_BUTTONUP:
			if (HIWORD(wParam)) theHold.Accept(GetString(IDS_DS_PARAMCHG));
			else theHold.Cancel();
			UpdateMtlDisplay();				
			break;
		case CC_COLOR_CHANGE: {			
			int id = LOWORD(wParam);
			int buttonUp = HIWORD(wParam); 
			int n = ColorIDCToIndex(id);
			if (buttonUp) theHold.Begin();
			Color curColor(cs[n]->GetColor());
			SetMtlColor(n, curColor, pShader, cs, curTime);
			if (buttonUp) {
				theHold.Accept(GetString(IDS_DS_PARAMCHG));
				// DS: 5/11/99-  this was commented out. I put it back in, because
				// it is necessary for the Reset button in the color picker to 
				// update the viewport.				
				UpdateMtlDisplay();  
				}
		} break;
		case WM_PAINT: 
			if (!valid) {
				valid = TRUE;
				ReloadDialog();
				}
			return FALSE;
		case WM_CLOSE:
		case WM_DESTROY: 
			break;
		case CC_SPINNER_CHANGE: 
			if (!theHold.Holding()) theHold.Begin();
			switch (id) {
				case IDC_SH_SPIN: 
					pShader->SetGlossiness(PcToFrac(shSpin->GetIVal()), curTime); 
					UpdateHilite();
					break;
				case IDC_SS_SPIN: 
					pShader->SetSpecularLevel(PcToFrac(ssSpin->GetIVal()),curTime); 
					UpdateHilite();
					break;
				case IDC_SOFT_SPIN: 
					pShader->SetSoftenLevel(softSpin->GetFVal(),curTime); 
					break;
				case IDC_SI_SPIN: 
					pShader->SetSelfIllum(PcToFrac(siSpin->GetIVal()),curTime); 
					break;
				case IDC_DIFFLEV_SPIN: 
					pShader->SetDiffuseLevel(PcToFrac(dlevSpin->GetIVal()),curTime); 
					break;
				case IDC_DIFFROUGH_SPIN: 
					pShader->SetDiffuseRoughness(PcToFrac(roughSpin->GetIVal()),curTime); 
					break;
				//******** >>>><<<< required handling for opacity....must be present in all dialogs
				case IDC_TR_SPIN: 
					pMtl->SetOpacity(PcToFrac( trSpin->GetIVal()),curTime); 
					break;
			}
//			UpdateMtlDisplay();
		break;

		case CC_SPINNER_BUTTONDOWN:
			theHold.Begin();
			break;

		case WM_CUSTEDIT_ENTER:
		case CC_SPINNER_BUTTONUP: 
			if (HIWORD(wParam) || msg==WM_CUSTEDIT_ENTER) 
				theHold.Accept(GetString(IDS_DS_PARAMCHG));
			else 
				theHold.Cancel();
			UpdateMtlDisplay();
			break;

    }
	exit:
	return FALSE;
	}
Esempio n. 6
0
INT_PTR StraussShaderDlg::PanelProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam ) 
{
   int id = LOWORD(wParam);
   int code = HIWORD(wParam);
    switch (msg) {
      case WM_INITDIALOG:
         {
         HDC theHDC = GetDC(hwndDlg);
         hOldPal = GetGPort()->PlugPalette(theHDC);
         ReleaseDC(hwndDlg,theHDC);

         HWND hwndCS = GetDlgItem(hwndDlg, IDC_COLOR);
         cs[0] = GetIColorSwatch( hwndCS, pShader->GetDiffuseClr(), GetString(IDS_KE_COLOR) );

         hwHilite = GetDlgItem(hwndDlg, IDC_HIGHLIGHT);
         DLSetWindowLongPtr( hwHilite, HiliteWndProc);

         glSpin = SetupIntSpinner(hwndDlg, IDC_GL_SPIN, IDC_GL_EDIT, 0,100, 0);
         mtSpin = SetupIntSpinner(hwndDlg, IDC_MT_SPIN, IDC_MT_EDIT, 0,100, 0);
         trSpin = SetupIntSpinner(hwndDlg, IDC_TR_SPIN, IDC_TR_EDIT, 0,100, 0);

         for (int j=0; j<NMBUTS; j++) {
            texMBut[j] = GetICustButton(GetDlgItem(hwndDlg,texMButtonsIDC[j]));
            assert( texMBut[j] );
            texMBut[j]->SetRightClickNotify(TRUE);
            texMBut[j]->SetDADMgr(&dadMgr);
         }
         LoadDialog(TRUE);
      }
      break;

      case WM_COMMAND: 
         {
         for ( int i=0; i<NMBUTS; i++) {
            if (id == texMButtonsIDC[i]) {
               PostMessage(hwmEdit,WM_TEXMAP_BUTTON, texmapFromMBut[i],(LPARAM)pMtl );
               UpdateMapButtons();
               goto exit;
               }
            }
         }

         break; // WM_COMMAND

      case CC_COLOR_SEL: {
         int id = LOWORD(wParam);
         SelectEditColor(ColorIDCToIndex(id));
      }        
      break;
      case CC_COLOR_DROP:  {
         int id = LOWORD(wParam);
         SelectEditColor(ColorIDCToIndex(id));
         UpdateMtlDisplay();           
      }
      break;
      case CC_COLOR_BUTTONDOWN:
         theHold.Begin();
       break;
      case CC_COLOR_BUTTONUP:
         if (HIWORD(wParam)) theHold.Accept(GetString(IDS_DS_PARAMCHG));
         else theHold.Cancel();
         UpdateMtlDisplay();           
         break;
      case CC_COLOR_CHANGE: {       
         int id = LOWORD(wParam);
         int buttonUp = HIWORD(wParam); 
         int n = ColorIDCToIndex(id);
         if (buttonUp) theHold.Begin();
         Color curColor(cs[n]->GetColor());
         pShader->SetDiffuseClr(curColor, curTime); 
         if (buttonUp) {
            theHold.Accept(GetString(IDS_DS_PARAMCHG));
            // DS: 5/11/99-  this was commented out. I put it back in, because
            // it is necessary for the Reset button in the color picker to 
            // update the viewport.          
            UpdateMtlDisplay();  
            }
      } break;
      case WM_PAINT: 
         if (!valid) {
            valid = TRUE;
            ReloadDialog();
            }
         return FALSE;
      case WM_CLOSE:
      case WM_DESTROY: 
         break;
      case CC_SPINNER_CHANGE: 
         if (!theHold.Holding()) theHold.Begin();
         switch (id) {
            case IDC_GL_SPIN: 
               pShader->SetGlossiness(PcToFrac( glSpin->GetIVal() ), curTime); 
               UpdateHilite();
               break;
            case IDC_MT_SPIN: 
               pShader->SetMetalness(PcToFrac(mtSpin->GetIVal()), curTime); 
               break;
            //******** >>>><<<< required handling for opacity....must be present in all dialogs
            case IDC_TR_SPIN: 
               pMtl->SetOpacity(PcToFrac( trSpin->GetIVal()),curTime); 
               break;
         }
//       UpdateMtlDisplay();
      break;

      case CC_SPINNER_BUTTONDOWN:
         theHold.Begin();
         break;

      case WM_CUSTEDIT_ENTER:
      case CC_SPINNER_BUTTONUP: 
         if (HIWORD(wParam) || msg==WM_CUSTEDIT_ENTER) 
            theHold.Accept(GetString(IDS_DS_PARAMCHG));
         else 
            theHold.Cancel();
         UpdateMtlDisplay();
         break;

    }
   exit:
   return FALSE;
   }
Esempio n. 7
0
BOOL WardShaderDlg::PanelProc(HWND hwndDlg, UINT msg, WPARAM wParam, LPARAM lParam ) 
{
	int id = LOWORD(wParam);
	int code = HIWORD(wParam);
    switch (msg) {
		case WM_INITDIALOG:
			{
			int i;
			
			HDC theHDC = GetDC(hwndDlg);
			hOldPal = GetGPort()->PlugPalette(theHDC);
			ReleaseDC(hwndDlg,theHDC);

			for (i=0; i<WARD_NCOLBOX; i++) {
   				cs[i] = GetIColorSwatch(GetDlgItem(hwndDlg, colID[i]),
   					GetMtlColor(i, pShader), GetColorName(i));
			}

			hwHilite = GetDlgItem(hwndDlg, IDC_HIGHLIGHT);
			SetWindowLongPtr( hwHilite, GWLP_WNDPROC, (LONG_PTR)Hilite2WndProc);

			slevSpin = SetupIntSpinner(hwndDlg, IDC_SLEV_SPIN, IDC_SLEV_EDIT, 0,400, 0);
			dlevSpin = SetupIntSpinner(hwndDlg, IDC_DLEV_SPIN, IDC_DLEV_EDIT, 0, 400, 0);
			glxSpin = SetupIntSpinner(hwndDlg, IDC_GLX_SPIN, IDC_GLX_EDIT, 0,100, 0);
			glySpin = SetupIntSpinner(hwndDlg, IDC_GLY_SPIN, IDC_GLY_EDIT, 0,100, 0);
			trSpin = SetupIntSpinner(hwndDlg, IDC_TR_SPIN, IDC_TR_EDIT, 0,100, 0);

			for (int j=0; j<NMBUTS; j++) {
				texMBut[j] = GetICustButton(GetDlgItem(hwndDlg,texMButtonsIDC[j]));
				assert( texMBut[j] );
				texMBut[j]->SetRightClickNotify(TRUE);
				texMBut[j]->SetDADMgr(&dadMgr);
			}

			SetupLockButton(hwndDlg,IDC_LOCK_AD,FALSE);
			SetupLockButton(hwndDlg,IDC_LOCK_DS,FALSE);
			SetupPadLockButton(hwndDlg,IDC_LOCK_ADTEX, TRUE);

			LoadDialog(TRUE);
		}
		break;

		case WM_COMMAND: 
			{
			for ( int i=0; i<NMBUTS; i++) {
				if (id == texMButtonsIDC[i]) {
					PostMessage(hwmEdit,WM_TEXMAP_BUTTON, texmapFromMBut[i],(LPARAM)pMtl );
					UpdateMapButtons();
					goto exit;
					}
				}
			}
		    switch (id) {

				case IDC_NORMALIZE_CHECK:
					pShader->SetNormalizeOn( ! GetCheckBox(hwndDlg, IDC_NORMALIZE_CHECK) );
					UpdateHilite();
					NotifyChanged();
					UpdateMtlDisplay();
					break;
				case IDC_LOCK_AD:
					SetLockAD(IsButtonChecked(hwndDlg, IDC_LOCK_AD));
					UpdateMtlDisplay();
					break;
				
				case IDC_LOCK_DS:
					SetLockDS(IsButtonChecked(hwndDlg, IDC_LOCK_DS));
					UpdateMtlDisplay();
					break;
				
				case IDC_LOCK_ADTEX:{
					BOOL on = IsButtonChecked(hwndDlg, IDC_LOCK_ADTEX);
					SetLockADTex(on);
					UpdateMtlDisplay();
				} break;

			}
			break;
		case CC_COLOR_SEL: {
			int id = LOWORD(wParam);
			SelectEditColor(ColorIDCToIndex(id));
		}			
		break;
		case CC_COLOR_DROP:	{
			int id = LOWORD(wParam);
			SelectEditColor(ColorIDCToIndex(id));
			UpdateMtlDisplay();				
		}
		break;
		case CC_COLOR_BUTTONDOWN:
			theHold.Begin();
		 break;
		case CC_COLOR_BUTTONUP:
			if (HIWORD(wParam)) theHold.Accept(GetString(IDS_DS_PARAMCHG));
			else theHold.Cancel();
			UpdateMtlDisplay();				
			break;
		case CC_COLOR_CHANGE: {			
			int id = LOWORD(wParam);
			int buttonUp = HIWORD(wParam); 
			int n = ColorIDCToIndex(id);
			if (buttonUp) theHold.Begin();
			Color curColor(cs[n]->GetColor());
			SetMtlColor(n, curColor, pShader, cs, curTime);
			if (buttonUp) {
				theHold.Accept(GetString(IDS_DS_PARAMCHG));
				// DS: 5/11/99-  this was commented out. I put it back in, because
				// it is necessary for the Reset button in the color picker to 
				// update the viewport.				
				UpdateMtlDisplay();  
				}
		} break;
		case WM_PAINT: 
			if (!valid) {
				valid = TRUE;
				ReloadDialog();
				}
			return FALSE;
		case WM_CLOSE:
		case WM_DESTROY: 
			break;
		case CC_SPINNER_CHANGE: 
			if (!theHold.Holding()) theHold.Begin();
			switch (id) {
				case IDC_GLX_SPIN: 
					pShader->SetGlossiness(ALPHA_MAX - PcToFrac( glxSpin->GetIVal() ) * ALPHA_SZ, curTime); 
					UpdateHilite();
					break;
				case IDC_GLY_SPIN: 
					pShader->SetGlossinessY(ALPHA_MAX - PcToFrac(glySpin->GetIVal()) * ALPHA_SZ, curTime); 
					UpdateHilite();
					break;
				case IDC_SLEV_SPIN: 
					pShader->SetSpecularLevel(SPEC_MAX * PcToFrac(slevSpin->GetIVal()),curTime); 
					UpdateHilite();
					break;
				case IDC_DLEV_SPIN: 
					pShader->SetDiffuseLevel(PcToFrac(dlevSpin->GetIVal()),curTime); 
					break;
				//******** >>>><<<< required handling for opacity....must be present in all dialogs
				case IDC_TR_SPIN: 
					pMtl->SetOpacity(PcToFrac( trSpin->GetIVal()),curTime); 
					break;
			}
//			UpdateMtlDisplay();
		break;

		case CC_SPINNER_BUTTONDOWN:
			theHold.Begin();
			break;

		case WM_CUSTEDIT_ENTER:
		case CC_SPINNER_BUTTONUP: 
			if (HIWORD(wParam) || msg==WM_CUSTEDIT_ENTER) 
				theHold.Accept(GetString(IDS_DS_PARAMCHG));
			else 
				theHold.Cancel();
			UpdateMtlDisplay();
			break;

    }
	exit:
	return FALSE;
	}
Esempio n. 8
0
//----------------------------------------------------------------------------
// Layer panel processor
//----------------------------------------------------------------------------
BOOL plMultipassMtlDlg::LayerPanelProc(HWND hDlg, UINT msg, WPARAM wParam, LPARAM lParam)
{
    int id = LOWORD(wParam);
    int code = HIWORD(wParam);
    int i;

    switch (msg)
    {
    case WM_INITDIALOG:
        {
            int nLayers = fPBlock->GetInt(kMultCount);

            for (i = 0; i < NSUBMTLS; i++)
            {
                fLayerBtns[i] = GetICustButton(GetDlgItem(hDlg, kLayerID[i].layerID));
                fLayerBtns[i]->SetDADMgr(&fDADMgr);

/*              if (i < nLayers)
                {
                    SetCheckBox(hDlg, kLayerID[i].activeID, fPBlock->GetInt(kMtlLayerOn, curTime, i));
                }
*/
                fNumTexSpin = SetupIntSpinner(hDlg, IDC_LAYER_SPIN, IDC_LAYER_EDIT, 1, 10, nLayers);
            }

            // TEMP testing
            UpdateLayerDisplay();

            IUpdateMtlDisplay();
        }
        return TRUE;

    case WM_DESTROY:
        for (i = 0; i < NSUBMTLS; i++)
        {
            ReleaseICustButton(fLayerBtns[i]);
            fLayerBtns[i] = NULL;
        }
        ReleaseISpinner(fNumTexSpin);
        fNumTexSpin = NULL;
        break;

    case CC_SPINNER_CHANGE:
        if (id == IDC_LAYER_SPIN && !code)
        {
            IGetSpinnerVal();
            return TRUE;
        }
        break;
    case CC_SPINNER_BUTTONUP:
        if (id == IDC_LAYER_SPIN && code)
        {
            IGetSpinnerVal();
            return TRUE;
        }
        break;

    case WM_COMMAND:  
        {
            for (i = 0; i < NSUBMTLS; i++)
            {
                if (id == kLayerID[i].activeID)
                {
//                  fMtl->EnableMap(i,GetCheckBox(hwndDlg, id));
                    bool checked = SendMessage(GetDlgItem(hDlg, id), BM_GETCHECK, 0, 0) == BST_CHECKED;
                    fPBlock->SetValue(kMultOn, curTime, checked, i);
                    return TRUE;
                }
                if (id == kLayerID[i].layerID)
                {
                    PostMessage(fhMtlEdit, WM_SUB_MTL_BUTTON, i, (LPARAM)fMtl);
                    return TRUE;
                }
            }

        }
//      IUpdateMtlDisplay();
        break;
    }

    return FALSE;
}
INT_PTR SurfaceDlgProc::DlgProc (TimeValue t, IParamMap2 *map, HWND hWnd,
							  UINT msg, WPARAM wParam, LPARAM lParam) {
	ISpinnerControl* spin = NULL;
	int buttonID(0);

	switch (msg) {
	case WM_INITDIALOG:
		{
			ISpinnerControl* temp = SetupIntSpinner (hWnd, IDC_MAT_IDSPIN, IDC_MAT_ID, 1, MAX_MATID, 0);
			ReleaseISpinner(temp);
			temp = SetupIntSpinner (hWnd, IDC_MAT_IDSPIN_SEL, IDC_MAT_ID_SEL, 1, MAX_MATID, 0);
			ReleaseISpinner(temp);
			CheckDlgButton(hWnd, IDC_CLEARSELECTION, 1);
			mMaterialUIHandler.SetupMtlSubNameCombo (hWnd, mpMod);
			// Cue an update based on the current face selection.
			uiValid.SetEmpty();
			klugeToFixWM_CUSTEDIT_ENTEROnEnterFaceLevel = true;
			mSpinningMaterial = false;
			mTimeChangeHandle = NULL;
			break;
		}

	case WM_PAINT:

		
		uiValid = FOREVER;
		// Display the correct material index:
		mMaterialUIHandler.UpdateCurrentMaterial (hWnd, mpMod, t, uiValid);

		if (!(uiValid == FOREVER) && !(uiValid == NEVER)) AddTimeChangeInvalidate (hWnd);
		else RemoveTimeChangeInvalidate ();

		klugeToFixWM_CUSTEDIT_ENTEROnEnterFaceLevel = false;
		return FALSE;

	case CC_SPINNER_BUTTONDOWN:
		switch (LOWORD(wParam)) {
		case IDC_MAT_IDSPIN:
			if (!mSpinningMaterial) {
				theHold.Begin ();
				mpMod->EpModSetOperation (ep_op_set_material);
				mSpinningMaterial = true;
			}
			break;
		}
		break;

	case WM_CUSTEDIT_ENTER:
	case CC_SPINNER_BUTTONUP:
		switch (LOWORD(wParam)) {
		case IDC_MAT_ID:
		case IDC_MAT_IDSPIN:
			if (!mSpinningMaterial) break;

			// For some reason, there's a WM_CUSTEDIT_ENTER sent on IDC_MAT_ID
			// when we start this dialog up.  Use this variable to suppress its activity.
			if (klugeToFixWM_CUSTEDIT_ENTEROnEnterFaceLevel) break;
			if (HIWORD(wParam) || msg==WM_CUSTEDIT_ENTER)
			{
				mpMod->EpModCommitUnlessAnimating (t);
				theHold.Accept(GetString(IDS_ASSIGN_MATID));
			}
			else theHold.Cancel();
			mpMod->EpModRefreshScreen ();
			mSpinningMaterial = false;
			break;
		}
		break;

	case CC_SPINNER_CHANGE:
		spin = (ISpinnerControl*)lParam;
		switch (LOWORD(wParam)) {
		case IDC_MAT_IDSPIN:
			if (!mSpinningMaterial)
			{
				theHold.Begin();
				mpMod->EpModSetOperation (ep_op_set_material);
				mSpinningMaterial = true;
			}
			mpMod->getParamBlock()->SetValue (epm_material, t, spin->GetIVal()-1);
			break;
		}
		break;

	case WM_COMMAND:
		if (HIWORD(wParam) == 1) return FALSE;	// not handling keyboard shortcuts here.
		buttonID = LOWORD(wParam);

		switch (buttonID) {
		case IDC_SELECT_BYID:
			int selBy;
			spin = GetISpinner (GetDlgItem (hWnd, IDC_MAT_IDSPIN_SEL));
			if (!spin) break;
			selBy = spin->GetIVal()-1;
			ReleaseISpinner (spin);
			mpMod->getParamBlock()->SetValue (epm_material_selby, t, selBy);
			mpMod->EpModButtonOp (ep_op_select_by_material);
			break;

		case IDC_MTLID_NAMES_COMBO:
			switch(HIWORD(wParam)){
			case CBN_SELENDOK:
				mMaterialUIHandler.SelectByName (hWnd, mpMod);
				break;                                                    
			}
			break;

		}
		break;
	case WM_CLOSE:
		{
			if (hWnd == mpMod->MatIDFloaterHWND())
			{
				EndDialog(hWnd,1);
				mpMod->CloseMatIDFloater();
				return TRUE;
			}
			return FALSE;
			break;
		}
	case WM_DESTROY:
		RemoveTimeChangeInvalidate();
		return FALSE;

	default:
		return FALSE;
	}

	return TRUE;
}
Esempio n. 10
0
void AppDataTest::Init(HWND hWnd)
	{
	spin = SetupIntSpinner(hWnd,IDC_APPDATA_SLOTSPIN,IDC_APPDATA_SLOT,0,99999999,0);
	}