MyMacroA.h image MyMacroA( ) { merlin_bg = SFileIn("//Toonces.fx.clemson.edu/users/tadavis/cs815/shake/merlin_bg.jpg", "Auto", 0, 0, "v1.1", "0", ""); AdjustHSV1 = AdjustHSV(merlin_bg, 0, sourceHue-sourceHue, 1, 0, 1.5, 0, sourceSat-sourceSat, 1, 0, 1.5, 0, sourceVal-sourceVal, 1, 0, 1.5); ColorCorrect1 = ColorCorrect(AdjustHSV1, "v1.0", x, x, x, x, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0.5, 0.5, 0.5, 0.5, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0.5, "GMAC", 0, 0, 0, 0, rSource, gSource, bSource, 0.1, 0.1, 0.1, 0.1, 1, 1, "rgba", 1, 0); thing = FileOut(ColorCorrect1, "//Toonces.fx.clemson.edu/users/tadavis/cs815/shake/thing", "Auto"); return thing; } MyMacroAUI.h uiPushMenu("Tools"); nuiPushToolBox("Image"); nuiToolBoxItem("@MyMacroA",MyMacroA()); nuiPopToolBox(); nuiPopMenu(); ExampleUI.h nuiPushMenu("Tools"); nuiPushToolBox("Transform"); nuiToolBoxItem("@RandomMove",RandomMove()); nuiPopToolBox(); nuiPopMenu(); nuiDefSlider("RandomMove.motionBlur",0,1,0,0,0); nuiDefSlider("RandomMove.shutterTiming",0,2,0,0,0.01); nuiDefSlider("RandomMove.shutterOffset",-1,1,0,0,0.01); Macro Structure dataType MacroName( dataType parameterName=defaultParameterValue, dataType parameterName=defaultParameterValue, ... ) { Macro Body return variable; } angle.h float angle( float x1, float y1, float x2, float y2 ) { return atan2d(y2-y1,x2-x1); } call: myAngle = angle(0,0,100,100); (answer 45.0) SoftGlow.h mage SoftGlow( image In=0, float blur=0, float lowClip=.3, float hiClip=.9, float percent=100 ) { LumaKey1 = LumaKey(In, lowClip, hiClip, 0, 0, 1); Blur1 = Blur(LumaKey1, blur, xPixels, 0, "gauss", xFilter, "rgba"); Screen1 = Screen(In, Blur1, 1); Mix1 = Mix(In, Screen1, 1, percent, "rgba"); return Mix1; } VidResize image VidResize( image In=0, int keepAspect = 1, // keeps aspect ratio or not int vidFormat = 0, // selects NTSC (0) or PAL (1) res float bgRed = 0, // if keeping aspect ratio, determines float bgGreen = 0, // the bg color float bgBlue =0 ) { curve int yRes = vidFormat == 0 ? 486 : 576; Fit1 = Fit(In, 720, yRes, "default", xFilter, 1); Resize1 = Resize(In, 720, yRes, "default", 0); SetBGColor1 = SetBGColor(Fit1, "rgbaz", bgRed, bgGreen, bgBlue, 0, 0); Select1 = Select(keepAspect, Resize1, SetBGColor1, 0, 0); return Select1; } keepAspect slider range change nuiPushMenu("Tools"); nuiPushToolBox("Transform"); nuiToolBoxItem("@VidResize",VidResize()); nuiPopToolBox(); nuiPopMenu(); nuiDefSlider("VidResize.keepAspect", 1, 2); keepAspect on/off button nuiPushMenu("Tools"); nuiPushToolBox("Transform"); nuiToolBoxItem("@VidResize",VidResize()); nuiPopToolBox(); nuiPopMenu(); nuxDefExprToggle("VidResize.keepAspect"); change to .h (since button returns 0 or 1) ... SetBGColor1 = SetBGColor(Fit1, "rgbaz", bgRed, bgGreen, bgBlue, 0, 0); Select1 = Select(keepAspect+1, Resize1, SetBGColor1, 0, 0); return Select1; } color pickers and subtrees nuiPushMenu("Tools"); nuiPushToolBox("Transform"); nuiToolBoxItem("@VidResize",VidResize()); nuiPopToolBox(); nuiPopMenu(); nuxDefExprToggle("VidResize.keepAspect"); nuiPushControlGroup("VidResize.Background Color"); nuiGroupControl("VidResize.bgRed"); nuiGroupControl("VidResize.bgGreen"); nuiGroupControl("VidResize.bgBlue"); nuiPopControlGroup(); nuiPushControlWidget("VidResize.Background Color", nuiConnectColorTriplet(kRGBToggle,kCurrentColor,1)); NTSC/PAL buttons (uses pre-defined .nri icon files) nuiPushMenu("Tools"); nuiPushToolBox("Transform"); nuiToolBoxItem("@VidResize",VidResize()); nuiPopToolBox(); nuiPopMenu(); nuxDefExprToggle("VidResize.keepAspect"); nuiPushControlGroup("VidResize.Background Color"); nuiGroupControl("VidResize.bgRed"); nuiGroupControl("VidResize.bgGreen"); nuiGroupControl("VidResize.bgBlue"); nuiPopControlGroup(); nuiPushControlWidget("VidResize.Background Color", nuiConnectColorTriplet(kRGBToggle,kCurrentColor,1)); nuxDefExprToggle("VidResize.vidFormat", "ux/vr_ntsc.off.nri|ux/vr_ntsc.off.focus.nri", "ux/vr_pal.off.nri|ux/vr_pal.off.focus.nri"); NTCS/PAL radio buttons (assumes on, on.focus, off, off.focus) ... nuxDefRadioBtnControl("VidResize.vidFormat", 1, 1, 0, "0|ux/vr_ntsc", "1|ux/vr_pal"); to create your own radio buttons copy the following to your startup directory: doc/html/cook/macros/radiobutton.h doc/html/cook/macros.relief.h type shake -radio "NTSC size" 79 vr_ntsc $HOME/nreal/icons/ux -t 1-4 -v (creates 4 buttons, each of which says "NTSC size") Pop-Up Menus ... nuxDefMultiChoice("VidResize.vidFormat", "NTSC|PAL"); change logic in .h if (vidFormat=="NTSC"){ yRes=486; } else { yRes=576; } or curve int yRes = vidFormat=="NTSC" ? 486 : 576; (only allows for 2 options)