////////////////////////////////////////////////////////////////////////////////////////////////////////// // // Picture Frame Script v1.0.1 // Deco Script for Photoshop // Daichi Ito, Technical Artist // // (c) Adobe Systems Inc. 2013-2015 // ////////////////////////////////////////////////////////////////////////////////////////////////////////// modelParameters = { frameNumber : 43, frameMargin : 14, size : 20, width : 5, nlines : 15, angle : 10, flowerNumber : 2, flowerSize : 20, // bgColor : false, flip : false, leafNumber : 4, leafSize : 20, fade : 0, vcolor : [64/255,84/255,35/255], fcolor : [0/255,88/255,220/255], lcolor : [128/255, 215/255, 72/255], arrange : 1, } var outputSize var outputOrigin var outputSizeX var outputSizeY // Get pattern and its size RenderAPI.setParameter (kpsUseOpenGL, 1); // gloval variables var frameScale; var total; var sSize1; var sSizeRandom; var sSizeRatio; var sSizeCos; var sColor; var cColorFade; var cContinuous; var curveVisible; var cGenerationN; var cgSizeRatio; var cgSizeRandom; var sRotate; var sRotateRandom; var flip; var curveRatio; var margin; var spiral; var pType; var ipWidth; var pWidth; var trunk; var tWidth; var trunkType; var fWidth; var leavesType; var leaves; var sLeaves; var basePatternNumber; var sCircle; var sCircleSize; var sCircleSizeRatio; var sCircleSizeRandom; var scColor; var tail; var patternPattern; var patternRatio; var angle; var angleRatio; var angleRandom; var objAngleSnap; var tBoxStyle; var tbRadius; var tbWidth; var tbr; var tbg; var tbb; // shapes var shape = new Array(); shape[00] = [18,31.833,15.5,31.75,13.5,31.167,10.917,30,9,28.667,7.5,27.167,6.083,25.167,5,22.667,4.417,20.5,4.25,18.167,4.5,15.917,5.167,13.667,6,11.667,7.167,9.917,8.5,8.417,10,7.167,11.333,6.333,12.917,5.583,14.583,5,16.167,4.667,18,4.583]; shape[01] = [54,32.083,40.417,32.083,40.417,4.667,54,4.667]; shape[02] = [90,31.583,88.417,31.583,86.333,27.167,84.667,22.583,83.417,18.167,83,15.667,82.917,13.583,83.083,11.25,83.75,9.083,84.75,7.167,85.917,6,87.5,5.083,88.833,4.667,90,4.5]; shape[03] = [125.917,31.5,124,29.5,122.5,27.25,121.417,24.917,120.667,22.667,120.25,20.417,120.083,18.083,120.25,15.667,120.75,13.583,121.583,11.167,122.667,9.167,124.083,6.833,126,4.667]; shape[04] = [162.083,31.583,159.833,30.833,158.167,29.417,157.083,27.75,156.25,25.667,155.917,23.583,156,21.083,156.583,18.833,157.417,16.833,158.333,14.583,159.583,12.083,160.583,9.833,161.333,8,161.75,6.417,162,4.583]; shape[05] = [197.917,31.5,197,28.833,195.75,26.25,194.583,23.667,193.333,20.75,192.417,18.083,191.833,15.583,191.75,13.417,192.083,10.75,192.75,8.417,193.75,6.833,195.083,5.5,196.417,4.833,198,4.5]; shape[06] = [234,31.583,233.25,30.083,232,28.333,230,25.833,228.417,23.667,227.083,21.5,226,19.083,225.25,16.667,224.917,13.833,227,14.5,229.333,15.417,229.667,13.417,230.583,11.333,231.5,9.667,232.667,7.833,233.417,6.417,234,4.667]; shape[07] = [269.917,31.583,263.083,31.583,261,30.417,259,28.75,257.75,27.167,256.917,25,256.833,23.25,257.75,20.917,259.25,19.583,260.833,19,262.417,19.167,263.5,19.583,264,17.583,265.25,15.583,266.417,14.5,268.167,13.75,270,13.583]; shape[08] = [305.917,31.583,304.083,29.5,301.583,27.167,299.333,25.583,297.333,24.417,295.083,23.417,292.417,22.75,294.75,21.583,297.333,21.083,299.5,21.083,301.75,21.417,300.917,19.083,300.75,16.417,301.167,13.833,301.75,11.667,302.75,9.083,303.75,6.833,304.667,4.667,305.5,2.583,306,0.167]; shape[09] = [341.917,31.5,341,28.75,339.833,26.583,338.333,24.417,336.833,22.75,335.417,21.25,333.5,19.75,331.917,18.833,330.667,18.167,331.917,16.583,333.5,15.083,335.333,13.833,337.333,12.833,339.25,12.25,340.667,12,341.917,12]; shape[10] = [377.917,31.583,369,13.75,378,13.75]; shape[11] = [414,31.667,411.667,29.75,409.583,28.25,407.083,26.667,405,25.083,403.083,23.083,401.667,21.083,401,19.583,400.583,18.25,402.833,17.333,405.333,16.667,406.833,16.333,408.417,16.333,408.083,14.75,408.167,12.583,408.917,10.417,409.833,8.25,410.75,6.583,411.667,5,412.833,3.083,413.583,1.583,414,0.167]; shape[12] = [450,31.583,449.083,29.5,447.667,27.667,446.25,26.333,444.75,25,443.583,24.167,442.583,23.583,440.917,22.75,442.917,21.833,444,20.833,444.917,19.75,445.5,18.75,446.333,17.25,447.083,15.333,447.833,12.75,448.417,10.167,449.333,5.25,450,0.083]; shape[13] = [485.917,31.583,484.667,31.25,483.667,30.333,482.833,28.75,482.167,26.417,481.583,22.833,481.417,19.167,481.5,15.333,481.667,11.833,482.083,8.5,482.583,5.333,483.25,3.083,484,1.5,484.667,0.583,485.333,0.25,486,0]; shape[14] = [521.917,31.583,517.417,31.583,508.417,13.5,521.917,13.5]; shape[15] = [558.083,31.542,556.583,31.542,556.583,15.917,555.208,15.542,554.021,14.854,552.896,13.917,552.021,12.854,551.271,11.479,550.896,9.854,550.958,8.292,551.271,6.854,551.708,5.729,552.333,4.792,553.208,3.792,554.271,2.979,555.271,2.417,556.646,2.042,558.083,1.917]; shape[16] = [594.083,31.667,591.271,31.667,589.896,29.729,588.521,27.542,587.271,25.042,586.146,22.542,585.396,20.292,584.958,17.979,584.896,15.917,585.208,14.042,585.708,12.292,586.458,10.854,587.521,9.542,588.896,8.104,590.333,6.917,591.771,5.729,592.771,4.792,593.583,3.854,594.083,2.604]; shape[17] = [18.021,67.438,17.833,65.75,17.333,64,16.521,62.25,15.521,60.5,14.396,59.125,13.146,57.688,11.771,56.688,10.146,55.625,8.771,54.938,7.271,54.5,5.896,54.125,4.521,53.875,6.458,53.688,8.083,53.25,9.583,52.688,10.896,51.938,12.271,50.938,13.646,49.688,14.708,48.562,15.771,47.188,16.708,45.625,17.396,43.938,17.833,42.438,18.083,40.688]; shape[18] = [54.021,67.625,52.896,67.312,52.146,66.625,51.583,65.5,51.396,63.938,51.458,61.938,51.458,59.812,51.333,57.75,50.958,55.688,50.458,54.125,49.646,52.438,48.333,50.812,47.396,49.125,46.771,46.75,46.646,45.125,46.833,43.312,47.458,41.938,48.396,40.625,49.646,39.375,50.958,38.438,52.333,37.812,54.083,37.438]; shape[19] = [90.146,67.438,85.583,67.438,85.583,58.75,76.583,58.75,76.583,49.438,85.646,49.438,85.646,40.5,90.146,40.5]; shape[20] = [126.083,63,124.583,64.167,123,65,121.083,65.5,119.333,65.5,117.667,65.084,116.083,64.334,114.833,63.334,113.583,61.75,112.833,60.25,112.333,58.584,112.417,56.5,112.667,54.584,113.333,52.584,114.25,50.75,115.667,48.584,117.167,46.75,118.583,45.25,120.167,43.667,121.75,42.167,123.583,40.5,125,39.167,126.083,37.584]; shape[21] = [162.417,67.417,157.667,67.417,157.667,49.417,148.75,49.417,148.75,40.25,162.333,40.25]; shape[22] = [198.167,45.568,189.345,39.159,192.715,49.529,183.893,55.938,194.797,55.938,198.167,66.309]; var sShape = new Array(); sShape[00] = [17.917,211.584,18,207.084,18.333,202.5,19,198,19.833,195,20.917,192.25,22.167,190.084,23.75,188.25,25.5,186.917,27.167,186.167,29.167,186.084,30.833,186.584,31.917,187.667,32.083,189.084,31.583,190.417,29.917,191.584,27.833,192.75,25.75,194.167,24,195.5,22.417,197,21,198.917,19.833,201.084,19,203.5,18.333,206.334] sShape[01] = [54,211.5,54.083,207.084,54.333,203.667,54.833,200.084,55.167,197.584,55.667,195.084,56.417,192.334,57.167,190.334,58,188.834,59,187.667,60.083,187.25,61.083,187.5,61.833,188.084,62,189.334,61.667,190.417,60.917,192.25,59.333,195,62.167,191.167,63.917,189.25,66.417,187.084,68.583,185.584,70.25,184.917,71.833,184.667,73.083,184.917,73.75,185.667,74,186.834,73.667,187.917,72.917,188.834,71.5,190.167,69.917,191.417,67.833,192.917,65.583,194.417,63.333,196.167,61.25,198,59.333,200.084,58.167,201.584,56.583,203.917,55.667,205.584,54.833,207.667,54.333,209.25] sShape[02] = [90,211.5,89.917,208.417,89.75,205.334,89.833,202.417,90.25,200.292,91.042,198.125,92,196.458,93.125,194.875,94.292,193.417,95.583,192.083,96.875,190.667,98.125,189.417,97.042,191.75,96.167,194.083,95.625,195.917,94.875,197.917,93.792,200.292,95.542,197.375,97.208,195.167,99.125,193,100.708,191.458,102.75,189.75,105.125,187.958,107.833,186.292,111.125,184.5,109.25,186.208,107.583,188.292,106.375,190.25,105.167,192.375,104,194.5,103.083,195.75,102,197.083,104.542,195.625,106.417,194.875,108.542,194.25,110.667,193.667,112.75,193.375,114.708,193.292,116.75,193.333,118.042,193.458,116.083,194.125,114.458,194.958,112.458,196.125,110.792,197.208,108.667,198.667,106.792,199.75,104.792,200.792,102.625,201.542,100.167,202.167,98.167,202.708,95.75,203.625,94.125,204.458,92.667,205.583,91.5,206.875,90.833,208.125,90.375,209.25] sShape[03] = [125.917,211.542,125.958,209.458,126.25,207.208,126.792,204.375,127.333,202.5,127.958,200.917,128.792,199.417,129.542,198.125,130.542,196.708,131.75,195.333,133.417,193.75,134.75,192.792,136.5,191.875,138.125,191.333,140.125,191.125,141.667,191.292,143.083,191.75,144.417,192.542,145.333,193.542,146.125,194.667,146.667,196.042,146.875,197.25,146.667,198.375,146.125,199.75,145.417,200.708,144.417,201.542,143.458,202.083,142.167,202.333,140.792,202.292,139.875,201.917,138.708,201.208,137.875,200.333,137,199.583,135.958,199.208,134.875,199.083,133.667,199.208,132.375,199.542,131.167,200.208,129.917,201.042,128.875,202.042,128.125,203.042,127.542,203.958,126.875,205.375,126.292,207.542] sShape[04] = [161.958,211.667,161.167,210.292,160.667,208.542,160.625,206.542,161,204.25,161.417,202.458,162.333,200.125,163.125,198.5,164.292,196.583,165.375,195.083,166.625,193.542,168.125,192.125,170.083,190.792,171.667,189.875,173.25,189.208,175.125,188.833,176.917,188.667,178.75,188.75,180.25,189.042,181.667,189.5,182.667,189.917,181.667,192.917,180.417,192.542,178.75,192.167,176.917,192.042,175.375,192.292,174.083,192.583,172.792,193.208,171.5,193.917,170,195.125,168.667,196.542,167.292,198.5,166.25,200.333,165.708,201.958,165,204.208,164.375,206.083,163.708,208.417,163.167,209.75,162.583,210.75] sShape[05] = [197.938,211.583,197.875,207.521,197.875,204.146,198.188,201.271,198.75,199.021,199.875,196.833,201.375,195.271,203.312,194.021,205.812,193.021,208.25,192.458,210.688,192.208,213.688,192.146,216,191.958,218.25,191.458,220.062,190.771,221.625,189.771,222.812,188.521,223.812,187.083,224.438,185.396,224.375,187.958,223.75,190.396,222.938,192.271,221.875,193.646,219.688,195.208,217.438,196.083,215.312,196.583,212.688,196.958,209.562,197.583,206.875,198.271,204.625,199.146,203.125,200.208,201.312,201.958,200.125,203.521,199.312,204.833,198.75,206.396,198.188,208.521] sShape[06] = [234.875,212.646,234.938,208.146,235.125,204.833,235.688,201.771,236.375,199.208,237.562,196.458,238.812,194.208,240.438,192.333,242.188,190.896,244.188,189.771,246,189.083,247.875,188.708,249.688,188.771,251.562,189.146,253.562,189.958,255.125,191.083,256.438,192.646,257.375,194.396,257.75,196.083,257.5,198,256.167,196.333,254.688,195.146,253.062,194.521,251.125,194.208,249.125,194.271,246.625,194.833,244.625,195.583,242.438,196.958,240.625,198.396,238.812,200.271,237.438,202.271,236.562,204.083,235.812,206.208,235.312,208.521] sShape[07] = [270.062,211.708,270.062,208.458,270.25,205.708,270.625,202.646,271.375,198.958,272.5,195.333,273.625,192.771,274.938,190.708,276.562,188.958,278.062,187.896,279.5,187.208,278.875,189.021,278.562,190.271,278.375,191.458,280.562,189.896,282.562,188.958,284.875,188.271,287.25,188.021,288.875,188.083,290.062,188.333,288.188,189.646,286.812,190.896,285,192.771,287.188,192.583,289.875,192.958,291.938,193.646,293.688,194.583,294.875,195.583,295.875,197.021,293.562,196.833,290.938,197.021,288.25,197.333,285.375,197.958,282.125,199.083,279.438,200.333,277.25,201.521,275.312,202.958,273.812,204.521,272.438,206.208,271.5,207.708,270.625,209.521] var fnShape = new Array(); var fsShape = new Array(); fnShape[0] = 1; fsShape[0] = new Array(); fsShape[0][0] = [18.5,270.5]; //center fsShape[0][1] = [18.438,258.625,16.188,258.875,14.125,259.438,12.312,260.312,10.688,261.562,9.125,263.125,8.125,264.625,7.438,266.062,6.812,268,6.625,269.75,6.688,272,7.188,273.938,7.938,276,9.125,277.812,10.375,279.188,11.875,280.438,13.688,281.438,15.5,282.062,17.688,282.438,19.625,282.375,22,281.875,24.125,280.938,25.938,279.812,27.688,278.188,28.812,276.438,29.75,274.5,30.188,272.375,30.312,270.125,30.062,267.938,29.375,265.75,28.5,264,27.375,262.562,26.25,261.438,24.625,260.312,23.062,259.5,21.438,259,20,258.688]; fnShape[1] = 6; fsShape[1] = new Array(); fsShape[1][0] = [54.5,270.5]; fsShape[1][1] = [54.461,265.935,53.625,266.028,52.858,266.237,52.184,266.562,51.58,267.027,50.999,267.608,50.627,268.166,50.372,268.7,50.14,269.42,50.069,270.071,50.093,270.908,50.279,271.628,50.557,272.395,50.999,273.069,51.464,273.58,52.022,274.045,52.696,274.417,53.37,274.649,54.183,274.789,54.903,274.766,55.786,274.58,56.577,274.231,57.25,273.812,57.901,273.209,58.319,272.558,58.667,271.837,58.831,271.048,58.877,270.211,58.784,269.397,58.528,268.584,58.203,267.933,57.785,267.399,57.366,266.981,56.763,266.562,56.181,266.26,55.577,266.074,55.042,265.958]; fsShape[1][2] = [54.625,252.562,54.188,253.875,53.375,255.188,52.5,256.125,51.562,257.375,50.75,258.75,50.438,260.312,50.688,261.875,51.062,262.938,51.438,263.562,52.938,263.312,54.625,263.125,56.125,263.125,57.625,263.625,58.375,262,58.625,260.312,58.25,258.688,57.562,257.438,56.688,256.312,55.875,255.312,55.125,254.188]; fsShape[1][3] = [37.495,264.736,38.608,265.558,39.605,266.736,40.227,267.858,41.126,269.136,42.183,270.334,43.572,271.113,45.135,271.358,46.262,271.33,46.972,271.167,47.197,269.663,47.541,268,48.004,266.573,48.943,265.302,47.63,264.086,46.102,263.327,44.441,263.181,43.039,263.449,41.699,263.934,40.497,264.397,39.195,264.763]; fsShape[1][4] = [43.779,284.79,44.905,283.985,46.334,283.401,47.594,283.157,49.086,282.696,50.552,282.062,51.723,280.98,52.438,279.57,52.76,278.49,52.824,277.764,51.464,277.084,49.988,276.244,48.774,275.362,47.855,274.076,46.293,274.95,45.1,276.169,44.447,277.703,44.269,279.119,44.315,280.543,44.385,281.83,44.33,283.181]; fsShape[1][5] = [64.793,285.01,64.376,283.69,64.263,282.151,64.42,280.877,64.442,279.316,64.292,277.726,63.625,276.278,62.506,275.162,61.577,274.522,60.907,274.237,59.84,275.32,58.585,276.464,57.371,277.346,55.864,277.822,56.213,279.579,57.003,281.09,58.26,282.185,59.552,282.792,60.92,283.188,62.166,283.52,63.434,283.989]; fsShape[1][6] = [71.496,265.093,70.113,265.081,68.614,264.714,67.451,264.171,65.974,263.667,64.414,263.318,62.832,263.505,61.424,264.225,60.528,264.91,60.05,265.459,60.751,266.81,61.451,268.356,61.915,269.783,61.902,271.363,63.68,271.574,65.361,271.29,66.791,270.433,67.768,269.392,68.566,268.213,69.268,267.131,70.105,266.07]; fnShape[2] = 9; fsShape[2] = new Array(); fsShape[2][0] = [90.5,270.5]; fsShape[2][1] = [90.476,267.907,89.984,267.962,89.532,268.085,89.136,268.276,88.781,268.55,88.438,268.892,88.22,269.22,88.069,269.534,87.933,269.958,87.892,270.341,87.905,270.833,88.015,271.257,88.179,271.708,88.438,272.105,88.712,272.406,89.041,272.68,89.437,272.898,89.833,273.035,90.312,273.117,90.736,273.104,91.255,272.994,91.721,272.789,92.117,272.542,92.5,272.188,92.746,271.805,92.951,271.38,93.047,270.916,93.074,270.423,93.02,269.945,92.869,269.466,92.678,269.083,92.432,268.769,92.185,268.523,91.83,268.276,91.488,268.099,91.132,267.989,90.818,267.921]; fsShape[2][2] = [90.562,254.438,89.688,255.5,89.062,256.625,88.688,258.062,88.375,259.625,88.312,261.188,88.5,262.875,88.812,264.375,89.062,265.562,89.375,266.5,90.375,266.375,91.562,266.562,92,265.438,92.375,264.062,92.625,262.562,92.75,261.125,92.688,259.625,92.375,258.188,92,256.75,91.375,255.375]; fsShape[2][3] = [79.143,259.117,79.274,260.486,79.628,261.724,80.379,263.005,81.264,264.332,82.324,265.48,83.649,266.541,84.932,267.381,85.947,268.043,86.832,268.486,87.451,267.69,88.422,266.983,87.937,265.878,87.229,264.641,86.346,263.403,85.418,262.298,84.312,261.282,83.075,260.486,81.793,259.735,80.379,259.205]; fsShape[2][4] = [74.375,270.5,75.438,271.375,76.562,272,78,272.375,79.562,272.688,81.125,272.75,82.812,272.563,84.312,272.25,85.5,272,86.438,271.688,86.312,270.688,86.499,269.501,85.375,269.063,84,268.688,82.5,268.438,81.062,268.312,79.562,268.376,78.125,268.688,76.687,269.063,75.312,269.688]; fsShape[2][5] = [79.054,281.921,80.424,281.788,81.661,281.435,82.943,280.684,84.269,279.8,85.418,278.739,86.479,277.413,87.318,276.131,87.98,275.115,88.423,274.231,87.627,273.612,86.92,272.641,85.815,273.126,84.578,273.833,83.34,274.717,82.236,275.645,81.22,276.751,80.424,277.987,79.672,279.27,79.143,280.684]; fsShape[2][6] = [90.438,286.688,91.312,285.625,91.938,284.5,92.312,283.063,92.625,281.501,92.688,279.938,92.5,278.25,92.188,276.75,91.938,275.563,91.625,274.625,90.625,274.751,89.438,274.564,89,275.688,88.625,277.062,88.375,278.563,88.25,280,88.313,281.501,88.625,282.938,89,284.376,89.625,285.75]; fsShape[2][7] = [101.857,282.009,101.725,280.639,101.371,279.402,100.621,278.121,99.737,276.795,98.676,275.646,97.35,274.584,96.068,273.745,95.053,273.083,94.168,272.64,93.551,273.436,92.578,274.144,93.062,275.248,93.77,276.485,94.654,277.723,95.582,278.827,96.688,279.844,97.924,280.639,99.207,281.392,100.621,281.921]; fsShape[2][8] = [106.625,270.626,105.562,269.751,104.438,269.126,103.001,268.75,101.439,268.438,99.875,268.376,98.188,268.563,96.688,268.876,95.501,269.125,94.562,269.438,94.689,270.437,94.502,271.625,95.625,272.064,97,272.439,98.501,272.688,99.938,272.813,101.438,272.75,102.875,272.439,104.314,272.063,105.688,271.438]; fsShape[2][9] = [101.947,259.206,100.576,259.338,99.34,259.692,98.058,260.441,96.732,261.325,95.583,262.388,94.521,263.713,93.683,264.995,93.02,266.01,92.578,266.895,93.373,267.511,94.081,268.484,95.186,268,96.423,267.293,97.66,266.409,98.765,265.48,99.781,264.375,100.577,263.139,101.329,261.855,101.858,260.441]; fnShape[3] = 11; fsShape[3] = new Array(); fsShape[3][0] = [126.5,270.5]; fsShape[3][1] = [126.467,261.781,124.818,261.964,123.304,262.376,121.976,263.018,120.786,263.936,119.639,265.082,118.906,266.179,118.402,267.233,117.945,268.653,117.806,269.938,117.852,271.587,118.218,273.008,118.768,274.52,119.639,275.849,120.557,276.856,121.656,277.774,122.985,278.507,124.314,278.966,125.917,279.241,127.338,279.195,129.079,278.829,130.638,278.141,131.965,277.315,133.25,276.125,134.075,274.842,134.762,273.42,135.083,271.864,135.174,270.213,134.991,268.609,134.485,267.005,133.846,265.721,133.021,264.667,132.195,263.844,131.005,263.018,129.858,262.422,128.667,262.056,127.613,261.827]; fsShape[3][2] = [129.699,255.115,129.367,255.152,129.062,255.235,128.795,255.364,128.556,255.549,128.325,255.779,128.178,256,128.076,256.212,127.984,256.498,127.957,256.756,127.966,257.088,128.04,257.373,128.15,257.677,128.325,257.945,128.51,258.147,128.731,258.332,128.998,258.479,129.266,258.572,129.588,258.627,129.874,258.618,130.224,258.544,130.538,258.406,130.804,258.24,131.062,258,131.229,257.742,131.367,257.456,131.431,257.143,131.45,256.811,131.413,256.489,131.311,256.166,131.183,255.908,131.017,255.696,130.851,255.53,130.611,255.364,130.38,255.244,130.141,255.17,129.929,255.125]; fsShape[3][3] = [112.737,262.79,112.67,263.117,112.655,263.432,112.695,263.727,112.797,264.011,112.944,264.301,113.109,264.51,113.279,264.672,113.522,264.847,113.76,264.953,114.078,265.047,114.372,265.065,114.695,265.055,115.004,264.97,115.254,264.857,115.498,264.704,115.721,264.496,115.891,264.27,116.043,263.98,116.123,263.706,116.16,263.35,116.126,263.009,116.051,262.704,115.902,262.384,115.709,262.146,115.479,261.927,115.201,261.769,114.892,261.648,114.573,261.584,114.235,261.581,113.949,261.624,113.697,261.716,113.488,261.823,113.256,261.999,113.07,262.181,112.926,262.386,112.817,262.574]; fsShape[3][4] = [114.795,281.293,115.086,281.458,115.38,281.569,115.673,281.622,115.975,281.613,116.296,281.562,116.546,281.47,116.752,281.358,116.994,281.182,117.168,280.988,117.355,280.715,117.465,280.441,117.555,280.13,117.569,279.811,117.539,279.538,117.469,279.259,117.34,278.982,117.177,278.751,116.949,278.517,116.713,278.355,116.385,278.21,116.051,278.138,115.737,278.115,115.387,278.157,115.102,278.268,114.821,278.419,114.585,278.634,114.375,278.891,114.215,279.174,114.108,279.494,114.061,279.779,114.07,280.048,114.107,280.279,114.203,280.555,114.319,280.788,114.47,280.989,114.614,281.149]; fsShape[3][5] = [133.028,285.054,133.275,284.827,133.472,284.583,133.613,284.32,133.697,284.03,133.748,283.709,133.738,283.443,133.695,283.212,133.602,282.928,133.472,282.702,133.27,282.439,133.043,282.251,132.775,282.069,132.477,281.957,132.207,281.901,131.92,281.882,131.617,281.919,131.347,282.003,131.054,282.146,130.827,282.321,130.588,282.589,130.416,282.884,130.297,283.175,130.229,283.522,130.246,283.827,130.303,284.141,130.435,284.432,130.614,284.71,130.834,284.95,131.105,285.15,131.362,285.284,131.62,285.358,131.852,285.394,132.144,285.389,132.4,285.35,132.639,285.269,132.836,285.181]; fsShape[3][6] = [142.239,268.875,142.101,268.57,141.928,268.307,141.723,268.091,141.473,267.922,141.184,267.774,140.928,267.702,140.694,267.671,140.395,267.672,140.141,267.726,139.828,267.837,139.578,267.994,139.323,268.193,139.123,268.442,138.988,268.682,138.881,268.949,138.822,269.248,138.818,269.531,138.864,269.854,138.961,270.124,139.141,270.434,139.368,270.688,139.609,270.892,139.917,271.064,140.213,271.142,140.528,271.185,140.846,271.149,141.167,271.064,141.463,270.93,141.737,270.733,141.943,270.53,142.094,270.308,142.199,270.099,142.284,269.819,142.326,269.563,142.324,269.312,142.301,269.097]; fsShape[3][7] = [126.438,255.5,125.188,255.562,123.75,255.688,122.25,256.125,120.875,256.562,119.562,257.125,118.312,257.875,117.125,258.812,115.688,260.188,117.062,261.438,118.25,260.375,119.5,259.5,120.875,258.75,122.125,258.188,123.75,257.75,125,257.562,126.438,257.438]; fsShape[3][8] = [112.231,265.822,111.904,267.03,111.579,268.436,111.532,269.997,111.522,271.44,111.652,272.862,111.979,274.283,112.504,275.702,113.367,277.494,114.981,276.573,114.338,275.115,113.892,273.656,113.604,272.116,113.454,270.754,113.541,269.073,113.749,267.826,114.074,266.42]; fsShape[3][9] = [117.658,282.522,118.706,283.207,119.942,283.95,121.413,284.478,122.782,284.933,124.175,285.249,125.628,285.376,127.139,285.316,129.11,285.049,128.733,283.229,127.147,283.391,125.621,283.364,124.068,283.162,122.727,282.884,121.155,282.282,120.033,281.698,118.797,280.955]; fsShape[3][10] = [135.218,282.521,136.192,281.736,137.282,280.791,138.238,279.555,139.094,278.394,139.824,277.166,140.396,275.824,140.806,274.369,141.159,272.411,139.313,272.207,138.977,273.765,138.479,275.208,137.808,276.623,137.128,277.813,136.07,279.122,135.168,280.008,134.079,280.954]; fsShape[3][11] = [140.644,265.821,140.198,264.652,139.635,263.323,138.755,262.032,137.915,260.859,136.974,259.785,135.874,258.827,134.617,257.987,132.864,257.047,132.1,258.739,133.478,259.541,134.696,260.459,135.834,261.536,136.756,262.55,137.674,263.96,138.238,265.092,138.801,266.42]; fnShape[4] = 8; fsShape[4] = new Array(); fsShape[4][0] = [162.5,270.5]; fsShape[4][1] = [163.188,263.5,163.25,261.688,163.125,260,162.625,258.188,161.75,256.688,160.625,255.5,159.312,254.688,157.938,254.25,158.5,255.688,158.562,257.25,158.312,258.938,158.125,260.25,158,261.375,158.562,262.25,159.438,262.75,160.312,263.188,161.5,263.562,160.188,263.875,159.188,264.312,158.188,265,157.625,265.688,158.875,266.812,160,266,161.062,265.5,162.125,265.312,163.062,265.312,163.688,265.438]; fsShape[4][2] = [158.011,265.126,156.773,263.801,155.492,262.696,153.857,261.768,152.178,261.326,150.542,261.282,149.04,261.635,147.758,262.298,149.172,262.917,150.321,263.977,151.338,265.347,152.133,266.408,152.84,267.292,153.857,267.513,154.829,267.248,155.758,266.938,156.862,266.364,156.154,267.513,155.758,268.529,155.537,269.723,155.625,270.606,157.304,270.518,157.525,269.148,157.923,268.043,158.541,267.159,159.204,266.497,159.734,266.143]; fsShape[4][3] = [155.501,269.937,153.688,269.875,152.001,270,150.189,270.499,148.688,271.375,147.501,272.5,146.689,273.812,146.251,275.187,147.688,274.625,149.25,274.562,150.938,274.812,152.25,275,153.375,275.125,154.251,274.561,154.75,273.687,155.189,272.812,155.563,271.625,155.875,272.937,156.314,273.937,157.002,274.937,157.689,275.499,158.813,274.25,158.002,273.124,157.501,272.062,157.312,270.999,157.313,270.062,157.438,269.437]; fsShape[4][4] = [157.127,275.113,155.802,276.351,154.697,277.632,153.77,279.267,153.327,280.947,153.283,282.582,153.637,284.083,154.299,285.366,154.918,283.952,155.978,282.803,157.348,281.787,158.408,280.992,159.293,280.285,159.514,279.267,159.248,278.295,158.939,277.366,158.365,276.262,159.514,276.97,160.531,277.366,161.725,277.587,162.607,277.499,162.52,275.82,161.15,275.599,160.045,275.202,159.159,274.583,158.498,273.92,158.145,273.39]; fsShape[4][5] = [161.938,277.624,161.876,279.436,162,281.123,162.5,282.935,163.375,284.436,164.5,285.623,165.812,286.435,167.188,286.874,166.625,285.436,166.562,283.874,166.812,282.187,167,280.875,167.126,279.75,166.562,278.874,165.688,278.374,164.812,277.935,163.625,277.561,164.938,277.249,165.938,276.81,166.938,276.122,167.5,275.436,166.25,274.311,165.125,275.122,164.063,275.624,163,275.812,162.062,275.811,161.438,275.686]; fsShape[4][6] = [167.113,275.997,168.352,277.322,169.633,278.427,171.268,279.355,172.947,279.797,174.582,279.842,176.085,279.488,177.367,278.826,175.952,278.207,174.805,277.146,173.788,275.777,172.992,274.717,172.286,273.832,171.269,273.611,170.297,273.876,169.367,274.185,168.263,274.759,168.971,273.611,169.367,272.593,169.588,271.399,169.5,270.517,167.82,270.605,167.6,271.975,167.203,273.08,166.584,273.965,165.92,274.627,165.391,274.98]; fsShape[4][7] = [169.623,271.188,171.437,271.249,173.123,271.124,174.936,270.624,176.437,269.75,177.623,268.625,178.436,267.312,178.875,265.937,177.437,266.5,175.875,266.562,174.188,266.312,172.875,266.125,171.75,265.998,170.875,266.562,170.375,267.436,169.936,268.312,169.562,269.5,169.25,268.187,168.811,267.187,168.123,266.187,167.437,265.625,166.311,266.875,167.123,267.999,167.625,269.061,167.812,270.125,167.811,271.062,167.688,271.687]; fsShape[4][8] = [167.998,266.012,169.323,264.773,170.428,263.492,171.355,261.857,171.799,260.177,171.842,258.543,171.488,257.04,170.826,255.757,170.207,257.172,169.147,258.32,167.777,259.336,166.717,260.133,165.832,260.838,165.611,261.855,165.877,262.827,166.186,263.757,166.761,264.862,165.611,264.153,164.594,263.758,163.4,263.536,162.518,263.624,162.605,265.305,163.976,265.525,165.081,265.92,165.966,266.541,166.627,267.205,166.982,267.733]; fnShape[5] = 4; fsShape[5] = new Array(); fsShape[5][0] = [198.5,270.5]; fsShape[5][1] = [198.5,252.562,198.188,254,197.5,255.375,196.5,256.5,195.5,257.625,194.688,258.75,194.125,260.062,194,261.438,194.188,262.938,194.75,264.562,195.375,265.938,196.25,267.125,197.312,268.375,198.5,269.438,199.688,268.188,200.688,266.938,201.562,265.75,202.25,264.5,202.812,263.188,203.125,262,203,260.562,202.5,259.25,201.688,258.062,200.812,256.938,200.062,256.062,199.5,255.312,199.062,254.5,198.688,253.75]; fsShape[5][2] = [180.562,270.5,182,270.812,183.375,271.5,184.5,272.5,185.625,273.5,186.75,274.312,188.062,274.875,189.438,275,190.938,274.812,192.562,274.25,193.938,273.625,195.125,272.75,196.375,271.688,197.438,270.5,196.188,269.312,194.938,268.312,193.75,267.438,192.5,266.75,191.188,266.188,190,265.875,188.562,266,187.25,266.5,186.062,267.312,184.938,268.188,184.062,268.938,183.312,269.5,182.5,269.938,181.75,270.312]; fsShape[5][3] = [198.5,288.438,198.812,287,199.5,285.625,200.5,284.5,201.5,283.375,202.312,282.25,202.875,280.938,203,279.562,202.812,278.062,202.25,276.438,201.625,275.062,200.75,273.875,199.688,272.625,198.5,271.562,197.312,272.812,196.312,274.062,195.438,275.25,194.75,276.5,194.188,277.812,193.875,279,194,280.438,194.5,281.75,195.312,282.938,196.188,284.062,196.938,284.938,197.5,285.688,197.938,286.5,198.312,287.25]; fsShape[5][4] = [216.438,270.5,215,270.188,213.625,269.5,212.5,268.5,211.375,267.5,210.25,266.688,208.938,266.125,207.562,266,206.062,266.188,204.438,266.75,203.062,267.375,201.875,268.25,200.625,269.312,199.562,270.5,200.812,271.688,202.062,272.688,203.25,273.562,204.5,274.25,205.812,274.812,207,275.125,208.438,275,209.75,274.5,210.938,273.688,212.062,272.812,212.938,272.062,213.688,271.5,214.5,271.062,215.25,270.688]; fnShape[6] = 17; fsShape[6] = new Array(); fsShape[6][0] = [234.5,270.5]; fsShape[6][1] = [237.452,269.562,237.209,269.029,236.907,268.57,236.549,268.193,236.112,267.897,235.607,267.639,235.16,267.512,234.752,267.458,234.228,267.461,233.785,267.555,233.238,267.749,232.802,268.023,232.356,268.371,232.006,268.806,231.771,269.225,231.583,269.691,231.481,270.214,231.474,270.709,231.554,271.273,231.723,271.744,232.037,272.286,232.435,272.731,232.856,273.086,233.394,273.387,233.911,273.522,234.462,273.598,235.017,273.536,235.578,273.388,236.095,273.152,236.574,272.81,236.935,272.455,237.197,272.066,237.382,271.7,237.53,271.212,237.604,270.765,237.6,270.325,237.559,269.95]; fsShape[6][2] = [234.5,252.625,234.188,254.312,233.812,255.25,233.25,256,233.5,257.312,233.812,259,234,260.875,234.312,264.188,232.875,264.625,232.938,265.562,236,265.5,236.062,264.688,234.625,264.188,234.938,260.875,235.188,259.125,235.438,257.312,235.75,256.125,235.125,255.312,234.75,254.25]; fsShape[6][3] = [216.438,270.438,218.125,270.75,219.062,271.125,219.812,271.688,221.125,271.438,222.812,271.125,224.688,270.938,228,270.625,228.438,272.062,229.375,272,229.312,268.938,228.5,268.875,228,270.312,224.688,270,222.938,269.75,221.125,269.5,219.938,269.188,219.125,269.812,218.062,270.188]; fsShape[6][4] = [234.25,288.5,234.562,286.812,234.938,285.875,235.5,285.125,235.25,283.812,234.938,282.125,234.75,280.25,234.438,276.938,235.875,276.5,235.812,275.562,232.75,275.625,232.688,276.438,234.125,276.938,233.812,280.25,233.562,282,233.312,283.812,233,285,233.625,285.812,234,286.875]; fsShape[6][5] = [252.312,270.688,250.625,270.375,249.688,270,248.938,269.438,247.625,269.688,245.938,270,244.062,270.188,240.75,270.5,240.312,269.062,239.375,269.125,239.438,272.188,240.25,272.25,240.75,270.812,244.062,271.125,245.812,271.375,247.625,271.625,248.812,271.938,249.625,271.312,250.688,270.938]; fsShape[6][6] = [232.125,265.812,229.812,268,228.75,266.562,228.5,264.562,230.688,264.625]; fsShape[6][7] = [229.688,272.75,231.875,275.062,230.438,276.125,228.438,276.375,228.5,274.188]; fsShape[6][8] = [236.625,275.188,238.938,273,240,274.438,240.25,276.438,238.062,276.375]; fsShape[6][9] = [239.062,268.25,236.875,265.938,238.312,264.875,240.312,264.625,240.25,266.812]; fsShape[6][10] = [229.062,257.188,228.875,257.562,228.875,258.5,228.938,259.875,229.25,261.438,229.812,262.938,230.688,263.812,231.562,263.75,232.25,263.312,232.5,262.625,232.375,261.812,232,260.688,231.25,259.5,230.562,258.5,229.5,257.438]; fsShape[6][11] = [221.18,264.905,221.312,265.303,221.975,265.966,222.991,266.894,224.316,267.778,225.775,268.441,227.013,268.441,227.587,267.778,227.764,266.982,227.455,266.319,226.792,265.833,225.73,265.303,224.361,264.994,223.168,264.773,221.665,264.773]; fsShape[6][12] = [221.062,275.937,221.438,276.125,222.375,276.125,223.75,276.062,225.312,275.75,226.812,275.188,227.688,274.312,227.624,273.437,227.188,272.75,226.5,272.499,225.688,272.625,224.562,273,223.375,273.75,222.375,274.438,221.312,275.5]; fsShape[6][13] = [228.779,283.82,229.178,283.688,229.841,283.025,230.77,282.009,231.652,280.684,232.316,279.225,232.316,277.987,231.652,277.413,230.857,277.236,230.193,277.544,229.709,278.208,229.178,279.27,228.869,280.639,228.648,281.832,228.647,283.334]; fsShape[6][14] = [239.811,283.938,239.999,283.563,240,282.625,239.938,281.25,239.625,279.688,239.062,278.187,238.188,277.312,237.312,277.376,236.625,277.812,236.373,278.5,236.5,279.312,236.875,280.439,237.625,281.625,238.312,282.625,239.374,283.688]; fsShape[6][15] = [247.694,276.221,247.562,275.823,246.9,275.158,245.883,274.23,244.559,273.347,243.099,272.683,241.861,272.683,241.288,273.347,241.11,274.142,241.418,274.807,242.082,275.291,243.145,275.823,244.514,276.131,245.707,276.352,247.209,276.353]; fsShape[6][16] = [247.812,265.19,247.438,265.001,246.5,264.999,245.123,265.062,243.562,265.375,242.061,265.938,241.186,266.812,241.25,267.688,241.688,268.375,242.374,268.627,243.187,268.5,244.313,268.125,245.5,267.375,246.499,266.687,247.562,265.626]; fsShape[6][17] = [240.096,257.306,239.697,257.438,239.033,258.099,238.104,259.117,237.222,260.442,236.557,261.901,236.557,263.139,237.222,263.712,238.017,263.889,238.682,263.582,239.166,262.918,239.697,261.856,240.006,260.486,240.226,259.293,240.228,257.792]; fnShape[7] = 17; fsShape[7] = new Array(); fsShape[7][0] = [270.5,270.5]; fsShape[7][1] = [272.875,255.812,271.188,256.562,269.312,257.312,267.875,257.812,266.375,258.312,268.625,258.75,271,259.438,272.25,259.812,275.062,260.125,277.25,260.25,279,260.438,276.562,258.812,274.5,257.375]; fsShape[7][2] = [267.75,259.75,266.438,261.5,265.188,262.812,264.375,262.688,263.312,262.562,262.312,263.125,260.875,264.375,260.688,262.562,259.375,259,262.562,259,265.438,259.312]; fsShape[7][3] = [259.25,263.5,257.625,264.562,256.75,265.812,254.688,268.875,252.875,271.438,254.375,272.625,255.625,274,256.5,275.438,257.625,276.688,258.25,274.625,258.688,272.875,258.625,271.75,257.438,269.688,259.5,266.125,259.375,264.562]; fsShape[7][4] = [263.438,264.188,261.625,266,260.062,268,259.188,269.125,260.312,270.5,260.875,272.125,261.312,273.625,262.438,273.812,263.5,273.688,264,273.375,263.438,271.75,264.438,270.062,265.875,268.125,265.5,266.062,265.312,264.688]; fsShape[7][5] = [266.188,269.875,265.5,270.938,264.75,271.75,265.188,273.125,265.875,274.5,266.25,275.812,267.875,275.938,270,276.438,270.562,275.562,270.625,274.438,269,274.25,268,273.938,267.312,272.688,266.562,271.25]; fsShape[7][6] = [264.562,275.062,263.125,275.438,261.938,275.312,260.25,274.625,259.25,276.875,258.375,279,257.75,281.375,260.188,280.562,262.938,280.375,265.438,280.438,268.125,280.5,269.938,280.5,271.688,279.25,270.125,277.938,269.188,277.688,265.125,277.062,264.875,275.875]; fsShape[7][7] = [271.25,276.938,272.25,277.562,273.375,278.375,274.688,276.938,276.062,275.875,277.5,274.375,276.375,273.625,274.812,273.562,273.688,273.562,272.188,274.375,271.625,275.562]; fsShape[7][8] = [263.875,281.5,265.688,283.25,267,284.688,268.25,286.438,270.438,285.812,272.688,285.188,274.312,284.25,275.375,283.5,272.688,282.875,270.438,282.188,267.625,281.75]; fsShape[7][9] = [280.375,273.312,278.75,275.188,276.438,277.312,274.188,279.312,271.875,281.188,275.312,282.188,277.875,283.25,280.5,284.812,280.812,281.688,281.062,279.562,280.938,276.562,280.875,274.875]; fsShape[7][10] = [283.438,267.125,283.25,269.688,282.562,271.25,281.875,272.625,282.25,274.938,282.312,277.125,282.188,278.938,284.188,277.938,285.625,276.812,287.375,275.625,286.688,273.812,285.875,271.5,285.25,269.375,284.562,268.25]; fsShape[7][11] = [283.438,262.312,282.438,264.25,282.062,266.625,281.812,269.062,281.062,271.062,279.062,273.062,277.875,272.625,277.125,272.375,278.438,270.75,279.375,268.875,277.875,267.375,276.5,265.312,275.25,263.312,274.188,261.438,278,261.812,280.875,262.125]; fsShape[7][12] = [277.688,269,276.938,270.312,276.062,271.75,274.625,272.188,275.438,270.375,275.312,268.75,274.188,266.5,275.312,266.25,276.25,267.25,276.875,268.125]; fsShape[7][13] = [274.625,265,273.562,265.312,272.312,264.188,270.938,263.812,269.062,264.125,267.125,265,266.625,263.625,267.938,262.062,269.812,260.375,271.812,260.875,272.938,262,274,263.5]; fsShape[7][14] = [269.5,265.312,268.562,265.438,267.062,266.312,267.25,268.5,267.438,270,268,270.5,268.125,268.438,268.688,266.75]; fsShape[7][15] = [270.25,266.375,271.25,265.125,272.25,265.562,273.312,267,273.875,268.75,272.812,270.062,271.875,270.938,272.125,268.875,271.812,267.438]; fsShape[7][16] = [274.062,270.188,273.625,271.812,272.188,273.188,270.312,273.312,269.125,273.062,268.562,271.438,270.688,272,272.062,271.938]; fsShape[7][17] = [271.125,268.938,270.875,270.625,269.938,270.938,269.062,270.375,268.875,269.25,269.562,267.5,269.812,268.938,270.438,269.25]; fnShape[8] = 12; fsShape[8] = new Array(); fsShape[8][0] = [306.5,270.5]; fsShape[8][1] = [306.375,252.625,305.75,253.188,305.312,254.25,304.938,256.438,304.938,259.062,305.312,262.25,305.688,265.125,306,268.562,306.875,268.5,307.125,265.062,307.375,262.25,307.812,259.125,307.875,256.562,307.438,254.25,306.938,253.062]; fsShape[8][2] = [304.938,268.562,304.75,265.688,304.312,263,303.5,260.438,302.312,258.375,301,256.812,299.562,255.812,298.438,255.375,297.688,255.5,297.5,256.062,297.938,257.312,299.062,259.062,300.562,260.938,302,262.375,302.812,263.812,303.312,265.25,303.625,267.188,303.812,268.562]; fsShape[8][3] = [307.938,268.562,308.125,265.688,308.562,263,309.375,260.438,310.562,258.375,311.875,256.812,313.312,255.812,314.438,255.375,315.188,255.5,315.375,256.062,314.938,257.312,313.812,259.062,312.312,260.938,310.875,262.375,310.062,263.812,309.562,265.25,309.25,267.188,309.062,268.562]; fsShape[8][4] = [288.625,270.625,289.188,271.25,290.25,271.688,292.438,272.062,295.062,272.062,298.25,271.688,301.125,271.312,304.562,271,304.5,270.125,301.062,269.875,298.25,269.625,295.125,269.188,292.562,269.125,290.25,269.562,289.062,270.062]; fsShape[8][5] = [304.562,272.062,301.688,272.25,299,272.688,296.438,273.5,294.375,274.688,292.812,276,291.812,277.438,291.375,278.562,291.5,279.312,292.062,279.5,293.312,279.062,295.062,277.938,296.938,276.438,298.375,275,299.812,274.188,301.25,273.688,303.188,273.375,304.562,273.188]; fsShape[8][6] = [304.562,269.062,301.688,268.875,299,268.438,296.438,267.625,294.375,266.438,292.812,265.125,291.812,263.688,291.375,262.562,291.5,261.812,292.062,261.625,293.312,262.062,295.062,263.188,296.938,264.688,298.375,266.125,299.812,266.938,301.25,267.438,303.188,267.75,304.562,267.938]; fsShape[8][7] = [306.625,288.375,307.25,287.812,307.688,286.75,308.062,284.562,308.062,281.938,307.688,278.75,307.312,275.875,307,272.438,306.125,272.5,305.875,275.938,305.625,278.75,305.188,281.875,305.125,284.438,305.562,286.75,306.062,287.938]; fsShape[8][8] = [308.062,272.438,308.25,275.312,308.688,278,309.5,280.562,310.688,282.625,312,284.188,313.438,285.188,314.562,285.625,315.312,285.5,315.5,284.938,315.062,283.688,313.938,281.938,312.438,280.062,311,278.625,310.188,277.188,309.688,275.75,309.375,273.812,309.188,272.438]; fsShape[8][9] = [305.062,272.438,304.875,275.312,304.438,278,303.625,280.562,302.438,282.625,301.125,284.188,299.688,285.188,298.562,285.625,297.812,285.5,297.625,284.938,298.062,283.688,299.188,281.938,300.688,280.062,302.125,278.625,302.938,277.188,303.438,275.75,303.75,273.812,303.938,272.438]; fsShape[8][10] = [324.375,270.375,323.812,269.75,322.75,269.312,320.562,268.938,317.938,268.938,314.75,269.312,311.875,269.688,308.438,270,308.5,270.875,311.938,271.125,314.75,271.375,317.875,271.812,320.438,271.875,322.75,271.438,323.938,270.938]; fsShape[8][11] = [308.438,268.938,311.312,268.75,314,268.312,316.562,267.5,318.625,266.312,320.188,265,321.188,263.562,321.625,262.438,321.5,261.688,320.938,261.5,319.688,261.938,317.938,263.062,316.062,264.562,314.625,266,313.188,266.812,311.75,267.312,309.812,267.625,308.438,267.812]; fsShape[8][12] = [308.438,271.938,311.312,272.125,314,272.562,316.562,273.375,318.625,274.562,320.188,275.875,321.188,277.312,321.625,278.438,321.5,279.188,320.938,279.375,319.688,278.938,317.938,277.812,316.062,276.312,314.625,274.875,313.188,274.062,311.75,273.562,309.812,273.25,308.438,273.062]; fnShape[9] = 9; fsShape[9] = new Array(); fsShape[9][0] = [342.5,270.5]; fsShape[9][1] = [347.235,268.893,346.832,268.005,346.329,267.241,345.732,266.613,345.006,266.12,344.165,265.691,343.421,265.479,342.741,265.389,341.869,265.394,341.131,265.55,340.221,265.874,339.494,266.33,338.752,266.91,338.169,267.634,337.778,268.331,337.466,269.107,337.294,269.978,337.284,270.802,337.417,271.742,337.697,272.525,338.221,273.427,338.883,274.169,339.585,274.76,340.479,275.262,341.339,275.487,342.258,275.612,343.182,275.51,344.116,275.262,344.977,274.871,345.775,274.3,346.375,273.709,346.812,273.062,347.12,272.453,347.367,271.641,347.488,270.896,347.482,270.164,347.414,269.538]; fsShape[9][2] = [342.562,253.688,341.75,254.75,341.125,255.75,340.75,256.812,340.5,258.188,340.188,259.5,339.625,259,338.875,258.625,338.812,259.688,339.312,261.125,340.25,263.25,341.75,262.938,343.562,263,344.812,263.312,345.625,261.5,346.25,260.062,346.375,258.562,345.562,258.875,344.938,259.438,344.5,257.75,344.188,256.125,343.688,255.062,343.125,254.25]; fsShape[9][3] = [330.619,258.479,330.795,259.805,331.061,260.954,331.547,261.971,332.342,263.12,333.05,264.269,332.299,264.313,331.503,264.578,332.209,265.374,333.58,266.036,335.745,266.876,336.585,265.595,337.91,264.357,339.016,263.694,338.309,261.838,337.734,260.379,336.762,259.23,336.408,260.026,336.363,260.866,334.861,259.982,333.491,259.054,332.387,258.656,331.414,258.479]; fsShape[9][4] = [325.562,270.312,326.624,271.126,327.624,271.751,328.688,272.125,330.062,272.376,331.374,272.688,330.875,273.25,330.5,274,331.562,274.063,332.999,273.562,335.123,272.625,334.812,271.125,334.873,269.313,335.188,268.063,333.374,267.25,331.937,266.625,330.437,266.5,330.749,267.312,331.312,267.938,329.625,268.375,327.999,268.688,326.938,269.188,326.123,269.75]; fsShape[9][5] = [330.354,282.256,331.68,282.08,332.828,281.815,333.846,281.328,334.994,280.533,336.143,279.826,336.188,280.576,336.453,281.372,337.248,280.666,337.91,279.295,338.75,277.131,337.469,276.29,336.23,274.965,335.568,273.859,333.712,274.566,332.254,275.141,331.104,276.113,331.9,276.467,332.74,276.512,331.857,278.013,330.928,279.384,330.531,280.488,330.353,281.462]; fsShape[9][6] = [342.188,287.313,343,286.251,343.625,285.251,344,284.188,344.25,282.813,344.562,281.501,345.124,282,345.875,282.375,345.938,281.313,345.437,279.876,344.5,277.752,343,278.063,341.188,278.002,339.937,277.688,339.124,279.501,338.5,280.938,338.374,282.438,339.188,282.126,339.812,281.563,340.25,283.25,340.562,284.876,341.062,285.938,341.625,286.752]; fsShape[9][7] = [354.131,282.521,353.954,281.195,353.689,280.047,353.202,279.029,352.407,277.881,351.7,276.732,352.45,276.688,353.246,276.422,352.54,275.627,351.169,274.965,349.005,274.125,348.164,275.406,346.84,276.645,345.733,277.308,346.44,279.163,347.016,280.621,347.987,281.771,348.342,280.975,348.386,280.135,349.887,281.018,351.259,281.947,352.362,282.344,353.336,282.523]; fsShape[9][8] = [359.188,270.688,358.125,269.875,357.126,269.25,356.062,268.875,354.688,268.625,353.375,268.313,353.874,267.751,354.249,267,353.188,266.938,351.75,267.438,349.626,268.375,349.938,269.875,349.877,271.688,349.562,272.939,351.375,273.751,352.812,274.375,354.312,274.501,354,273.688,353.438,273.062,355.123,272.625,356.751,272.312,357.812,271.812,358.627,271.251]; fsShape[9][9] = [354.396,258.744,353.069,258.921,351.921,259.186,350.903,259.673,349.755,260.468,348.605,261.175,348.562,260.425,348.296,259.629,347.501,260.335,346.839,261.706,345.999,263.87,347.28,264.711,348.52,266.035,349.182,267.143,351.037,266.435,352.495,265.859,353.645,264.888,352.849,264.534,352.009,264.489,352.893,262.989,353.821,261.616,354.218,260.513,354.397,259.539]; fnShape[10] = 9; fsShape[10] = new Array(); fsShape[10][0] = [378.5,270.5]; fsShape[10][1] = [385.738,268.083,385.126,266.738,384.364,265.58,383.459,264.627,382.357,263.88,381.083,263.23,379.955,262.909,378.925,262.772,377.603,262.78,376.483,263.017,375.104,263.507,374.002,264.199,372.877,265.078,371.993,266.176,371.4,267.232,370.927,268.41,370.666,269.729,370.651,270.979,370.853,272.404,371.277,273.59,372.071,274.958,373.075,276.083,374.14,276.979,375.496,277.74,376.799,278.081,378.191,278.271,379.592,278.116,381.009,277.74,382.313,277.146,383.524,276.281,384.434,275.386,385.097,274.406,385.563,273.481,385.938,272.25,386.121,271.121,386.112,270.011,386.009,269.062]; fsShape[10][2] = [378.438,255.312,378.562,259.188,377.25,259.312,376.062,259.5,374.75,259.875,373.688,260.312,372.938,260.688,370.938,257.312,372.625,256.5,374.375,255.812,376.188,255.438]; fsShape[10][3] = [367.636,259.735,370.464,262.387,369.624,263.403,368.917,264.376,368.254,265.569,367.812,266.629,367.547,267.425,363.746,266.453,364.365,264.685,365.116,262.962,366.133,261.415]; fsShape[10][4] = [363.125,270.501,367,270.375,367.124,271.688,367.312,272.876,367.687,274.188,368.125,275.25,368.499,276.001,365.125,278.001,364.312,276.313,363.625,274.564,363.25,272.751]; fsShape[10][5] = [367.548,281.303,370.199,278.474,371.215,279.315,372.188,280.021,373.381,280.685,374.441,281.125,375.236,281.392,374.266,285.192,372.497,284.573,370.774,283.822,369.227,282.805]; fsShape[10][6] = [378.313,285.813,378.188,281.938,379.5,281.815,380.688,281.626,382,281.251,383.062,280.813,383.812,280.44,385.813,283.813,384.125,284.626,382.376,285.313,380.562,285.688]; fsShape[10][7] = [389.115,281.391,386.286,278.739,387.127,277.724,387.834,276.75,388.496,275.558,388.938,274.497,389.203,273.703,393.004,274.673,392.385,276.442,391.635,278.165,390.617,279.712]; fsShape[10][8] = [393.626,270.625,389.75,270.75,389.627,269.438,389.438,268.25,389.063,266.938,388.625,265.876,388.252,265.126,391.625,263.125,392.438,264.814,393.126,266.562,393.501,268.376]; fsShape[10][9] = [389.203,259.823,386.551,262.652,385.536,261.812,384.562,261.104,383.37,260.442,382.309,260.001,381.515,259.735,382.484,255.935,384.254,256.554,385.977,257.304,387.524,258.321]; fnShape[11] = 5; fsShape[11] = new Array(); fsShape[11][0] = [414.5,270.5]; fsShape[11][1] = [414.5,252.875,414,253.062,413.812,253.438,413.75,254.188,413.75,266.625,413.5,267.688,413.062,268.438,412.438,269.188,411.625,269.5,410.75,269.688,397.812,269.688,397.062,269.938,396.812,270.375,397.062,270.938,397.688,271.188,411.125,271.25,412.125,271.562,412.812,272.125,413.375,272.875,413.625,273.688,413.688,274.5,413.688,287.25,413.875,287.938,414.5,288.188,414.938,288.062,415.25,287.438,415.25,274.312,415.438,273.125,416.062,272.312,416.75,271.688,417.625,271.312,418.5,271.188,431.375,271.25,432.062,270.812,432.125,270.312,431.875,269.875,431.312,269.75,430.75,269.688,418.25,269.688,417.312,269.5,416.562,269.125,415.875,268.438,415.438,267.625,415.25,266.875,415.25,266.25,415.25,254.125,415.188,253.312,414.938,252.938]; fsShape[11][2] = [412.062,257,411.938,256.062,411.438,255.125,410.688,254.438,409.875,253.875,408.875,253.75,407.938,253.75,407.062,254.188,406.25,254.812,405.688,255.688,405.312,256.75,405.438,257.875,405.875,258.75,406.5,259.562,407.5,260.188,408.5,260.375,409.125,260.312,409.438,259.812,409.438,259.312,409,259,408.625,258.938,407.938,258.688,407.375,258.25,407,257.625,406.938,256.875,407.25,256.062,407.812,255.562,408.625,255.25,409.312,255.375,410,255.812,410.438,256.438,410.562,257.062,410.562,257.562,410.562,264.5,410.375,265.375,410.062,265.875,409.625,266.312,408.812,266.562,401.062,266.562,400.25,266.312,399.75,265.875,399.375,265.062,399.5,264.125,400.062,263.312,400.938,262.938,401.75,263,402.438,263.312,402.938,263.938,403.125,264.625,403.312,265.25,403.812,265.438,404.312,265.188,404.5,264.562,404.375,263.75,404,262.875,403.438,262.188,402.625,261.75,401.812,261.438,400.812,261.375,399.812,261.688,398.875,262.312,398.312,263.188,397.938,264.125,397.875,265.125,398.25,266.125,398.812,267,399.688,267.625,400.688,268,401.375,268,408.938,268,409.938,267.812,410.812,267.312,411.438,266.625,411.938,265.875,412.062,265]; fsShape[11][3] = [401.094,272.969,400.156,273.094,399.219,273.594,398.531,274.344,397.969,275.156,397.844,276.156,397.844,277.094,398.281,277.969,398.906,278.781,399.781,279.344,400.844,279.719,401.969,279.594,402.844,279.156,403.656,278.531,404.281,277.531,404.469,276.531,404.406,275.906,403.906,275.594,403.406,275.594,403.094,276.031,403.031,276.406,402.781,277.094,402.344,277.656,401.719,278.031,400.969,278.094,400.156,277.781,399.656,277.219,399.344,276.406,399.469,275.719,399.906,275.031,400.531,274.594,401.156,274.469,401.656,274.469,408.594,274.469,409.469,274.656,409.969,274.969,410.406,275.406,410.656,276.219,410.656,283.969,410.406,284.781,409.969,285.281,409.156,285.656,408.219,285.531,407.406,284.969,407.031,284.094,407.094,283.281,407.406,282.594,408.031,282.094,408.719,281.906,409.344,281.719,409.531,281.219,409.281,280.719,408.656,280.531,407.844,280.656,406.969,281.031,406.281,281.594,405.844,282.406,405.531,283.219,405.469,284.219,405.781,285.219,406.406,286.156,407.281,286.719,408.219,287.094,409.219,287.156,410.219,286.781,411.094,286.219,411.719,285.344,412.094,284.344,412.094,283.656,412.094,276.094,411.906,275.094,411.406,274.219,410.719,273.594,409.969,273.094,409.094,272.969]; fsShape[11][4] = [417.062,283.906,417.188,284.844,417.688,285.781,418.438,286.469,419.25,287.031,420.25,287.156,421.188,287.156,422.062,286.719,422.875,286.094,423.438,285.219,423.812,284.156,423.688,283.031,423.25,282.156,422.625,281.344,421.625,280.719,420.625,280.531,420,280.594,419.688,281.094,419.688,281.594,420.125,281.906,420.5,281.969,421.188,282.219,421.75,282.656,422.125,283.281,422.188,284.031,421.875,284.844,421.312,285.344,420.5,285.656,419.812,285.531,419.125,285.094,418.688,284.469,418.562,283.844,418.562,283.344,418.562,276.406,418.75,275.531,419.062,275.031,419.5,274.594,420.312,274.344,428.062,274.344,428.875,274.594,429.375,275.031,429.75,275.844,429.625,276.781,429.062,277.594,428.188,277.969,427.375,277.906,426.688,277.594,426.188,276.969,426,276.281,425.812,275.656,425.312,275.469,424.812,275.719,424.625,276.344,424.75,277.156,425.125,278.031,425.688,278.719,426.5,279.156,427.312,279.469,428.312,279.531,429.312,279.219,430.25,278.594,430.812,277.719,431.188,276.781,431.25,275.781,430.875,274.781,430.312,273.906,429.438,273.281,428.438,272.906,427.75,272.906,420.188,272.906,419.188,273.094,418.312,273.594,417.688,274.281,417.188,275.031,417.062,275.906]; fsShape[11][5] = [428.031,267.938,428.969,267.812,429.906,267.312,430.594,266.562,431.156,265.75,431.281,264.75,431.281,263.812,430.844,262.938,430.219,262.125,429.344,261.562,428.281,261.188,427.156,261.312,426.281,261.75,425.469,262.375,424.844,263.375,424.656,264.375,424.719,265,425.219,265.312,425.719,265.312,426.031,264.875,426.094,264.5,426.344,263.812,426.781,263.25,427.406,262.875,428.156,262.812,428.969,263.125,429.469,263.688,429.781,264.5,429.656,265.188,429.219,265.875,428.594,266.312,427.969,266.438,427.469,266.438,420.531,266.438,419.656,266.25,419.156,265.938,418.719,265.5,418.469,264.688,418.469,256.938,418.719,256.125,419.156,255.625,419.969,255.25,420.906,255.375,421.719,255.938,422.094,256.812,422.031,257.625,421.719,258.312,421.094,258.812,420.406,259,419.781,259.188,419.594,259.688,419.844,260.188,420.469,260.375,421.281,260.25,422.156,259.875,422.844,259.312,423.281,258.5,423.594,257.688,423.656,256.688,423.344,255.688,422.719,254.75,421.844,254.188,420.906,253.812,419.906,253.75,418.906,254.125,418.031,254.688,417.406,255.562,417.031,256.562,417.031,257.25,417.031,264.812,417.219,265.812,417.719,266.688,418.406,267.312,419.156,267.812,420.031,267.938]; fnShape[12] = 1; fsShape[12] = new Array(); fsShape[12][0] = [450.5,270.5]; fsShape[12][1] = [450.5,252.875,448.125,268.125,432.875,270.438,448.125,272.812,450.562,288.312,452.875,272.812,468,270.438,452.812,268]; fnShape[13] = 1; fsShape[13] = new Array(); fsShape[13][0] = [486.5,270.5]; fsShape[13][1] = [486.438,254.062,485,266.875,475.062,258.938,482.938,268.875,470.375,270.375,482.875,271.812,474.938,281.938,485,274,486.562,286.75,488,273.938,498,281.938,490.188,271.938,502.625,270.375,490.062,268.875,497.938,258.938,488,266.875]; fnShape[14] = 11; fsShape[14] = new Array(); fsShape[14][0] = [522.5,270.5]; fsShape[14][1] = [523.688,269,524.062,266,524.125,264,523.812,262,523.25,261,522.625,260.688,522,260.812,521.5,261.5,521.125,262.625,520.938,264.25,521,265.812,521.125,267.25,521.375,268.875,519.812,267.938,518.312,267.312,516.562,266.812,514.938,266.625,513.812,266.812,513.188,267.25,513.188,267.812,513.812,268.75,515,269.5,516.625,270.125,518.312,270.562,519.75,270.938,520.625,271,519.312,272.188,518.125,273.625,517.062,275.125,516.5,276.438,516.312,277.375,516.5,278.062,517,278.438,518,278.188,518.875,277.562,519.875,276.5,520.812,275.375,521.625,273.938,522.312,272.438,523.125,274.062,524.25,275.75,525.188,277,526.312,277.938,527.25,278.5,528.125,278.5,528.438,278.062,528.438,277.125,528.125,276.062,527.312,274.625,526.188,273.125,525.188,272.062,524.25,271.188,526.188,270.875,527.812,270.5,529.438,270,530.438,269.438,531.188,268.75,531.812,267.938,531.688,267.375,531.25,267,530.5,266.812,529.5,266.875,528.062,267.125,526.438,267.688,525,268.25]; fsShape[14][2] = [529.312,261.188,528.312,259.75,527.188,258.562,525.688,257.688,524.25,257.125,522.875,257,521.438,257.062,520.062,257.375,518.625,258.062,517.375,259,516.562,259.938,515.875,261.062,515.938,259.312,516.688,257.438,517.812,256,519.25,254.938,521.188,254.188,522.812,254.062,524.375,254.312,525.875,254.938,527.125,255.938,528.125,257.062,528.875,258.438,529.188,259.75]; fsShape[14][3] = [516.438,255.375,515.625,256.5,515,257.938,514.688,259.438,513.312,259.188,511.688,259.188,510,259.625,510.812,257.75,512.062,256.5,513.562,255.562,514.938,255.312]; fsShape[14][4] = [515.791,261.203,514.115,261.71,512.638,262.413,511.342,263.569,510.363,264.762,509.819,266.031,509.435,267.418,509.307,268.822,509.516,270.401,510.021,271.88,510.662,272.942,511.52,273.944,509.875,273.344,508.323,272.051,507.304,270.537,506.737,268.841,506.623,266.767,507.006,265.183,507.727,263.774,508.785,262.541,510.121,261.661,511.501,261.058,513.041,260.769,514.385,260.877]; fsShape[14][5] = [506.284,271.651,507.104,272.771,508.277,273.811,509.607,274.571,508.945,275.802,508.442,277.347,508.337,279.087,506.805,277.735,506.002,276.16,505.574,274.443,505.762,273.059]; fsShape[14][6] = [511.627,274.067,511.592,275.818,511.803,277.439,512.503,279.03,513.335,280.329,514.374,281.238,515.574,282.033,516.87,282.589,518.437,282.878,519.998,282.854,521.207,282.572,522.425,282.066,521.346,283.445,519.637,284.521,517.881,285.023,516.094,285.038,514.086,284.506,512.697,283.652,511.58,282.531,510.734,281.144,510.311,279.601,510.163,278.103,510.365,276.549,510.883,275.304]; fsShape[14][7] = [518.627,286.338,519.945,285.904,521.296,285.109,522.431,284.079,523.396,285.089,524.71,286.045,526.332,286.683,524.574,287.723,522.827,287.999,521.062,287.875,519.803,287.269]; fsShape[14][8] = [522.575,282.003,524.229,282.577,525.837,282.878,527.566,282.703,529.059,282.313,530.244,281.606,531.371,280.71,532.3,279.649,533.059,278.249,533.518,276.756,533.625,275.52,533.52,274.205,534.497,275.657,534.992,277.615,534.928,279.44,534.39,281.145,533.263,282.89,532.021,283.946,530.61,284.663,529.029,285.038,527.432,284.965,525.961,284.642,524.545,283.97,523.521,283.093]; fsShape[14][9] = [536.408,279.137,536.403,277.749,536.064,276.219,535.436,274.821,536.694,274.215,538.01,273.262,539.117,271.916,539.562,273.909,539.286,275.656,538.623,277.296,537.657,278.307]; fsShape[14][10] = [533.506,274.043,534.562,272.646,535.346,271.211,535.714,269.512,535.805,267.972,535.498,266.626,534.994,265.277,534.272,264.066,533.175,262.912,531.897,262.014,530.754,261.53,529.471,261.225,531.154,260.743,533.17,260.877,534.886,261.503,536.34,262.541,537.651,264.152,538.273,265.659,538.518,267.223,538.387,268.842,537.823,270.339,537.062,271.638,535.985,272.777,534.835,273.479]; fsShape[14][11] = [535.055,260.001,533.732,259.577,532.173,259.426,530.649,259.593,530.462,258.208,529.962,256.662,529.023,255.193,531.058,255.386,532.634,256.188,533.988,257.325,534.65,258.557]; fnShape[15] = 1; fsShape[15] = new Array(); fsShape[15][0] = [558.5,270.5]; fsShape[15][1] = [553.625,265.625,552,265.875,550.125,266.25,548.188,266.75,546.688,267.312,545.375,268.062,544.25,268.875,543.688,269.75,543.438,270.625,543.812,271.625,544.812,272.5,546.5,273.5,548.25,274.188,549.938,274.688,551.625,275,553.688,275.312,554,277.688,554.438,279.625,555.125,281.625,555.938,283.438,556.938,284.875,558.062,285.5,559,285.438,560.375,284.562,561.375,283,562.125,281.062,562.688,279.125,563.062,277.312,563.312,275.375,565.562,275.062,568.062,274.438,570,273.812,571.25,273.188,572.312,272.5,573.188,271.438,573.562,270.625,573.375,269.75,572.812,268.938,571.938,268.188,570.812,267.562,569.25,266.875,567.625,266.375,565.75,265.938,564.5,265.75,563.375,265.688,563.188,263.75,562.75,262,562.25,260.25,561.688,258.812,561,257.562,560.25,256.375,559.375,255.688,558.625,255.438,557.875,255.562,557.125,255.938,556.25,256.812,555.5,258.125,554.875,259.688,554.312,261.562,554,263.125,553.812,264.188]; fnShape[16] = 1; fsShape[16] = new Array(); fsShape[16][0] = [594.5,270.5]; fsShape[16][1] = [590,256.938,590,265.875,581.062,265.938,581.062,274.938,590.062,275,590,283.875,599.062,283.875,599.062,275,607.875,274.938,607.938,266,599,265.938,599.062,257]; // heart fnShape[17] = 1; fsShape[17] = new Array(); fsShape[17][0] = [190.697,277.562]; fsShape[17][1] = [190.785,292.287,193.682,289.671,196.976,286.668, 199.591,284.247,201.169,282.553,202.594,280.759,203.466,278.918,203.756,277.078,203.66,275.237,202.981,273.396,201.818,271.943, 200.463,270.975,198.622,270.296,197.008,270.126,195.507,270.165,194.291,270.412,193.056,270.887,192.068,271.551, 191.365,272.331,190.785,273.105,190.205,272.331,189.501,271.551,188.514,270.887,187.278,270.412,186.063,270.165, 184.562,270.126,182.947,270.296,181.106,270.975,179.75,271.943,178.588,273.396,177.91,275.237,177.813,277.078,178.104,278.918, 178.975,280.759,180.4,282.553,181.979,284.247,184.594,286.668,187.888,289.671]; //star fnShape[18] = 1; fsShape[18] = new Array(); fsShape[18][0] = [190.697,277.562]; fsShape[18][1] = [190.697,261.806,195.328,271.188,205.683,272.693, 198.19,279.997,199.958,290.309,190.697,285.44,181.436,290.309,183.205,279.997,175.712,272.693,186.066,271.188]; //snow fnShape[19] = 1; fsShape[19] = new Array(); fsShape[19][0] = [190.5,278.875]; fsShape[19][1] = [202.578,285.677,205.147,284.307,204.956,283.64,201.966,285.022,201.263,284.539,203.759,282.932, 203.4,282.06,200.049,283.838,199.145,283.315,203.64,280.604,203.012,279.577,197.94,282.622,197.115,282.144,200.358,280.189, 199.839,279.23,195.944,281.469,195.404,281.156,196.959,280.039,196.474,279.361,194.458,280.61,193.288,279.934,193.281,279.545, 193.306,279.53,193.282,278.208,194.465,277.526,196.469,278.79,196.965,278.098,195.409,276.98,195.95,276.668,199.864,278.906, 200.364,277.948,197.121,275.992,197.946,275.516,203.019,278.559,203.646,277.532,199.15,274.821,200.056,274.298, 203.406,276.077,203.765,275.205,201.269,273.598,201.976,273.115,204.962,274.496,205.153,273.828,202.603,272.465, 205.918,270.208,202.283,271.938,202.381,269.027,201.707,268.859,201.41,272.139,200.64,272.507,200.496,269.542,199.561,269.417, 199.426,273.208,198.521,273.73,198.421,268.481,197.217,268.511,197.317,274.426,196.491,274.902,196.42,271.116,195.33,271.085, 195.321,275.578,194.78,275.89,194.59,273.984,193.761,274.065,193.835,276.436,192.664,277.111,192.323,276.923,192.323,276.894, 191.167,276.253,191.167,274.888,193.264,273.784,192.913,273.008,191.167,273.797,191.167,273.172,195.061,270.902, 194.481,269.99,191.167,271.82,191.167,270.867,196.338,267.997,195.762,266.94,191.167,269.478,191.167,268.432,194.382,266.42, 193.807,265.672,191.167,267.031,191.103,266.178,193.791,264.283,193.309,263.784,190.853,265.31,190.556,261.31,190.236,265.323, 187.764,263.783,187.283,264.283,189.974,266.18,189.908,267.031,187.268,265.672,186.693,266.42,189.908,268.432,189.908,269.478, 185.312,266.94,184.736,267.997,189.908,270.867,189.908,271.82,186.593,269.99,186.021,270.918,189.908,273.172,189.908,273.797, 188.162,273.008,187.818,273.768,189.908,274.888,189.908,276.241,189.574,276.441,189.548,276.427,188.415,277.108, 187.233,276.425,187.326,274.057,186.479,273.973,186.288,275.879,185.748,275.567,185.728,271.06,184.649,271.105, 184.577,274.892,183.751,274.415,183.852,268.501,182.647,268.471,182.548,273.72,181.642,273.197,181.507,269.407, 180.572,269.531,180.429,272.497,179.658,272.125,179.361,268.85,178.687,269.018,178.782,271.907,175.169,270.165, 178.484,272.449,175.915,273.819,176.107,274.486,179.096,273.104,179.799,273.587,177.303,275.194,177.663,276.065, 181.013,274.288,181.918,274.81,177.422,277.521,178.05,278.549,183.122,275.505,183.947,275.982,180.705,277.937,181.223,278.896, 185.118,276.658,185.659,276.97,184.103,278.087,184.589,278.765,186.604,277.516,187.775,278.192,187.782,278.582, 187.757,278.596,187.78,279.917,186.598,280.6,184.593,279.336,184.097,280.028,185.653,281.146,185.112,281.458,181.198,279.221, 180.698,280.178,183.941,282.134,183.116,282.61,178.044,279.567,177.417,280.594,181.913,283.305,181.006,283.828,177.656,282.05, 177.297,282.922,179.793,284.529,179.086,285.011,176.101,283.63,175.91,284.297,178.459,285.66,175.145,287.918,178.779,286.189, 178.682,289.099,179.355,289.267,179.653,285.987,180.423,285.619,180.566,288.584,181.501,288.709,181.636,284.918, 182.542,284.396,182.642,289.645,183.846,289.615,183.745,283.701,184.571,283.224,184.643,287.01,185.732,287.041, 185.741,282.548,186.282,282.236,186.472,284.142,187.302,284.061,187.227,281.69,188.399,281.015,188.739,281.203,188.74,281.232, 189.896,281.873,189.896,283.238,187.799,284.342,188.15,285.118,189.896,284.329,189.896,284.954,186.001,287.224, 186.581,288.136,189.896,286.306,189.896,287.258,184.724,290.129,185.3,291.186,189.896,288.648,189.896,289.694,186.68,291.707, 187.256,292.454,189.896,291.095,189.959,291.948,187.271,293.844,187.754,294.343,190.208,292.816,190.506,296.816, 190.826,292.803,193.298,294.343,193.78,293.843,191.088,291.946,191.155,291.095,193.794,292.453,194.37,291.706,191.155,289.694, 191.155,288.648,195.751,291.186,196.326,290.129,191.154,287.259,191.155,286.306,194.469,288.136,195.041,287.208, 191.154,284.954,191.155,284.329,192.9,285.118,193.244,284.358,191.155,283.238,191.155,281.885,191.489,281.685,191.514,281.699, 192.646,281.018,193.829,281.701,193.736,284.069,194.584,284.153,194.774,282.247,195.315,282.559,195.334,287.067, 196.414,287.021,196.485,283.234,197.311,283.711,197.211,289.625,198.415,289.655,198.515,284.406,199.42,284.929,199.555,288.72, 200.49,288.595,200.633,285.629,201.405,286.001,201.702,289.277,202.375,289.108,202.28,286.219,205.893,287.961]; //cat fnShape[20] = 5; fsShape[20] = new Array(); fsShape[20][0] = [223.333,278.208]; fsShape[20][1] = [216.045,287.639,215.858,286.718,215.914,285.401,216.284,284.481,216.945,283.318, 218.007,282.404,219.27,281.379,219.879,280.362,220.543,279.479,221.573,278.864,222.725,278.473,224.382,278.623, 225.458,279.083,226.049,280.194,226.378,281.255,227.212,282.286,228.38,283.028,229.362,283.646,230.151,284.48,230.422,285.358, 230.422,286.17,230.252,287.529,230.021,288.626,229.362,289.115,228.419,289.46,227.3,289.382,226.093,289.131,225.388,288.677, 224.535,288.188,223.529,287.983,222.385,287.947,221.616,288.229,221.155,288.526,220.367,289.087,219.533,289.373, 218.743,289.468,217.668,289.197,216.807,288.498]; fsShape[20][2] = [216.197,280.445,215.719,280.148,215.116,279.432,214.782,278.353,214.577,276.861, 214.677,275.211,215.115,274.099,215.655,273.177,216.282,272.896,217.072,272.887,217.703,273.591,218.072,274.741, 218.274,276.763,218.161,278.133,217.775,279.092,217.104,280.009,216.709,280.322]; fsShape[20][3] = [219.924,273.629,219.455,272.709,219.171,271.502,219.126,270.274,219.236,269.287,219.709,267.96, 220.158,267.07,220.81,266.49,221.519,266.391,222.264,266.873,222.747,267.729,222.912,269.176,222.831,270.566,222.681,271.942, 222.359,273.08,221.759,273.829,221.035,274.157,220.335,273.937]; fsShape[20][4] = [225.391,274.016,225.105,273.27,224.952,271.975,225.031,270.399,225.232,268.814,225.544,267.434, 226.05,266.6,226.767,266.226,227.585,266.292,228.375,267.258,228.748,268.399,228.644,269.846,228.437,271.481,227.979,272.918, 227.387,273.971,226.883,274.454,226.244,274.74,225.794,274.458]; fsShape[20][5] = [229.5,278.645,229.401,277.789,229.401,276.745,229.676,274.586,230.041,272.957,230.422,272.282, 230.794,272.006,231.388,271.888,232.046,272.131,232.726,272.853,232.918,274.234,232.945,276.231,232.572,277.624, 232.046,278.732,231.355,279.264,230.579,279.729,229.917,279.303]; var curlTotal = 0; var frameNum = 1; function StartEachRender (api) { ////Engine.message ("starting render " + frameNum) frameNum++ } function EndEachRender (api) { // alert("end render") } //Engine.setParameter(kIncrementalRender, 0) //RenderAPI.setParameter(kIncrementalRender, 0) function ModuleCurl (parameters, generation, pType, sColor, cColorFade, curveVisible, angle, x, y, side, sSize, ipWidth, pWidth, spiral, sCircle, sCircleSize, sCircleSizeRatio, sCircleSizeRandom, scColor, tail, boxRatio, progressRatio, flip, leaves, sLeaves, slPoints, cContinuous, objAngleSnap, cGenerationN, cgSizeRatio, cgSizeRandom, offsetX, offsetY) { this.offsetX = offsetX; this.offsetY = offsetY; this.parameters = parameters; this.generation = generation; this.pType = pType; this.pWidth = pWidth; this.ipWidth = ipWidth; this.angle = angle; this.pr = progressRatio; // need this when stopping overlap this.flip = flip; // need this to check if it is flip mode to stop overlapping this.x = x; this.y = y; this.x1 = x; this.y1 = y; this.width = ipWidth; this.spiral = spiral; this.sCircle = sCircle; this.sCircleSize = sCircleSize; this.sCircleSizeRatio = sCircleSizeRatio; this.sCircleSizeRandom = sCircleSizeRandom; this.scColor = scColor; this.tail = tail; this.sColor = sColor; this.cColorFade = cColorFade; this.curveVisible = curveVisible; this.cGenerationN = cGenerationN; this.cgSizeRatio = cgSizeRatio; this.cgSizeRandom = cgSizeRandom; this.cContinuous = cContinuous; this.spiralSize = sSize; this.side = side; this.step = 0; this.child = 0; this.boxRatio = boxRatio; this.leaves = leaves; this.sLeaves = sLeaves; this.slPoints = slPoints; this.objAngleSnap = objAngleSnap; this.finish = false; this.pointsA = new Array; // points of one side this.pointsB = new Array; // points of another side this.pointsC = new Array; // points of small circles for end of the patterns this.pointsF = new Array; for (var i = 0; i < 17; i++){ this.pointsF[i] = new Array(); } } ModuleCurl.prototype.produce = function (system) { curlTotal++; if(this.finish){ // Engine.removeModule(this); // Engine.setModuleParameter (this, "call", "render", 0) return kDontCallAgain; }else{ for(this.step = 0; this.step < this.spiral; this.step++){ this.x1 = this.x; this.y1 = this.y; if(this.side == 1) this.angle -= 0.04 + this.step*this.step/10000; else this.angle += 0.04 + this.step*this.step/10000; this.x += Math.cos(this.angle)*this.spiralSize; this.y += Math.sin(this.angle)*this.spiralSize; switch (this.pType) { case 0: break; case 1: this.width += 0.01 * this.pWidth; break; case 2: this.width -= 0.01 * this.pWidth; break; case 3: if (this.step < 28) this.width += (this.step/250) * this.pWidth; else this.width -= (Math.pow(this.step-28,3)/500) * this.pWidth; break; case 4: if (this.step < 28) this.width -= (this.step/100) * this.pWidth; else this.width += (Math.pow(this.step-28,2)/5000) * this.pWidth; break; case 5: this.width = this.ipWidth + Math.cos(this.step/2)* this.pWidth; break; case 6: this.width = this.ipWidth + Engine.rand()*this.pWidth; break; } if (this.width < 0.5) this.width = 0.5; if (((this.cContinuous!=0 && (this.step == this.spiral -1) && (total > 0))) || ((this.cContinuous==0 && total > 0 && Engine.rand() < 0.2 && this.step < 100 && this.step > 3 && this.child < 1 && this.generation < this.cGenerationN))){ this.generation++; var nextOpacity = this.cColorFade; if ( this.cColorFade < 1) nextOpacity *= this.cColorFade; if (this.cContinuous>0){ this.cContinuous--; if (this.cContinuous == 1){ Engine.addModule(new ModuleCurl(this.parameters, this.generation, this.pType, this.sColor, nextOpacity, this.curveVisible, this.angle, this.x, this.y, 1-this.side,this.spiralSize + (this.spiralSize*this.cgSizeRatio*this.generation)+ (0.5+Engine.rand()*this.cgSizeRandom), this.width, this.pWidth, this.spiral + this.tail, this.sCircle, this.sCircleSize, this.sCircleSizeRatio, this.sCircleSizeRandom, this.scColor, this.tail, this.boxRatio, this.pr , this.flip, this.leaves, this.sLeaves, this.slPoints, this.cContinuous, this.objAngleSnap, this.cGenerationN, this.cgSizeRatio, this.cgSizeRandom, offsetX, offsetY)); }else if (this.cContinuous >1){ Engine.addModule(new ModuleCurl(this.parameters, this.generation, this.pType, this.sColor, nextOpacity, this.curveVisible, this.angle, this.x, this.y, 1-this.side,this.spiralSize + (this.spiralSize*this.cgSizeRatio*this.generation)+ (0.5+Engine.rand()*this.cgSizeRandom), this.width, this.pWidth, this.spiral, this.sCircle, this.sCircleSize, this.sCircleSizeRatio, this.sCircleSizeRandom, this.scColor, this.tail, this.boxRatio, this.pr , this.flip, this.leaves, this.sLeaves, this.slPoints, this.cContinuous, this.objAngleSnap, this.cGenerationN, this.cgSizeRatio, this.cgSizeRandom, offsetX, offsetY)); } total--; this.child++; } else if (this.cContinuous< 0){ this.cContinuous++; if (this.cContinuous == -1){ Engine.addModule(new ModuleCurl(this.parameters, this.generation, this.pType, this.sColor, nextOpacity, this.curveVisible, this.angle, this.x, this.y, 1-this.side,this.spiralSize + (this.spiralSize*this.cgSizeRatio*this.generation)+ (0.5+Engine.rand()*this.cgSizeRandom), this.width, this.pWidth, this.spiral + this.tail, this.sCircle, this.sCircleSize, this.sCircleSizeRatio, this.sCircleSizeRandom, this.scColor, this.tail, this.boxRatio, this.pr , this.flip, this.leaves, this.sLeaves, this.slPoints, 1, this.objAngleSnap, this.cGenerationN, this.cgSizeRatio, this.cgSizeRandom, offsetX, offsetY)); }else if (this.cContinuous < -1){ Engine.addModule(new ModuleCurl(this.parameters, this.generation, this.pType, this.sColor, nextOpacity, this.curveVisible, this.angle, this.x, this.y, 1-this.side,this.spiralSize + (this.spiralSize*this.cgSizeRatio*this.generation)+ (0.5+Engine.rand()*this.cgSizeRandom), this.width, this.pWidth, this.spiral, this.sCircle, this.sCircleSize, this.sCircleSizeRatio, this.sCircleSizeRandom, this.scColor, this.tail, this.boxRatio, this.pr , this.flip, this.leaves, this.sLeaves, this.slPoints, this.cContinuous, this.objAngleSnap, this.cGenerationN, this.cgSizeRatio, this.cgSizeRandom, offsetX, offsetY)); Engine.addModule(new ModuleCurl(this.parameters, this.generation, this.pType, this.sColor, nextOpacity, this.curveVisible, this.angle, this.x, this.y, this.side,this.spiralSize + (this.spiralSize*this.cgSizeRatio*this.generation)+ (0.5+Engine.rand()*this.cgSizeRandom), this.width, this.pWidth, this.spiral + this.tail, this.sCircle, this.sCircleSize, this.sCircleSizeRatio, this.sCircleSizeRandom, this.scColor, this.tail, this.boxRatio, this.pr , this.flip, this.leaves, this.sLeaves, this.slPoints, 1, this.objAngleSnap, this.cGenerationN, this.cgSizeRatio, this.cgSizeRandom, offsetX, offsetY)); } total-=2; this.child++; }else{ Engine.addModule(new ModuleCurl(this.parameters, this.generation, this.pType, this.sColor, nextOpacity, this.curveVisible, this.angle, this.x, this.y, Math.floor(Engine.rand()*2),this.spiralSize + (this.spiralSize*this.cgSizeRatio*this.generation)+ (0.5+Engine.rand()*this.cgSizeRandom), this.width, this.pWidth, this.spiral, this.sCircle, this.sCircleSize, this.sCircleSizeRatio, this.sCircleSizeRandom, this.scColor, this.tail, this.boxRatio, this.pr , this.flip, this.leaves, this.sLeaves, this.slPoints, this.cContinuous, this.objAngleSnap, this.cGenerationN, this.cgSizeRatio, this.cgSizeRandom, offsetX, offsetY)); total--; this.child++; } } // leaf if( (this.leaves[0] > 0 && this.cContinuous == 0 && this.step == this.spiral-1 && Engine.rand()>0.75) || (Engine.rand() < this.leaves[0] && this.step < 40)){ if(Engine.rand() > 0.5 || this.leaves[2] == 0){ Engine.addModule(new ModuleLeaf (this.parameters, this.angle , this.x, this.y, this.leaves, this.flip, this.pr, this.boxRatio, this.objAngleSnap, this.cColorFade, offsetX, offsetY)); }else{ Engine.addModule(new ModuleLeaf (this.parameters, this.angle - 3.14/2, this.x, this.y, this.leaves, this.flip, this.pr, this.boxRatio, this.objAngleSnap, this.cColorFade, offsetX, offsetY)); } } var len = Math.sqrt (Math.pow(this.x1-this.x,2) + Math.pow(this.y1-this.y,2)); var sx = (this.y1-this.y)*this.width/len; var sy = (this.x1-this.x)*this.width/len; if (this.step == 0){ this.pointsA.push(new Vector3(this.x1-sx,this.y1+sy)); this.pointsB.push(new Vector3(this.x1+sx,this.y1-sy)); } this.pointsA.push(new Vector3(this.x-sx,this.y+sy)); this.pointsB.push(new Vector3(this.x+sx,this.y-sy)); Engine.setModuleParameter (this, "call", "render", 1) } if (this.sCircle > 0 ){ if (this.sCircle <= 2) { for ( i = 0; i < 2*3.14; i += 0.0628) { switch (this.sCircle) { case 1: this.pointsC.push(new Vector3(this.x+Math.cos(i)*this.width,this.y+Math.sin(i)*this.width, -0.25)); break; case 2: this.pointsC.push(new Vector3(this.x + Math.sin(this.angle)*this.spiralSize*sCircleSize +Math.cos(i)*this.spiralSize*sCircleSize, this.y - Math.cos(this.angle)*this.spiralSize*sCircleSize*this.side +Math.sin(i)*this.spiralSize*sCircleSize, 0.5)); break; } } }else{ var ran = Engine.rand(); for (var k = 0; k < fnShape[this.sCircle-3]; k++){ var fx = fsShape[this.sCircle-3][0][0]/2; var fy = fsShape[this.sCircle-3][0][1]/2; for (var j = 0; j < fsShape[this.sCircle-3][k+1].length-1; j+=2){ this.pointsF[k].push(new Vector3((fsShape[this.sCircle-3][k+1][j]/2 -fx)*(this.sCircleSize+this.sCircleSizeRatio+ (ran-0.5)*this.sCircleSizeRandom)+this.x, (fsShape[this.sCircle-3][k+1][j+1]/2 -fy)*(this.sCircleSize+this.sCircleSizeRatio+ (ran-0.5)*this.sCircleSizeRandom)+this.y, 0.5)); } } } } } this.finish = true; return kCallAgain; } ModuleCurl.prototype.render = function (api, env) { if (curlTotal > 0) { api.command(kpsStartTask,1/curlTotal); curlTotal-- if (this.finish){ for (var i = this.pointsB.length-1; i >= 0 ; i--){ this.pointsA.push(this.pointsB[i]); } var cr = this.sColor[0]; var cg = this.sColor[1]; var cb = this.sColor[2]; var scr = this.scColor[0]; var scg = this.scColor[1]; var scb = this.scColor[2]; if (this.curveVisible){ api.pushMatrix(); frame = new Frame3(); api.setFrame(frame); if (api.instanceExists("pointsA")) // instance api.deleteInstance("pointsA"); if (api.defineInstance("pointsA")) { api.lineWidth (0.1); api.Polygon( this.pointsA ); api.endInstance(); } api.popMatrix(); } if (this.sCircle > 0 && this.cContinuous == 0){ if (this.sCircle <= 2){ api.pushMatrix(); frame = new Frame3(); api.setFrame(frame); if (api.instanceExists("pointsC")) // instance api.deleteInstance("pointsC"); if (api.defineInstance("pointsC")) { api.lineWidth (0.1); api.Polygon( this.pointsC ); api.endInstance(); } api.popMatrix(); }else{ for(var k = 0; k < fnShape[this.sCircle-3]; k++){ api.pushMatrix(); frame = new Frame3(); api.setFrame(frame); if (api.instanceExists("points"+k)) // instance api.deleteInstance("points"+k); if (api.defineInstance("points"+k)) { api.lineWidth (0.1); api.Polygon(this.pointsF[k]); api.endInstance(); } api.popMatrix(); } } } api.pushMatrix(); api.scale(frameScale,frameScale,frameScale); api.Color (kStrokeColor, cr,cg,cb, this.cColorFade); // top left api.lineWidth (0.1); api.Color (kFillColor, cr,cg,cb, this.cColorFade); //Engine.message(this.flip, " ", this.pr, " " , this.boxRatio); api.translate (this.offsetX,this.offsetY); if ( (this.flip && this.pr < this.boxRatio) || (!this.flip && this.pr >(1-this.boxRatio))){ if (this.curveVisible){ api.lineWidth (0.01); api.Color (kStrokeColor, cr,cg,cb, this.cColorFade); api.Color (kFillColor, cr,cg,cb, this.cColorFade); api.drawInstance("pointsA"); } if (this.sCircle > 0 && this.cContinuous == 0){ api.Color (kStrokeColor, scr,scg,scb, this.cColorFade); api.Color (kFillColor, scr,scg,scb, this.cColorFade); if (this.sCircle <= 2){ api.drawInstance("pointsC"); }else{ for(var k = 0; k < fnShape[this.sCircle-3]; k++){ api.drawInstance("points"+k); } } } } api.translate (-this.offsetX,-this.offsetY); api.Color (kStrokeColor, cr,cg,cb,this.cColorFade); api.Color (kFillColor, cr,cg,cb,this.cColorFade); api.scale(-1,1); //top right api.translate (outputSizeX,0); api.translate (this.offsetX,this.offsetY); if ( (this.flip && this.pr < this.boxRatio) || (!this.flip && this.pr >(1-this.boxRatio))){ if (this.curveVisible){ api.lineWidth (0.01); api.Color (kStrokeColor, cr,cg,cb,this.cColorFade); api.Color (kFillColor, cr,cg,cb,this.cColorFade); api.drawInstance("pointsA"); } if (this.sCircle > 0 && this.cContinuous == 0){ api.Color (kStrokeColor, scr,scg,scb,this.cColorFade); api.Color (kFillColor, scr,scg,scb,this.cColorFade); if (this.sCircle <= 2){ api.drawInstance("pointsC"); }else{ for(var k = 0; k < fnShape[this.sCircle-3]; k++){ api.drawInstance("points"+k); } } } } api.translate (-this.offsetX,-this.offsetY); api.Color (kStrokeColor, cr,cg,cb,this.cColorFade); api.Color (kFillColor, cr,cg,cb,this.cColorFade); api.translate (-outputSizeX,0); api.scale(-1,1) api.scale(1,-1); //bottom left api.translate (0, outputSizeY); api.translate (this.offsetX,this.offsetY); if ( (this.flip && this.pr < this.boxRatio) || (!this.flip && this.pr >(1-this.boxRatio))){ if (this.curveVisible){ api.lineWidth (0.01); api.Color (kStrokeColor, cr,cg,cb,this.cColorFade); api.Color (kFillColor, cr,cg,cb,this.cColorFade); api.drawInstance("pointsA"); } if (this.sCircle > 0 && this.cContinuous == 0){ api.Color (kStrokeColor, scr,scg,scb,this.cColorFade); api.Color (kFillColor, scr,scg,scb,this.cColorFade); if (this.sCircle <= 2){ api.drawInstance("pointsC"); }else{ for(var k = 0; k < fnShape[this.sCircle-3]; k++){ api.drawInstance("points"+k); } } } } api.translate (-this.offsetX,-this.offsetY); api.Color (kStrokeColor, cr,cg,cb,this.cColorFade); api.Color (kFillColor, cr,cg,cb,this.cColorFade); api.scale(-1,1); //bottom right api.translate (+outputSizeX,0); api.translate (this.offsetX,this.offsetY); if ( (this.flip && this.pr < this.boxRatio) || (!this.flip && this.pr >(1-this.boxRatio))){ if (this.curveVisible){ api.lineWidth (0.01); api.Color (kStrokeColor, cr,cg,cb,this.cColorFade); api.Color (kFillColor, cr,cg,cb,this.cColorFade); api.drawInstance("pointsA"); } if (this.sCircle > 0 && this.cContinuous == 0){ api.Color (kStrokeColor, scr,scg,scb,this.cColorFade); api.Color (kFillColor, scr,scg,scb,this.cColorFade); if (this.sCircle <= 2){ api.drawInstance("pointsC"); }else{ for(var k = 0; k < fnShape[this.sCircle-3]; k++){ api.drawInstance("points"+k); } } } } api.translate (-this.offsetX,-this.offsetY); api.Color (kStrokeColor, cr,cg,cb,this.cColorFade); api.Color (kFillColor, cr,cg,cb,this.cColorFade); api.translate (-outputSizeX,0); api.scale(-1,1) api.translate (0, -outputSizeY); api.rotate(-90); //left top api.translate (this.offsetX,this.offsetY); if ( (this.flip && this.pr < 1/this.boxRatio) || (!this.flip && this.pr > (1-1/this.boxRatio))){ if (this.curveVisible){ api.lineWidth (0.01); api.Color (kStrokeColor, cr,cg,cb,this.cColorFade); api.Color (kFillColor, cr,cg,cb,this.cColorFade); api.drawInstance("pointsA"); } if (this.sCircle > 0 && this.cContinuous == 0){ api.Color (kStrokeColor, scr,scg,scb,this.cColorFade); api.Color (kFillColor, scr,scg,scb,this.cColorFade); if (this.sCircle <= 2){ api.drawInstance("pointsC"); }else{ for(var k = 0; k < fnShape[this.sCircle-3]; k++){ api.drawInstance("points"+k); } } } } api.translate (-this.offsetX,-this.offsetY); api.Color (kStrokeColor, cr,cg,cb,this.cColorFade); api.Color (kFillColor, cr,cg,cb,this.cColorFade); api.scale(1,-1); //right top api.translate (outputSizeX,0); api.translate (this.offsetX,this.offsetY); if ( (this.flip && this.pr < 1/this.boxRatio) || (!this.flip && this.pr > (1-1/this.boxRatio))){ if (this.curveVisible){ api.lineWidth (0.01); api.Color (kStrokeColor, cr,cg,cb,this.cColorFade); api.Color (kFillColor, cr,cg,cb,this.cColorFade); api.drawInstance("pointsA"); } if (this.sCircle > 0 && this.cContinuous == 0){ api.Color (kStrokeColor, scr,scg,scb,this.cColorFade); api.Color (kFillColor, scr,scg,scb,this.cColorFade); if (this.sCircle <= 2){ api.drawInstance("pointsC"); }else{ for(var k = 0; k < fnShape[this.sCircle-3]; k++){ api.drawInstance("points"+k); } } } } api.translate (-this.offsetX,-this.offsetY); api.Color (kStrokeColor, cr,cg,cb,this.cColorFade); api.Color (kFillColor, cr,cg,cb,this.cColorFade); api.translate (-outputSizeX,0); api.scale(1,-1); api.scale(-1,1); // left bottom api.translate (0,outputSizeY); api.translate (this.offsetX,this.offsetY); if ( (this.flip && this.pr < 1/this.boxRatio) || (!this.flip && this.pr > (1-1/this.boxRatio))){ if (this.curveVisible){ api.lineWidth (0.01); api.Color (kStrokeColor, cr,cg,cb,this.cColorFade); api.Color (kFillColor, cr,cg,cb,this.cColorFade); api.drawInstance("pointsA"); } if (this.sCircle > 0 && this.cContinuous == 0){ api.Color (kStrokeColor, scr,scg,scb,this.cColorFade); api.Color (kFillColor, scr,scg,scb,this.cColorFade); if (this.sCircle <= 2){ api.drawInstance("pointsC"); }else{ for(var k = 0; k < fnShape[this.sCircle-3]; k++){ api.drawInstance("points"+k); } } } } api.translate (-this.offsetX,-this.offsetY); api.Color (kStrokeColor, cr,cg,cb,this.cColorFade); api.Color (kFillColor, cr,cg,cb,this.cColorFade); api.scale(1,-1); //right top api.translate (outputSizeX,0); api.translate (this.offsetX,this.offsetY); if ( (this.flip && this.pr < 1/this.boxRatio) || (!this.flip && this.pr > (1-1/this.boxRatio))){ if (this.curveVisible){ api.lineWidth (0.01); api.Color (kStrokeColor, cr,cg,cb,this.cColorFade); api.Color (kFillColor, cr,cg,cb,this.cColorFade); api.drawInstance("pointsA"); } if (this.sCircle > 0 && this.cContinuous == 0){ api.Color (kStrokeColor, scr,scg,scb,this.cColorFade); api.Color (kFillColor, scr,scg,scb,this.cColorFade); if (this.sCircle <= 2){ api.drawInstance("pointsC"); }else{ for(var k = 0; k < fnShape[this.sCircle-3]; k++){ api.drawInstance("points"+k); } } } } api.translate (-this.offsetX,-this.offsetY); api.translate (-outputSizeX,0); api.scale(1,-1) api.popMatrix() } api.command(kpsFinishTask); } } function ModuleLeaf(parameters, angle, x, y, leaves, flip, pr, boxRatio, objAngleSnap, cColorFade, offsetX, offsetY) { this.offsetX = offsetX; this.offsetY = offsetY; this.parameters = parameters; this.angle = angle; this.x = x; this.y =y; this.leaves = leaves; this.flip = flip; this.pr = pr; this.boxRatio = boxRatio; this.objAngleSnap = objAngleSnap; this.lPoints = new Array(); var rand = 1+(Engine.rand()-0.5)*leaves[10]; this.lr = leaves[7] *rand; this.lg = leaves[8] *rand; this.lb = leaves[9] *rand; if (this.lr>1) this.lr = 1; if (this.lg>1) this.lg = 1; if (this.lb>1) this.lb = 1; this.cColorFade = cColorFade; } ModuleLeaf.prototype.produce = function (system) { return kDontCallAgain; } ModuleLeaf.prototype.render = function (api, env) { if(this.objAngleSnap) this.angle = 3.14/4; var leavesSize = this.leaves[3]; var pattern = this.leaves[1]; var width = this.leaves[4]; var reverse = this.leaves[5]; var leavesRandom = this.leaves[6]; if(!reverse){ var x0 = shape[pattern][0]; var y0 = shape[pattern][1]; } else { var x0 = shape[pattern][shape[pattern].length-2]; var y0 = shape[pattern][shape[pattern].length-1]; this.angle -= 3.14; } this.angle += 3.14*3/4; var size = ((Engine.rand()-0.5)*leavesRandom*leavesSize)+leavesSize; for (i = 0; i < shape[pattern].length-2; i += 2){ var x1= (shape[pattern][i] - x0)*size * width; var y1 = (shape[pattern][i+1] - y0)*size; var x2 = x1*Math.cos(this.angle) - y1*Math.sin(this.angle); var y2 = x1*Math.sin(this.angle) + y1*Math.cos(this.angle); this.lPoints.push(new Vector3(this.x + x2, this.y+ y2, 0.25)); } for (i = shape[pattern].length - 2; i > 0; i -= 2){ var x1= -(shape[pattern][i] - x0)*size *width; var y1 = (shape[pattern][i+1] - y0)*size; var x2 = x1*Math.cos(this.angle) - y1*Math.sin(this.angle); var y2 = x1*Math.sin(this.angle) + y1*Math.cos(this.angle); this.lPoints.push(new Vector3(this.x + x2, this.y+ y2, 0.25)); } api.pushMatrix(); frame = new Frame3(); api.setFrame(frame); if (api.instanceExists("leaf")) // instance api.deleteInstance("leaf"); if (api.defineInstance("leaf")) { api.lineWidth (0.1); api.Polygon( this.lPoints ); api.endInstance(); } api.popMatrix(); this.angle = 0; api.pushMatrix(); api.scale(frameScale,frameScale,frameScale); if(!this.objAngleSnap) api.rotate(this.angle); api.Color (kStrokeColor, this.lr,this.lg,this.lb, this.cColorFade); // top left api.lineWidth (0.1); api.Color (kFillColor, this.lr,this.lg,this.lb, this.cColorFade); api.translate (this.offsetX, this.offsetY); if ( (this.flip && this.pr < this.boxRatio) || (!this.flip && this.pr >(1-this.boxRatio))) api.drawInstance("leaf"); api.translate (-this.offsetX, -this.offsetY); api.scale(-1,1); //top right api.translate (outputSizeX,0); api.translate (this.offsetX, this.offsetY); if ( (this.flip && this.pr < this.boxRatio) || (!this.flip && this.pr >(1-this.boxRatio))) api.drawInstance("leaf"); api.translate (-this.offsetX, -this.offsetY); api.translate (-outputSizeX,0); api.scale(-1,1) api.scale(1,-1); //bottom left api.translate (0, outputSizeY); api.translate (this.offsetX, this.offsetY); if ( (this.flip && this.pr < this.boxRatio) || (!this.flip && this.pr >(1-this.boxRatio))) api.drawInstance("leaf"); api.translate (-this.offsetX, -this.offsetY); api.scale(-1,1); //bottom right api.translate (+outputSizeX,0); api.translate (this.offsetX, this.offsetY); if ( (this.flip && this.pr < this.boxRatio) || (!this.flip && this.pr >(1-this.boxRatio))) api.drawInstance("leaf"); api.translate (-this.offsetX, -this.offsetY); api.translate (-outputSizeX,0); api.scale(-1,1) api.translate (0, -outputSizeY); api.rotate(-90); //left top api.translate (this.offsetX, this.offsetY); if ( (this.flip && this.pr < 1/this.boxRatio) || (!this.flip && this.pr > (1-1/this.boxRatio))) api.drawInstance("leaf"); api.translate (-this.offsetX, -this.offsetY); api.scale(1,-1); //right top api.translate (outputSizeX,0); api.translate (this.offsetX, this.offsetY); if ( (this.flip && this.pr < 1/this.boxRatio) || (!this.flip && this.pr > (1-1/this.boxRatio))) api.drawInstance("leaf"); api.translate (-this.offsetX, -this.offsetY); api.translate (-outputSizeX,0); api.scale(1,-1); api.scale(-1,1); // left bottom api.translate (0,outputSizeY); api.translate (this.offsetX, this.offsetY); if ( (this.flip && this.pr < 1/this.boxRatio) || (!this.flip && this.pr > (1-1/this.boxRatio))) api.drawInstance("leaf"); api.translate (-this.offsetX, -this.offsetY); api.scale(1,-1); //right top api.translate (outputSizeX,0); api.translate (this.offsetX, this.offsetY); if ( (this.flip && this.pr < 1/this.boxRatio) || (!this.flip && this.pr > (1-1/this.boxRatio))) api.drawInstance("leaf"); api.translate (-this.offsetX, -this.offsetY); api.translate (-outputSizeX,0); api.scale(1,-1); api.popMatrix() } function ModuleLine (api,x,y, x1,y1, size, cr,cg,cb, depth) { var lenX = Math.abs(x1-x); var lenY = Math.abs(y1-y); var exX = 0; var exY =0; if (lenX == 0){ exX = 0; exY = 1; }else if (lenY == 0){ exX = 1; exY = 0; }else if (lenX > lenY){ exX = 1; exY = lenY/lenX; }else{ exY = 1; exX = lenX/lenY; } var exX0 = 0; var exY0 = 0; var exX1 = 0; var exY1 = 0; if (x1 > x){ exX0 = -exX; exX1 = exX; }else{ exX0 = exX; exX1 = -exX; } if (y1 > y){ exY0 = -exY; exY1 = exY; }else{ exY0 = exY; exY1 = -exY; } this.x0 = x + exX0; this.y0 = y + exY0; this.x1 = x1 + exX1; this.y1 = y1 + exY1; this.w = size; this.cr = cr; this.cg = cg; this.cb = cb; this.depth = depth; } ModuleLine.prototype.produce = function (system) { return kDontCallAgain; } ModuleLine.prototype.render = function (api, env) { var len = Math.sqrt (Math.pow(this.x1-this.x0,2) + Math.pow(this.y1-this.y0,2)); var sx = (this.y1-this.y0)*this.w/len; var sy = (this.x1-this.x0)*this.w/len; var t = new Array; t = [ new Vector3(this.x0-sx,this.y0+sy, this.depth), new Vector3(this.x0+sx,this.y0-sy, this.depth), new Vector3(this.x1+sx,this.y1-sy, this.depth), new Vector3(this.x1-sx,this.y1+sy, this.depth) ]; api.Color (kStrokeColor, this.cr,this.cg,this.cb,1) api.lineWidth (0.0001) api.Color (kFillColor, this.cr,this.cg,this.cb,1) api.Polygon( t ) } function tLine(api,x0,y0,x1,y1, w, cr,cg,cb) { var len = Math.sqrt (Math.abs(Math.pow(x1-x0,2) + Math.pow(y1-y0,2))); var sx = (y1-y0)*w/len; var sy = (x1-x0)*w/len; var t = new Array; t = [ new Vector3(x0-sx,y0+sy), new Vector3(x0+sx,y0-sy), new Vector3(x1+sx,y1-sy), new Vector3(x1-sx,y1+sy) ]; api.Color (kStrokeColor, cr,cg,cb,1) api.lineWidth (0.01) api.Color (kFillColor, cr,cg,cb,1) api.Polygon( t ) } function tBox(api, boxType, gap, x0,y0,x1,y1, w, r, cr,cg,cb, offsetX, offsetY, cornerSize) { x0 += offsetX; x1 += offsetX; y0 += offsetY; y1 += offsetY; ex0 = x0+w; // edge of the x and y ; this is done, so when margin is 0, it renders full size ey0 = y0+w; ex1 = x1-w; ey1 = y1-w; x0 += 1; // 1 dot error correction x1 -= 1; y0 += 1; y1 -= 1; switch(boxType) { case 0: // simple box Engine.addModule(new ModuleLine(api, x0,ey0, x1,ey0,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0,y0, ex0,y1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1,y0, ex1,y1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, x0,ey1, x1,ey1,w,cr,cg,cb,0 )); break; case 1: // double box Engine.addModule(new ModuleLine(api, x0,ey0, x1,ey0,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0,y0, ex0,y1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1,y0, ex1,y1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, x0,ey1, x1,ey1,w,cr,cg,cb,0 )); w /= 2; Engine.addModule(new ModuleLine(api, x0,ey0+gap, x1,ey0+gap,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0+gap,y0, ex0+gap,y1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1-gap,y0, ex1-gap,y1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, x0,ey1-gap, x1,ey1-gap,w,cr,cg,cb,0 )); break; case 2: // round box Engine.addModule(new ModuleLine(api, ex0+r,ey0, ex1-r,ey0,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0,ey0+r, ex0,ey1-r,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1,ey0+r, ex1,ey1-r,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0+r,ey1, ex1-r,ey1,w,cr,cg,cb,0 )); var cx0 = 0; var cy0 = 0; var cx1 = 0; var cy1 = 0; for (var c = 0.1; c <= 3.3/2; c+= 0.1){ cx0 = Math.cos(c)*r; cy0 = Math.sin(c)*r; cx1 = Math.cos(c-0.11)*r; cy1 = Math.sin(c-0.11)*r; Engine.addModule(new ModuleLine(api, ex0+r - cx0, ey0+r - cy0, ex0+r - cx1, ey0+r -cy1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1-r + cx0, ey0+r - cy0, ex1-r + cx1, ey0+r -cy1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1-r + cx0, ey1-r + cy0, ex1-r + cx1, ey1-r +cy1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0+r - cx0, ey1-r + cy0, ex0+r - cx1, ey1-r +cy1,w,cr,cg,cb,0 )); } break; case 3: // round box 2 Engine.addModule(new ModuleLine(api, ex0+r-w+1,ey0, ex1-r+w-1,ey0,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0,ey0+r-w+1, ex0,ey1-r+w-1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1,ey0+r-w+1, ex1,ey1-r+w-1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0+r-w+1,ey1, ex1-r+w-1,ey1,w,cr,cg,cb,0 )); var cx0 = 0; var cy0 = 0; var cx1 = 0; var cy1 = 0; for (var c = 0.12; c <= 3.14/2; c+= 0.1){ cx0 = Math.cos(c)*r; cy0 = Math.sin(c)*r; cx1 = Math.cos(c-0.12)*r; cy1 = Math.sin(c-0.12)*r; Engine.addModule(new ModuleLine(api, ex1 - cx0, ey1 - cy0, ex1 - cx1, ey1 -cy1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0, ey1 - cy0, ex0 + cx1, ey1 -cy1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0, ey0 + cy0, ex0 + cx1, ey0 +cy1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1 - cx0, ey0 + cy0, ex1 - cx1, ey0 +cy1,w,cr,cg,cb,0 )); } c = 3.14/2; cx0 = Math.cos(c)*r; cy0 = Math.sin(c)*r; cx1 = Math.cos(c-0.12)*r; cy1 = Math.sin(c-0.12)*r; Engine.addModule(new ModuleLine(api, ex1 - cx0, ey1 - cy0, ex1 - cx1, ey1 -cy1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0, ey1 - cy0, ex0 + cx1, ey1 -cy1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0, ey0 + cy0, ex0 + cx1, ey0 +cy1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1 - cx0, ey0 + cy0, ex1 - cx1, ey0 +cy1,w,cr,cg,cb,0 )); break; case 4: // round box 2 var r1 = r/2; var smallEdge = cornerSize; var edge = r1 *1.5;//+ smallEdge; Engine.addModule(new ModuleLine(api, ex0+r1-w+1 +edge,ey0, ex1-r1+w-1 -edge,ey0,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0,ey0+r1-w+1 +edge, ex0,ey1-r1+w-1 -edge,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1,ey0+r1-w+1 +edge, ex1,ey1-r1+w-1 -edge,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0+r1-w+1 +edge,ey1, ex1-r1+w-1 -edge,ey1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0+r1-w+1 ,ey0 + edge, ex0+edge+w-1 ,ey0+edge,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1-edge -w+1,ey0 + edge, ex1-r1+w-1 ,ey0+edge,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0+edge,ey0+r1-w+1 , ex0+edge, ey0+edge +w-1 ,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0+edge,ey1-edge -w+1, ex0+edge,ey1-r1+w-1 ,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1-edge,ey0+r1-w+1 , ex1-edge,ey0+edge +w-1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1-edge,ey1-edge -w+1, ex1-edge,ey1-r1+w-1 ,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0+r1-w+1 ,ey1-edge, ex0+edge +w-1,ey1-edge,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1-edge-w+1 ,ey1-edge, ex1-r1+w-1 ,ey1-edge,w,cr,cg,cb,0 )); var cx0 = 0; var cy0 = 0; var cx1 = 0; var cy1 = 0; for (var c = 0.12; c <= 3.14/2; c+= 0.1){ cx0 = Math.cos(c)*r1; cy0 = Math.sin(c)*r1; cx1 = Math.cos(c-0.12)*r1; cy1 = Math.sin(c-0.12)*r1; Engine.addModule(new ModuleLine(api, ex1 - cx0 -edge, ey1 - cy0, ex1 - cx1 -edge, ey1 -cy1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0 +edge, ey1 - cy0, ex0 + cx1 +edge, ey1 -cy1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0 +edge, ey0 + cy0, ex0 + cx1 +edge, ey0 +cy1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1 - cx0 -edge, ey0 + cy0, ex1 - cx1 -edge, ey0 +cy1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1 - cx0 , ey1 - cy0-edge, ex1 - cx1, ey1 -cy1 -edge,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0 , ey1 - cy0-edge, ex0 + cx1, ey1 -cy1 -edge,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0 , ey0 + cy0+edge, ex0 + cx1, ey0 +cy1 +edge,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1 - cx0 , ey0 + cy0+edge, ex1 - cx1, ey0 +cy1 +edge,w,cr,cg,cb,0 )); } c = 3.14/2; cx0 = Math.cos(c)*r1; cy0 = Math.sin(c)*r1; cx1 = Math.cos(c-0.12)*r1; cy1 = Math.sin(c-0.12)*r1; Engine.addModule(new ModuleLine(api, ex1 - cx0 -edge, ey1 - cy0, ex1 - cx1 -edge, ey1 -cy1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0 +edge, ey1 - cy0, ex0 + cx1 +edge, ey1 -cy1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0 +edge, ey0 + cy0, ex0 + cx1 +edge, ey0 +cy1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1 - cx0 -edge, ey0 + cy0, ex1 - cx1 -edge, ey0 +cy1,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1 - cx0 , ey1 - cy0-edge, ex1 - cx1, ey1 -cy1 -edge,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0 , ey1 - cy0-edge, ex0 + cx1, ey1 -cy1 -edge,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0 , ey0 + cy0+edge, ex0 + cx1, ey0 +cy1 +edge,w,cr,cg,cb,0 )); Engine.addModule(new ModuleLine(api, ex1 - cx0 , ey0 + cy0+edge, ex1 - cx1, ey0 +cy1 +edge,w,cr,cg,cb,0 )); break; } } function artBox(api, boxType, flip, ax0, ay0, ax1, ay1, x0,y0,x1,y1, w, r, r1, cr,cg,cb, offsetX, offsetY, cornerSize, spec) // spec = -1 ~ +1 angle of surface , ax0,ay0,ax1,ay1 .. these are the locations for center of the arch when the arch is reverced { x0 += offsetX; x1 += offsetX; y0 += offsetY; y1 += offsetY; ex0 = x0+w; // edge of the x and y ; this is done, so when margin is 0, it renders full size ey0 = y0+w; ex1 = x1-w; ey1 = y1-w; x0 += 1; // 1 dot error correction x1 -= 1; y0 += 1; y1 -= 1; ax0 += offsetX; ax1 += offsetX; ay0 += offsetY; ay1 += offsetY; aex0 = ax0+w; // edge of the x and y ; this is done, so when margin is 0, it renders full size aey0 = ay0+w; aex1 = ax1-w; aey1 = ay1-w; cr1= shade(cr, spec); if(flip) cr2= cr1; else cr2= shade(cr, -spec); cg1= shade(cg, spec); if(flip) cg2 = cg1; else cg2= shade(cg, -spec); cb1= shade(cb, spec); if(flip) cb2=cb1; else cb2= shade(cb, -spec); switch(boxType) { case 0: // simple box Engine.addModule(new ModuleLine(api, x0,ey0, x1,ey0,w,cr1,cg1,cb1,0 )); Engine.addModule(new ModuleLine(api, ex0,y0, ex0,y1,w,cr1,cg1,cb1,0 )); Engine.addModule(new ModuleLine(api, ex1,y0, ex1,y1,w,cr2,cg2,cb2,0 )); Engine.addModule(new ModuleLine(api, x0,ey1, x1,ey1,w,cr2,cg2,cb2,0 )); break; case 1: // dummy Engine.addModule(new ModuleLine(api, x0,ey0, x1,ey0,w,cr1,cg1,cb1,0 )); Engine.addModule(new ModuleLine(api, ex0,y0, ex0,y1,w,cr1,cg1,cb1,0 )); Engine.addModule(new ModuleLine(api, ex1,y0, ex1,y1,w,cr2,cg2,cb2,0 )); Engine.addModule(new ModuleLine(api, x0,ey1, x1,ey1,w,cr2,cg2,cb2,0 )); break; case 2: // round box Engine.addModule(new ModuleLine(api, ex0+r,ey0, ex1-r,ey0,w,cr1,cg1,cb1,0 )); Engine.addModule(new ModuleLine(api, ex0,ey0+r, ex0,ey1-r,w,cr1,cg1,cb1,0 )); Engine.addModule(new ModuleLine(api, ex1,ey0+r, ex1,ey1-r,w,cr2,cg2,cb2,0 )); Engine.addModule(new ModuleLine(api, ex0+r,ey1, ex1-r,ey1,w,cr2,cg2,cb2,0 )); var cx0 = 0; var cy0 = 0; var cx1 = 0; var cy1 = 0; var step = (Math.PI/2)/120; for (var c = step; c <= Math.PI/2; c+= step){ cx0 = Math.cos(c)*r; cy0 = Math.sin(c)*r; cx1 = Math.cos(c-step)*r; cy1 = Math.sin(c-step)*r; crA= valueChange(cr1, cr2, c/(Math.PI/2)); crB= valueChange(cr2, cr1, c/(Math.PI/2)); cgA= valueChange(cg1, cg2, c/(Math.PI/2)); cgB= valueChange(cg2, cg1, c/(Math.PI/2)); cbA= valueChange(cb1, cb2, c/(Math.PI/2)); cbB= valueChange(cb2, cb1, c/(Math.PI/2)); Engine.addModule(new ModuleLine(api, ex0+r - cx0, ey0+r - cy0, ex0+r - cx1, ey0+r -cy1,w,cr1,cg1,cb1,0 )); Engine.addModule(new ModuleLine(api, ex1-r + cx0, ey0+r - cy0, ex1-r + cx1, ey0+r -cy1,w,crB,cgB,cbB,0 )); Engine.addModule(new ModuleLine(api, ex1-r + cx0, ey1-r + cy0, ex1-r + cx1, ey1-r +cy1,w,cr2,cg2,cb2,0 )); Engine.addModule(new ModuleLine(api, ex0+r - cx0, ey1-r + cy0, ex0+r - cx1, ey1-r +cy1,w,crA,cgA,cbA,0 )); } break; case 3: // round box 2 r1a = r1-(r-r1)/2.35; r2 = r1+Math.abs(ax0-x0); var a = Math.abs(ax0-x0); if (r2 == 0) var dAngle = 0; else var dAngle = Math.asin(a/r2); var step = (Math.PI/2-dAngle)/120; var atemp = Math.PI/2-dAngle -step-dAngle; if (dAngle < 0) dAngle = 0; else if (dAngle >= (Math.PI/2-step)/2) { Engine.addModule(new ModuleLine(api, x0,ey0, x1,ey0,w,cr1,cg1,cb1,0 )); Engine.addModule(new ModuleLine(api, ex0,y0, ex0,y1,w,cr1,cg1,cb1,0 )); Engine.addModule(new ModuleLine(api, ex1,y0, ex1,y1,w,cr2,cg2,cb2,0 )); Engine.addModule(new ModuleLine(api, x0,ey1, x1,ey1,w,cr2,cg2,cb2,0 )); break; } Engine.addModule(new ModuleLine(api, ex0+r1a-w+1.5,ey0, ex1-r1a+w-1.5,ey0,w,cr1,cg1,cb1,-0.3 )); Engine.addModule(new ModuleLine(api, ex0,ey0+r1a-w+1.5, ex0,ey1-r1a+w-1.5,w,cr1,cg1,cb1,-0.3 )); Engine.addModule(new ModuleLine(api, ex1,ey0+r1a-w+1.5, ex1,ey1-r1a+w-1.5,w,cr2,cg2,cb2,-0.3 )); Engine.addModule(new ModuleLine(api, ex0+r1a-w+1.5,ey1, ex1-r1a+w-1.5,ey1,w,cr2,cg2,cb2,-0.3 )); //Engine.message(w, " ", step) var cx0 = 0; var cy0 = 0; var cx1 = 0; var cy1 = 0; var w1 = ((Math.PI/2-step)/2 - dAngle)*1.25; if (w1 <= 0.55) w1 = 0.55; for (var c = step+dAngle; c <= Math.PI/2-dAngle; c+= step){ cx0 = Math.cos(c)*r2; cy0 = Math.sin(c)*r2; cx1 = Math.cos(c-step)*r2; cy1 = Math.sin(c-step)*r2; crA= valueChange(cr1, cr2, (c-step-dAngle)/atemp); crB= valueChange(cr2, cr1, (c-step-dAngle)/atemp); cgA= valueChange(cg1, cg2, (c-step-dAngle)/atemp); cgB= valueChange(cg2, cg1, (c-step-dAngle)/atemp); cbA= valueChange(cb1, cb2, (c-step-dAngle)/atemp); cbB= valueChange(cb2, cb1, (c-step-dAngle)/atemp); Engine.addModule(new ModuleLine(api, aex1 - cx0, aey1 - cy0, aex1 - cx1, aey1 -cy1,w1,cr2,cg2,cb2,-0.1 )); Engine.addModule(new ModuleLine(api, aex0 + cx0, aey1 - cy0, aex0 + cx1, aey1 -cy1,w1,crB,cgB,cbB,-0.1 )); Engine.addModule(new ModuleLine(api, aex0 + cx0, aey0 + cy0, aex0 + cx1, aey0 +cy1,w1,cr1,cg1,cb1,-0.1 )); Engine.addModule(new ModuleLine(api, aex1 - cx0, aey0 + cy0, aex1 - cx1, aey0 +cy1,w1,crA,cgA,cbA,-0.1 )); } c = Math.PI/2-dAngle; cx0 = Math.cos(c)*r2; cy0 = Math.sin(c)*r2; cx1 = Math.cos(c-step/2)*r2; cy1 = Math.sin(c-step/2)*r2; crA= valueChange(cr1, cr2, (c-step-dAngle)/atemp); crB= valueChange(cr2, cr1, (c-step-dAngle)/atemp); cgA= valueChange(cg1, cg2, (c-step-dAngle)/atemp); cgB= valueChange(cg2, cg1, (c-step-dAngle)/atemp); cbA= valueChange(cb1, cb2, (c-step-dAngle)/atemp); cbB= valueChange(cb2, cb1, (c-step-dAngle)/atemp); Engine.addModule(new ModuleLine(api, aex1 - cx0, aey1 - cy0, aex1 - cx1, aey1 -cy1,w1,cr2,cg2,cb2,0.5 )); Engine.addModule(new ModuleLine(api, aex0 + cx0, aey1 - cy0, aex0 + cx1, aey1 -cy1,w1,crB,cgB,cbB,0.5 )); Engine.addModule(new ModuleLine(api, aex0 + cx0, aey0 + cy0, aex0 + cx1, aey0 +cy1,w1,cr1,cg1,cb1,0.5 )); Engine.addModule(new ModuleLine(api, aex1 - cx0, aey0 + cy0, aex1 - cx1, aey0 +cy1,w1,crA,cgA,cbA,0.5 )); break; case 4: // round box 2 var r1 = r/2; var smallEdge = cornerSize; var edge = r1*1.5;// + smallEdge; Engine.addModule(new ModuleLine(api, ex0+r1-w+1 +edge,ey0, ex1-r1+w-1 -edge,ey0,w,cr1,cg1,cb1,0 )); Engine.addModule(new ModuleLine(api, ex0,ey0+r1-w+1 +edge, ex0,ey1-r1+w-1 -edge,w,cr1,cg1,cb1,0 )); Engine.addModule(new ModuleLine(api, ex1,ey0+r1-w+1 +edge, ex1,ey1-r1+w-1 -edge,w,cr2,cg2,cb2,0 )); Engine.addModule(new ModuleLine(api, ex0+r1-w+1 +edge,ey1, ex1-r1+w-1 -edge,ey1,w,cr2,cg2,cb2,0 )); Engine.addModule(new ModuleLine(api, ex0+r1-w+1 ,ey0 + edge, ex0+edge+w-1 ,ey0+edge,w,cr1,cg1,cb1,0 )); Engine.addModule(new ModuleLine(api, ex1-edge -w+1,ey0 + edge, ex1-r1+w-1 ,ey0+edge,w,cr1,cg1,cb1,0 )); Engine.addModule(new ModuleLine(api, ex0+edge,ey0+r1-w+1 , ex0+edge, ey0+edge +w-1 ,w,cr1,cg1,cb1,0 )); Engine.addModule(new ModuleLine(api, ex0+edge,ey1-edge -w+1, ex0+edge,ey1-r1+w-1 ,w,cr1,cg1,cb1,0 )); Engine.addModule(new ModuleLine(api, ex1-edge,ey0+r1-w+1 , ex1-edge,ey0+edge +w-1,w,cr2,cg2,cb2,0 )); Engine.addModule(new ModuleLine(api, ex1-edge,ey1-edge -w+1, ex1-edge,ey1-r1+w-1 ,w,cr2,cg2,cb2,0 )); Engine.addModule(new ModuleLine(api, ex0+r1-w+1 ,ey1-edge, ex0+edge +w-1,ey1-edge,w,cr2,cg2,cb2,0 )); Engine.addModule(new ModuleLine(api, ex1-edge-w+1 ,ey1-edge, ex1-r1+w-1 ,ey1-edge,w,cr2,cg2,cb2,0 )); var cx0 = 0; var cy0 = 0; var cx1 = 0; var cy1 = 0; var step = (Math.PI/2)/40; for (var c = step; c <= Math.PI/2; c+= step){ cx0 = Math.cos(c)*r1; cy0 = Math.sin(c)*r1; cx1 = Math.cos(c-step)*r1; cy1 = Math.sin(c-step)*r1; crA= valueChange(cr1, cr2, c/(Math.PI/2)); crB= valueChange(cr2, cr1, c/(Math.PI/2)); cgA= valueChange(cg1, cg2, c/(Math.PI/2)); cgB= valueChange(cg2, cg1, c/(Math.PI/2)); cbA= valueChange(cb1, cb2, c/(Math.PI/2)); cbB= valueChange(cb2, cb1, c/(Math.PI/2)); Engine.addModule(new ModuleLine(api, ex1 - cx0 -edge, ey1 - cy0, ex1 - cx1 -edge, ey1 -cy1,w,cr2,cg2,cb2,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0 +edge, ey1 - cy0, ex0 + cx1 +edge, ey1 -cy1,w,crB,cgB,cbB,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0 +edge, ey0 + cy0, ex0 + cx1 +edge, ey0 +cy1,w,cr1,cg1,cb1,0 )); Engine.addModule(new ModuleLine(api, ex1 - cx0 -edge, ey0 + cy0, ex1 - cx1 -edge, ey0 +cy1,w,crA,cgA,cbA,0 )); Engine.addModule(new ModuleLine(api, ex1 - cx0 , ey1 - cy0-edge, ex1 - cx1, ey1 -cy1 -edge,w,cr2,cg2,cb2,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0 , ey1 - cy0-edge, ex0 + cx1, ey1 -cy1 -edge,w,crB,cgB,cbB,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0 , ey0 + cy0+edge, ex0 + cx1, ey0 +cy1 +edge,w,cr1,cg1,cb1,0 )); Engine.addModule(new ModuleLine(api, ex1 - cx0 , ey0 + cy0+edge, ex1 - cx1, ey0 +cy1 +edge,w,crA,cgA,cbA,0 )); } c = Math.PI/2; cx0 = Math.cos(c)*r1; cy0 = Math.sin(c)*r1; cx1 = Math.cos(c-step)*r1; cy1 = Math.sin(c-step)*r1; Engine.addModule(new ModuleLine(api, ex1 - cx0 -edge, ey1 - cy0, ex1 - cx1 -edge, ey1 -cy1,w,cr2,cg2,cb2,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0 +edge, ey1 - cy0, ex0 + cx1 +edge, ey1 -cy1,w,crB,cgB,cbB,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0 +edge, ey0 + cy0, ex0 + cx1 +edge, ey0 +cy1,w,cr1,cg1,cb1,0 )); Engine.addModule(new ModuleLine(api, ex1 - cx0 -edge, ey0 + cy0, ex1 - cx1 -edge, ey0 +cy1,w,crA,cgA,cbA,0 )); Engine.addModule(new ModuleLine(api, ex1 - cx0 , ey1 - cy0-edge, ex1 - cx1, ey1 -cy1 -edge,w,cr2,cg2,cb2,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0 , ey1 - cy0-edge, ex0 + cx1, ey1 -cy1 -edge,w,crB,cgB,cbB,0 )); Engine.addModule(new ModuleLine(api, ex0 + cx0 , ey0 + cy0+edge, ex0 + cx1, ey0 +cy1 +edge,w,cr1,cg1,cb1,0 )); Engine.addModule(new ModuleLine(api, ex1 - cx0 , ey0 + cy0+edge, ex1 - cx1, ey0 +cy1 +edge,w,crA,cgA,cbA,0 )); break; case 5: // round box 2 Engine.addModule(new ModuleLine(api, ex0+r-w+1,ey0, ex1-r+w-1,ey0,w,cr1,cg1,cb1,0)); Engine.addModule(new ModuleLine(api, ex0,ey0+r-w+1, ex0,ey1-r+w-1,w,cr1,cg1,cb1,0)); Engine.addModule(new ModuleLine(api, ex1,ey0+r-w+1, ex1,ey1-r+w-1,w,cr2,cg2,cb2,0)); Engine.addModule(new ModuleLine(api, ex0+r-w+1,ey1, ex1-r+w-1,ey1,w,cr2,cg2,cb2,0)); var cx0 = 0; var cy0 = 0; var cx1 = 0; var cy1 = 0; var step = (Math.PI/2)/60; for (var c = step; c <= Math.PI/2; c+= step){ cx0 = Math.cos(c)*r; cy0 = Math.sin(c)*r; cx1 = Math.cos(c-step)*r; cy1 = Math.sin(c-step)*r; crA= valueChange(cr1, cr2, c/(Math.PI/2)); crB= valueChange(cr2, cr1, c/(Math.PI/2)); cgA= valueChange(cg1, cg2, c/(Math.PI/2)); cgB= valueChange(cg2, cg1, c/(Math.PI/2)); cbA= valueChange(cb1, cb2, c/(Math.PI/2)); cbB= valueChange(cb2, cb1, c/(Math.PI/2)); Engine.addModule(new ModuleLine(api, ex1 - cx0, ey1 - cy0, ex1 - cx1, ey1 -cy1,w,cr2,cg2,cb2,0)); Engine.addModule(new ModuleLine(api, ex0 + cx0, ey1 - cy0, ex0 + cx1, ey1 -cy1,w,crB,cgB,cbB,0)); Engine.addModule(new ModuleLine(api, ex0 + cx0, ey0 + cy0, ex0 + cx1, ey0 +cy1,w,cr1,cg1,cb1,0)); Engine.addModule(new ModuleLine(api, ex1 - cx0, ey0 + cy0, ex1 - cx1, ey0 +cy1,w,crA,cgA,cbA,0)); } c = Math.PI/2; cx0 = Math.cos(c)*r; cy0 = Math.sin(c)*r; cx1 = Math.cos(c-step)*r; cy1 = Math.sin(c-step)*r; Engine.addModule(new ModuleLine(api, ex1 - cx0, ey1 - cy0, ex1 - cx1, ey1 -cy1,w,cr2,cg2,cb2,0)); Engine.addModule(new ModuleLine(api, ex0 + cx0, ey1 - cy0, ex0 + cx1, ey1 -cy1,w,crB,cgB,cbB,0)); Engine.addModule(new ModuleLine(api, ex0 + cx0, ey0 + cy0, ex0 + cx1, ey0 +cy1,w,cr1,cg1,cb1,0)); Engine.addModule(new ModuleLine(api, ex1 - cx0, ey0 + cy0, ex1 - cx1, ey0 +cy1,w,crA,cgA,cbA,0)); break; } } function shade(cr, spec) { spec = spec*0.8+0.1; if (spec >= 0) a = cr + (1-cr)*spec; else a = cr + cr*spec; return a; } function valueChange(a, b, l) // l= 0-1 if l=0 .. returns a, if l=1 returns b if between, returns between a and b { return (a*(1-l) + b*l); } function positionX( shapeType, value, flip, margin, width, repeatN, curveRatio, boxRatio) { var cValue = value; if (!flip) cValue = repeatN - value; return cValue*(outputSizeX/2-margin)/10 + margin; } function positionY( shapeType, value, flip, margin, width, repeatN, curveRatio, boxRatio) { var cValue = value; if (!flip) cValue = repeatN - value; switch(shapeType) { case 1: // straight return margin; break; case 2: // sine curve return Math.sin(cValue* curveRatio * (outputSizeX/2-margin)/ ((outputSizeX+outputSizeY)/10))*width + margin; break; case 3: // cosine curve return Math.cos(cValue* curveRatio * (outputSizeX/2-margin) /((outputSizeX+outputSizeY)/10))*width + margin; break; } } var shrinkPreview = 1 // set to 0 to keep preview rectangular var originOutputSize = RenderAPI.getParameter(kpsSize) var previewOutputSize = new Vector2(256, 256) var previewOutputOrigin = new Vector2(0, 0) if (originOutputSize.x < originOutputSize.y) { previewOutputSize = new Vector2(256 * originOutputSize.x / originOutputSize.y , 256) previewOutputOrigin = new Vector2(128 * (1 - originOutputSize.x / originOutputSize.y) ,0) } else if (originOutputSize.x > originOutputSize.y) { previewOutputSize = new Vector2(256, 256 * originOutputSize.y / originOutputSize.x) previewOutputOrigin = new Vector2(0, 128 * (1 - originOutputSize.y / originOutputSize.x)) } var shrinkPreview = 1 // set to 0 to keep preview rectangular var originOutputSize = RenderAPI.getParameter(kpsSize) var previewSize = 400 var previewOutputSize = new Vector2(previewSize, previewSize) var previewOutputOrigin = new Vector2(0, 0) var aspectRatio = originOutputSize.x / originOutputSize.y if (originOutputSize.x < originOutputSize.y) { if (aspectRatio < 0.5) aspectRatio = 0.5 previewOutputSize = new Vector2(previewSize * aspectRatio , previewSize) previewOutputOrigin = new Vector2(previewSize * 0.5 * (1 - aspectRatio) ,0) } else if (originOutputSize.x > originOutputSize.y) { if (aspectRatio > 2) aspectRatio = 2 previewOutputSize = new Vector2(previewSize, previewSize / aspectRatio) previewOutputOrigin = new Vector2(0, previewSize * 0.5 * (1 - 1 / aspectRatio)) } function run (api, parameters, scale) { Engine.rand(parameters.arrange); // get the size of the output area if (parameters == previewParameters && shrinkPreview) { api.setParameter (kpsSize, previewOutputSize); api.setParameter (kpsOrigin, previewOutputOrigin); outputSize = previewOutputSize; outputOrigin = previewOutputOrigin; outputSizeX = outputSize.x; outputSizeY = outputSize.y; } else { var outputSize = api.getParameter(kpsSize); var outputOrigin = api.getParameter(kpsOrigin); var visibleSize = api.getParameter(kpsVisibleSize); var visibleOrigin = api.getParameter(kpsVisibleOrigin); if (outputSize.x > visibleSize.x || outputSize.y > visibleSize.y){ outputSizeX = visibleSize.x; outputSizeY = visibleSize.y; }else{ outputSizeX = outputSize.x; outputSizeY = outputSize.y; } //Engine.message(outputOrigin.x, " ", outputOrigin.y, " ", visibleOrigin.x, " ", visibleOrigin.y); // get the location of the top left corner of the bounding rectangle around the selected area } if(outputOrigin.x < 0 || outputOrigin.y < 0){ offsetX = -outputOrigin.x; offsetY = -outputOrigin.y; }else{ offsetX = 0; offsetY = 0; } if(outputSizeX < 32 || outputSizeY < 32){ Engine.message( localize("$$$/DecoScripts/Frame/error1=The selection area must be more than 32 x 32 pixels.")) return; } if (outputSizeX > outputSizeY) frameScale = outputSizeY/1500; else frameScale = outputSizeX/1500; switch (parameters.frameNumber) { case 0: // simple curly plus dots2 frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/10; sSizeRandom = 1.5; // 0.. not random bigger number is more random sSizeRatio = 0.0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // if 1, no fading. if <1, fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 60; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 4; // pettern width increase/decrease ratio trunk = true; tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 20; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1,5]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 2; // 0 .. doesn't change tail = 30; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 0.. uniform no matter how big 1.. uniform related to the size, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.1; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0; // rotation angleRandom = 0.5; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = 55; // box line width artStyle = 0; break; case 1: // pretty vine frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 1500; sSize1 = parameters.size/20; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 0.999; // if 1, no fading. if <1, fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 4; // number of generation cgSizeRatio = -0.1; // the size of its child 0.. doesn't change cgSizeRandom = 0.1; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 35; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 3; // pettern width increase/decrease ratio trunk = false tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 20; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, 4 , 1, 1.2, 1, false, 1.5, 0/256, 0/256, 00/256, 0.5]; sLeaves = [0.00, 6 , 1, 1.5, 1.2, false, 1, 000/256, 000/256, 0/256, 0.5]; basePatternNumber = [1,5]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.1; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 30; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random (random doesn't work) patternRatio = 0.05; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.1; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = 100; // box line width artStyle = 0; break; case 2: // regular curly frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/10; sSizeRandom = 1.5; // 0.. not random bigger number is more random sSizeRatio = -0.1; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0.2; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 70; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 5; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 20; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, 4 , 1, 1.5, 0.8, false, 1, 0/256, 000/256, 00/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1,5]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/40; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 30; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.1; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.15; // rotation angleRandom = 0.3; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = 100; // box line width artStyle = 0; break; case 3: // party frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/20; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 4; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 65; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 3; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 3; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1,3]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/40; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 0; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.04; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = 100; // box line width artStyle = 0; break; case 4: // leaves 3 frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/10; sSizeRandom = 1.5; // 0.. not random bigger number is more random sSizeRatio = 0.0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 1; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 60; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 4; // pettern width increase/decrease ratio trunk = true; tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 15; // trunk swinging width var leavesRatio = 0.1; if (parameters.leafNumber == 0){ var leavesRatio = 0; parameters.leafNumber = 1; } //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [leavesRatio, parameters.leafNumber-1 , 1, parameters.leafSize/20, 0.8, false, 1, RenderAPI.getParameter(kpsForegroundColor).r, RenderAPI.getParameter(kpsForegroundColor).g, RenderAPI.getParameter(kpsForegroundColor).b, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1,5]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/40; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.2; // 0.. doesn't change sCircleSizeRandom = 0.5; // 0 .. doesn't change tail = 30; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.05; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0.5; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 5: // seahorse frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/10; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 1; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 4; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 55; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 100; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 3; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, 3 , 1, 2, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1,5]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 3; // 0 .. doesn't change tail = 0; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.05; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.1; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 6: // frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/10; sSizeRandom = 1; // 0.. not random bigger number is more random sSizeRatio = 0.00; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0.5; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 1; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 2; // number of generation cgSizeRatio = -0.0; // the size of its child 0.. doesn't change cgSizeRandom = 0; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 55; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 6; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 3; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 30; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, 20 , 1, 2, 0.8, false, 1, 255/256, 00/256, 00/256, 0.5]; sLeaves = [0.0, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [3,7]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 4; // 0 .. doesn't change tail = 0; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.1; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.1; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = true; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 7: // Curly Dance frame = new Frame2(); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/10; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 3; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 2; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 45; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 1; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 30; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/120; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 30; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.07; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 1; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = 100; // box line width artStyle = 0; break; case 8: // Curly wave frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/10; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 3; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 2; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 25; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = true; tWidth = parameters.width/5; trunkType = 1; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/40; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 6; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.07; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = 100; // box line width artStyle = 0; break; case 9: // spring weed frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/50; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = -3; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 2; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 25; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 3; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 3; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1,2, 3]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 30; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.04; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 10; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 10: // pop stars frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 1500; sSize1 = parameters.size/20; sSizeRandom = 1.5; // 0.. not random bigger number is more random sSizeRatio = 0.0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = -1; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 4; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 40; // number of points in one spiral pType = 1; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 20; // trunk swinging width var leavesRatio = 0.01; if (parameters.leafNumber == 0){ var leavesRatio = 0; parameters.leafNumber = 1; } //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [leavesRatio, parameters.leafNumber-1 , 1, parameters.leafSize/8, 0.8, false, 1, RenderAPI.getParameter(kpsForegroundColor).r, RenderAPI.getParameter(kpsForegroundColor).g, RenderAPI.getParameter(kpsForegroundColor).b, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [4,6]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/40; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.2; // 0.. doesn't change sCircleSizeRandom = 1; // 0 .. doesn't change tail = 0; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.15; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.1; // rotation angleRandom = 0.5; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 11: // chain frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 1500; sSize1 = parameters.size/40; sSizeRandom = 1.5; // 0.. not random bigger number is more random sSizeRatio = 0.0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 2; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 4; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 40; // number of points in one spiral pType = 5; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 20; // trunk swinging width var leavesRatio = 0.005; if (parameters.leafNumber == 0){ var leavesRatio = 0; parameters.leafNumber = 1; } //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [leavesRatio, parameters.leafNumber-1 , 1, parameters.leafSize/10, 0.8, false, 1, RenderAPI.getParameter(kpsForegroundColor).r, RenderAPI.getParameter(kpsForegroundColor).g, RenderAPI.getParameter(kpsForegroundColor).b, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [4,8]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/15; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.2; // 0.. doesn't change sCircleSizeRandom = 1; // 0 .. doesn't change tail = 20; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.05; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.1; // rotation angleRandom = 0.5; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 12: // curly vine 2 frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/8; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 2; // number of generation cgSizeRatio = -0.01; // the size of its child 0.. doesn't change cgSizeRandom = 0; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 55; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 3; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width var leavesRatio = 0.2; if (parameters.leafNumber == 0){ var leavesRatio = 0; parameters.leafNumber = 1; } //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [leavesRatio, parameters.leafNumber-1 , 1, parameters.leafSize/20, 0.8, false, 1, RenderAPI.getParameter(kpsForegroundColor).r, RenderAPI.getParameter(kpsForegroundColor).g, RenderAPI.getParameter(kpsForegroundColor).b, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1,3]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 3; // 0 .. doesn't change tail = 0; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.02; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.1; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 13: // geometric frame frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/10; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = -0.0; // the size of its child 0.. doesn't change cgSizeRandom = 0; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 55; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 1; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 30; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, 20 , 1, 2, 0.8, false, 1, 255/256, 00/256, 00/256, 0.5]; sLeaves = [0.0, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [6,10]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 4; // 0 .. doesn't change tail = 0; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.25; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.1; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = true; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 14: // frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/10; sSizeRandom = 0.5; // 0.. not random bigger number is more random sSizeRatio = 0.00; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 1; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 2; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = -0.0; // the size of its child 0.. doesn't change cgSizeRandom = 0; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 10; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 3; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 40; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, 20 , 1, 2, 0.8, false, 1, 255/256, 00/256, 00/256, 0.5]; sLeaves = [0.0, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1,-2,5,-6]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.2; // 0.. doesn't change sCircleSizeRandom = 0.5; // 0 .. doesn't change tail = 50; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.075; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = -0.1; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = true; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 15: // tree with leaves frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/20; sSizeRandom = 0.5; // 0.. not random bigger number is more random sSizeRatio = 0.00; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 1; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 2; // number of generation cgSizeRatio = 0.0; // the size of its child 0.. doesn't change cgSizeRandom = 0; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 20; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 3; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 40; // trunk swinging width var leavesRatio = 0.2; if (parameters.leafNumber == 0){ var leavesRatio = 0; parameters.leafNumber = 1; } //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [leavesRatio, parameters.leafNumber-1 , 1, parameters.leafSize/10, 0.8, false, 1, RenderAPI.getParameter(kpsForegroundColor).r, RenderAPI.getParameter(kpsForegroundColor).g, RenderAPI.getParameter(kpsForegroundColor).b, 0.5]; sLeaves = [0.0, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1,-2,5]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/40; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.15; // 0.. doesn't change sCircleSizeRandom = 1.5; // 0 .. doesn't change tail = 50; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.075; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = -0.1; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 16 : // simple curve lines frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/10; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // if 1, no fading. if <1, fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 35; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 1; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 30; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1,5]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/50; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 30; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 0.. uniform no matter how big 1.. uniform related to the size, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.07; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = 100; // box line width artStyle = 0; break; case 17: // leaves1 frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 1500; sSize1 = 1; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 1; // number of generation cgSizeRatio = -0.02; // the size of its child 0.. doesn't change cgSizeRandom = 0.2; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 2; marginRatio = (parameters.frameMargin-1)/222; spiral = 3; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 3; // pettern width increase/decrease ratio trunk = true tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = parameters.size/10 * 15; // trunk swinging width var leavesRatio = 5; if (parameters.leafNumber == 0){ var leavesRatio = 0; parameters.leafNumber = 1; } //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [leavesRatio, parameters.leafNumber-1 , 1, parameters.leafSize/20, 1, false, 2.5, RenderAPI.getParameter(kpsForegroundColor).r, RenderAPI.getParameter(kpsForegroundColor).g, RenderAPI.getParameter(kpsForegroundColor).b, 0.5]; sLeaves = [0.0, 1 , 1, 0.5, 1.2, false, 1, RenderAPI.getParameter(kpsForegroundColor).r, RenderAPI.getParameter(kpsForegroundColor).g, RenderAPI.getParameter(kpsForegroundColor).b, 0.5]; basePatternNumber = [-5]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.1; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 0; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random (random doesn't work) patternRatio = 0.1; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 18: // leaves 2 frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = 2.5; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0.0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 3; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 20; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 4; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = parameters.size/10 * 15; // trunk swinging width var leavesRatio = 0.1; if (parameters.leafNumber == 0){ var leavesRatio = 0; parameters.leafNumber = 1; } //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [leavesRatio, parameters.leafNumber-1 , 1, parameters.leafSize/10, 0.8, false, 1, RenderAPI.getParameter(kpsForegroundColor).r, RenderAPI.getParameter(kpsForegroundColor).g, RenderAPI.getParameter(kpsForegroundColor).b, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1,5]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.2; // 0.. doesn't change sCircleSizeRandom = 0; // 0 .. doesn't change tail = 5; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.075; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0.5; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 19: // frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/10; sSizeRandom = 0.5; // 0.. not random bigger number is more random sSizeRatio = 0.00; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0.2; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 1; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0.0; // the size of its child 0.. doesn't change cgSizeRandom = 0; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 40; // number of points in one spiral pType = 1; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 12; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 40; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.0, 3 , 1, 1.2, 0.8, false, 1, 40/256, 113/256, 18/256, 0.5]; sLeaves = [0.0, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1,5]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/7; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.15; // 0.. doesn't change sCircleSizeRandom = 0.5; // 0 .. doesn't change tail = 10; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.04; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = -0.1; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 20: // mustache frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 80; sSize1 = parameters.size/10; sSizeRandom = 0.5; // 0.. not random bigger number is more random sSizeRatio = 0.00; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0.8; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 0.99; // fading color of the curl cContinuous = 1; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 1; // number of generation cgSizeRatio = 0.0; // the size of its child 0.. doesn't change cgSizeRandom = 0; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 20; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 40; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.0, 3 , 1, 0.8, 0.8, false, 1, 40/256, 113/256, 18/256, 0.5]; sLeaves = [0.0, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1,5]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.15; // 0.. doesn't change sCircleSizeRandom = 0.5; // 0 .. doesn't change tail = 10; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.12; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = -0.1; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 21: // spread flowers frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/10; sSizeRandom = 1.5; // 0.. not random bigger number is more random sSizeRatio = -0.1; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0.2; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // if 1, no fading. if <1, fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = false; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 40; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 5; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 20; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, 10 , 1, 1.5, 0.8, false, 1, 0/256, 000/256, 00/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1,5]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 30; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.1; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.25; // rotation angleRandom = 0.3; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = 100; // box line width artStyle = 0; break; case 22: // aligned flower 1 frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/10; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = false; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = -0.01; // the size of its child 0.. doesn't change cgSizeRandom = 0; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 55; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 3; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0, parameters.leafNumber-1 , 1, parameters.leafSize/20, 0.8, true, 1, RenderAPI.getParameter(kpsForegroundColor).r, RenderAPI.getParameter(kpsForegroundColor).g, RenderAPI.getParameter(kpsForegroundColor).b, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1,3]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.1; // 0.. doesn't change sCircleSizeRandom = 3; // 0 .. doesn't change tail = 0; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.04; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.1; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = true; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 23: // focused objects frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 1500; sSize1 = parameters.size/10; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 0.99; // fading color of the curl cContinuous = 6; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = false; // draw the curve or not cGenerationN = 5; // number of generation cgSizeRatio = -0.02; // the size of its child 0.. doesn't change cgSizeRandom = 0.2; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 2; marginRatio = (parameters.frameMargin-1)/222; spiral = 2; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 12; // pettern width increase/decrease ratio trunk = false tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 20; // trunk swinging width var leavesRatio = 0.5; if (parameters.leafNumber == 0){ var leavesRatio = 0; parameters.leafNumber = 1; } //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [leavesRatio, parameters.leafNumber-1 , 1, parameters.leafSize/15, 1, false, 0.5, RenderAPI.getParameter(kpsForegroundColor).r, RenderAPI.getParameter(kpsForegroundColor).g, RenderAPI.getParameter(kpsForegroundColor).b, 0.5]; sLeaves = [0.0, 1 , 1, 0.5, 1.2, false, 1, 000/256, 000/256, 0/256, 0.5]; basePatternNumber = [14]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.1; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 0; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random (random doesn't work) patternRatio = 0.05; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.05; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 24: // snow frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/40; sSizeRandom = 0.5; // 0.. not random bigger number is more random sSizeRatio = 0.00; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0.8; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 0.99; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = false; // draw the curve or not cGenerationN = 6; // number of generation cgSizeRatio = 0.0; // the size of its child 0.. doesn't change cgSizeRandom = 0; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 30; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 40; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.0, 3 , 1, 0.8, 0.8, false, 1, 40/256, 113/256, 18/256, 0.5]; sLeaves = [0.0, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1,5]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.15; // 0.. doesn't change sCircleSizeRandom = 0.5; // 0 .. doesn't change tail = 10; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.04; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = -0.1; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 25: // flurry frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 100; sSize1 = parameters.size/40; sSizeRandom = 0.0; // 0.. not random bigger number is more random sSizeRatio = 0.00; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0.8; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = false; // draw the curve or not cGenerationN = 1; // number of generation cgSizeRatio = 0.0; // the size of its child 0.. doesn't change cgSizeRandom = 0; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 20; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 20; // trunk swinging width var leavesRatio = 0.005; if (parameters.leafNumber == 0){ var leavesRatio = 0; parameters.leafNumber = 1; } //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [leavesRatio, parameters.leafNumber-1 , 1, parameters.leafSize/20, 0.8, false, 1, RenderAPI.getParameter(kpsForegroundColor).r, RenderAPI.getParameter(kpsForegroundColor).g, RenderAPI.getParameter(kpsForegroundColor).b, 0.5]; sLeaves = [0.0, 5, 1, 3, 0.8, false, 1, 242/256, 173/256, 52/256, 0.5]; basePatternNumber = [1,5]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.15; // 0.. doesn't change sCircleSizeRandom = 0.5; // 0 .. doesn't change tail = 0; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.1; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.1; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 26: // check marks frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 1500; sSize1 = parameters.size/10; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 12; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 5; // number of generation cgSizeRatio = -0.02; // the size of its child 0.. doesn't change cgSizeRandom = 0.2; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 2; marginRatio = (parameters.frameMargin-1)/222; spiral = 2; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 3; // pettern width increase/decrease ratio trunk = false tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 20; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.0, 12 , 1, 0.5, 1, false, 2.5, 0/256, 0/256, 00/256, 0.5]; sLeaves = [0.0, 1 , 1, 0.5, 1.2, false, 1, 000/256, 000/256, 0/256, 0.5]; basePatternNumber = [14,16]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.1; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 0; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random (random doesn't work) patternRatio = 0.05; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.1; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 27: // focused lines1 frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 1500; sSize1 = parameters.size/10; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 6; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 5; // number of generation cgSizeRatio = -0.02; // the size of its child 0.. doesn't change cgSizeRandom = 0.2; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 2; marginRatio = (parameters.frameMargin-1)/222; spiral = 2; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 12; // pettern width increase/decrease ratio trunk = false tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 20; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.0, 12 , 1, 0.5, 1, false, 2.5, 0/256, 0/256, 00/256, 0.5]; sLeaves = [0.0, 1 , 1, 0.5, 1.2, false, 1, 000/256, 000/256, 0/256, 0.5]; basePatternNumber = [14,18]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.1; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 0; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random (random doesn't work) patternRatio = 0.05; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.05; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 28: // focused line2 frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 1500; sSize1 = parameters.size/10; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 10; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 20; // number of generation cgSizeRatio = -0.04; // the size of its child 0.. doesn't change cgSizeRandom = 0.2; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 2; marginRatio = (parameters.frameMargin-1)/222; spiral = 2; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 7; // pettern width increase/decrease ratio trunk = false tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 20; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.0, 12 , 1, 0.5, 1, false, 2.5, 0/256, 0/256, 00/256, 0.5]; sLeaves = [0.0, 1 , 1, 0.5, 1.2, false, 1, 000/256, 000/256, 0/256, 0.5]; basePatternNumber = [1,5]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.1; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 0; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random (random doesn't work) patternRatio = 0.05; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 29: // focused line3 frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 1500; sSize1 = parameters.size/10; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 8; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 8; // number of generation cgSizeRatio = -0.02; // the size of its child 0.. doesn't change cgSizeRandom = 0.2; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 2; marginRatio = (parameters.frameMargin-1)/222; spiral = 2; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 12; // pettern width increase/decrease ratio trunk = false tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 50; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.0, 12 , 1, 0.5, 1, false, 2.5, 0/256, 0/256, 00/256, 0.5]; sLeaves = [0.0, 1 , 1, 0.5, 1.2, false, 1, 000/256, 000/256, 0/256, 0.5]; basePatternNumber = [2,6]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.1; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 0; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random (random doesn't work) patternRatio = 0.075; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 30: // stones frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 1500; sSize1 = parameters.size/10; sSizeRandom = 1.5; // 0.. not random bigger number is more random sSizeRatio = 0.0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 7; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 4; // number of generation cgSizeRatio = -0.1; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 30; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 20; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.000, 20, 1, 2, 0.8, false, 1, 0/256, 0/256, 00/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [-4,-8]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.2; // 0.. doesn't change sCircleSizeRandom = 1; // 0 .. doesn't change tail = 20; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.05; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.1; // rotation angleRandom = 0.5; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 31: // focused line 4 frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/10; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 1; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 4; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 5; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 120; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 3; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, 3 , 1, 2, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [3]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.2; // 0.. doesn't change sCircleSizeRandom = 3; // 0 .. doesn't change tail = 0; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.05; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.1; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 32: // flowers frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/10; sSizeRandom = 1; // 0.. not random bigger number is more random sSizeRatio = 0.00; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0.5; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = -0.0; // the size of its child 0.. doesn't change cgSizeRandom = 0; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 10; // number of points in one spiral pType = 1; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 12; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 3; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 30; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, 20 , 1, 2, 0.8, false, 1, 255/256, 00/256, 00/256, 0.5]; sLeaves = [0.0, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1,2,3,4,5,6,7,8]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 0; // 0 .. doesn't change tail = 0; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.1; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = -0.1; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = true; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 33: // spread flower 3 frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/10; sSizeRandom = 0.5; // 0.. not random bigger number is more random sSizeRatio = 0.00; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 1; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 4; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0.0; // the size of its child 0.. doesn't change cgSizeRandom = 0; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 2; // number of points in one spiral pType = 1; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 12; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 2; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 40; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0, parameters.leafNumber-1 , 1, parameters.leafSize/20, 0.8, false, 1, RenderAPI.getParameter(kpsForegroundColor).r, RenderAPI.getParameter(kpsForegroundColor).g, RenderAPI.getParameter(kpsForegroundColor).b, 0.5]; sLeaves = [0.0, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1,-2,3, -4, 5,-6, 7, -8]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.2; // 0.. doesn't change sCircleSizeRandom = 0.5; // 0 .. doesn't change tail = 20; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.02; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = -0.1; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 34: // aligned flowers frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = parameters.size/10; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = false; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 1; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 1; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = parameters.flowerNumber+1; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = parameters.flowerSize/20; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 6; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.07; // how often it happens; angle = parameters.angle; //1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 50; // box round tbGap = parameters.size/10; tbWidth = parameters.width*2/5; // box line width artStyle = 0; break; case 35: // double box frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = 1; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = false; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 1; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 1; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = 0; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = 1; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 6; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.07; // how often it happens; angle = 1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 1; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = parameters.angle/360; // box round tbGap = parameters.size/4; tbWidth = parameters.width/5; // box line width artStyle = 0; break; case 36: // double round box frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = 1; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = false; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 1; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 1; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = 0; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = 1; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 6; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.07; // how often it happens; angle = 1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 4; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = parameters.angle/360; // box round tbGap = parameters.size/4; tbWidth = parameters.width/5; // box line width artStyle = 0; break; case 37: // flipped round box frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = 1; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = false; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 1; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 1; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = 0; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = 1; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 6; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.07; // how often it happens; angle = 1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 6; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = parameters.angle/360; // box round tbGap = parameters.size/4; tbWidth = parameters.width/5; // box line width artStyle = 0; break; case 38: // flipped round box frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = 1; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = false; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 1; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 1; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = 0; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = 1; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 6; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.07; // how often it happens; angle = 1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 5; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = parameters.angle/360; // box round tbGap = parameters.size/4; tbWidth = parameters.width/5; // box line width artStyle = 0; break; case 39: // doual flipped round box frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = 1; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = false; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 1; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 1; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = 0; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = 1; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 6; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.07; // how often it happens; angle = 1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 8; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = parameters.angle/360; // box round tbGap = parameters.size/4; tbWidth = parameters.width/5; // box line width artStyle = 0; break; case 40: // doual flipped round box frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = 1; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = false; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 1; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 1; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = 0; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = 1; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 6; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.07; // how often it happens; angle = 1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 7; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = parameters.angle/360; // box round tbGap = parameters.size/4; tbWidth = parameters.width/5; // box line width artStyle = 0; break; case 41: // art frame1 frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = 1; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = false; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 1; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 1; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = 0; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = 1; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 6; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.07; // how often it happens; angle = 1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = parameters.angle/360; // box round tbGap = parameters.size/4; tbWidth = parameters.width/5; // box line width artStyle = 1; break; case 42: // art frame2 frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = 1; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = false; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 1; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 1; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = 0; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = 1; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 6; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.07; // how often it happens; angle = 1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = parameters.angle/360; // box round tbGap = parameters.size/4; tbWidth = parameters.width/5; // box line width artStyle = 4; break; case 43: // art frame3 frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = 1; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = false; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 1; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 1; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = 0; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = 1; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 6; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.07; // how often it happens; angle = 1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = parameters.angle/360; // box round tbGap = parameters.size/4; tbWidth = parameters.width/5; // box line width artStyle = 6; break; case 44: // art frame4 frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = 1; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = false; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 1; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 1; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = 0; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = 1; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 6; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.07; // how often it happens; angle = 1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = parameters.angle/360; // box round tbGap = parameters.size/4; tbWidth = parameters.width/5; // box line width artStyle = 5; break; case 45: // art frame 5 frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = 1; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = false; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 1; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 1; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = 0; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = 1; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 6; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.07; // how often it happens; angle = 1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = parameters.angle/360; // box round tbGap = parameters.size/4; tbWidth = parameters.width/5; // box line width artStyle = 8; break; case 46: // art frame frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = 1; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = false; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 1; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 1; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = 0; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = 1; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 6; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.07; // how often it happens; angle = 1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = parameters.angle/360; // box round tbGap = parameters.size/4; tbWidth = parameters.width/5; // box line width artStyle = 7; break; case 47: // art frame frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = 1; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = false; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 1; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = parameters.width/5; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = parameters.width/5; trunkType = 1; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 10; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.00, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = 0; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = 1; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 6; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 1.. uniform, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.07; // how often it happens; angle = 1.9*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = parameters.angle/360; // box round tbGap = parameters.size/4; tbWidth = parameters.width/5; // box line width artStyle = 7; break; default : // simple curve lines frame = new Frame2(); //frame.rotateDeg(90); frame.setPosition(0,0); total = 500; sSize1 = 2.5; sSizeRandom = 0; // 0.. not random bigger number is more random sSizeRatio = 0; // positive number .. size becomes bigger as it goes. negative number .. size becomes smaller sSizeCos = 0; // size changes based on Math.cos If it is 0, it doesn't change. cColorFade = 1; // if 1, no fading. if <1, fading color of the curl cContinuous = 0; // when this is positive, curls continue for the number of times, end of the curl, leaf happens. if negative, it doesn't happen. curveVisible = true; // draw the curve or not cGenerationN = 0; // number of generation cgSizeRatio = 0; // the size of its child 0.. doesn't change cgSizeRandom = 0.5; // 0.. doesn't change //var sRotate = 0.01; // rotate the curl as it goes //var sRotateRandom = 0; // random rotate flip = parameters.flip; // which way to start false.. center, true.. edge curveRatio = 1.2; marginRatio = (parameters.frameMargin-1)/222; spiral = 35; // number of points in one spiral pType = 2; // pattern type when it is 3, spiral should be less than 37 // 0.. uniform 1.. increase the size 2.. decrease the size // 3 increase and decrease the size 4 decrease and increase the size 5 cosine 6 random ipWidth = 2; // initial pettern width pWidth = 2; // pettern width increase/decrease ratio trunk = false; tWidth = 2; trunkType = 1; // 1.. straight 2.. sign curve 3.. cosine curve fWidth = 30; // trunk swinging width //var leavesType = 1; // 0.. one side 1.. both side // ratio0 pattern1, type2 size3, width4 reverse5 size Random6 R7 G8 B9 tone random10 leaves = [0.01, Math.floor(Engine.rand()*23), 1, 3, 0.8, false, 1, 47/256, 108/256, 20/256, 0.5]; sLeaves = [0.00, Math.floor(Engine.rand()*8), 1, 3, 0.8, false, 1, 255/256, 33/256, 117/256, 0.5]; basePatternNumber = [1,5]; // how curly patterns are placed at once. each direction has 45 degree increment // negative number flips the shape sCircle = 0; // 0.. non 1.. Cap 2.. circle on the end of the curl 3- 19.. flower patterns sCircleSize = 2; // circle size 1.. regular size ignored if it is for cap sCircleSizeRatio = 0.05; // 0.. doesn't change sCircleSizeRandom = 5; // 0 .. doesn't change tail = 30; // extra length in end of the curls when cContinuous > 0 patternPattern = 1; // how pattern happens 0.. uniform no matter how big 1.. uniform related to the size, 2.. happens earlier 3.. happens later 4.. random patternRatio = 0.07; // how often it happens; angle = 2*3.14; angleRatio = 0.0; // rotation angleRandom = 0; // angle randomness 0.. no randomness objAngleSnap = false; // when true, object snaps to 90 degree tBoxStyle = 0; // 0.. non, 1.. simple box, 2.. double box, 3.. double box2 4.. round, 5.. flipped round1, 6 flipped round2, 7.. dual round1 8.. dual round2 tbRadius = 150; // box round tbGap = parameters.size/4; tbWidth = 100; // box line width artStyle = 1; break; } cColorFade = 1-Math.pow(parameters.fade/100, cGenerationN+1); if(!curveVisible && sCircle ==1) sCircle = 0; angle *= Math.PI/180; sColor = [ parameters.vcolor[0], parameters.vcolor[1], parameters.vcolor[2]]; tbr = parameters.vcolor[0]; tbg = parameters.vcolor[1]; tbb = parameters.vcolor[2]; scColor = [ parameters.fcolor[0], parameters.fcolor[1], parameters.fcolor[2]]; // circle and flower color leaves[7] = parameters.lcolor[0]; leaves[8] = parameters.lcolor[1]; leaves[9] = parameters.lcolor[2]; //var side = 1; var leavesSize = sLeaves[3]; var pattern = sLeaves[1]; var width = sLeaves[4]; var reverse = sLeaves[5]; var leavesRandom = sLeaves[6]; var x0 = sShape[pattern][0]; var y0 = sShape[pattern][1]; var renderTotal = 0; if (outputSizeX > outputSizeY){ realMargin = outputSizeY * marginRatio; var smallerSize = outputSizeY - realMargin; }else{ realMargin = outputSizeX * marginRatio; var smallerSize = outputSizeX - realMargin; } margin = marginRatio * 1500; // convert the ratio to pixel var slPoints = new Array(); for (i = sShape[pattern].length-2; i >= 0; i -= 2){ var x1= (sShape[pattern][i]- x0)* width; var y1 = (sShape[pattern][i+1] - y0); slPoints.push(new Vector3(x1, y1)); } if (tBoxStyle>0) { var base = (outputSizeX+outputSizeY)/10; var tBoxSize = parameters.size*base/500; if (parameters.nlines <= 1) var step = tBoxSize + 1; else var step = tBoxSize / (parameters.nlines-1); for (i= 0; i <= tBoxSize; i +=step) { if (parameters.flip) { realMargin1 = realMargin + (0.15 * (i + Math.sin(Math.PI*i/tBoxSize)) * parameters.size); tbWidth1 = tbWidth + parameters.nlines*i/tBoxSize; } else { realMargin1 = realMargin + (0.15 * i * parameters.size); tbWidth1 = tbWidth; } tbRadius1 = tbRadius * smallerSize; switch(tBoxStyle) { case 0: break; case 1: tBox(api, 0, tbGap*4*frameScale, realMargin1, realMargin1, outputSizeX - realMargin1, outputSizeY - realMargin1, tbWidth1*frameScale, tbRadius1, tbr,tbg,tbb, offsetX, offsetY, parameters.size); break; case 2: tBox(api, 0, tbGap*4*frameScale, realMargin1, realMargin1, outputSizeX - realMargin1, outputSizeY - realMargin1, tbWidth1*frameScale, tbRadius1, tbr,tbg,tbb, offsetX, offsetY, parameters.size); tBox(api, 0, tbGap*4*frameScale, realMargin1+tbGap*4*frameScale, realMargin1+tbGap*4*frameScale, outputSizeX - realMargin1 - tbGap*4*frameScale, outputSizeY - realMargin1 - tbGap*4*frameScale, tbWidth1*frameScale / 2, tbRadius1, tbr,tbg,tbb, offsetX, offsetY, parameters.size); break; case 3: tBox(api, 1, tbGap*4*frameScale, realMargin1, realMargin1, outputSizeX - realMargin1, outputSizeY - realMargin1, tbWidth1*frameScale, tbRadius1, tbr,tbg,tbb, offsetX, offsetY, parameters.size); break; case 4: tbRadius1 = tbRadius * smallerSize - (0.15 * (i + Math.sin(Math.PI*i/tBoxSize)) * parameters.size); if (tbRadius1 < tbWidth) tbRadius1 = tbWidth; tBox(api, 2, tbGap*4*frameScale, realMargin1, realMargin1, outputSizeX - realMargin1, outputSizeY - realMargin1, tbWidth1*frameScale, tbRadius1, tbr,tbg,tbb, offsetX, offsetY, parameters.size); break; case 5: tbRadius1 = tbRadius * smallerSize - (0.15 * (i + Math.sin(Math.PI*i/tBoxSize)) * parameters.size)/2; if (tbRadius1 < 0) tbRadius1 = 0; tBox(api, 3, tbGap*4*frameScale, realMargin1, realMargin1, outputSizeX - realMargin1, outputSizeY - realMargin1, tbWidth1*frameScale, tbRadius1, tbr,tbg,tbb, offsetX, offsetY, parameters.size); break; case 6: tbRadius1 = tbRadius * smallerSize + (0.075 * (i + Math.sin(Math.PI*i/tBoxSize)) * parameters.size)/2; tBox(api, 3, tbGap*4*frameScale, realMargin1, realMargin1, outputSizeX - realMargin1, outputSizeY - realMargin1, tbWidth1*frameScale, tbRadius1, tbr,tbg,tbb, offsetX, offsetY, parameters.size); break; case 7: tbRadius1 = tbRadius * smallerSize - (0.15 * (i + Math.sin(Math.PI*i/tBoxSize)) * parameters.size); if (tbRadius1 < 0) tbRadius1 = 0; tBox(api, 4, tbGap*4*frameScale, realMargin1, realMargin1, outputSizeX - realMargin1, outputSizeY - realMargin1, tbWidth1*frameScale, tbRadius1, tbr,tbg,tbb, offsetX, offsetY, parameters.size); break; case 8: tbRadius1 = tbRadius * smallerSize + (0.15 * (i + Math.sin(Math.PI*i/tBoxSize)) * parameters.size)/2; tBox(api, 4, tbGap*4*frameScale, realMargin1, realMargin1, outputSizeX - realMargin1, outputSizeY - realMargin1, tbWidth1*frameScale, tbRadius1, tbr,tbg,tbb, offsetX, offsetY, parameters.size); break; } } } // art frame if(artStyle > 0) { var base = (outputSizeX+outputSizeY)/2; var artFrameSize = parameters.size*base/500; var step = 1;//parameters.size / parameters.nlines; var specArray = new Array(); makeSpecArray(specArray, parameters.nlines); for (i= 0; i < artFrameSize; i +=step) { realMargin1 = realMargin + i;//(realMargin*0.002 * i * parameters.size); tbWidth1 = step*1.0;//tbWidth; tbRadius1 = tbRadius * smallerSize; // spec = Math.sin(2*Math.PI*i/(parameters.nlines * step)); spec = getSpecArray(specArray,i/artFrameSize); if ( i==0) { var originalMargin = realMargin1; var originalR = tbRadius1; //Engine.message(originalMargin, " ", originalR," ", tbRadius, " ", smallerSize); } // Engine.message (originalMargin, " ", realMargin1); switch(artStyle) { case 0: break; case 1: artBox(api, 0, parameters.flip, originalMargin, originalMargin, outputSizeX - originalMargin, outputSizeY- originalMargin , realMargin1, realMargin1, outputSizeX - realMargin1, outputSizeY - realMargin1, tbWidth1, tbRadius1, originalR, tbr,tbg,tbb, offsetX, offsetY, parameters.size, spec); break; case 2: artBox(api, 0, parameters.flip, originalMargin, originalMargin, outputSizeX - originalMargin, outputSizeY- originalMargin, realMargin1, realMargin1, outputSizeX - realMargin1, outputSizeY - realMargin1, tbWidth1, tbRadius1, tbr,tbg,tbb, offsetX, offsetY, parameters.size, spec); // artBox(api, 0, parameters.flip, originalMargin, realMargin1+tbGap*4*frameScale, realMargin1+tbGap*4*frameScale, outputSizeX - realMargin1 - tbGap*4*frameScale, outputSizeY - realMargin1 - tbGap*4*frameScale, tbWidth1*frameScale / 2, tbRadius1, tbr,tbg,tbb, offsetX, offsetY, parameters.size, spec); break; case 3: artBox(api, 1, parameters.flip, originalMargin, originalMargin, outputSizeX - originalMargin, outputSizeY- originalMargin, realMargin1, realMargin1, outputSizeX - realMargin1, outputSizeY - realMargin1, tbWidth1, tbRadius1, originalR, tbr,tbg,tbb, offsetX, offsetY, parameters.size, spec); break; case 4: tbRadius1 = tbRadius * smallerSize - i;//(realMargin*0.002 * i * parameters.size); if (tbRadius1 < tbWidth) tbRadius1 = tbWidth; artBox(api, 2, parameters.flip, originalMargin, originalMargin, outputSizeX - originalMargin, outputSizeY- originalMargin, realMargin1, realMargin1, outputSizeX - realMargin1, outputSizeY - realMargin1, tbWidth1, tbRadius1, originalR, tbr,tbg,tbb, offsetX, offsetY, parameters.size, spec); break; case 5: tbRadius1 = tbRadius * smallerSize - i;//(realMargin*0.002 * i * parameters.size); if (tbRadius1 < 0) tbRadius1 = 0; artBox(api, 5, parameters.flip, originalMargin, originalMargin, outputSizeX - originalMargin, outputSizeY- originalMargin, realMargin1, realMargin1, outputSizeX - realMargin1, outputSizeY - realMargin1, tbWidth1, tbRadius1, originalR, tbr,tbg,tbb, offsetX, offsetY, parameters.size, spec); break; case 6: tbRadius1 = tbRadius * smallerSize + i;//(realMargin*0.0005 * i * parameters.size); artBox(api, 3, parameters.flip, originalMargin, originalMargin, outputSizeX - originalMargin, outputSizeY- originalMargin, realMargin1, realMargin1, outputSizeX - realMargin1, outputSizeY - realMargin1, tbWidth1, tbRadius1, originalR, tbr,tbg,tbb, offsetX, offsetY, parameters.size, spec); break; case 7: tbRadius1 = tbRadius * smallerSize - i;//(realMargin*0.002 * i * parameters.size); if (tbRadius1 < 0) tbRadius1 = 0; artBox(api, 4, parameters.flip, originalMargin, originalMargin, outputSizeX - originalMargin, outputSizeY- originalMargin, realMargin1, realMargin1, outputSizeX - realMargin1, outputSizeY - realMargin1, tbWidth1, tbRadius1, originalR, tbr,tbg,tbb, offsetX, offsetY, parameters.size, spec); break; case 8: tbRadius1 = tbRadius * smallerSize + i/2;//(realMargin*0.002 * i * parameters.size)/2; artBox(api, 4, parameters.flip, originalMargin, originalMargin, outputSizeX - originalMargin, outputSizeY- originalMargin, realMargin1, realMargin1, outputSizeX - realMargin1, outputSizeY - realMargin1, tbWidth1, tbRadius1, originalR, tbr,tbg,tbb, offsetX, offsetY, parameters.size, spec); break; } } } function makeSpecArray(specArray, n) { var i = 0; var max = 1; var min = -1; var counter = 2; var y = Engine.rand()*0.5+0.5; // initial Y while (i < 1) { var length = Engine.rand()*(5/n)+0.05; var type = 0; var a = Engine.rand()*1.0+0.01; var b = Engine.rand()*Math.PI; var c = Engine.rand()*80-40; if (Engine.rand() > 0.1) // mostlikely, line continues var d = -Math.sin(b)*c; else var d = Engine.rand()*2-1; i+= length; y += Math.sin(a*length+b)*c+d; if (y < min) // not very accurate but ok min = y; if (y > max) max = y; specArray[counter++] = length; specArray[counter++] = a; specArray[counter++] = b; specArray[counter++] = c; specArray[counter++] = d; // Engine.message(a, " ", b, " ", c, " ", d, " ", length); } specArray[0] = max; specArray[1] = min; // Engine.message(max," ", min); } function getSpecArray(specArray, l) { var counter = 2; var l1 = 0; while(l1 <= l && l1 < 1){ l1 += specArray[counter]; counter += 5; } counter -= 5; l1 -= specArray[counter++]; var i = l-l1; var a = specArray[counter++]; var b = specArray[counter++]; var c = specArray[counter++]; var d = specArray[counter++]; var y = Math.sin(a*i+b)*c+d; var max = specArray[0]; var min = specArray[1]; y = (y-min) * 1.8/(max-min) -0.9; if (y >= 0.99) y = 0.99; if (y <= -0.99) y = -0.99; return y; } var x1 = 0; var y1 = 0; var x = 0; var y = 0; var lx1 = 0; var ly1 = 0; var lx = 0; var ly = 0; tWidth *= frameScale; x = 0; y = 0; var hCount = 1/patternRatio; var boxRatio = (outputSizeX - realMargin*2)/(outputSizeY - realMargin*2); if (boxRatio >= 1){ repeatN = 10; var iStep = 0.1/boxRatio; }else{ repeatN = 10/boxRatio; var iStep = 0.1; } api.command(kpsStartTask, 0.8); for (var i = 0; i < repeatN; i+= iStep) { api.command(kpsStartTask, 1/repeatN); // progress bar x1 = x; y1 = y; lx1 = lx; ly1 = ly; lx = positionX(trunkType,i,flip,realMargin,fWidth*frameScale, repeatN, curveRatio, boxRatio); ly = positionY(trunkType,i,flip,realMargin,fWidth*frameScale, repeatN, curveRatio, boxRatio); x = lx / frameScale; y = ly / frameScale; var happens = false; switch(patternPattern) { case 0: var patternRatio1 = patternRatio; if ((boxRatio < 1 && hCount >= (1/patternRatio) / ((outputSizeX-realMargin*2)/(outputSizeX)))|| (boxRatio >= 1 && hCount >= (1/patternRatio) / ((outputSizeY-realMargin*2)/(outputSizeY)))){ happens = true; hCount = 0; } hCount ++; break; case 1: var patternRatio1 = patternRatio; if (hCount >= (1/patternRatio)){ happens = true; hCount = 0; } hCount++; break; case 2: if (hCount > patternRatio*i*(40)){ happens = true hCount = 0; } hCount++; break; case 3: if (hCount > patternRatio*(500)/i){ happens = true hCount = 0; } hCount++; break; } if (happens){ if(basePatternNumber[0] == 0){ for (var k = 0; k < Math.floor(Engine.rand()*8)+1; k++){ var bpn = Math.floor(Engine.rand()*8)+1; var patternFlip = 1; if (Engine.rand()>0.5){ patternFlip = -1; } renderTotal++; Engine.addModule(new ModuleCurl(parameters, 0, pType, sColor, cColorFade, curveVisible, angle + angleRatio*i + (Engine.rand()-0.5)*angleRandom + bpn*3.14/4, x, y, patternFlip,sSize1 + sSizeRatio*i + Math.cos(i)*sSizeCos+ (Engine.rand()-0.5)*sSizeRandom*2, ipWidth, pWidth, spiral, sCircle, sCircleSize, sCircleSizeRatio*i, sCircleSizeRandom, scColor, tail, boxRatio, i/repeatN, flip, leaves, sLeaves, slPoints, cContinuous, objAngleSnap, cGenerationN, cgSizeRatio, cgSizeRandom, offsetX,offsetY)); } } else { for (var k = 0; k < basePatternNumber.length; k++){ var bpn = basePatternNumber[k]; var patternFlip = 1; if (bpn < 0){ bpn = -bpn; patternFlip = -1; } renderTotal++; Engine.addModule(new ModuleCurl(parameters, 0, pType, sColor, cColorFade, curveVisible, angle + angleRatio*i + (Engine.rand()-0.5)*angleRandom + bpn*3.14/4, x, y, patternFlip,sSize1 + sSizeRatio*i + Math.cos(i)*sSizeCos+ (Engine.rand()-0.5)*sSizeRandom*2, ipWidth, pWidth, spiral, sCircle, sCircleSize, sCircleSizeRatio*i, sCircleSizeRandom, scColor, tail, boxRatio, i/repeatN, flip, leaves, sLeaves, slPoints, cContinuous, objAngleSnap, cGenerationN, cgSizeRatio, cgSizeRandom, offsetX, offsetY)); } } } if(trunk && x1 != 0 && y1 != 0) { if ( (flip == 1 && i/repeatN < boxRatio) || (flip == 0 && i/repeatN > (1-boxRatio)) ){ Engine.addModule(new ModuleLine(api, lx,ly, lx1,ly1, tWidth, sColor[0],sColor[1],sColor[2])); Engine.addModule(new ModuleLine(api, outputSizeX-lx,ly, outputSizeX-lx1,ly1,tWidth,sColor[0],sColor[1],sColor[2])); Engine.addModule(new ModuleLine(api, lx,outputSizeY-ly, lx1,outputSizeY-ly1, tWidth, sColor[0],sColor[1],sColor[2])); Engine.addModule(new ModuleLine(api, outputSizeX-lx,outputSizeY-ly, outputSizeX-lx1,outputSizeY-ly1, tWidth, sColor[0],sColor[1],sColor[2])); } if ( (flip == 1 && i/repeatN < 1/boxRatio) || (flip == 0 && i/repeatN > (1-1/boxRatio))){ Engine.addModule(new ModuleLine(api, ly,lx, ly1,lx1, tWidth, sColor[0],sColor[1],sColor[2])); Engine.addModule(new ModuleLine(api, outputSizeX-ly,lx, outputSizeX-ly1,lx1, tWidth, sColor[0],sColor[1],sColor[2])); Engine.addModule(new ModuleLine(api, ly,outputSizeY-lx, ly1,outputSizeY-lx1, tWidth, sColor[0],sColor[1],sColor[2])); Engine.addModule(new ModuleLine(api, outputSizeX-ly,outputSizeY-lx, outputSizeX-ly1,outputSizeY-lx1, tWidth, sColor[0],sColor[1],sColor[2])); } } api.command(kpsFinishTask); } // Setting the bounding box like this will insure that neighboring fills are aligned api.setSceneBBox (0, outputSize.x, 0, outputSize.y) Engine.setParameter (kRunSimulation, 1) Engine.setParameter (kNumSimulationSteps, 1000) if (parameters == previewParameters) { for (var step = 0; step < renderTotal; step++) Engine.produce(); Engine.render (api) } api.command(kpsFinishTask); } ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// // Menu start // If you want to create a menu in which you change some of the script parameters, include the following code: // For shipped scripts we can include localized strings, prefixed with $$$/ - call method localize(string) on the prefixed string // For your own strings, you can query app.locale and select several language versions (for example, your native language and english). Try alert ("Language is: " + app.locale) var sBasic = localize("$$$/DecoScripts/Frame/tab1=Basic") var sAdvanced = localize("$$$/DecoScripts/Frame/tab2=Advanced") var decoMenu = { // an object that defines the menu menuTitle : localize("$$$/DecoScripts/Frame/Frame=Frame"), //menuBackground : [0.8593, 0.8593, 0.8593, 1], previewBackground : [ 1, 1, 1, 1], panels : [ { panelName : sBasic, panelWidth : 450, leftColumnWidth : 180, panelMenu : [ { itemName : localize("$$$/DecoScripts/Frame/FrameType=Frame:"), itemUnit : "", itemType : 'dropdownlist', itemList : [ { item: localize("$$$/DecoScripts/Frame/Frame1= 1: Happy Vine"), image : "Picture Frame/f0.png" }, { item: localize("$$$/DecoScripts/Frame/Frame2= 2: Pretty Vine"), image : "Picture Frame/f1.png" }, { item: localize("$$$/DecoScripts/Frame/Frame3= 3: Smoke Signals"), image : "Picture Frame/f2.png" }, { item: localize("$$$/DecoScripts/Frame/Frame4= 4: Party"), image : "Picture Frame/f3.png" }, { item: localize("$$$/DecoScripts/Frame/Frame5= 5: Big Curls"), image : "Picture Frame/f4.png" }, { item: localize("$$$/DecoScripts/Frame/Frame6= 6: Tilde"), image : "Picture Frame/f5.png" }, { item: localize("$$$/DecoScripts/Frame/Frame7= 7: Romance"), image : "Picture Frame/f6.png" }, { item: localize("$$$/DecoScripts/Frame/Frame8= 8: Curly Dance"), image : "Picture Frame/f7.png" }, { item: localize("$$$/DecoScripts/Frame/Frame9= 9: Wisps"), image : "Picture Frame/f8.png" }, { item: localize("$$$/DecoScripts/Frame/Frame10=10: Spring Weed"), image : "Picture Frame/f9.png" }, { item: localize("$$$/DecoScripts/Frame/Frame11=11: Eyelash"), image : "Picture Frame/f10.png" }, { item: localize("$$$/DecoScripts/Frame/Frame12=12: Magic Smoke"), image : "Picture Frame/f11.png" }, { item: localize("$$$/DecoScripts/Frame/Frame13=13: Curly Vine"), image : "Picture Frame/f12.png" }, { item: localize("$$$/DecoScripts/Frame/Frame14=14: Chainmail"), image : "Picture Frame/f13.png" }, { item: localize("$$$/DecoScripts/Frame/Frame15=15: Fun Event"), image : "Picture Frame/f14.png" }, { item: localize("$$$/DecoScripts/Frame/Frame16=16: Bush"), image : "Picture Frame/f15.png" }, { item: localize("$$$/DecoScripts/Frame/Frame17=17: Simple Lace"), image : "Picture Frame/f16.png" }, { item: localize("$$$/DecoScripts/Frame/Frame18=18: Pulse"), image : "Picture Frame/f17.png" }, { item: localize("$$$/DecoScripts/Frame/Frame19=19: Root"), image : "Picture Frame/f18.png" }, { item: localize("$$$/DecoScripts/Frame/Frame20=20: Snakes"), image : "Picture Frame/f19.png" }, { item: localize("$$$/DecoScripts/Frame/Frame21=21: Mustache"), image : "Picture Frame/f20.png" }, { item: localize("$$$/DecoScripts/Frame/Frame22=22: Circle Sprinkle"), image : "Picture Frame/f21.png" }, { item: localize("$$$/DecoScripts/Frame/Frame23=23: Aligned Flowers"), image : "Picture Frame/f22.png" }, { item: localize("$$$/DecoScripts/Frame/Frame24=24: Little Flowers"), image : "Picture Frame/f23.png" }, { item: localize("$$$/DecoScripts/Frame/Frame25=25: Snowflakes"), image : "Picture Frame/f24.png" }, { item: localize("$$$/DecoScripts/Frame/Frame26=26: Flurry"), image : "Picture Frame/f25.png" }, { item: localize("$$$/DecoScripts/Frame/Frame27=27: Check Marks"), image : "Picture Frame/f26.png" }, { item: localize("$$$/DecoScripts/Frame/Frame28=28: Focused Lines"), image : "Picture Frame/f27.png" }, { item: localize("$$$/DecoScripts/Frame/Frame29=29: Focused Parallel Lines "), image : "Picture Frame/f28.png" }, { item: localize("$$$/DecoScripts/Frame/Frame30=30: Focused Vibrating Lines"), image : "Picture Frame/f29.png" }, { item: localize("$$$/DecoScripts/Frame/Frame31=31: Zen Garden"), image : "Picture Frame/f30.png" }, { item: localize("$$$/DecoScripts/Frame/Frame32=32: Spikes"), image : "Picture Frame/f31.png" }, { item: localize("$$$/DecoScripts/Frame/Frame33=33: Anemone"), image : "Picture Frame/f32.png" }, { item: localize("$$$/DecoScripts/Frame/Frame34=34: Pinwheel"), image : "Picture Frame/f33.png" }, { item: localize("$$$/DecoScripts/Frame/Frame35=35: Spacing"), image : "Picture Frame/f34.png" }, { item: localize("$$$/DecoScripts/Frame/Frame36=36: Line Box"), image : "Picture Frame/f35.png" }, { item: localize("$$$/DecoScripts/Frame/Frame37=37: Rounded Corners"), image : "Picture Frame/f36.png" }, { item: localize("$$$/DecoScripts/Frame/Frame38=38: Inverse Rounded Corners1"), image : "Picture Frame/f37.png" }, { item: localize("$$$/DecoScripts/Frame/Frame39=39: Inverse Rounded Corners2"), image : "Picture Frame/f38.png" }, { item: localize("$$$/DecoScripts/Frame/Frame40=40: Dual Rounded Corners1"), image : "Picture Frame/f39.png" }, { item: localize("$$$/DecoScripts/Frame/Frame41=41: Dual Rounded Corners2"), image : "Picture Frame/f40.png" }, { item: localize("$$$/DecoScripts/Frame/Frame42=42: Art Frame"), image : "Picture Frame/f41.png" }, { item: localize("$$$/DecoScripts/Frame/Frame43=43: Rounded Art Frame"), image : "Picture Frame/f42.png" }, { item: localize("$$$/DecoScripts/Frame/Frame44=44: Inverse Rounded Art Frame1"), image : "Picture Frame/f43.png" }, { item: localize("$$$/DecoScripts/Frame/Frame45=45: Inverse Rounded Art Frame2"), image : "Picture Frame/f44.png" }, { item: localize("$$$/DecoScripts/Frame/Frame46=46: Dual Rounded Art Frame1"), image : "Picture Frame/f45.png" }, { item: localize("$$$/DecoScripts/Frame/Frame47=47: Dual Rounded Art Frame2"), image : "Picture Frame/f46.png" }, ], itemValue : modelParameters.frameNumber, itemMin : 0, itemMax : 100, varName : 'frameNumber', disableItems : [ // optionally, you could specify which items in the current panel will be disabled (grayed out) for a specific selection. // when selection 1 is chosed (index 0), it grays out menu item Item3 and Item4 (index 2, and 3 - indexed in order items are specified in the panelMenu array - from 0) // when selection 2 is chosed (index 1), it grays out menu item Item4 (index 3) [0, [8,9,10 ], [sAdvanced, 0]], [1, [8,9,10 ], [sAdvanced, 0]], [2, [8,9,10 ], [sAdvanced, 0]], [3, [8,9,10 ], [sAdvanced, 0]], [4, [sAdvanced, 0]], [5, [8,9,10 ], [sAdvanced, 0]], [6, [8,9,10 ], [sAdvanced, 0]], [7, [8,9,10 ], [sAdvanced, 0]], [8, [8,9,10 ], [sAdvanced, 0]], [9, [8,9,10 ], [sAdvanced, 0]], [10, [sAdvanced, 0]], [11, [sAdvanced, 0]], [12, [sAdvanced, 0]], [13, [8,9,10 ], [sAdvanced, 0]], [14, [8,9,10 ], [sAdvanced, 0]], [15, [sAdvanced, 0,1]], [16, [8,9,10 ], [sAdvanced, 0]], [17, [sAdvanced, 0]], [18, [sAdvanced, 0]], [19, [8,9,10 ], [sAdvanced, 0]], [20, [8,9,10 ], [sAdvanced, 0]], [21, [1,8,9,10 ], [sAdvanced, 0,1]], [22, [1,8,9,10 ], [sAdvanced, 0,1]], [23, [sAdvanced, 0,1]], [24, [1,8,9,10 ],[sAdvanced, 0,1]], [25, [1 ],[sAdvanced, 0,1]], [26, [8,9,10 ], [sAdvanced, 0]], [27, [8,9,10 ], [sAdvanced, 0]], [28, [8,9,10 ], [sAdvanced, 0]], [29, [8,9,10 ], [sAdvanced, 0]], [30, [8,9,10 ], [sAdvanced, 0]], [31, [3,8,9,10 ], [sAdvanced, 0]], [32, [8,9,10 ], [sAdvanced, 0]], [33, [8,9,10 ], [sAdvanced, 0]], [34, [1,3,8,9,10 ],[sAdvanced, 0,1]], [35, [4,5,6,7,8,9,10],[sAdvanced, 2,3]], [36, [4,5,6,7,8,9,10 ],[sAdvanced, 3]], [37, [4,5,6,7,8,9,10 ],[sAdvanced, 3]], [38, [4,5,6,7,8,9,10 ],[sAdvanced, 3]], [39, [4,5,6,7,8,9,10 ],[sAdvanced, 3]], [40, [4,5,6,7,8,9,10 ],[sAdvanced, 3]], [41, [5,6,7,8,9,10],[sAdvanced, 1,2,3]], [42, [5,6,7,8,9,10 ],[sAdvanced, 1,3]], [43, [5,6,7,8,9,10 ],[sAdvanced, 1,3]], [44, [5,6,7,8,9,10 ],[sAdvanced, 1,3]], [45, [5,6,7,8,9,10 ],[sAdvanced, 1,3]], [46, [5,6,7,8,9,10 ],[sAdvanced, 1,3]], ] }, { itemName : localize("$$$/DecoScripts/Frame/VColor=Vine Color:"), itemUnit : "", itemType : 'colorpicker', itemValue : modelParameters.vcolor, varName : 'vcolor' }, { itemName : localize("$$$/DecoScripts/Frame/FrameMargin=Margin:") , itemUnit : "", //localize("$$$/DecoScripts/Units/percentOfMargin=%"), itemType : 'slider', itemValue : modelParameters.frameMargin, itemMin : 1, itemMax : 100, itemStep : 1, varName : 'frameMargin' }, { itemName : localize("$$$/DecoScripts/Frame/Size=Size:"), itemUnit : "", itemType : 'slider', itemValue : modelParameters.size, itemMin : 1, itemMax : 100, itemStep : 1, varName : 'size' }, { itemName : localize("$$$/DecoScripts/Frame/Arrange=Arrangement:"), itemUnit : "", itemType : 'slider', itemValue : modelParameters.arrange, itemMin : 1, itemMax : 200, itemStep : 1, varName : 'arrange' }, // { itemName : localize("$$$/DecoScripts/Frame/BG=Use BG color for vines/icons:"), // itemUnit : "", itemType : 'checkbox', itemValue : modelParameters.bg, itemMin : 0, itemMax : 0, varName : 'bgColor' }, { itemName : localize("$$$/DecoScripts/Frame/FlowerType=Flower:"), itemUnit : "", itemType : 'dropdownlist', itemList : [ { item: localize("$$$/DecoScripts/Frame/Flower0= None"), image : "Picture Frame/0.png" }, { item: localize("$$$/DecoScripts/Frame/Flower1= 1: Small Circle"), image : "Picture Frame/1.png" }, { item: localize("$$$/DecoScripts/Frame/Flower2= 2: Circle"), image : "Picture Frame/2.png" }, { item: localize("$$$/DecoScripts/Frame/Flower3= 3: Star Flower"), image : "Picture Frame/3.png" }, { item: localize("$$$/DecoScripts/Frame/Flower4= 4: Small Flower"), image : "Picture Frame/4.png" }, { item: localize("$$$/DecoScripts/Frame/Flower5= 5: Orbit"), image : "Picture Frame/5.png" }, { item: localize("$$$/DecoScripts/Frame/Flower6= 6: Pinwheel"), image : "Picture Frame/6.png" }, { item: localize("$$$/DecoScripts/Frame/Flower7= 7: Petals"), image : "Picture Frame/7.png" }, { item: localize("$$$/DecoScripts/Frame/Flower8= 8: Sunflower Gate"), image : "Picture Frame/8.png" }, { item: localize("$$$/DecoScripts/Frame/Flower9= 9: Rose"), image : "Picture Frame/9.png" }, { item: localize("$$$/DecoScripts/Frame/Flower10=10: Grass Circle"), image : "Picture Frame/10.png" }, { item: localize("$$$/DecoScripts/Frame/Flower11=11: Sun"), image : "Picture Frame/11.png" }, { item: localize("$$$/DecoScripts/Frame/Flower12=12: Broken Line Circle"), image : "Picture Frame/12.png" }, { item: localize("$$$/DecoScripts/Frame/Flower13=13: Magical Door"), image : "Picture Frame/13.png" }, { item: localize("$$$/DecoScripts/Frame/Flower14=14: Twinkle"), image : "Picture Frame/14.png" }, { item: localize("$$$/DecoScripts/Frame/Flower15=15: Shiny Star"), image : "Picture Frame/15.png" }, { item: localize("$$$/DecoScripts/Frame/Flower16=16: Star Cloud"), image : "Picture Frame/16.png" }, { item: localize("$$$/DecoScripts/Frame/Flower17=17: Round Plus"), image : "Picture Frame/17.png" }, { item: localize("$$$/DecoScripts/Frame/Flower18=18: Plus Mark"), image : "Picture Frame/18.png" }, { item: localize("$$$/DecoScripts/Frame/Flower19=19: Heart"), image : "Picture Frame/19.png" }, { item: localize("$$$/DecoScripts/Frame/Flower20=20: Star"), image : "Picture Frame/20.png" }, { item: localize("$$$/DecoScripts/Frame/Flower21=21: Snow Flake"), image : "Picture Frame/21.png" }, { item: localize("$$$/DecoScripts/Frame/Flower22=22: Cat's Footprint"), image : "Picture Frame/22.png" } ], itemValue : modelParameters.flowerNumber, itemMin : 0, itemMax : 20, varName : 'flowerNumber' }, { itemName : localize("$$$/DecoScripts/Frame/FColor=Flower Color:"), itemUnit : "", itemType : 'colorpicker', itemValue : modelParameters.fcolor, varName : 'fcolor' }, { itemName : localize("$$$/DecoScripts/Frame/FlowerSize=Flower Size:"), itemUnit : "", itemType : 'slider', itemValue : modelParameters.flowerSize, itemMin : 1, itemMax : 100, itemStep : 1, varName : 'flowerSize' }, { itemName : localize("$$$/DecoScripts/Frame/LeafType=Leaf:"), itemUnit : "", itemType : 'dropdownlist', itemList : [ { item: localize("$$$/DecoScripts/Frame/Leaf0= None"), image : "Picture Frame/L_.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf1= 1: Circle"), image : "Picture Frame/L0.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf2= 2: Square"), image : "Picture Frame/L1.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf3= 3: Drop 1"), image : "Picture Frame/L2.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf4= 4: Leaf 1"), image : "Picture Frame/L3.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf5= 5: Drop 2"), image : "Picture Frame/L4.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf6= 6: Drop 3"), image : "Picture Frame/L5.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf7= 7: Leaf 2"), image : "Picture Frame/L6.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf8= 8: Puff"), image : "Picture Frame/L7.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf9= 9: Leaf 3"), image : "Picture Frame/L8.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf10=10: Ginkgo leaf"), image : "Picture Frame/L9.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf11=11: Triangle"), image : "Picture Frame/L10.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf12=12: Leaf 4"), image : "Picture Frame/L11.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf13=13: Star 1"), image : "Picture Frame/L12.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf14=14: Oval"), image : "Picture Frame/L13.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf15=15: Trapezoid"), image : "Picture Frame/L14.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf16=16: Lollipop 1"), image : "Picture Frame/L15.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf17=17: Leaf 5"), image : "Picture Frame/L16.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf18=18: Star 2"), image : "Picture Frame/L17.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf19=19: Lollipop 2"), image : "Picture Frame/L18.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf20=20: Cross"), image : "Picture Frame/L19.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf21=21: Heart"), image : "Picture Frame/L20.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf22=22: T"), image : "Picture Frame/L21.png" }, { item: localize("$$$/DecoScripts/Frame/Leaf23=23: Star 3"), image : "Picture Frame/L22.png" } ], itemValue : modelParameters.leafNumber, itemMin : 0, itemMax : 23, varName : 'leafNumber' }, { itemName : localize("$$$/DecoScripts/Frame/LColor=Leaf Color:"), itemUnit : "", itemType : 'colorpicker', itemValue : modelParameters.lcolor, varName : 'lcolor' }, { itemName : localize("$$$/DecoScripts/Frame/LeafSize=Leaf Size:"), itemUnit : "", itemType : 'slider', itemValue : modelParameters.leafSize, itemMin : 1, itemMax : 100, itemStep : 1, varName : 'leafSize' }, ] }, { panelName : sAdvanced, panelWidth : 450, leftColumnWidth : 180, panelMenu : [ { itemName : localize("$$$/DecoScripts/Frame/nLines=Number of Lines:"), itemUnit : "", itemType : 'slider', itemValue : modelParameters.nlines, itemMin : 1, itemMax : 30, itemStep : 1, varName : 'nlines' }, { itemName : localize("$$$/DecoScripts/Frame/Width=Thickness:"), itemUnit : "", itemType : 'slider', itemValue : modelParameters.width, itemMin : 1, itemMax : 200, itemStep : 1, varName : 'width' }, { itemName : localize("$$$/DecoScripts/Frame/Angle=Angle:"), itemUnit : "", itemType : 'slider', itemValue : modelParameters.angle, itemMin : 0, itemMax : 360, itemStep : 0.1, varName : 'angle' }, { itemName : localize("$$$/DecoScripts/Frame/opacity=Fade:"), itemUnit : "", itemType : 'slider', itemValue : modelParameters.fade, itemMin : 0, itemMax : 100, itemStep : 1, varName : 'fade' }, { itemName : localize("$$$/DecoScripts/Frame/Flip=Invert"), itemUnit : "", itemType : 'checkbox', itemValue : modelParameters.flip, itemMin : 0, itemMax : 0, varName : 'flip' }, ] } ] // end of panels }; // end of menu // If livePreview is set to 1, the preview image is updated live. Note that due to limitations of scripted menus the update is slow and the flickering may be disturbing. livePreview = 0 // recommended value is 0 // Call Photoshop Script that creates the menu Engine.evalFile ("_Deco Menu.jsx") // Menu finished ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// if (typeof skipRun == 'undefined' || !skipRun) // run unles we exited the preview window without pressing a button run(RenderAPI, modelParameters, 1)