subtypeidKGScriptParserduration?ð framebaseencodingparms inputFormat inputCountpublic spudtitlewww.fxscript.orguitype typedefaultstringvaluestartstart½ÌÌͽÌÌÍfinishfinish=ÌÌÍ=ÌÌÍ arrowwidthwidthminmaxD@@@rampAðheadsize head size BÈ@@!Aðtailsize tail size BÈ?À?À!Að taillength tail length BÈ@ @ !Að arrowcolourColourÿÿÿÿÿÿÿÿ headstyle head styleuiinfolabelsplainsolid?€ @?€?€ tailstyle tail style13plainsolid?€ @?€?€ doubleended Double Ended privatestaticsscriptn//©stephen dixon 2002 //this software is free. You may copy or distribute it as long as this message is included //see www.fxscript.org for more generator "arrow generator 1.0"; group "stib's generators"; producesAlpha; AlphaType(kblack); input spud, "www.fxscript.org", Label, "string" input start, "start", Point, -0.1, 0 input finish, "finish", Point, 0.1, 0 input arrowWidth, "width", slider, 2, 0, 768 ramp 30 input headSize, "head size", slider, 2, 0, 100 ramp 30 input TailSize, "tail size", slider, 1.5, 0, 100 ramp 30 input TailLength, "tail length", slider, 5, 0, 100 ramp 30 input ArrowColour, "Colour", Color, 255, 255, 255, 255 input headStyle, "head style", Popup, 1, "plain", "solid" input tailStyle, "tail style", Popup, 1, "plain", "solid" input doubleEnded, "Double Ended", CheckBox, false code exposedbackground=1; channelFill(dest, 0, 0, 0, 0); float width, height, leftpointAngle ,rightpointAngle , lineAngle ,theAspect, sharpness point Headstart, leftpoint , righttpoint , leftTail , rightTail, arrowfill[4], TailStart , leftTailEnd , rightTailEnd , tailFill[6],leftheadStart , rightheadStart sharpness = 0.5 DimensionsOf(dest, width, height) headsize *= width/100 tailsize *= width/100 TailLength *= width/100 theAspect = AspectOf(dest) start.X *= width; start.Y *= height; finish.X *= width; finish.Y *= height; lineAngle = AngleTo(start, finish) leftpointAngle = lineAngle - 150; rightpointAngle = lineangle + 150; if !doubleEnded then leftTail = {(start.X+(cos(leftpointAngle)* tailsize)), (start.Y+(sin(leftpointAngle)* tailsize))} rightTail = {(start.X+(cos(rightpointAngle )* tailsize)), (start.Y+(sin(rightpointAngle )* tailsize))} else leftTail = {(start.X-(cos(leftpointAngle)* headSize)), (start.Y-(sin(leftpointAngle)* headSize))} rightTail = {(start.X-(cos(rightpointAngle)* headSize)), (start.Y-(sin(rightpointAngle)* headSize))} end if Line(start, finish, dest, ArrowColour, arrowWidth) if headStyle == 2 then headStart = {(finish.X-(cos(180-lineAngle)* sharpness* headsize)), (finish.Y+(sin(180-lineAngle )* sharpness* headsize))} leftpoint = {(headStart.X-(cos(180-leftpointAngle)* headsize)), (headStart.Y+(sin(180-leftpointAngle)* headsize))} righttpoint = {(headStart.X-(cos(180-rightpointAngle )* headsize)), (headStart.Y+(sin(180-rightpointAngle )* headsize))} else leftpoint = {(finish.X+(cos(leftpointAngle)* headsize)), (finish.Y+(sin(leftpointAngle)* headsize))} righttpoint = {(finish.X+(cos(rightpointAngle )* headsize)), (finish.Y+(sin(rightpointAngle )* headsize))} end if if tailstyle == 2 then TailStart = {(start.X-(cos(180-lineAngle )* sharpness* TailLength )), (start.Y+(sin(180-lineAngle )* sharpness* TailLength ))} leftTailEnd = {(leftTail.X-(cos(180-lineAngle )* sharpness* TailLength )), (leftTail.Y+(sin(180-lineAngle )* sharpness* TailLength ))} rightTailEnd = {(rightTail.X-(cos(180-lineAngle )* sharpness* TailLength )), (rightTail.Y+(sin(180-lineAngle )* sharpness* TailLength ))} end if if headStyle == 2 then arrowfill[0] = finish arrowfill[1] = leftpoint arrowfill[2] = headstart arrowfill[3] = righttpoint FillPoly(arrowfill, dest, arrowcolour) else line (finish, leftpoint, dest, arrowcolour, arrowWidth); line (finish, righttpoint , dest, arrowcolour, arrowWidth); end if if tailstyle == 2 then tailFill[0] = start tailFill[1] = leftTail tailFill[2] = leftTailEnd tailFill[3] = Tailstart tailfill[4] = rightTailEnd tailfill[5] = righttail FillPoly(tailfill, dest, arrowcolour) else line (start, leftTail , dest, arrowcolour, arrowWidth); line (start, rightTail , dest, arrowcolour, arrowWidth); end if; //if arrowStyle == 1 then //headstart namearrow generator 1.0scriptidHgroupstib's generators producesalpha alphatypeencoded