Esempio n. 1
0
LWXPanelID UnMultiply::XPanel()
{
  static LWXPanelControl con[] =
  {
	{CH_UNMU, "Unmultiply", "iBoolean"},
	{CH_UBGC, "Background Colour", "color"},
	{CH_FL2A, "Flare 2 Alpha", "iBoolean"},
	{CH_CALP, "Clip Alpha at Threshold", "iBoolean"},
	{CH_CRGB, "Clip RGB at Threshold", "iBoolean"},
	{CH_THRS, "Threshold", "float"},
	0
  };

  static LWXPanelDataDesc  def[] =
  {
	{CH_UNMU, "Unmultiply", "integer"},
	{CH_UBGC, "Background Colour", "color"},
	{CH_FL2A, "Flare 2 Alpha", "iBoolean"},
	{CH_CALP, "Clip Alpha at Threshold", "integer"},
	{CH_CRGB, "Clip RGB at Threshold", "integer"},
	{CH_THRS, "Threshold", "float"},
	0
  };

  // Hints
  static LWXPanelHint hint[] = 
  {
	XpLABEL( 0, "Alphachannel tools " __DATE__),
	XpENABLE_(CH_CALP),
	  XpH(CH_THRS),
	  XpH(CH_CRGB),
	XpEND,
	XpENABLE_(CH_UNMU),
	  XpH(CH_UBGC),
	XpEND,
	XpDIVADD(CH_UBGC),
	XpDIVADD(CH_FL2A),
	XpEND
  };

  LWXPanelFuncs	  *pan_func = NULL;
  LWXPanelID	  pan = NULL;

  pan_func = ( LWXPanelFuncs * )(*global) (LWXPANELFUNCS_GLOBAL, GFUSE_TRANSIENT);

  pan = (*pan_func->create) (LWXP_VIEW, con);
  if (!pan) return NULL;
  (*pan_func->hint)		(pan, 0, hint );
  //(*pan_func->describe) (pan, def, lwpp::WrapXPanelImageFilter<UnMultiply>::XGet, lwpp::WrapXPanelImageFilter<UnMultiply>::XSet);
  (*pan_func->viewInst) (pan, this);
  (*pan_func->setData)	(pan, 0, this);
  return pan;
}
Esempio n. 2
0
int MaterialMixer::Interface (int version, LWInterface *local, void *serverdata)
{
	static LWXPanelControl ctrl[] =
	{
		{MDiff, "Diffuse Mode", "iPopChoice"},
		{BDiff, "Diffuse Opacity", "percent-env"},
		{MSpec, "Specular Mode", "iPopChoice"},
		{BSpec, "Specular Opacity", "percent-env"},
		{MRefl, "Reflection Mode", "iPopChoice"},
		{BRefl, "Reflection Opacity", "percent-env"},
		{MRefr, "Refraction Mode", "iPopChoice"},
		{BRefr, "Refraction Opacity", "percent-env"},
		{MTran, "Transparency Mode", "iPopChoice"},
		{BTran, "Transparency Opacity", "percent-env"},
		0
	};
	static LWXPanelDataDesc desc[] =
	{
		{MDiff, "Diffuse Mode", "integer"},
		{BDiff, "Diffuse Opacity", "float-env"},
		{MSpec, "Specular Mode", "integer"},
		{BSpec, "Specular Opacity", "float-env"},
		{MRefl, "Reflection Mode", "integer"},
		{BRefl, "Reflection Opacity", "float-env"},
		{MRefr, "Refraction Mode", "integer"},
		{BRefr, "Refraction Opacity", "float-env"},
		{MTran, "Transparency Mode", "integer"},
		{BTran, "Transparency Opacity", "float-env"},
	};

	static LWXPanelHint hints[] =
	{
		XpSTRLIST(MDiff, blendModeS),
		XpSTRLIST(MSpec, blendModeS),
		XpSTRLIST(MRefl, blendModeS),
		XpSTRLIST(MRefr, blendModeS),
		XpSTRLIST(MTran, blendModeS),
		XpDIVADD(BDiff),
		XpDIVADD(BSpec),
		XpDIVADD(BRefl),
		XpDIVADD(BRefr),
		XpEND,
	};

	CreateViewXPanel (ctrl, desc, hints);
	local->panel = LW_XPanel.getID();
	return AFUNC_OK;
}
Esempio n. 3
0
int get_user( LWXPanelFuncs *xpanf, double *size, double *center,
   char *surfname, char *vmapname )
{
   LWXPanelID panel;
   int ok = 0;

   enum { ID_SIZE = 0x8001, ID_CENTER, ID_SURFLIST, ID_VMAPNAME };
   LWXPanelControl ctl[] = {
      { ID_SIZE,     "Size",      "distance3"  },
      { ID_CENTER,   "Center",    "distance3"  },
      { ID_SURFLIST, "Surface",   "iPopChoice" },
      { ID_VMAPNAME, "VMap Name", "string"     },
      { 0 }
   };
   LWXPanelDataDesc cdata[] = {
      { ID_SIZE,     "Size",      "distance3" },
      { ID_CENTER,   "Center",    "distance3" },
      { ID_SURFLIST, "Surface",   "integer"   },
      { ID_VMAPNAME, "VMap Name", "string"    },
      { 0 }
   };
   LWXPanelHint hint[] = {
      XpLABEL( 0, "Box Tutorial Part 3" ),
      XpDIVADD( ID_SIZE ),
      XpDIVADD( ID_CENTER ),
      XpSTRLIST( ID_SURFLIST, surflist ),
      XpEND
   };

   panel = xpanf->create( LWXP_FORM, ctl );
   if ( !panel ) return 0;

   xpanf->describe( panel, cdata, NULL, NULL );
   xpanf->hint( panel, 0, hint );
   xpanf->formSet( panel, ID_SIZE, size );
   xpanf->formSet( panel, ID_CENTER, center );
   xpanf->formSet( panel, ID_SURFLIST, 0 );
   xpanf->formSet( panel, ID_VMAPNAME, vmapname );

   ok = xpanf->post( panel );

   if ( ok ) {
      double *d;
      int *i;
      char *a;

      d = xpanf->formGet( panel, ID_SIZE );
      size[ 0 ] = d[ 0 ];
      size[ 1 ] = d[ 1 ];
      size[ 2 ] = d[ 2 ];

      d = xpanf->formGet( panel, ID_CENTER );
      center[ 0 ] = d[ 0 ];
      center[ 1 ] = d[ 1 ];
      center[ 2 ] = d[ 2 ];

      i = xpanf->formGet( panel, ID_SURFLIST );
      strcpy( surfname, surflist[ *i ] );

      a = xpanf->formGet( panel, ID_VMAPNAME );
      strcpy( vmapname, a );
   }

   xpanf->destroy( panel );
   return ok;
}
Esempio n. 4
0
/* ======================================================================
Interface()
====================================================================== */
int hotdm::Interface( long version, LWInterface *local, void *serverData )
{
	UNUSED(version);
	UNUSED(serverData);
	
	static LWXPanelControl ctrl[] =
	{
		{ID_RESO, "Resolution",					"iSliderText"},
		{ID_GLSC, "Global Scale",				"distance-env"},
		{ID_WAVH, "Wave Height",				"distance-env"},
		{ID_SWAV, "Shortest Wave",				"distance-env"},
		{ID_DCHP, "Use Choppiness",				"iBoolean"},
		{ID_CHOP, "Choppiness",					"distance-env"},
		{ID_WSPD, "Wind Speed (m/s)",			"float-env"},
		{ID_WDIR, "Wind Direction (º)",			"angle-env"},
		{ID_WALG, "Wind Align",					"float-env"},
		{ID_DREF, "Damp Reflections",			"float-env"},
		{ID_ODEP, "Ocean Depth",				"distance-env"},
		{ID_SEED, "Seed",						"integer"},
		{ID_INTP, "Catmull-Rom Interpolation",	"iBoolean"},
		{ID_PRES, "Presets",					"vPopCmd"},
		/* This DOESNT work for displacement plugins, But left the code to see how other controls can be done */
		// {ID_NORM, "Do Normals",					"iBoolean"},
		// {ID_JACB, "Jacobian",	"iBoolean"},
		{ 0 }
	};
  
	static LWXPanelDataDesc desc[] =
	{
		{ID_RESO, "Resolution",					"integer"},
		{ID_GLSC, "Global Scale",				"distance-env"},
		{ID_WAVH, "Wave Height",				"distance-env"},
		{ID_SWAV, "Shortest Wave",				"distance-env"},
		{ID_DCHP, "Use Choppiness",				"integer"},
		{ID_CHOP, "Choppiness",					"distance-env"},
		{ID_WSPD, "Wind Speed (m/s)",			"float-env"},
		{ID_WDIR, "Wind Direction (º)",			"angle-env"},
		{ID_WALG, "Wind Align",					"float-env"},
		{ID_DREF, "Damp Reflections",			"float-env"},
		{ID_ODEP, "Ocean Depth",				"distance-env"},
		{ID_SEED, "Seed",						"integer"},
		{ID_INTP, "Catmull-Rom Interpolation",	"integer"},
		{ID_PRES, "Presets",					"integer"},
		/* This DOESNT work for displacement plugins, But left the code to see how other controls can be done */
		// {ID_NORM, "Do Normals",					"integer"},
		// {ID_JACB, "Jacobian",					"integer"},
		{ 0 }
	};
	
	static LWXPanelHint hints[] = {
		XpLABEL( 0, "HOT Ocean Toolkit" ),
		// Enable Use Choppiness and  Chopinnes controls
		XpENABLE_(ID_DCHP),XpH(ID_CHOP),XpEND,
		/* This DOESNT work for displacement plugins, But left the code to see how other controls can be done */
		// XpENABLE_MAP_(ID_DCHP, nrm_map), XpH(ID_NORM),XpEND,
		
		XpDIVADD( ID_GLSC ), //Separator after Global Scale
		XpDIVADD( ID_SWAV ),
		XpDIVADD( ID_CHOP ),
		XpDIVADD( ID_WALG ),
		XpDIVADD( ID_ODEP ),
		XpDIVADD( ID_INTP ),

		XpMIN( ID_RESO, 1 ), // Resolution
		XpMAX( ID_RESO, 12 ),
		XpSTEP( ID_RESO, 1 ),

		XpMIN( ID_GLSC, 0 ), // Global Scale 
		XpMAX( ID_GLSC, 5000000 ),
		XpSTEP( ID_GLSC, 1 ),

		XpMIN( ID_WAVH, 0 ), // Wave Height
		XpMAX( ID_WAVH, 5000 ),
		XpSTEP( ID_WAVH, 1 ),
		
		XpMIN( ID_SWAV, 0 ), // Shortest Wave
		XpMAX( ID_SWAV, 500 ),
		XpSTEP( ID_SWAV, 1 ),

		XpMIN( ID_CHOP, 0 ), // Choppiness
		XpMAX( ID_CHOP, 50 ),
		XpSTEP( ID_CHOP, 1 ),

		XpMIN( ID_WSPD, 0 ), // Wind Speed
		XpMAX( ID_WSPD, 50000 ),
		XpSTEP( ID_WSPD, 1 ),

		XpMIN( ID_WALG, 0 ), // Wind Align
		XpMAX( ID_WALG, 10 ),
		XpSTEP( ID_WALG, 1 ),

		XpMIN( ID_DREF, 0 ), // Damp Reflections
		XpMAX( ID_DREF, 1 ),
		XpSTEP( ID_DREF, 1 ),

		XpMIN( ID_ODEP, 0 ), // Ocean Depth
		XpMAX( ID_ODEP, 50000 ),
		XpSTEP( ID_ODEP, 1 ),
 
		XpEND
	}; // end hint[]

	CreateViewXPanel (ctrl, desc, hints);
	Preset.Setup(LW_XPanel, ID_PRES);
	local->panel = LW_XPanel.getID();

	return AFUNC_OK;
}