From 4cf4eeae80ecf9bdf7d84d62df2fbe04810e66ca Mon Sep 17 00:00:00 2001 From: w1z7ard Date: Fri, 14 Sep 2007 19:45:45 +0000 Subject: [PATCH] - merged in geiss & sperl's idle preset - preset chooser doesn't abort when preset dir is invalid - added smooth preset switch cancellation when preset chooser empty (untested) - changed preset construct to allow for custom preset name when using input streams as source git-svn-id: https://projectm.svn.sourceforge.net/svnroot/projectm/trunk@427 6778bc44-b910-0410-a7a0-be141de4315d --- src/projectM-engine/BuiltinFuncs.cpp | 3 - src/projectM-engine/IdlePreset.cpp | 399 +++++++++++++++++++-------- src/projectM-engine/IdlePreset.hpp | 3 +- src/projectM-engine/Preset.cpp | 4 +- src/projectM-engine/Preset.hpp | 3 +- src/projectM-engine/PresetLoader.cpp | 19 +- src/projectM-engine/projectM.cpp | 2 +- 7 files changed, 300 insertions(+), 133 deletions(-) diff --git a/src/projectM-engine/BuiltinFuncs.cpp b/src/projectM-engine/BuiltinFuncs.cpp index 41447b62d..5183b4514 100644 --- a/src/projectM-engine/BuiltinFuncs.cpp +++ b/src/projectM-engine/BuiltinFuncs.cpp @@ -53,9 +53,6 @@ Func * BuiltinFuncs::find_func(const std::string & name) { } - - - int BuiltinFuncs::load_all_builtin_func() { if (load_builtin_func("int", FuncWrappers::int_wrapper, 1) < 0) diff --git a/src/projectM-engine/IdlePreset.cpp b/src/projectM-engine/IdlePreset.cpp index 2822fba2e..f7762fb3e 100644 --- a/src/projectM-engine/IdlePreset.cpp +++ b/src/projectM-engine/IdlePreset.cpp @@ -2,129 +2,306 @@ #include #include +const std::string IdlePreset::IDLE_PRESET_NAME + ("Geiss & Sperl - Feedback (projectM idle HDR mix)"); + std::string IdlePreset::presetText() { std::ostringstream out; -out << -"[preset00]\n" << -"fRating=2.000000\n" -"fGammaAdj=1.000000\n" -"fDecay=0.992000\n" << -"fVideoEchoZoom=0.999400\n" << -"fVideoEchoAlpha=0.500000\n" << -"nVideoEchoOrientation=3\n" << -"nWaveMode=7\n" << +out << "[preset00]\n" << +"fRating=3.000000\n" << +"fGammaAdj=1\n" << +"fDecay=0.9\n" << +"fVideoEchoZoom=0.710682\n" << +"fVideoEchoAlpha=0" +"nVideoEchoOrientation=0\n" << +"nWaveMode=6\n" << "bAdditiveWaves=1\n" << "bWaveDots=0\n" << "bWaveThick=1\n" << -"bModWaveAlphaByVolume=0\n" << +"bModWaveAlphaByVolume=1\n" << "bMaximizeWaveColor=0\n" << -"bTexWrap=0\n" << +"bTexWrap=1\n" << "bDarkenCenter=0\n" << "bRedBlueStereo=0\n" << "bBrighten=0\n" << -"bDarken=1\n" << +"bDarken=0\n" << "bSolarize=0\n" << "bInvert=0\n" << -"fWaveAlpha=1.059200\n" << -"fWaveScale=0.653093\n" << -"fWaveSmoothing=0.270000\n" << -"fWaveParam=-0.380000\n" << -"fModWaveAlphaStart=0.750000\n" << -"fModWaveAlphaEnd=0.950000\n" << -"fWarpAnimSpeed=5.995790\n" << -"fWarpScale=1.331000\n" << -"fZoomExponent=1.000000\n" << -"fShader=0.000000\n" << -"zoom=1.008000\n" << -"rot=0.001900\n" << -"cx=0.500000\n" << -"cy=0.500000\n" << -"dx=0.000000\n" << -"dy=0.000000\n" << -"warp=0.010000\n" << -"sx=1.000000\n" << -"sy=1.000000\n" << -"wave_r=1.000000\n" << -"wave_g=1.000000\n" << -"wave_b=1.000000\n" << -"wave_x=0.500000\n" << -"wave_y=0.500000\n" << -"ob_size=0.005000\n" << -"ob_r=0.000000\n" << -"ob_g=0.000000\n" << -"ob_b=0.000000\n" << -"ob_a=1.000000\n" << -"ib_size=0.010000\n" << -"ib_r=0.500000\n" << -"ib_g=0.900000\n" << -"ib_b=0.500000\n" << -"ib_a=1.000000\n" << -"nMotionVectorsX=24.959999\n" << -"nMotionVectorsY=19.199999\n" << -"mv_dx=0.000000\n" << -"mv_dy=0.000000\n" << -"mv_l=0.850000\n" << -"mv_r=0.499900\n" << -"mv_g=0.499900\n" << -"mv_b=0.499900\n" << -"mv_a=1.000000\n" << -"per_frame_1=warp=0;\n" << -"per_frame_2=old_bass_flop=bass_flop;\n" << -"per_frame_3=old_treb_flop=treb_flop;\n" << -"per_frame_4=old_mid_flop=mid_flop;\n" << -"per_frame_5=chaos=.9+.1*sin(pulse);\n" << -"per_frame_6=entropy=if(equal(pulse,-20),1+bass_flop+treb_flop+mid_flop+rand(2),entropy);\n" << -"per_frame_7=bass_thresh = above(bass_att,bass_thresh)*2 +(1-above(bass_att,bass_thresh))*((bass_thresh-1.6)*chaos+1.6);\n" << -"per_frame_8=bass_flop=abs(bass_flop-equal(bass_thresh,2));\n" << -"per_frame_9=treb_thresh=above(treb_att,treb_thresh)*2 + (1-above(treb_att,treb_thresh))*((treb_thresh-1.6)*chaos+1.6);\n" << -"per_frame_10=treb_flop=abs(treb_flop-equal(treb_thresh,2));\n" << -"per_frame_11=mid_thresh=above(mid_att,mid_thresh)*2 + (1-above(mid_att,mid_thresh))*((mid_thresh-1.6)*chaos+1.6);\n" << -"per_frame_12=mid_flop=abs(mid_flop-equal(mid_thresh,2));\n" << -"per_frame_13=bass_changed=bnot(equal(old_bass_flop,bass_flop));\n" << -"per_frame_14=mid_changed=bnot(equal(old_mid_flop,mid_flop));\n" << -"per_frame_15=treb_changed=bnot(equal(old_treb_flop,treb_flop));\n" << -"per_frame_16=bass_residual = bass_changed*sin(pulse*3) + bnot(bass_changed)*bass_residual;\n" << -"per_frame_17=treb_residual = treb_changed*sin(pulse*3) + bnot(treb_changed)*treb_residual;\n" << -"per_frame_18=mid_residual = mid_changed*sin(pulse*3) + bnot(mid_changed)*mid_residual;\n" << -"per_frame_19=pulse=if(above(abs(pulse),20),-20,pulse+(bass_thresh+mid_thresh+treb_thresh)*.018);\n" << -"per_frame_20=q1=mid_residual;\n" << -"per_frame_21=q2=bass_residual;\n" << -"per_frame_22=q3=treb_residual;\n" << -"per_frame_23=q4=sin(pulse);\n" << -"per_frame_24=q5=cos(pulse*(.5+.1*entropy));\n" << -"per_frame_25=q6=sin(pulse*(.5+pow(.25,entropy)));\n" << -"per_frame_26=q7=above(q1,0)+above(q2,0)+above(q3,0)+above(q3,0)*treb_flop+above(q2,0)*bass_flop+above(q1,0)*mid_flop;\n" << -"per_frame_27=q8=entropy;\n" << -"per_frame_28=ob_r=.4+.4*sin(time*2.157+q6);\n" << -"per_frame_29=ob_b=.8+.2*sin(time*1.689+q5);\n" << -"per_frame_30=ob_g=.6+.4*sin(time*.413+q4);\n" << -"per_frame_31=ib_r=.5+.5*cos(time*1.2+q1*.1);\n" << -"per_frame_32=ib_b=.4+.4*cos(time*2.811+q2*.1);\n" << -"per_frame_33=ib_g=.4+.4*cos(time*1.666+q3*.1);\n" << -"per_frame_34=ib_size=.05+.03*q2;\n" << -"per_frame_35=ob_size=.03+.02*sin(time*2.321+q2*.2);\n" << -"per_frame_36=ob_a=.6+.4*q3;\n" << -"per_frame_37=ib_a=.9+.1*sin(q2*.3+q4+q1*.5);\n" << -"per_frame_38=mv_r=mv_r+.5*sin(q4+time*.678);\n" << -"per_frame_39=mv_b=mv_b+.5*sin(q4+time*.789);\n" << -"per_frame_40=mv_g=mv_g+.5*sin(q5+time*.456);\n" << -"per_frame_41=mv_a=.2+.2*sin(time*1.178+q5*1.14);\n" << -"per_frame_42=rot=0;\n" << -"per_frame_43=wave_r=.6+.4*sin(q1+time*2.183);\n" << -"per_frame_44=wave_b=.6+.4*sin(q2+time*1.211);\n" << -"per_frame_45=wave_g=.6+.4*sin(q3+time*1.541);\n" << -"per_frame_46=wave_mystery=wave_mystery+.5*sin(time*2.18+q6);\n" << -"per_frame_47=wave_x=wave_x+.3*sin(time*.811)+.005*(frame%3);\n" << -"per_frame_48=wave_y=wave_y+.3*sin(time*.788)+.005*(frame%3);\n" << -"per_frame_49=wave_a=3+sin(time*1.414)+q3;\n" << -"per_frame_50=wave_mode=q7;\n" << -"per_frame_51=zoom=1+.7*sin(time*1.51);\n" << -"per_pixel_1=rot=if(above(q4,0),rad*.2*q5,sin(rad*(q4+q3)));\n" << -"per_pixel_2=zoom=if(above(q2,0),zoom+(1-zoom)*rot*cos(rad*3.14*q2),if(above(q3,0)*above(x,.5+.5*q5),zoom+(1-zoom)*sin(q1*rot*3.14),zoom+(1-zoom)*cos(rad*10*q6)));\n" << -"per_pixel_3=dx=above(q1,0)*sin(rad*.5*q2);\n" << -"per_pixel_4=dy=above(q3,0)*sin(rad*.5*q3);\n"; +"fWaveAlpha=0.311604\n" << +"fWaveScale=1.22891\n" << +"fWaveSmoothing=0\n" << +"fWaveParam=0.2\n" << +"fModWaveAlphaStart=0.71\n" << +"fModWaveAlphaEnd=1.3\n" << +"fWarpAnimSpeed=1\n" << +"fWarpScale=1\n" << +"fZoomExponent=1\n" << +"fShader=0\n" << +"zoom=0.999902\n" << +"rot=0\n" << +"cx=0.5\n" << +"cy=0.5\n" << +"dx=0\n" << +"dy=0\n" << +"warp=0.207965\n" << +"sx=1\n" << +"sy=1\n" << +"wave_r=0.65\n" << +"wave_g=0.65\n" << +"wave_b=0.65\n" << +"wave_x=0.5\n" << +"wave_y=0.5\n" << +"ob_size=0.0065\n" << +"ob_r=0\n" << +"ob_g=0\n" << +"ob_b=0\n" << +"ob_a=0\n" << +"ib_size=0.26\n" << +"ib_r=0.25\n" << +"ib_g=0.25\n" << +"ib_b=0.25\n" << +"ib_a=0\n" << +"nMotionVectorsX=64\n" << +"nMotionVectorsY=48\n" << +"mv_dx=0\n" << +"mv_dy=0\n" << +"mv_l=0.85\n" << +"mv_r=0.4999\n" << +"mv_g=0.4999\n" << +"mv_b=0.4999\n" << +"mv_a=0\n" << +"shapecode_0_enabled=1\n" << +"shapecode_0_sides=4\n" << +"shapecode_0_additive=0\n" << +"shapecode_0_thickOutline=0\n" << +"shapecode_0_textured=0\n" << +"shapecode_0_x=0.37\n" << +"shapecode_0_y=0.5\n" << +"shapecode_0_rad=4.999997\n" << +"shapecode_0_ang=3.644249\n" << +"shapecode_0_tex_ang=0\n" << +"shapecode_0_tex_zoom=1\n" << +"shapecode_0_r=0\n" << +"shapecode_0_g=0\n" << +"shapecode_0_b=0\n" << +"shapecode_0_a=0.5\n" << +"shapecode_0_r2=0\n" << +"shapecode_0_g2=0\n" << +"shapecode_0_b2=0\n" << +"shapecode_0_a2=0.3\n" << +"shapecode_0_border_r=1\n" << +"shapecode_0_border_g=1\n" << +"shapecode_0_border_b=1\n" << +"shapecode_0_border_a=1\n" << +"shape_0_init1=t1 = rand(100)*0.01;\n" << +"shape_0_init2=t2 = rand(100)*0.01;\n" << +"shape_0_per_frame1=ang = time*(0.3 + 0.1*t1);\n" << +"shape_0_per_frame2=rad = rad * (0.9 + 0.2*t2);\n" << +"shape_0_per_frame3=r = min(1,max(0,r + 0.2*sin(time*0.417 + 1)));\n" << +"shape_0_per_frame4=g = min(1,max(0,g + 0.2*sin(time*0.391 + 2)));\n" << +"shape_0_per_frame5=b = min(1,max(0,b + 0.2*sin(time*0.432 + 4)));\n" << +"shape_0_per_frame6=r2 = min(1,max(0,r2 + 0.2*sin(time*0.657 + 3)));\n" << +"shape_0_per_frame7=g2 = min(1,max(0,g2 + 0.2*sin(time*0.737 + 5)));\n" << +"shape_0_per_frame8=b2 = min(1,max(0,b2 + 0.2*sin(time*0.884 + 6)));\n" << +"shapecode_1_enabled=1\n" << +"shapecode_1_sides=5\n" << +"shapecode_1_additive=1\n" << +"shapecode_1_thickOutline=0\n" << +"shapecode_1_textured=1\n" << +"shapecode_1_x=0.37\n" << +"shapecode_1_y=0.5\n" << +"shapecode_1_rad=0.706533\n" << +"shapecode_1_ang=3.644249\n" << +"shapecode_1_tex_ang=0\n" << +"shapecode_1_tex_zoom=1\n" << +"shapecode_1_r=1\n" << +"shapecode_1_g=1\n" << +"shapecode_1_b=1\n" << +"shapecode_1_a=0.8\n" << +"shapecode_1_r2=1\n" << +"shapecode_1_g2=1\n" << +"shapecode_1_b2=1\n" << +"shapecode_1_a2=0\n" << +"shapecode_1_border_r=1\n" << +"shapecode_1_border_g=1\n" << +"shapecode_1_border_b=1\n" << +"shapecode_1_border_a=0\n" << +"shape_1_init1=t1 = rand(100)*0.01;\n" << +"shape_1_init2=t2 = rand(100)*0.01;\n" << +"shape_1_per_frame1=x = x + 0.05*sin(time*1.25+3);\n" << +"shape_1_per_frame2=y = y + 0.03*sin(time*1.49+1);\n" << +"shape_1_per_frame3=ang = time*(0.3 + 0.1*t1);\n" << +"shape_1_per_frame4=rad = rad * (0.9 + 0.2*t2);\n" << +"shape_1_per_frame5=r = min(1,max(0,r + 0.1*sin(time*0.417 + 1)));\n" << +"shape_1_per_frame6=g = min(1,max(0,g + 0.1*sin(time*0.391 + 2)));\n" << +"shape_1_per_frame7=b = min(1,max(0,b + 0.1*sin(time*0.432 + 4)));\n" << +"shape_1_per_frame8=r2 = min(1,max(0,r2 + 0.1*sin(time*0.457 + 3)));\n" << +"shape_1_per_frame9=g2 = min(1,max(0,g2 + 0.1*sin(time*0.437 + 5)));\n" << +"shape_1_per_frame10=b2 = min(1,max(0,b2 + 0.1*sin(time*0.484 + 6)));\n" << +"shapecode_2_enabled=1\n" << +"shapecode_2_sides=5\n" << +"shapecode_2_additive=1\n" << +"shapecode_2_thickOutline=0\n" << +"shapecode_2_textured=1\n" << +"shapecode_2_x=0.67\n" << +"shapecode_2_y=0.43\n" << +"shapecode_2_rad=0.706533\n" << +"shapecode_2_ang=4.209736\n" << +"shapecode_2_tex_ang=0\n" << +"shapecode_2_tex_zoom=1\n" << +"shapecode_2_r=1\n" << +"shapecode_2_g=1\n" << +"shapecode_2_b=1\n" << +"shapecode_2_a=0.8\n" << +"shapecode_2_r2=1\n" << +"shapecode_2_g2=1\n" << +"shapecode_2_b2=1\n" << +"shapecode_2_a2=0\n" << +"shapecode_2_border_r=1\n" << +"shapecode_2_border_g=1\n" << +"shapecode_2_border_b=1\n" << +"shapecode_2_border_a=0\n" << +"shape_2_init1=t1 = rand(100)*0.01;\n" << +"shape_2_init2=t2 = rand(100)*0.01;\n" << +"shape_2_per_frame1=x = x + 0.05*sin(time*2.17);\n" << +"shape_2_per_frame2=y = y + 0.03*sin(time*1.83);\n" << +"shape_2_per_frame3=ang = time*(0.3 + 0.1*t1);\n" << +"shape_2_per_frame4=rad = rad * (0.9 + 0.2*t2);\n" << +"shape_2_per_frame5=r = min(1,max(0,r + 0.1*sin(time*0.417 + 1)));\n" << +"shape_2_per_frame6=g = min(1,max(0,g + 0.1*sin(time*0.391 + 2)));\n" << +"shape_2_per_frame7=b = min(1,max(0,b + 0.1*sin(time*0.432 + 4)));\n" << +"shape_2_per_frame8=r2 = min(1,max(0,r2 + 0.1*sin(time*0.457 + 3)));\n" << +"shape_2_per_frame9=g2 = min(1,max(0,g2 + 0.1*sin(time*0.437 + 5)));\n" << +"shape_2_per_frame10=b2 = min(1,max(0,b2 + 0.1*sin(time*0.484 + 6)));\n" << +"shapecode_5_enabled=1\n" << +"shapecode_5_sides=16\n" << +"shapecode_5_additive=1\n" << +"shapecode_5_thickOutline=1\n" << +"shapecode_5_textured=0\n" << +"shapecode_5_x=0.68\n" << +"shapecode_5_y=0.5\n" << +"shapecode_5_rad=0.509999\n" << +"shapecode_5_ang=0\n" << +"shapecode_5_tex_ang=0\n" << +"shapecode_5_tex_zoom=1\n" << +"shapecode_5_r=1\n" << +"shapecode_5_g=0\n" << +"shapecode_5_b=0\n" << +"shapecode_5_a=0.46\n" << +"shapecode_5_r2=0\n" << +"shapecode_5_g2=1\n" << +"shapecode_5_b2=0\n" << +"shapecode_5_a2=0\n" << +"shapecode_5_border_r=0\n" << +"shapecode_5_border_g=1\n" << +"shapecode_5_border_b=1\n" << +"shapecode_5_border_a=0\n" << +"shape_5_per_frame1=ang = time*1.4;\n" << +"shape_5_per_frame2=x = x + q1;\n" << +"shape_5_per_frame3=y = y + q2;\n" << +"shape_5_per_frame4=r = 0.5 + 0.5*sin(time*0.713 + 1);\n" << +"shape_5_per_frame5=g = 0.5 + 0.5*sin(time*0.563 + 2);\n" << +"shape_5_per_frame6=b = 0.5 + 0.5*sin(time*0.654 + 5);\n" << +"shape_5_per_frame7=r2 = 0.5 + 0.5*sin(time*0.885 + 4);\n" << +"shape_5_per_frame8=g2 = 0.5 + 0.5*sin(time*0.556+ 1);\n" << +"shape_5_per_frame9=b2 = 0.5 + 0.5*sin(time*0.638 + 3);\n" << +"shapecode_3_enabled=1\n" << +"shapecode_3_sides=4\n" << +"shapecode_3_additive=0\n" << +"shapecode_3_thickOutline=0\n" << +"shapecode_3_textured=1\n" << +"shapecode_3_ImageURL=M.tga\n" << +"shapecode_3_x=0.68\n" << +"shapecode_3_y=0.5\n" << +"shapecode_3_rad=0.41222\n" << +"shapecode_3_ang=0\n" << +"shapecode_3_tex_ang=0\n" << +"shapecode_3_tex_zoom=0.71\n" << +"shapecode_3_r=1\n" << +"shapecode_3_g=1\n" << +"shapecode_3_b=1\n" << +"shapecode_3_a=1\n" << +"shapecode_3_r2=1\n" << +"shapecode_3_g2=1\n" << +"shapecode_3_b2=1\n" << +"shapecode_3_a2=1\n" << +"shapecode_3_border_r=0\n" << +"shapecode_3_border_g=0\n" << +"shapecode_3_border_b=0\n" << +"shapecode_3_border_a=0\n" << +"shape_3_per_frame1=x = x + q1;\n" << +"shape_3_per_frame2=y = y + q2;\n" << +"shape_3_per_frame3=b2 = (sin(time)+1)*0.5;\n" << +"shape_3_per_frame4=b = (sin(time)+1)*0.5;\n" << +"shape_3_per_frame5=g2 = (cos(time*0.75+1)+1)*0.5;\n" << +"shape_3_per_frame6=g = (cos(time*0.75+1)+1)*0.5;\n" << +"shape_3_per_frame7=r2 = (sin(time*1.25+2)+1)*0.5;\n" << +"shape_3_per_frame8=r = (sin(time*1.25+2)+1)*0.5;\n" << +"shape_3_per_frame9=a = q3;\n" << +"shape_3_per_frame10=a2 = q3;\n" << +"shapecode_4_enabled=1\n" << +"shapecode_4_sides=4\n" << +"shapecode_4_additive=0\n" << +"shapecode_4_thickOutline=0\n" << +"shapecode_4_textured=1\n" << +"shapecode_4_ImageURL=headphones.tga\n" << +"shapecode_4_x=0.68\n" << +"shapecode_4_y=0.58\n" << +"shapecode_4_rad=0.6\n" << +"shapecode_4_ang=0\n" << +"shapecode_4_tex_ang=0\n" << +"shapecode_4_tex_zoom=0.71\n" << +"shapecode_4_r=1\n" << +"shapecode_4_g=1\n" << +"shapecode_4_b=1\n" << +"shapecode_4_a=1\n" << +"shapecode_4_r2=1\n" << +"shapecode_4_g2=1\n" << +"shapecode_4_b2=1\n" << +"shapecode_4_a2=1\n" << +"shapecode_4_border_r=0\n" << +"shapecode_4_border_g=0\n" << +"shapecode_4_border_b=0\n" << +"shapecode_4_border_a=0\n" << +"shape_4_per_frame1=x = x + q1;\n" << +"shape_4_per_frame2=y = y + q2;\n" << +"shape_4_per_frame3=rad = rad + bass * 0.1;\n" << +"shape_4_per_frame4=a = q3;\n" << +"shape_4_per_frame5=a2 = q3;\n" << +"shapecode_6_enabled=1\n" << +"shapecode_6_sides=4\n" << +"shapecode_6_additive=0\n" << +"shapecode_6_thickOutline=0\n" << +"shapecode_6_textured=1\n" << +"shapecode_6_ImageURL=project.tga\n" << +"shapecode_6_x=0.38\n" << +"shapecode_6_y=0.435\n" << +"shapecode_6_rad=0.8\n" << +"shapecode_6_ang=0\n" << +"shapecode_6_tex_ang=0\n" << +"shapecode_6_tex_zoom=0.71\n" << +"shapecode_6_r=1\n" << +"shapecode_6_g=1\n" << +"shapecode_6_b=1\n" << +"shapecode_6_a=1\n" << +"shapecode_6_r2=1\n" << +"shapecode_6_g2=1\n" << +"shapecode_6_b2=1\n" << +"shapecode_6_a2=1\n" << +"shapecode_6_border_r=0\n" << +"shapecode_6_border_g=0\n" << +"shapecode_6_border_b=0\n" << +"shapecode_6_border_a=0\n" << +"shape_6_per_frame1=x = x + q1;\n" << +"shape_6_per_frame2=y = y + q2;\n" << +"shape_6_per_frame3=a = q3;\n" << +"shape_6_per_frame4=a2 = q3;\n" << +"per_frame_1=wave_mystery = time%5*0.2;\n" << +"per_frame_2=q1 = 0.15*sin(time*1.14);\n" << +"per_frame_3=q2 = 0.1*sin(time*0.93+2);\n" << +"per_frame_4=q3 = if(above(frame,60),1, frame/60.0);\n"; return out.str(); @@ -134,6 +311,6 @@ std::auto_ptr IdlePreset::allocate(const PresetInputs & presetInputs, Pr { std::istringstream in(presetText()); - return std::auto_ptr(new Preset(in, presetInputs, presetOutputs)); + return std::auto_ptr(new Preset(in, presetInputs, presetOutputs, IDLE_PRESET_NAME)); } diff --git a/src/projectM-engine/IdlePreset.hpp b/src/projectM-engine/IdlePreset.hpp index b952506b2..4553ae9bd 100644 --- a/src/projectM-engine/IdlePreset.hpp +++ b/src/projectM-engine/IdlePreset.hpp @@ -7,9 +7,10 @@ class IdlePreset { public: - /// Allocate a new idle prest instance + /// Allocate a new idle preset instance static std::auto_ptr allocate(const PresetInputs & presetInputs, PresetOutputs & presetOutputs); private: static std::string presetText(); + static const std::string IDLE_PRESET_NAME; }; #endif diff --git a/src/projectM-engine/Preset.cpp b/src/projectM-engine/Preset.cpp index 7a0ebc25c..d0f5d4f0b 100755 --- a/src/projectM-engine/Preset.cpp +++ b/src/projectM-engine/Preset.cpp @@ -38,9 +38,9 @@ #include -Preset::Preset(std::istream & in, const PresetInputs & presetInputs, PresetOutputs & presetOutputs): +Preset::Preset(std::istream & in, const PresetInputs & presetInputs, PresetOutputs & presetOutputs, const std::string & _presetName): builtinParams(presetInputs, presetOutputs), - file_path("[Input Stream]"), + file_path(_presetName), m_presetOutputs(presetOutputs), m_presetInputs(presetInputs) diff --git a/src/projectM-engine/Preset.hpp b/src/projectM-engine/Preset.hpp index 353b00818..93a7daaeb 100644 --- a/src/projectM-engine/Preset.hpp +++ b/src/projectM-engine/Preset.hpp @@ -70,7 +70,7 @@ public: /// \param in an already initialized input stream to read the preset file from /// \param presetInputs a const reference to read only projectM engine variables /// \param presetOutputs initialized and filled with data parsed from a preset - Preset(std::istream & in, const PresetInputs & presetInputs, PresetOutputs & presetOutputs); + Preset(std::istream & in, const PresetInputs & presetInputs, PresetOutputs & presetOutputs, const std::string & _presetName); ~Preset(); @@ -117,6 +117,7 @@ public: /// \returns A preset output instance with values computed from most recent evaluateFrame() PresetOutputs & presetOutputs() const { + return m_presetOutputs; } diff --git a/src/projectM-engine/PresetLoader.cpp b/src/projectM-engine/PresetLoader.cpp index 2040405da..962e23756 100644 --- a/src/projectM-engine/PresetLoader.cpp +++ b/src/projectM-engine/PresetLoader.cpp @@ -46,42 +46,35 @@ void PresetLoader::setScanDirectory(std::string dirname) void PresetLoader::rescan() { - std::cerr << "Rescanning..." << std::endl; + // std::cerr << "Rescanning..." << std::endl; // Clear the directory entry collection m_entries.clear(); - std::cerr << "cleared!" << std::endl; - // If directory already opened, close it first if (m_dir) { - std::cerr << "m_dir" << std::endl; closedir(m_dir); m_dir = 0; } - std::cerr << "opening " << m_dirname << std::endl; // Allocate a new a stream given the current directory name if ((m_dir = opendir(m_dirname.c_str())) == NULL) { handleDirectoryError(); - abort(); + return; // no files loaded. m_entries is empty } struct dirent * dir_entry; std::set alphaSortedFileSet; while ((dir_entry = readdir(m_dir)) != NULL) - { - - + { std::ostringstream out; // Convert char * to friendly string std::string filename(dir_entry->d_name); - // Verify extension is projectm or milkdrop if ((filename.rfind(PROJECTM_FILE_EXTENSION) != (filename.length() - PROJECTM_FILE_EXTENSION.length())) && (filename.rfind(MILKDROP_FILE_EXTENSION) != (filename.length() - MILKDROP_FILE_EXTENSION.length()))) @@ -118,8 +111,6 @@ std::auto_ptr PresetLoader::loadPreset(unsigned int index, const PresetI return std::auto_ptr(new Preset(m_entries[index], presetInputs, presetOutputs)); } - - void PresetLoader::handleDirectoryError() { switch (errno) @@ -135,10 +126,10 @@ void PresetLoader::handleDirectoryError() break; case ENFILE: std::cerr << "[PresetLoader] Your system has reached its open file limit. Giving up..." << std::endl; - abort(); + break; case EMFILE: std::cerr << "[PresetLoader] too many files in use by projectM! Bailing!" << std::endl; - abort(); + break; case EACCES: std::cerr << "[PresetLoader] permissions issue reading the specified preset directory." << std::endl; break; diff --git a/src/projectM-engine/projectM.cpp b/src/projectM-engine/projectM.cpp index 954f10701..3f67d7f00 100755 --- a/src/projectM-engine/projectM.cpp +++ b/src/projectM-engine/projectM.cpp @@ -174,7 +174,7 @@ DLLEXPORT void projectM::renderFrame() m_activePreset->evaluateFrame(); - if ( renderer->noSwitch==0 ) + if ( renderer->noSwitch==0 && !m_presetChooser->empty()) { if ( presetInputs.progress>1.0 ) {