12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961 |
- #include "api__vis_milk2.h"
- #include "state.h"
- #include "support.h"
- #include "ns-eel2/ns-eel.h"
- #include "plugin.h"
- #include "utility.h"
- #include <windows.h>
- #include <locale.h>
- #include "resource.h"
- #include <vector>
- #include <assert.h>
- extern CPlugin g_plugin;
- #define FRAND ((rand() % 7381)/7380.0f)
- #include "gstring.h"
- typedef std::vector<GStringA> VarNameList;
- typedef std::vector<int > IntList;
- FILE* fLastFilePtr = NULL;
- void GetFast_CLEAR() { fLastFilePtr = NULL; }
- bool _GetLineByName(FILE* f, const char* szVarName, char* szRet, int nMaxRetChars)
- {
-
-
-
-
- static int MyLineNum = 0;
- static VarNameList line_varName;
- static IntList line_value_bytepos;
- if (f != fLastFilePtr)
- {
- fLastFilePtr = f;
- MyLineNum = 0;
- line_varName.clear();
- line_value_bytepos.clear();
-
-
- fseek(f, 0, SEEK_SET);
-
- #define MAX_VARNAME_LEN 128
- char szThisLineVarName[MAX_VARNAME_LEN];
- while (1)
- {
- char ch;
- int pos = 0;
- do
- {
- ch = fgetc(f);
- if (pos < MAX_VARNAME_LEN-3)
- szThisLineVarName[pos++] = ch;
- }
- while ( ch != '\r' &&
- ch != '\n' &&
- ch != ' ' &&
- ch != '=' &&
- ch != EOF );
- if (ch == EOF)
- break;
-
- if (ch == '=' || ch == ' ')
- {
- szThisLineVarName[pos-1] = 0;
- int bytepos = ftell(f);
-
- line_varName.push_back(szThisLineVarName);
- line_value_bytepos.push_back( bytepos );
-
-
- fgets(szRet, nMaxRetChars-3, f);
- }
- if (ch == EOF)
- break;
-
-
- do
- {
- ch = fgetc(f);
- }
- while ((ch == '\r' || ch == '\n') && ch != EOF);
- if (ch == EOF)
- break;
-
- fseek(f, -1, SEEK_CUR);
-
- }
- }
-
- if (MyLineNum < 0 || (size_t)MyLineNum >= line_varName.size() || strcmp(line_varName[MyLineNum].c_str(), szVarName) != 0)
- {
- int N = line_varName.size();
- int i = 0;
- for (i=0; i<N; i++)
- if (strcmp(line_varName[i].c_str(), szVarName) == 0)
- {
- MyLineNum = i;
- break;
- }
-
-
- if (i==N)
- return false;
- }
- fseek(f, line_value_bytepos[MyLineNum], SEEK_SET);
-
- int nChars = 0;
- int pos = 0;
- while (pos < nMaxRetChars-3)
- {
- char ch = fgetc(f);
- if (ch == '\r' || ch == '\n' || ch==EOF)
- break;
- szRet[pos++] = ch;
- };
- szRet[pos] = 0;
-
-
- MyLineNum++;
-
- return true;
- }
- int GetFastInt (const char* szVarName, int def, FILE* f)
- {
- char buf[256];
- if (!_GetLineByName(f, szVarName, buf, 255))
- return def;
- int ret;
- if (sscanf(buf, "%d", &ret)==1)
- return ret;
- return def;
- }
- float GetFastFloat (const char* szVarName, float def, FILE* f)
- {
- char buf[256];
- if (!_GetLineByName(f, szVarName, buf, 255))
- return def;
- float ret;
- if (_sscanf_l(buf, "%f", g_use_C_locale, &ret)==1)
- {
- return ret;
- }
- return def;
- }
- void GetFastString(const char* szVarName, const char* szDef, char* szRetLine, int nMaxChars, FILE* f)
- {
- if (_GetLineByName(f, szVarName, szRetLine, nMaxChars-1))
- return;
-
-
- int x = 0;
- while (szDef[x] && x < nMaxChars)
- {
- szRetLine[x] = szDef[x];
- x++;
- }
- szRetLine[x] = 0;
- }
- CState::CState()
- {
-
-
-
- m_pf_codehandle = NULL;
- m_pp_codehandle = NULL;
- m_pf_eel = NSEEL_VM_alloc();
- m_pv_eel = NSEEL_VM_alloc();
- int i = 0;
- for (i=0; i<MAX_CUSTOM_WAVES; i++)
- {
- m_wave[i].m_pf_codehandle = NULL;
- m_wave[i].m_pp_codehandle = NULL;
- m_wave[i].m_pf_eel=NSEEL_VM_alloc();
- m_wave[i].m_pp_eel=NSEEL_VM_alloc();
- }
- for (i=0; i<MAX_CUSTOM_SHAPES; i++)
- {
- m_shape[i].m_pf_codehandle = NULL;
- m_shape[i].m_pf_eel=NSEEL_VM_alloc();
-
- }
-
- }
- CState::~CState()
- {
- FreeVarsAndCode();
- NSEEL_VM_free(m_pf_eel);
- NSEEL_VM_free(m_pv_eel);
- int i = 0;
- for (i=0; i<MAX_CUSTOM_WAVES; i++)
- {
- NSEEL_VM_free(m_wave[i].m_pf_eel);
- NSEEL_VM_free(m_wave[i].m_pp_eel);
- }
- for (i=0; i<MAX_CUSTOM_SHAPES; i++)
- {
- NSEEL_VM_free(m_shape[i].m_pf_eel);
- }
- }
- void CState::RegisterBuiltInVariables(int flags)
- {
- if (flags & RECOMPILE_PRESET_CODE)
- {
- NSEEL_VM_resetvars(m_pf_eel);
- var_pf_zoom = NSEEL_VM_regvar(m_pf_eel, "zoom");
- var_pf_zoomexp = NSEEL_VM_regvar(m_pf_eel, "zoomexp");
- var_pf_rot = NSEEL_VM_regvar(m_pf_eel, "rot");
- var_pf_warp = NSEEL_VM_regvar(m_pf_eel, "warp");
- var_pf_cx = NSEEL_VM_regvar(m_pf_eel, "cx");
- var_pf_cy = NSEEL_VM_regvar(m_pf_eel, "cy");
- var_pf_dx = NSEEL_VM_regvar(m_pf_eel, "dx");
- var_pf_dy = NSEEL_VM_regvar(m_pf_eel, "dy");
- var_pf_sx = NSEEL_VM_regvar(m_pf_eel, "sx");
- var_pf_sy = NSEEL_VM_regvar(m_pf_eel, "sy");
- var_pf_time = NSEEL_VM_regvar(m_pf_eel, "time");
- var_pf_fps = NSEEL_VM_regvar(m_pf_eel, "fps");
- var_pf_bass = NSEEL_VM_regvar(m_pf_eel, "bass");
- var_pf_mid = NSEEL_VM_regvar(m_pf_eel, "mid");
- var_pf_treb = NSEEL_VM_regvar(m_pf_eel, "treb");
- var_pf_bass_att = NSEEL_VM_regvar(m_pf_eel, "bass_att");
- var_pf_mid_att = NSEEL_VM_regvar(m_pf_eel, "mid_att");
- var_pf_treb_att = NSEEL_VM_regvar(m_pf_eel, "treb_att");
- var_pf_frame = NSEEL_VM_regvar(m_pf_eel, "frame");
- var_pf_decay = NSEEL_VM_regvar(m_pf_eel, "decay");
- var_pf_wave_a = NSEEL_VM_regvar(m_pf_eel, "wave_a");
- var_pf_wave_r = NSEEL_VM_regvar(m_pf_eel, "wave_r");
- var_pf_wave_g = NSEEL_VM_regvar(m_pf_eel, "wave_g");
- var_pf_wave_b = NSEEL_VM_regvar(m_pf_eel, "wave_b");
- var_pf_wave_x = NSEEL_VM_regvar(m_pf_eel, "wave_x");
- var_pf_wave_y = NSEEL_VM_regvar(m_pf_eel, "wave_y");
- var_pf_wave_mystery = NSEEL_VM_regvar(m_pf_eel, "wave_mystery");
- var_pf_wave_mode = NSEEL_VM_regvar(m_pf_eel, "wave_mode");
- int vi = 0;
- for (vi=0; vi<NUM_Q_VAR; vi++)
- {
- char buf[16];
- sprintf(buf, "q%d", vi+1);
- var_pf_q[vi] = NSEEL_VM_regvar(m_pf_eel, buf);
- }
- var_pf_progress = NSEEL_VM_regvar(m_pf_eel, "progress");
- var_pf_ob_size = NSEEL_VM_regvar(m_pf_eel, "ob_size");
- var_pf_ob_r = NSEEL_VM_regvar(m_pf_eel, "ob_r");
- var_pf_ob_g = NSEEL_VM_regvar(m_pf_eel, "ob_g");
- var_pf_ob_b = NSEEL_VM_regvar(m_pf_eel, "ob_b");
- var_pf_ob_a = NSEEL_VM_regvar(m_pf_eel, "ob_a");
- var_pf_ib_size = NSEEL_VM_regvar(m_pf_eel, "ib_size");
- var_pf_ib_r = NSEEL_VM_regvar(m_pf_eel, "ib_r");
- var_pf_ib_g = NSEEL_VM_regvar(m_pf_eel, "ib_g");
- var_pf_ib_b = NSEEL_VM_regvar(m_pf_eel, "ib_b");
- var_pf_ib_a = NSEEL_VM_regvar(m_pf_eel, "ib_a");
- var_pf_mv_x = NSEEL_VM_regvar(m_pf_eel, "mv_x");
- var_pf_mv_y = NSEEL_VM_regvar(m_pf_eel, "mv_y");
- var_pf_mv_dx = NSEEL_VM_regvar(m_pf_eel, "mv_dx");
- var_pf_mv_dy = NSEEL_VM_regvar(m_pf_eel, "mv_dy");
- var_pf_mv_l = NSEEL_VM_regvar(m_pf_eel, "mv_l");
- var_pf_mv_r = NSEEL_VM_regvar(m_pf_eel, "mv_r");
- var_pf_mv_g = NSEEL_VM_regvar(m_pf_eel, "mv_g");
- var_pf_mv_b = NSEEL_VM_regvar(m_pf_eel, "mv_b");
- var_pf_mv_a = NSEEL_VM_regvar(m_pf_eel, "mv_a");
- var_pf_monitor = NSEEL_VM_regvar(m_pf_eel, "monitor");
- var_pf_echo_zoom = NSEEL_VM_regvar(m_pf_eel, "echo_zoom");
- var_pf_echo_alpha = NSEEL_VM_regvar(m_pf_eel, "echo_alpha");
- var_pf_echo_orient = NSEEL_VM_regvar(m_pf_eel, "echo_orient");
- var_pf_wave_usedots = NSEEL_VM_regvar(m_pf_eel, "wave_usedots");
- var_pf_wave_thick = NSEEL_VM_regvar(m_pf_eel, "wave_thick");
- var_pf_wave_additive = NSEEL_VM_regvar(m_pf_eel, "wave_additive");
- var_pf_wave_brighten = NSEEL_VM_regvar(m_pf_eel, "wave_brighten");
- var_pf_darken_center = NSEEL_VM_regvar(m_pf_eel, "darken_center");
- var_pf_gamma = NSEEL_VM_regvar(m_pf_eel, "gamma");
- var_pf_wrap = NSEEL_VM_regvar(m_pf_eel, "wrap");
- var_pf_invert = NSEEL_VM_regvar(m_pf_eel, "invert");
- var_pf_brighten = NSEEL_VM_regvar(m_pf_eel, "brighten");
- var_pf_darken = NSEEL_VM_regvar(m_pf_eel, "darken");
- var_pf_solarize = NSEEL_VM_regvar(m_pf_eel, "solarize");
- var_pf_meshx = NSEEL_VM_regvar(m_pf_eel, "meshx");
- var_pf_meshy = NSEEL_VM_regvar(m_pf_eel, "meshy");
- var_pf_pixelsx = NSEEL_VM_regvar(m_pf_eel, "pixelsx");
- var_pf_pixelsy = NSEEL_VM_regvar(m_pf_eel, "pixelsy");
- var_pf_aspectx = NSEEL_VM_regvar(m_pf_eel, "aspectx");
- var_pf_aspecty = NSEEL_VM_regvar(m_pf_eel, "aspecty");
- var_pf_blur1min = NSEEL_VM_regvar(m_pf_eel, "blur1_min");
- var_pf_blur2min = NSEEL_VM_regvar(m_pf_eel, "blur2_min");
- var_pf_blur3min = NSEEL_VM_regvar(m_pf_eel, "blur3_min");
- var_pf_blur1max = NSEEL_VM_regvar(m_pf_eel, "blur1_max");
- var_pf_blur2max = NSEEL_VM_regvar(m_pf_eel, "blur2_max");
- var_pf_blur3max = NSEEL_VM_regvar(m_pf_eel, "blur3_max");
- var_pf_blur1_edge_darken = NSEEL_VM_regvar(m_pf_eel, "blur1_edge_darken");
-
-
- NSEEL_VM_resetvars(m_pv_eel);
- var_pv_zoom = NSEEL_VM_regvar(m_pv_eel, "zoom");
- var_pv_zoomexp = NSEEL_VM_regvar(m_pv_eel, "zoomexp");
- var_pv_rot = NSEEL_VM_regvar(m_pv_eel, "rot");
- var_pv_warp = NSEEL_VM_regvar(m_pv_eel, "warp");
- var_pv_cx = NSEEL_VM_regvar(m_pv_eel, "cx");
- var_pv_cy = NSEEL_VM_regvar(m_pv_eel, "cy");
- var_pv_dx = NSEEL_VM_regvar(m_pv_eel, "dx");
- var_pv_dy = NSEEL_VM_regvar(m_pv_eel, "dy");
- var_pv_sx = NSEEL_VM_regvar(m_pv_eel, "sx");
- var_pv_sy = NSEEL_VM_regvar(m_pv_eel, "sy");
- var_pv_time = NSEEL_VM_regvar(m_pv_eel, "time");
- var_pv_fps = NSEEL_VM_regvar(m_pv_eel, "fps");
- var_pv_bass = NSEEL_VM_regvar(m_pv_eel, "bass");
- var_pv_mid = NSEEL_VM_regvar(m_pv_eel, "mid");
- var_pv_treb = NSEEL_VM_regvar(m_pv_eel, "treb");
- var_pv_bass_att = NSEEL_VM_regvar(m_pv_eel, "bass_att");
- var_pv_mid_att = NSEEL_VM_regvar(m_pv_eel, "mid_att");
- var_pv_treb_att = NSEEL_VM_regvar(m_pv_eel, "treb_att");
- var_pv_frame = NSEEL_VM_regvar(m_pv_eel, "frame");
- var_pv_x = NSEEL_VM_regvar(m_pv_eel, "x");
- var_pv_y = NSEEL_VM_regvar(m_pv_eel, "y");
- var_pv_rad = NSEEL_VM_regvar(m_pv_eel, "rad");
- var_pv_ang = NSEEL_VM_regvar(m_pv_eel, "ang");
- for (vi=0; vi<NUM_Q_VAR; vi++)
- {
- char buf[16];
- sprintf(buf, "q%d", vi+1);
- var_pv_q[vi] = NSEEL_VM_regvar(m_pv_eel, buf);
- }
- var_pv_progress = NSEEL_VM_regvar(m_pv_eel, "progress");
- var_pv_meshx = NSEEL_VM_regvar(m_pv_eel, "meshx");
- var_pv_meshy = NSEEL_VM_regvar(m_pv_eel, "meshy");
- var_pv_pixelsx = NSEEL_VM_regvar(m_pv_eel, "pixelsx");
- var_pv_pixelsy = NSEEL_VM_regvar(m_pv_eel, "pixelsy");
- var_pv_aspectx = NSEEL_VM_regvar(m_pv_eel, "aspectx");
- var_pv_aspecty = NSEEL_VM_regvar(m_pv_eel, "aspecty");
- }
- if (flags & RECOMPILE_WAVE_CODE)
- {
- for (int i=0; i<MAX_CUSTOM_WAVES; i++)
- {
- NSEEL_VM_resetvars(m_wave[i].m_pf_eel);
- m_wave[i].var_pf_time = NSEEL_VM_regvar(m_wave[i].m_pf_eel, "time");
- m_wave[i].var_pf_fps = NSEEL_VM_regvar(m_wave[i].m_pf_eel, "fps");
- m_wave[i].var_pf_frame = NSEEL_VM_regvar(m_wave[i].m_pf_eel, "frame");
- m_wave[i].var_pf_progress = NSEEL_VM_regvar(m_wave[i].m_pf_eel, "progress");
- int vi = 0;
- for (vi=0; vi<NUM_Q_VAR; vi++)
- {
- char buf[16];
- sprintf(buf, "q%d", vi+1);
- m_wave[i].var_pf_q[vi] = NSEEL_VM_regvar(m_wave[i].m_pf_eel, buf);
- }
- for (vi=0; vi<NUM_T_VAR; vi++)
- {
- char buf[16];
- sprintf(buf, "t%d", vi+1);
- m_wave[i].var_pf_t[vi] = NSEEL_VM_regvar(m_wave[i].m_pf_eel, buf);
- }
- m_wave[i].var_pf_bass = NSEEL_VM_regvar(m_wave[i].m_pf_eel, "bass");
- m_wave[i].var_pf_mid = NSEEL_VM_regvar(m_wave[i].m_pf_eel, "mid");
- m_wave[i].var_pf_treb = NSEEL_VM_regvar(m_wave[i].m_pf_eel, "treb");
- m_wave[i].var_pf_bass_att = NSEEL_VM_regvar(m_wave[i].m_pf_eel, "bass_att");
- m_wave[i].var_pf_mid_att = NSEEL_VM_regvar(m_wave[i].m_pf_eel, "mid_att");
- m_wave[i].var_pf_treb_att = NSEEL_VM_regvar(m_wave[i].m_pf_eel, "treb_att");
- m_wave[i].var_pf_r = NSEEL_VM_regvar(m_wave[i].m_pf_eel, "r");
- m_wave[i].var_pf_g = NSEEL_VM_regvar(m_wave[i].m_pf_eel, "g");
- m_wave[i].var_pf_b = NSEEL_VM_regvar(m_wave[i].m_pf_eel, "b");
- m_wave[i].var_pf_a = NSEEL_VM_regvar(m_wave[i].m_pf_eel, "a");
- m_wave[i].var_pf_samples = NSEEL_VM_regvar(m_wave[i].m_pf_eel, "samples");
- NSEEL_VM_resetvars(m_wave[i].m_pp_eel);
- m_wave[i].var_pp_time = NSEEL_VM_regvar(m_wave[i].m_pp_eel, "time");
- m_wave[i].var_pp_fps = NSEEL_VM_regvar(m_wave[i].m_pp_eel, "fps");
- m_wave[i].var_pp_frame = NSEEL_VM_regvar(m_wave[i].m_pp_eel, "frame");
- m_wave[i].var_pp_progress = NSEEL_VM_regvar(m_wave[i].m_pp_eel, "progress");
- for (vi=0; vi<NUM_Q_VAR; vi++)
- {
- char buf[16];
- sprintf(buf, "q%d", vi+1);
- m_wave[i].var_pp_q[vi] = NSEEL_VM_regvar(m_wave[i].m_pp_eel, buf);
- }
- for (vi=0; vi<NUM_T_VAR; vi++)
- {
- char buf[16];
- sprintf(buf, "t%d", vi+1);
- m_wave[i].var_pp_t[vi] = NSEEL_VM_regvar(m_wave[i].m_pp_eel, buf);
- }
- m_wave[i].var_pp_bass = NSEEL_VM_regvar(m_wave[i].m_pp_eel, "bass");
- m_wave[i].var_pp_mid = NSEEL_VM_regvar(m_wave[i].m_pp_eel, "mid");
- m_wave[i].var_pp_treb = NSEEL_VM_regvar(m_wave[i].m_pp_eel, "treb");
- m_wave[i].var_pp_bass_att = NSEEL_VM_regvar(m_wave[i].m_pp_eel, "bass_att");
- m_wave[i].var_pp_mid_att = NSEEL_VM_regvar(m_wave[i].m_pp_eel, "mid_att");
- m_wave[i].var_pp_treb_att = NSEEL_VM_regvar(m_wave[i].m_pp_eel, "treb_att");
- m_wave[i].var_pp_sample = NSEEL_VM_regvar(m_wave[i].m_pp_eel, "sample");
- m_wave[i].var_pp_value1 = NSEEL_VM_regvar(m_wave[i].m_pp_eel, "value1");
- m_wave[i].var_pp_value2 = NSEEL_VM_regvar(m_wave[i].m_pp_eel, "value2");
- m_wave[i].var_pp_x = NSEEL_VM_regvar(m_wave[i].m_pp_eel, "x");
- m_wave[i].var_pp_y = NSEEL_VM_regvar(m_wave[i].m_pp_eel, "y");
- m_wave[i].var_pp_r = NSEEL_VM_regvar(m_wave[i].m_pp_eel, "r");
- m_wave[i].var_pp_g = NSEEL_VM_regvar(m_wave[i].m_pp_eel, "g");
- m_wave[i].var_pp_b = NSEEL_VM_regvar(m_wave[i].m_pp_eel, "b");
- m_wave[i].var_pp_a = NSEEL_VM_regvar(m_wave[i].m_pp_eel, "a");
- }
- }
- if (flags & RECOMPILE_SHAPE_CODE)
- {
- for (int i=0; i<MAX_CUSTOM_SHAPES; i++)
- {
- NSEEL_VM_resetvars(m_shape[i].m_pf_eel);
- m_shape[i].var_pf_time = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "time");
- m_shape[i].var_pf_fps = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "fps");
- m_shape[i].var_pf_frame = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "frame");
- m_shape[i].var_pf_progress = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "progress");
- int vi = 0;
- for (vi=0; vi<NUM_Q_VAR; vi++)
- {
- char buf[16];
- sprintf(buf, "q%d", vi+1);
- m_shape[i].var_pf_q[vi] = NSEEL_VM_regvar(m_shape[i].m_pf_eel, buf);
- }
- for (vi=0; vi<NUM_T_VAR; vi++)
- {
- char buf[16];
- sprintf(buf, "t%d", vi+1);
- m_shape[i].var_pf_t[vi] = NSEEL_VM_regvar(m_shape[i].m_pf_eel, buf);
- }
- m_shape[i].var_pf_bass = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "bass");
- m_shape[i].var_pf_mid = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "mid");
- m_shape[i].var_pf_treb = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "treb");
- m_shape[i].var_pf_bass_att = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "bass_att");
- m_shape[i].var_pf_mid_att = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "mid_att");
- m_shape[i].var_pf_treb_att = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "treb_att");
- m_shape[i].var_pf_x = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "x");
- m_shape[i].var_pf_y = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "y");
- m_shape[i].var_pf_rad = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "rad");
- m_shape[i].var_pf_ang = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "ang");
- m_shape[i].var_pf_tex_ang = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "tex_ang");
- m_shape[i].var_pf_tex_zoom = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "tex_zoom");
- m_shape[i].var_pf_sides = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "sides");
- m_shape[i].var_pf_textured = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "textured");
- m_shape[i].var_pf_instance = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "instance");
- m_shape[i].var_pf_instances = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "num_inst");
- m_shape[i].var_pf_additive = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "additive");
- m_shape[i].var_pf_thick = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "thick");
- m_shape[i].var_pf_r = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "r");
- m_shape[i].var_pf_g = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "g");
- m_shape[i].var_pf_b = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "b");
- m_shape[i].var_pf_a = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "a");
- m_shape[i].var_pf_r2 = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "r2");
- m_shape[i].var_pf_g2 = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "g2");
- m_shape[i].var_pf_b2 = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "b2");
- m_shape[i].var_pf_a2 = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "a2");
- m_shape[i].var_pf_border_r = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "border_r");
- m_shape[i].var_pf_border_g = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "border_g");
- m_shape[i].var_pf_border_b = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "border_b");
- m_shape[i].var_pf_border_a = NSEEL_VM_regvar(m_shape[i].m_pf_eel, "border_a");
- }
- }
- }
- void CState::Default(DWORD ApplyFlags)
- {
-
- if ( (ApplyFlags & STATE_GENERAL) &&
- (ApplyFlags & STATE_MOTION) &&
- (ApplyFlags & STATE_WAVE)
- )
- {
- lstrcpyW(m_szDesc, INVALID_PRESET_DESC);
-
- m_fPresetStartTime = -1;
- }
- m_nMinPSVersion = 0;
- m_nMaxPSVersion = 0;
- m_bBlending = false;
-
- if (ApplyFlags & STATE_GENERAL)
- {
- m_fRating = 3.0f;
- m_fDecay = 0.98f;
- m_fGammaAdj = 2.0f;
- m_fVideoEchoZoom = 2.0f;
- m_fVideoEchoAlpha = 0.0f;
- m_nVideoEchoOrientation = 0;
- m_bRedBlueStereo = false;
- m_bBrighten = false;
- m_bDarken = false;
- m_bTexWrap = true;
- m_bDarkenCenter = false;
- m_bSolarize = false;
- m_bInvert = false;
- m_fShader = 0.0f;
- m_fBlur1Min = 0.0f;
- m_fBlur2Min = 0.0f;
- m_fBlur3Min = 0.0f;
- m_fBlur1Max = 1.0f;
- m_fBlur2Max = 1.0f;
- m_fBlur3Max = 1.0f;
- m_fBlur1EdgeDarken = 0.25f;
- }
-
-
- if (ApplyFlags & STATE_WAVE)
- {
- m_nWaveMode = 0;
- m_nOldWaveMode = -1;
- m_bAdditiveWaves = false;
- m_bWaveDots = false;
- m_bWaveThick = false;
- m_fWaveAlpha = 0.8f;
- m_fWaveScale = 1.0f;
- m_fWaveSmoothing = 0.75f;
- m_fWaveParam = 0.0f;
- m_bModWaveAlphaByVolume = false;
- m_fModWaveAlphaStart = 0.75f;
- m_fModWaveAlphaEnd = 0.95f;
- m_fWaveR = 1.0f;
- m_fWaveG = 1.0f;
- m_fWaveB = 1.0f;
- m_fWaveX = 0.5f;
- m_fWaveY = 0.5f;
- m_bMaximizeWaveColor = true;
- m_fMvX = 12.0f;
- m_fMvY = 9.0f;
- m_fMvDX = 0.0f;
- m_fMvDY = 0.0f;
- m_fMvL = 0.9f;
- m_fMvR = 1.0f;
- m_fMvG = 1.0f;
- m_fMvB = 1.0f;
- m_fMvA = 1.0f;
- int i = 0;
- for (i=0; i<MAX_CUSTOM_WAVES; i++)
- {
- m_wave[i].enabled = 0;
- m_wave[i].samples = 512;
- m_wave[i].sep = 0;
- m_wave[i].scaling = 1.0f;
- m_wave[i].smoothing = 0.5f;
- m_wave[i].r = 1.0f;
- m_wave[i].g = 1.0f;
- m_wave[i].b = 1.0f;
- m_wave[i].a = 1.0f;
- m_wave[i].bSpectrum = 0;
- m_wave[i].bUseDots = 0;
- m_wave[i].bDrawThick = 0;
- m_wave[i].bAdditive = 0;
- }
- for (i=0; i<MAX_CUSTOM_SHAPES; i++)
- {
- m_shape[i].enabled = 0;
- m_shape[i].sides = 4;
- m_shape[i].additive = 0;
- m_shape[i].thickOutline = 0;
- m_shape[i].textured = 0;
- m_shape[i].instances = 1;
- m_shape[i].tex_zoom = 1.0f;
- m_shape[i].tex_ang = 0.0f;
- m_shape[i].x = 0.5f;
- m_shape[i].y = 0.5f;
- m_shape[i].rad = 0.1f;
- m_shape[i].ang = 0.0f;
- m_shape[i].r = 1.0f;
- m_shape[i].g = 0.0f;
- m_shape[i].b = 0.0f;
- m_shape[i].a = 1.0f;
- m_shape[i].r2 = 0.0f;
- m_shape[i].g2 = 1.0f;
- m_shape[i].b2 = 0.0f;
- m_shape[i].a2 = 0.0f;
- m_shape[i].border_r = 1.0f;
- m_shape[i].border_g = 1.0f;
- m_shape[i].border_b = 1.0f;
- m_shape[i].border_a = 0.1f;
- }
- for (i=0; i<MAX_CUSTOM_WAVES; i++)
- {
- m_wave[i].m_szInit[0] = 0;
- m_wave[i].m_szPerFrame[0] = 0;
- m_wave[i].m_szPerPoint[0] = 0;
- }
- for (i=0; i<MAX_CUSTOM_SHAPES; i++)
- {
- m_shape[i].m_szInit[0] = 0;
- m_shape[i].m_szPerFrame[0] = 0;
-
- }
- }
-
- if (ApplyFlags & STATE_MOTION)
- {
- m_fWarpAnimSpeed = 1.0f;
- m_fWarpScale = 1.0f;
- m_fZoomExponent = 1.0f;
- m_fZoom = 1.0f;
- m_fRot = 0.0f;
- m_fRotCX = 0.5f;
- m_fRotCY = 0.5f;
- m_fXPush = 0.0f;
- m_fYPush = 0.0f;
- m_fWarpAmount = 1.0f;
- m_fStretchX = 1.0f;
- m_fStretchY = 1.0f;
- m_fOuterBorderSize = 0.01f;
- m_fOuterBorderR = 0.0f;
- m_fOuterBorderG = 0.0f;
- m_fOuterBorderB = 0.0f;
- m_fOuterBorderA = 0.0f;
- m_fInnerBorderSize = 0.01f;
- m_fInnerBorderR = 0.25f;
- m_fInnerBorderG = 0.25f;
- m_fInnerBorderB = 0.25f;
- m_fInnerBorderA = 0.0f;
-
- m_szPerFrameInit[0] = 0;
- m_szPerFrameExpr[0] = 0;
- m_szPerPixelExpr[0] = 0;
- }
-
-
-
- if (ApplyFlags & STATE_WARP)
- {
- m_szWarpShadersText[0] = 0;
- m_nWarpPSVersion = 0;
- }
-
-
- if (ApplyFlags & STATE_COMP)
- {
- m_szCompShadersText[0] = 0;
- m_nCompPSVersion = 0;
- }
- RandomizePresetVars();
- FreeVarsAndCode();
- }
- void CState::StartBlendFrom(CState *s_from, float fAnimTime, float fTimespan)
- {
- CState *s_to = this;
-
- s_to->m_fVideoEchoAlphaOld = s_from->m_fVideoEchoAlpha.eval(-1);
- s_to->m_nVideoEchoOrientationOld = s_from->m_nVideoEchoOrientation;
- s_to->m_nOldWaveMode = s_from->m_nWaveMode;
-
-
- m_bBlending = true;
- m_fBlendStartTime = fAnimTime;
- m_fBlendDuration = fTimespan;
-
-
-
-
- m_fGammaAdj .StartBlendFrom(&s_from->m_fGammaAdj , fAnimTime, fTimespan);
- m_fVideoEchoZoom .StartBlendFrom(&s_from->m_fVideoEchoZoom , fAnimTime, fTimespan);
- m_fVideoEchoAlpha.StartBlendFrom(&s_from->m_fVideoEchoAlpha, fAnimTime, fTimespan);
- m_fDecay .StartBlendFrom(&s_from->m_fDecay , fAnimTime, fTimespan);
- m_fWaveAlpha .StartBlendFrom(&s_from->m_fWaveAlpha , fAnimTime, fTimespan);
- m_fWaveScale .StartBlendFrom(&s_from->m_fWaveScale , fAnimTime, fTimespan);
- m_fWaveSmoothing .StartBlendFrom(&s_from->m_fWaveSmoothing , fAnimTime, fTimespan);
- m_fWaveParam .StartBlendFrom(&s_from->m_fWaveParam , fAnimTime, fTimespan);
- m_fWarpScale .StartBlendFrom(&s_from->m_fWarpScale , fAnimTime, fTimespan);
- m_fZoomExponent .StartBlendFrom(&s_from->m_fZoomExponent , fAnimTime, fTimespan);
- m_fShader .StartBlendFrom(&s_from->m_fShader , fAnimTime, fTimespan);
- m_fModWaveAlphaStart.StartBlendFrom(&s_from->m_fModWaveAlphaStart, fAnimTime, fTimespan);
- m_fModWaveAlphaEnd .StartBlendFrom(&s_from->m_fModWaveAlphaEnd, fAnimTime, fTimespan);
- m_fZoom .StartBlendFrom(&s_from->m_fZoom , fAnimTime, fTimespan);
- m_fRot .StartBlendFrom(&s_from->m_fRot , fAnimTime, fTimespan);
- m_fRotCX .StartBlendFrom(&s_from->m_fRotCX , fAnimTime, fTimespan);
- m_fRotCY .StartBlendFrom(&s_from->m_fRotCY , fAnimTime, fTimespan);
- m_fXPush .StartBlendFrom(&s_from->m_fXPush , fAnimTime, fTimespan);
- m_fYPush .StartBlendFrom(&s_from->m_fYPush , fAnimTime, fTimespan);
- m_fWarpAmount.StartBlendFrom(&s_from->m_fWarpAmount,fAnimTime, fTimespan);
- m_fStretchX .StartBlendFrom(&s_from->m_fStretchX , fAnimTime, fTimespan);
- m_fStretchY .StartBlendFrom(&s_from->m_fStretchY , fAnimTime, fTimespan);
- m_fWaveR .StartBlendFrom(&s_from->m_fWaveR , fAnimTime, fTimespan);
- m_fWaveG .StartBlendFrom(&s_from->m_fWaveG , fAnimTime, fTimespan);
- m_fWaveB .StartBlendFrom(&s_from->m_fWaveB , fAnimTime, fTimespan);
- m_fWaveX .StartBlendFrom(&s_from->m_fWaveX , fAnimTime, fTimespan);
- m_fWaveY .StartBlendFrom(&s_from->m_fWaveY , fAnimTime, fTimespan);
- m_fOuterBorderSize .StartBlendFrom(&s_from->m_fOuterBorderSize , fAnimTime, fTimespan);
- m_fOuterBorderR .StartBlendFrom(&s_from->m_fOuterBorderR , fAnimTime, fTimespan);
- m_fOuterBorderG .StartBlendFrom(&s_from->m_fOuterBorderG , fAnimTime, fTimespan);
- m_fOuterBorderB .StartBlendFrom(&s_from->m_fOuterBorderB , fAnimTime, fTimespan);
- m_fOuterBorderA .StartBlendFrom(&s_from->m_fOuterBorderA , fAnimTime, fTimespan);
- m_fInnerBorderSize .StartBlendFrom(&s_from->m_fInnerBorderSize , fAnimTime, fTimespan);
- m_fInnerBorderR .StartBlendFrom(&s_from->m_fInnerBorderR , fAnimTime, fTimespan);
- m_fInnerBorderG .StartBlendFrom(&s_from->m_fInnerBorderG , fAnimTime, fTimespan);
- m_fInnerBorderB .StartBlendFrom(&s_from->m_fInnerBorderB , fAnimTime, fTimespan);
- m_fInnerBorderA .StartBlendFrom(&s_from->m_fInnerBorderA , fAnimTime, fTimespan);
- m_fMvX .StartBlendFrom(&s_from->m_fMvX , fAnimTime, fTimespan);
- m_fMvY .StartBlendFrom(&s_from->m_fMvY , fAnimTime, fTimespan);
- m_fMvDX .StartBlendFrom(&s_from->m_fMvDX , fAnimTime, fTimespan);
- m_fMvDY .StartBlendFrom(&s_from->m_fMvDY , fAnimTime, fTimespan);
- m_fMvL .StartBlendFrom(&s_from->m_fMvL , fAnimTime, fTimespan);
- m_fMvR .StartBlendFrom(&s_from->m_fMvR , fAnimTime, fTimespan);
- m_fMvG .StartBlendFrom(&s_from->m_fMvG , fAnimTime, fTimespan);
- m_fMvB .StartBlendFrom(&s_from->m_fMvB , fAnimTime, fTimespan);
- m_fMvA .StartBlendFrom(&s_from->m_fMvA , fAnimTime, fTimespan);
- m_fBlur1Min .StartBlendFrom(&s_from->m_fBlur1Min , fAnimTime, fTimespan);
- m_fBlur2Min .StartBlendFrom(&s_from->m_fBlur2Min , fAnimTime, fTimespan);
- m_fBlur3Min .StartBlendFrom(&s_from->m_fBlur3Min , fAnimTime, fTimespan);
- m_fBlur1Max .StartBlendFrom(&s_from->m_fBlur1Max , fAnimTime, fTimespan);
- m_fBlur2Max .StartBlendFrom(&s_from->m_fBlur2Max , fAnimTime, fTimespan);
- m_fBlur3Max .StartBlendFrom(&s_from->m_fBlur3Max , fAnimTime, fTimespan);
- m_fBlur1EdgeDarken .StartBlendFrom(&s_from->m_fBlur1EdgeDarken , fAnimTime, fTimespan);
-
-
- bool bOldStateTransparent = (s_from->m_fMvA.eval(-1) < 0.001f);
- bool bNewStateTransparent = (s_to->m_fMvA.eval(-1) < 0.001f);
- if (!bOldStateTransparent && bNewStateTransparent)
- {
- s_from->m_fMvX = s_to->m_fMvX.eval(fAnimTime);
- s_from->m_fMvY = s_to->m_fMvY.eval(fAnimTime);
- s_from->m_fMvDX = s_to->m_fMvDX.eval(fAnimTime);
- s_from->m_fMvDY = s_to->m_fMvDY.eval(fAnimTime);
- s_from->m_fMvL = s_to->m_fMvL.eval(fAnimTime);
- s_from->m_fMvR = s_to->m_fMvR.eval(fAnimTime);
- s_from->m_fMvG = s_to->m_fMvG.eval(fAnimTime);
- s_from->m_fMvB = s_to->m_fMvB.eval(fAnimTime);
- }
- if (bNewStateTransparent && !bOldStateTransparent)
- {
- s_to->m_fMvX = s_from->m_fMvX.eval(fAnimTime);
- s_to->m_fMvY = s_from->m_fMvY.eval(fAnimTime);
- s_to->m_fMvDX = s_from->m_fMvDX.eval(fAnimTime);
- s_to->m_fMvDY = s_from->m_fMvDY.eval(fAnimTime);
- s_to->m_fMvL = s_from->m_fMvL.eval(fAnimTime);
- s_to->m_fMvR = s_from->m_fMvR.eval(fAnimTime);
- s_to->m_fMvG = s_from->m_fMvG.eval(fAnimTime);
- s_to->m_fMvB = s_from->m_fMvB.eval(fAnimTime);
- }
- }
- void WriteCode(FILE* fOut, int i, char* pStr, char* prefix, bool bPrependApostrophe = false)
- {
- char szLineName[32];
- int line = 1;
- int start_pos = 0;
- int char_pos = 0;
- while (pStr[start_pos] != 0)
- {
- while ( pStr[char_pos] != 0 &&
- pStr[char_pos] != LINEFEED_CONTROL_CHAR)
- char_pos++;
- sprintf(szLineName, "%s%d", prefix, line);
- char ch = pStr[char_pos];
- pStr[char_pos] = 0;
-
- fprintf(fOut, "%s=%s%s\n", szLineName, bPrependApostrophe ? "`" : "", &pStr[start_pos]);
- pStr[char_pos] = ch;
- if (pStr[char_pos] != 0) char_pos++;
- start_pos = char_pos;
- line++;
- }
- }
- bool CState::Export(const wchar_t *szIniFile)
- {
- FILE *fOut = _wfopen(szIniFile, L"w");
- if (!fOut) return false;
-
- if (m_nMaxPSVersion > 0)
- {
- fprintf(fOut, "MILKDROP_PRESET_VERSION=%d\n", CUR_MILKDROP_PRESET_VERSION);
- fprintf(fOut, "PSVERSION=%d\n" ,m_nMaxPSVersion);
- fprintf(fOut, "PSVERSION_WARP=%d\n",m_nWarpPSVersion);
- fprintf(fOut, "PSVERSION_COMP=%d\n",m_nCompPSVersion);
- }
-
-
-
- fprintf(fOut, "[preset00]\n");
- fprintf(fOut, "%s=%.3f\n", "fRating", m_fRating);
- fprintf(fOut, "%s=%.3f\n", "fGammaAdj", m_fGammaAdj.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "fDecay", m_fDecay.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "fVideoEchoZoom", m_fVideoEchoZoom.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "fVideoEchoAlpha", m_fVideoEchoAlpha.eval(-1));
- fprintf(fOut, "%s=%d\n", "nVideoEchoOrientation", m_nVideoEchoOrientation);
- fprintf(fOut, "%s=%d\n", "nWaveMode", m_nWaveMode);
- fprintf(fOut, "%s=%d\n", "bAdditiveWaves", m_bAdditiveWaves);
- fprintf(fOut, "%s=%d\n", "bWaveDots", m_bWaveDots);
- fprintf(fOut, "%s=%d\n", "bWaveThick", m_bWaveThick);
- fprintf(fOut, "%s=%d\n", "bModWaveAlphaByVolume", m_bModWaveAlphaByVolume);
- fprintf(fOut, "%s=%d\n", "bMaximizeWaveColor", m_bMaximizeWaveColor);
- fprintf(fOut, "%s=%d\n", "bTexWrap", m_bTexWrap );
- fprintf(fOut, "%s=%d\n", "bDarkenCenter", m_bDarkenCenter );
- fprintf(fOut, "%s=%d\n", "bRedBlueStereo", m_bRedBlueStereo );
- fprintf(fOut, "%s=%d\n", "bBrighten", m_bBrighten );
- fprintf(fOut, "%s=%d\n", "bDarken", m_bDarken );
- fprintf(fOut, "%s=%d\n", "bSolarize", m_bSolarize );
- fprintf(fOut, "%s=%d\n", "bInvert", m_bInvert );
- fprintf(fOut, "%s=%.3f\n", "fWaveAlpha", m_fWaveAlpha.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "fWaveScale", m_fWaveScale.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "fWaveSmoothing", m_fWaveSmoothing.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "fWaveParam", m_fWaveParam.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "fModWaveAlphaStart", m_fModWaveAlphaStart.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "fModWaveAlphaEnd", m_fModWaveAlphaEnd.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "fWarpAnimSpeed", m_fWarpAnimSpeed);
- fprintf(fOut, "%s=%.3f\n", "fWarpScale", m_fWarpScale.eval(-1));
- fprintf(fOut, "%s=%.5f\n", "fZoomExponent", m_fZoomExponent.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "fShader", m_fShader.eval(-1));
- fprintf(fOut, "%s=%.5f\n", "zoom", m_fZoom .eval(-1));
- fprintf(fOut, "%s=%.5f\n", "rot", m_fRot .eval(-1));
- fprintf(fOut, "%s=%.3f\n", "cx", m_fRotCX .eval(-1));
- fprintf(fOut, "%s=%.3f\n", "cy", m_fRotCY .eval(-1));
- fprintf(fOut, "%s=%.5f\n", "dx", m_fXPush .eval(-1));
- fprintf(fOut, "%s=%.5f\n", "dy", m_fYPush .eval(-1));
- fprintf(fOut, "%s=%.5f\n", "warp", m_fWarpAmount.eval(-1));
- fprintf(fOut, "%s=%.5f\n", "sx", m_fStretchX .eval(-1));
- fprintf(fOut, "%s=%.5f\n", "sy", m_fStretchY .eval(-1));
- fprintf(fOut, "%s=%.3f\n", "wave_r", m_fWaveR .eval(-1));
- fprintf(fOut, "%s=%.3f\n", "wave_g", m_fWaveG .eval(-1));
- fprintf(fOut, "%s=%.3f\n", "wave_b", m_fWaveB .eval(-1));
- fprintf(fOut, "%s=%.3f\n", "wave_x", m_fWaveX .eval(-1));
- fprintf(fOut, "%s=%.3f\n", "wave_y", m_fWaveY .eval(-1));
- fprintf(fOut, "%s=%.3f\n", "ob_size", m_fOuterBorderSize.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "ob_r", m_fOuterBorderR.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "ob_g", m_fOuterBorderG.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "ob_b", m_fOuterBorderB.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "ob_a", m_fOuterBorderA.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "ib_size", m_fInnerBorderSize.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "ib_r", m_fInnerBorderR.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "ib_g", m_fInnerBorderG.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "ib_b", m_fInnerBorderB.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "ib_a", m_fInnerBorderA.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "nMotionVectorsX", m_fMvX.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "nMotionVectorsY", m_fMvY.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "mv_dx", m_fMvDX.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "mv_dy", m_fMvDY.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "mv_l", m_fMvL.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "mv_r", m_fMvR.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "mv_g", m_fMvG.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "mv_b", m_fMvB.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "mv_a", m_fMvA.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "b1n", m_fBlur1Min.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "b2n", m_fBlur2Min.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "b3n", m_fBlur3Min.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "b1x", m_fBlur1Max.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "b2x", m_fBlur2Max.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "b3x", m_fBlur3Max.eval(-1));
- fprintf(fOut, "%s=%.3f\n", "b1ed", m_fBlur1EdgeDarken.eval(-1));
- int i = 0;
- for (i=0; i<MAX_CUSTOM_WAVES; i++)
- m_wave[i].Export(fOut, L"dummy_filename", i);
- for (i=0; i<MAX_CUSTOM_SHAPES; i++)
- m_shape[i].Export(fOut, L"dummy_filename", i);
-
- WriteCode(fOut, i, m_szPerFrameInit, "per_frame_init_");
- WriteCode(fOut, i, m_szPerFrameExpr, "per_frame_");
- WriteCode(fOut, i, m_szPerPixelExpr, "per_pixel_");
- if (m_nWarpPSVersion >= MD2_PS_2_0)
- WriteCode(fOut, i, m_szWarpShadersText, "warp_", true);
- if (m_nCompPSVersion >= MD2_PS_2_0)
- WriteCode(fOut, i, m_szCompShadersText, "comp_", true);
- fclose(fOut);
- return true;
- }
- int CWave::Export(FILE* fOut, const wchar_t *szFile, int i)
- {
- FILE* f2 = fOut;
- if (!fOut)
- {
- f2 = _wfopen(szFile, L"w");
- if (!f2) return 0;
- }
- fprintf(f2, "wavecode_%d_%s=%d\n", i, "enabled", enabled);
- fprintf(f2, "wavecode_%d_%s=%d\n", i, "samples", samples);
- fprintf(f2, "wavecode_%d_%s=%d\n", i, "sep", sep );
- fprintf(f2, "wavecode_%d_%s=%d\n", i, "bSpectrum", bSpectrum);
- fprintf(f2, "wavecode_%d_%s=%d\n", i, "bUseDots", bUseDots);
- fprintf(f2, "wavecode_%d_%s=%d\n", i, "bDrawThick", bDrawThick);
- fprintf(f2, "wavecode_%d_%s=%d\n", i, "bAdditive", bAdditive);
- fprintf(f2, "wavecode_%d_%s=%.5f\n", i, "scaling", scaling);
- fprintf(f2, "wavecode_%d_%s=%.5f\n", i, "smoothing", smoothing);
- fprintf(f2, "wavecode_%d_%s=%.3f\n", i, "r", r);
- fprintf(f2, "wavecode_%d_%s=%.3f\n", i, "g", g);
- fprintf(f2, "wavecode_%d_%s=%.3f\n", i, "b", b);
- fprintf(f2, "wavecode_%d_%s=%.3f\n", i, "a", a);
-
- char prefix[64];
- sprintf(prefix, "wave_%d_init", i); WriteCode(f2, i, m_szInit, prefix);
- sprintf(prefix, "wave_%d_per_frame", i); WriteCode(f2, i, m_szPerFrame, prefix);
- sprintf(prefix, "wave_%d_per_point", i); WriteCode(f2, i, m_szPerPoint, prefix);
- if (!fOut)
- fclose(f2);
- return 1;
- }
- int CShape::Export(FILE* fOut, const wchar_t *szFile, int i)
- {
- FILE* f2 = fOut;
- if (!fOut)
- {
- f2 = _wfopen(szFile, L"w");
- if (!f2) return 0;
-
- }
- fprintf(f2, "shapecode_%d_%s=%d\n", i, "enabled", enabled);
- fprintf(f2, "shapecode_%d_%s=%d\n", i, "sides", sides);
- fprintf(f2, "shapecode_%d_%s=%d\n", i, "additive", additive);
- fprintf(f2, "shapecode_%d_%s=%d\n", i, "thickOutline",thickOutline);
- fprintf(f2, "shapecode_%d_%s=%d\n", i, "textured", textured);
- fprintf(f2, "shapecode_%d_%s=%d\n", i, "num_inst", instances);
- fprintf(f2, "shapecode_%d_%s=%.3f\n", i, "x", x);
- fprintf(f2, "shapecode_%d_%s=%.3f\n", i, "y", y);
- fprintf(f2, "shapecode_%d_%s=%.5f\n", i, "rad", rad);
- fprintf(f2, "shapecode_%d_%s=%.5f\n", i, "ang", ang);
- fprintf(f2, "shapecode_%d_%s=%.5f\n", i, "tex_ang", tex_ang);
- fprintf(f2, "shapecode_%d_%s=%.5f\n", i, "tex_zoom", tex_zoom);
- fprintf(f2, "shapecode_%d_%s=%.3f\n", i, "r", r);
- fprintf(f2, "shapecode_%d_%s=%.3f\n", i, "g", g);
- fprintf(f2, "shapecode_%d_%s=%.3f\n", i, "b", b);
- fprintf(f2, "shapecode_%d_%s=%.3f\n", i, "a", a);
- fprintf(f2, "shapecode_%d_%s=%.3f\n", i, "r2", r2);
- fprintf(f2, "shapecode_%d_%s=%.3f\n", i, "g2", g2);
- fprintf(f2, "shapecode_%d_%s=%.3f\n", i, "b2", b2);
- fprintf(f2, "shapecode_%d_%s=%.3f\n", i, "a2", a2);
- fprintf(f2, "shapecode_%d_%s=%.3f\n", i, "border_r", border_r);
- fprintf(f2, "shapecode_%d_%s=%.3f\n", i, "border_g", border_g);
- fprintf(f2, "shapecode_%d_%s=%.3f\n", i, "border_b", border_b);
- fprintf(f2, "shapecode_%d_%s=%.3f\n", i, "border_a", border_a);
- char prefix[64];
- sprintf(prefix, "shape_%d_init", i); WriteCode(f2, i, m_szInit, prefix);
- sprintf(prefix, "shape_%d_per_frame", i); WriteCode(f2, i, m_szPerFrame, prefix);
-
- if (!fOut)
- fclose(f2);
- return 1;
- }
- void ReadCode(FILE* f, char* pStr, char* prefix)
- {
- if (!pStr)
- return;
- pStr[0] = 0;
-
- char szLineName[32];
- char szLine[MAX_BIGSTRING_LEN];
- int len;
- int line = 1;
- int char_pos = 0;
- bool bDone = false;
- while (!bDone)
- {
- sprintf(szLineName, "%s%d", prefix, line);
- GetFastString(szLineName, "~!@#$", szLine, MAX_BIGSTRING_LEN, f);
- len = strlen(szLine);
- if ((strcmp(szLine, "~!@#$")==0) ||
- (len >= MAX_BIGSTRING_LEN-1-char_pos-1))
- {
- bDone = true;
- }
- else
- {
- sprintf(&pStr[char_pos], "%s%c", (szLine[0]=='`') ? &szLine[1] : szLine, LINEFEED_CONTROL_CHAR);
- if (szLine[0] == '`')
- len--;
- }
-
- char_pos += len + 1;
- line++;
- }
- pStr[char_pos++] = 0;
-
-
- }
- int CWave::Import(FILE* f, const wchar_t* szFile, int i)
- {
- FILE* f2 = f;
- if (!f)
- {
- f2 = _wfopen(szFile, L"rb");
- if (!f2) return 0;
- GetFast_CLEAR();
- }
- char buf[64];
- sprintf(buf, "wavecode_%d_%s", i, "enabled" ); enabled = GetFastInt (buf, enabled , f2);
- sprintf(buf, "wavecode_%d_%s", i, "samples" ); samples = GetFastInt (buf, samples , f2);
- sprintf(buf, "wavecode_%d_%s", i, "sep" ); sep = GetFastInt (buf, sep , f2);
- sprintf(buf, "wavecode_%d_%s", i, "bSpectrum" ); bSpectrum = GetFastInt (buf, bSpectrum , f2);
- sprintf(buf, "wavecode_%d_%s", i, "bUseDots" ); bUseDots = GetFastInt (buf, bUseDots , f2);
- sprintf(buf, "wavecode_%d_%s", i, "bDrawThick"); bDrawThick = GetFastInt (buf, bDrawThick, f2);
- sprintf(buf, "wavecode_%d_%s", i, "bAdditive" ); bAdditive = GetFastInt (buf, bAdditive , f2);
- sprintf(buf, "wavecode_%d_%s", i, "scaling" ); scaling = GetFastFloat(buf, scaling , f2);
- sprintf(buf, "wavecode_%d_%s", i, "smoothing" ); smoothing = GetFastFloat(buf, smoothing , f2);
- sprintf(buf, "wavecode_%d_%s", i, "r" ); r = GetFastFloat(buf, r , f2);
- sprintf(buf, "wavecode_%d_%s", i, "g" ); g = GetFastFloat(buf, g , f2);
- sprintf(buf, "wavecode_%d_%s", i, "b" ); b = GetFastFloat(buf, b , f2);
- sprintf(buf, "wavecode_%d_%s", i, "a" ); a = GetFastFloat(buf, a , f2);
-
- char prefix[64];
- sprintf(prefix, "wave_%d_init", i); ReadCode(f2, m_szInit, prefix);
- sprintf(prefix, "wave_%d_per_frame", i); ReadCode(f2, m_szPerFrame, prefix);
- sprintf(prefix, "wave_%d_per_point", i); ReadCode(f2, m_szPerPoint, prefix);
- if (!f)
- fclose(f2);
- return 1;
- }
- int CShape::Import(FILE* f, const wchar_t* szFile, int i)
- {
- FILE* f2 = f;
- if (!f)
- {
- f2 = _wfopen(szFile, L"rb");
- if (!f2) return 0;
- GetFast_CLEAR();
- }
- char buf[64];
- sprintf(buf, "shapecode_%d_%s", i, "enabled" ); enabled = GetFastInt (buf, enabled , f2);
- sprintf(buf, "shapecode_%d_%s", i, "sides" ); sides = GetFastInt (buf, sides , f2);
- sprintf(buf, "shapecode_%d_%s", i, "additive" ); additive = GetFastInt (buf, additive , f2);
- sprintf(buf, "shapecode_%d_%s", i, "thickOutline"); thickOutline = GetFastInt (buf, thickOutline, f2);
- sprintf(buf, "shapecode_%d_%s", i, "textured" ); textured = GetFastInt (buf, textured , f2);
- sprintf(buf, "shapecode_%d_%s", i, "num_inst" ); instances = GetFastInt (buf, instances , f2);
- sprintf(buf, "shapecode_%d_%s", i, "x" ); x = GetFastFloat(buf, x , f2);
- sprintf(buf, "shapecode_%d_%s", i, "y" ); y = GetFastFloat(buf, y , f2);
- sprintf(buf, "shapecode_%d_%s", i, "rad" ); rad = GetFastFloat(buf, rad , f2);
- sprintf(buf, "shapecode_%d_%s", i, "ang" ); ang = GetFastFloat(buf, ang , f2);
- sprintf(buf, "shapecode_%d_%s", i, "tex_ang" ); tex_ang = GetFastFloat(buf, tex_ang , f2);
- sprintf(buf, "shapecode_%d_%s", i, "tex_zoom" ); tex_zoom = GetFastFloat(buf, tex_zoom , f2);
- sprintf(buf, "shapecode_%d_%s", i, "r" ); r = GetFastFloat(buf, r , f2);
- sprintf(buf, "shapecode_%d_%s", i, "g" ); g = GetFastFloat(buf, g , f2);
- sprintf(buf, "shapecode_%d_%s", i, "b" ); b = GetFastFloat(buf, b , f2);
- sprintf(buf, "shapecode_%d_%s", i, "a" ); a = GetFastFloat(buf, a , f2);
- sprintf(buf, "shapecode_%d_%s", i, "r2" ); r2 = GetFastFloat(buf, r2 , f2);
- sprintf(buf, "shapecode_%d_%s", i, "g2" ); g2 = GetFastFloat(buf, g2 , f2);
- sprintf(buf, "shapecode_%d_%s", i, "b2" ); b2 = GetFastFloat(buf, b2 , f2);
- sprintf(buf, "shapecode_%d_%s", i, "a2" ); a2 = GetFastFloat(buf, a2 , f2);
- sprintf(buf, "shapecode_%d_%s", i, "border_r" ); border_r = GetFastFloat(buf, border_r , f2);
- sprintf(buf, "shapecode_%d_%s", i, "border_g" ); border_g = GetFastFloat(buf, border_g , f2);
- sprintf(buf, "shapecode_%d_%s", i, "border_b" ); border_b = GetFastFloat(buf, border_b , f2);
- sprintf(buf, "shapecode_%d_%s", i, "border_a" ); border_a = GetFastFloat(buf, border_a , f2);
-
- char prefix[64];
- sprintf(prefix, "shape_%d_init", i); ReadCode(f2, m_szInit, prefix);
- sprintf(prefix, "shape_%d_per_frame", i); ReadCode(f2, m_szPerFrame, prefix);
- if (!f)
- fclose(f2);
- return 1;
- }
- bool CState::Import(const wchar_t *szIniFile, float fTime, CState* pOldState, DWORD ApplyFlags)
- {
-
- if (!pOldState)
- ApplyFlags = STATE_ALL;
-
- if (ApplyFlags!=STATE_ALL && this != pOldState)
- {
- assert(pOldState);
-
- memcpy(this, pOldState, sizeof(CState));
-
-
-
- FreeVarsAndCode(false);
- }
-
- Default(ApplyFlags);
- GetFast_CLEAR();
- if ( (ApplyFlags & STATE_GENERAL) &&
- (ApplyFlags & STATE_MOTION) &&
- (ApplyFlags & STATE_WAVE)
- )
- {
- m_fPresetStartTime = fTime;
-
- {
-
- const wchar_t *p = wcsrchr(szIniFile, '\\');
- if (p==NULL) p = szIniFile;
- lstrcpyW(m_szDesc, p+1);
-
- RemoveExtension(m_szDesc);
- }
- }
-
- FILE* f = _wfopen(szIniFile, L"rb");
- if (!f)
- return false;
- int nMilkdropPresetVersion = GetFastInt("MILKDROP_PRESET_VERSION",100,f);
-
-
-
- int nWarpPSVersionInFile;
- int nCompPSVersionInFile;
- if (nMilkdropPresetVersion < 200) {
- nWarpPSVersionInFile = 0;
- nCompPSVersionInFile = 0;
- }
- else if (nMilkdropPresetVersion == 200) {
- nWarpPSVersionInFile = GetFastInt("PSVERSION", 2, f);
- nCompPSVersionInFile = nWarpPSVersionInFile;
- }
- else {
- nWarpPSVersionInFile = GetFastInt("PSVERSION_WARP", 2, f);
- nCompPSVersionInFile = GetFastInt("PSVERSION_COMP", 2, f);
- }
-
- if (ApplyFlags & STATE_GENERAL)
- {
- m_fRating = GetFastFloat("fRating",m_fRating,f);
- m_fDecay = GetFastFloat("fDecay",m_fDecay.eval(-1),f);
- m_fGammaAdj = GetFastFloat("fGammaAdj" ,m_fGammaAdj.eval(-1),f);
- m_fVideoEchoZoom = GetFastFloat("fVideoEchoZoom",m_fVideoEchoZoom.eval(-1),f);
- m_fVideoEchoAlpha = GetFastFloat("fVideoEchoAlpha",m_fVideoEchoAlpha.eval(-1),f);
- m_nVideoEchoOrientation = GetFastInt ("nVideoEchoOrientation",m_nVideoEchoOrientation,f);
- m_bRedBlueStereo = (GetFastInt ("bRedBlueStereo", m_bRedBlueStereo,f) != 0);
- m_bBrighten = (GetFastInt ("bBrighten",m_bBrighten ,f) != 0);
- m_bDarken = (GetFastInt ("bDarken" ,m_bDarken ,f) != 0);
- m_bSolarize = (GetFastInt ("bSolarize",m_bSolarize ,f) != 0);
- m_bInvert = (GetFastInt ("bInvert" ,m_bInvert ,f) != 0);
- m_fShader = GetFastFloat("fShader",m_fShader.eval(-1),f);
- m_fBlur1Min = GetFastFloat("b1n", m_fBlur1Min.eval(-1),f);
- m_fBlur2Min = GetFastFloat("b2n", m_fBlur2Min.eval(-1),f);
- m_fBlur3Min = GetFastFloat("b3n", m_fBlur3Min.eval(-1),f);
- m_fBlur1Max = GetFastFloat("b1x", m_fBlur1Max.eval(-1),f);
- m_fBlur2Max = GetFastFloat("b2x", m_fBlur2Max.eval(-1),f);
- m_fBlur3Max = GetFastFloat("b3x", m_fBlur3Max.eval(-1),f);
- m_fBlur1EdgeDarken = GetFastFloat("b1ed", m_fBlur1EdgeDarken.eval(-1),f);
- }
-
- if (ApplyFlags & STATE_WAVE)
- {
- m_nWaveMode = GetFastInt ("nWaveMode",m_nWaveMode,f);
- m_bAdditiveWaves = (GetFastInt ("bAdditiveWaves",m_bAdditiveWaves,f) != 0);
- m_bWaveDots = (GetFastInt ("bWaveDots",m_bWaveDots,f) != 0);
- m_bWaveThick = (GetFastInt ("bWaveThick",m_bWaveThick,f) != 0);
- m_bModWaveAlphaByVolume = (GetFastInt ("bModWaveAlphaByVolume",m_bModWaveAlphaByVolume,f) != 0);
- m_bMaximizeWaveColor = (GetFastInt ("bMaximizeWaveColor" ,m_bMaximizeWaveColor,f) != 0);
- m_fWaveAlpha = GetFastFloat("fWaveAlpha",m_fWaveAlpha.eval(-1),f);
- m_fWaveScale = GetFastFloat("fWaveScale",m_fWaveScale.eval(-1),f);
- m_fWaveSmoothing = GetFastFloat("fWaveSmoothing",m_fWaveSmoothing.eval(-1),f);
- m_fWaveParam = GetFastFloat("fWaveParam",m_fWaveParam.eval(-1),f);
- m_fModWaveAlphaStart = GetFastFloat("fModWaveAlphaStart",m_fModWaveAlphaStart.eval(-1),f);
- m_fModWaveAlphaEnd = GetFastFloat("fModWaveAlphaEnd",m_fModWaveAlphaEnd.eval(-1),f);
- m_fWaveR = GetFastFloat("wave_r",m_fRot.eval(-1),f);
- m_fWaveG = GetFastFloat("wave_g",m_fRot.eval(-1),f);
- m_fWaveB = GetFastFloat("wave_b",m_fRot.eval(-1),f);
- m_fWaveX = GetFastFloat("wave_x",m_fRot.eval(-1),f);
- m_fWaveY = GetFastFloat("wave_y",m_fRot.eval(-1),f);
- m_fMvX = GetFastFloat("nMotionVectorsX", m_fMvX.eval(-1),f);
- m_fMvY = GetFastFloat("nMotionVectorsY", m_fMvY.eval(-1),f);
- m_fMvDX = GetFastFloat("mv_dx", m_fMvDX.eval(-1),f);
- m_fMvDY = GetFastFloat("mv_dy", m_fMvDY.eval(-1),f);
- m_fMvL = GetFastFloat("mv_l", m_fMvL.eval(-1),f);
- m_fMvR = GetFastFloat("mv_r", m_fMvR.eval(-1),f);
- m_fMvG = GetFastFloat("mv_g", m_fMvG.eval(-1),f);
- m_fMvB = GetFastFloat("mv_b", m_fMvB.eval(-1),f);
- m_fMvA = (GetFastInt ("bMotionVectorsOn",false,f) == 0) ? 0.0f : 1.0f;
- m_fMvA = GetFastFloat("mv_a", m_fMvA.eval(-1),f);
-
- int i = 0;
- for (i=0; i<MAX_CUSTOM_WAVES; i++)
- {
- m_wave[i].Import(f, L"dummy_filename", i);
- }
- for (i=0; i<MAX_CUSTOM_SHAPES; i++)
- {
- m_shape[i].Import(f, L"dummy_filename", i);
- }
- }
-
- if (ApplyFlags & STATE_MOTION)
- {
- m_fZoom = GetFastFloat("zoom",m_fZoom.eval(-1),f);
- m_fRot = GetFastFloat("rot",m_fRot.eval(-1),f);
- m_fRotCX = GetFastFloat("cx",m_fRotCX.eval(-1),f);
- m_fRotCY = GetFastFloat("cy",m_fRotCY.eval(-1),f);
- m_fXPush = GetFastFloat("dx",m_fXPush.eval(-1),f);
- m_fYPush = GetFastFloat("dy",m_fYPush.eval(-1),f);
- m_fWarpAmount = GetFastFloat("warp",m_fWarpAmount.eval(-1),f);
- m_fStretchX = GetFastFloat("sx",m_fStretchX.eval(-1),f);
- m_fStretchY = GetFastFloat("sy",m_fStretchY.eval(-1),f);
- m_bTexWrap = (GetFastInt ("bTexWrap", m_bTexWrap,f) != 0);
- m_bDarkenCenter = (GetFastInt ("bDarkenCenter", m_bDarkenCenter,f) != 0);
- m_fWarpAnimSpeed = GetFastFloat("fWarpAnimSpeed",m_fWarpAnimSpeed,f);
- m_fWarpScale = GetFastFloat("fWarpScale",m_fWarpScale.eval(-1),f);
- m_fZoomExponent = GetFastFloat("fZoomExponent",m_fZoomExponent.eval(-1),f);
- m_fOuterBorderSize = GetFastFloat("ob_size",m_fOuterBorderSize.eval(-1),f);
- m_fOuterBorderR = GetFastFloat("ob_r", m_fOuterBorderR.eval(-1),f);
- m_fOuterBorderG = GetFastFloat("ob_g", m_fOuterBorderG.eval(-1),f);
- m_fOuterBorderB = GetFastFloat("ob_b", m_fOuterBorderB.eval(-1),f);
- m_fOuterBorderA = GetFastFloat("ob_a", m_fOuterBorderA.eval(-1),f);
- m_fInnerBorderSize = GetFastFloat("ib_size",m_fInnerBorderSize.eval(-1),f);
- m_fInnerBorderR = GetFastFloat("ib_r", m_fInnerBorderR.eval(-1),f);
- m_fInnerBorderG = GetFastFloat("ib_g", m_fInnerBorderG.eval(-1),f);
- m_fInnerBorderB = GetFastFloat("ib_b", m_fInnerBorderB.eval(-1),f);
- m_fInnerBorderA = GetFastFloat("ib_a", m_fInnerBorderA.eval(-1),f);
-
-
-
- ReadCode(f, m_szPerFrameInit, "per_frame_init_");
- ReadCode(f, m_szPerFrameExpr, "per_frame_");
- ReadCode(f, m_szPerPixelExpr, "per_pixel_");
- }
-
-
- if (ApplyFlags & STATE_WARP)
- {
-
- ReadCode(f, m_szWarpShadersText, "warp_");
- if (!m_szWarpShadersText[0])
- g_plugin.GenWarpPShaderText(m_szWarpShadersText, m_fDecay.eval(-1), m_bTexWrap);
- m_nWarpPSVersion = nWarpPSVersionInFile;
- }
-
-
- if (ApplyFlags & STATE_COMP)
- {
-
- ReadCode(f, m_szCompShadersText, "comp_");
- if (!m_szCompShadersText[0])
- g_plugin.GenCompPShaderText(m_szCompShadersText, m_fGammaAdj.eval(-1), m_fVideoEchoAlpha.eval(-1), m_fVideoEchoZoom.eval(-1), m_nVideoEchoOrientation, m_fShader.eval(-1), m_bBrighten, m_bDarken, m_bSolarize, m_bInvert);
- m_nCompPSVersion = nCompPSVersionInFile;
- }
- m_nMaxPSVersion = max(m_nWarpPSVersion, m_nCompPSVersion);
- m_nMinPSVersion = min(m_nWarpPSVersion, m_nCompPSVersion);
-
- RecompileExpressions();
- fclose(f);
- return true;
- }
- void CState::GenDefaultWarpShader()
- {
- if (m_nWarpPSVersion>0)
- g_plugin.GenWarpPShaderText(m_szWarpShadersText, m_fDecay.eval(-1), m_bTexWrap);
- }
- void CState::GenDefaultCompShader()
- {
- if (m_nCompPSVersion>0)
- g_plugin.GenCompPShaderText(m_szCompShadersText, m_fGammaAdj.eval(-1), m_fVideoEchoAlpha.eval(-1), m_fVideoEchoZoom.eval(-1), m_nVideoEchoOrientation, m_fShader.eval(-1), m_bBrighten, m_bDarken, m_bSolarize, m_bInvert);
- }
- void CState::FreeVarsAndCode(bool bFree)
- {
-
- if (m_pf_codehandle)
- {
- if (bFree)
- NSEEL_code_free(m_pf_codehandle);
- m_pf_codehandle = NULL;
- }
- if (m_pp_codehandle)
- {
- if (bFree)
- NSEEL_code_free(m_pp_codehandle);
- m_pp_codehandle = NULL;
- }
- int i = 0;
- for (i=0; i<MAX_CUSTOM_WAVES; i++)
- {
- if (m_wave[i].m_pf_codehandle)
- {
- if (bFree)
- NSEEL_code_free(m_wave[i].m_pf_codehandle);
- m_wave[i].m_pf_codehandle = NULL;
- }
- if (m_wave[i].m_pp_codehandle)
- {
- if (bFree)
- NSEEL_code_free(m_wave[i].m_pp_codehandle);
- m_wave[i].m_pp_codehandle = NULL;
- }
- }
- for (i=0; i<MAX_CUSTOM_SHAPES; i++)
- {
- if (m_shape[i].m_pf_codehandle)
- {
- if (bFree)
- NSEEL_code_free(m_shape[i].m_pf_codehandle);
- m_shape[i].m_pf_codehandle = NULL;
- }
-
- }
-
-
-
-
- RegisterBuiltInVariables(0xFFFFFFFF);
- }
- void CState::StripLinefeedCharsAndComments(char *src, char *dest)
- {
-
-
-
- int i2 = 0;
- int len = strlen(src);
- int bComment = false;
- for (int i=0; i<len; i++)
- {
- if (bComment)
- {
- if (src[i] == LINEFEED_CONTROL_CHAR)
- bComment = false;
- }
- else
- {
- if ((src[i] =='\\' && src[i+1] =='\\') || (src[i] =='/' && src[i+1] =='/'))
- bComment = true;
- else if (src[i] != LINEFEED_CONTROL_CHAR)
- dest[i2++] = src[i];
- }
- }
- dest[i2] = 0;
- }
- void CState::RecompileExpressions(int flags, int bReInit)
- {
-
-
- if ((flags & RECOMPILE_PRESET_CODE) && bReInit)
- {
- flags |= RECOMPILE_WAVE_CODE;
- flags |= RECOMPILE_SHAPE_CODE;
- }
-
- if (flags & RECOMPILE_PRESET_CODE)
- {
- if (m_pf_codehandle)
- {
- NSEEL_code_free(m_pf_codehandle);
- m_pf_codehandle = NULL;
- }
- if (m_pp_codehandle)
- {
- NSEEL_code_free(m_pp_codehandle);
- m_pp_codehandle = NULL;
- }
- }
- if (flags & RECOMPILE_WAVE_CODE)
- {
- for (int i=0; i<MAX_CUSTOM_WAVES; i++)
- {
- if (m_wave[i].m_pf_codehandle)
- {
- NSEEL_code_free(m_wave[i].m_pf_codehandle);
- m_wave[i].m_pf_codehandle = NULL;
- }
- if (m_wave[i].m_pp_codehandle)
- {
- NSEEL_code_free(m_wave[i].m_pp_codehandle);
- m_wave[i].m_pp_codehandle = NULL;
- }
- }
- }
- if (flags & RECOMPILE_SHAPE_CODE)
- {
- for (int i=0; i<MAX_CUSTOM_SHAPES; i++)
- {
- if (m_shape[i].m_pf_codehandle)
- {
- NSEEL_code_free(m_shape[i].m_pf_codehandle);
- m_shape[i].m_pf_codehandle = NULL;
- }
-
- }
- }
-
- if (bReInit)
- {
- RegisterBuiltInVariables(flags);
- }
-
-
- int n2 = 3 + MAX_CUSTOM_WAVES*3 + MAX_CUSTOM_SHAPES*2;
- for (int n=0; n<n2; n++)
- {
- char *pOrig;
- switch(n)
- {
- case 0: pOrig = m_szPerFrameExpr; break;
- case 1: pOrig = m_szPerPixelExpr; break;
- case 2: pOrig = m_szPerFrameInit; break;
- default:
- if (n < 3 + 3*MAX_CUSTOM_WAVES)
- {
- int i = (n-3) / 3;
- int j = (n-3) % 3;
- switch(j)
- {
- case 0: pOrig = m_wave[i].m_szInit; break;
- case 1: pOrig = m_wave[i].m_szPerFrame; break;
- case 2: pOrig = m_wave[i].m_szPerPoint; break;
- }
- }
- else
- {
- int i = (n-3-3*MAX_CUSTOM_WAVES) / 2;
- int j = (n-3-3*MAX_CUSTOM_WAVES) % 2;
- switch(j)
- {
- case 0: pOrig = m_shape[i].m_szInit; break;
- case 1: pOrig = m_shape[i].m_szPerFrame; break;
- }
- }
- }
- char *p = pOrig;
- while (*p==' ' || *p==LINEFEED_CONTROL_CHAR) p++;
- if (*p == 0) pOrig[0] = 0;
- }
-
- #ifndef _NO_EXPR_
- {
-
-
- char buf[MAX_BIGSTRING_LEN*3];
- if (flags & RECOMPILE_PRESET_CODE)
- {
-
- StripLinefeedCharsAndComments(m_szPerFrameInit, buf);
- if (buf[0] && bReInit)
- {
- NSEEL_CODEHANDLE pf_codehandle_init;
- if ( ! (pf_codehandle_init = NSEEL_code_compile(m_pf_eel, buf)))
- {
- wchar_t buf[1024];
- swprintf(buf, WASABI_API_LNGSTRINGW(IDS_WARNING_PRESET_X_ERROR_IN_PRESET_INIT_CODE), m_szDesc);
- g_plugin.AddError(buf, 6.0f, ERR_PRESET, true);
- for (int vi=0; vi<NUM_Q_VAR; vi++)
- q_values_after_init_code[vi] = 0;
- monitor_after_init_code = 0;
- }
- else
- {
-
- g_plugin.LoadPerFrameEvallibVars(g_plugin.m_pState);
- NSEEL_code_execute(pf_codehandle_init);
- for (int vi=0; vi<NUM_Q_VAR; vi++)
- q_values_after_init_code[vi] = *var_pf_q[vi];
- monitor_after_init_code = *var_pf_monitor;
- NSEEL_code_free(pf_codehandle_init);
- pf_codehandle_init = NULL;
- }
- }
-
- StripLinefeedCharsAndComments(m_szPerFrameExpr, buf);
- if (buf[0])
- {
- if ( ! (m_pf_codehandle = NSEEL_code_compile(m_pf_eel, buf)))
- {
- wchar_t buf[1024];
- swprintf(buf, WASABI_API_LNGSTRINGW(IDS_WARNING_PRESET_X_ERROR_IN_PER_FRAME_CODE), m_szDesc);
- g_plugin.AddError(buf, 6.0f, ERR_PRESET, true);
- }
- }
-
- StripLinefeedCharsAndComments(m_szPerPixelExpr, buf);
- if (buf[0])
- {
- if ( ! (m_pp_codehandle = NSEEL_code_compile(m_pv_eel, buf)))
- {
- wchar_t buf[1024];
- swprintf(buf, WASABI_API_LNGSTRINGW(IDS_WARNING_PRESET_X_ERROR_IN_PER_VERTEX_CODE), m_szDesc);
- g_plugin.AddError(buf, 6.0f, ERR_PRESET, true);
- }
- }
-
-
- }
- if (flags & RECOMPILE_WAVE_CODE)
- {
- for (int i=0; i<MAX_CUSTOM_WAVES; i++)
- {
-
- StripLinefeedCharsAndComments(m_wave[i].m_szInit, buf);
- if (buf[0] && bReInit)
- {
- #ifndef _NO_EXPR_
- {
- NSEEL_CODEHANDLE codehandle_temp;
- if ( ! (codehandle_temp = NSEEL_code_compile(m_wave[i].m_pf_eel, buf)))
- {
- wchar_t buf[1024];
- swprintf(buf, WASABI_API_LNGSTRINGW(IDS_WARNING_PRESET_X_ERROR_IN_WAVE_X_INIT_CODE), m_szDesc, i);
- g_plugin.AddError(buf, 6.0f, ERR_PRESET, true);
- int vi = 0;
- for (vi=0; vi<NUM_Q_VAR; vi++)
- *m_wave[i].var_pf_q[vi] = q_values_after_init_code[vi];
- for (vi=0; vi<NUM_T_VAR; vi++)
- m_wave[i].t_values_after_init_code[vi] = 0;
- }
- else
- {
-
-
- g_plugin.LoadCustomWavePerFrameEvallibVars(g_plugin.m_pState, i);
-
-
-
- NSEEL_code_execute(codehandle_temp);
- for (int vi=0; vi<NUM_T_VAR; vi++)
- m_wave[i].t_values_after_init_code[vi] = *m_wave[i].var_pf_t[vi];
- NSEEL_code_free(codehandle_temp);
- codehandle_temp = NULL;
- }
- }
- #endif
- }
-
- StripLinefeedCharsAndComments(m_wave[i].m_szPerFrame, buf);
- if (buf[0])
- {
- #ifndef _NO_EXPR_
- if ( ! (m_wave[i].m_pf_codehandle = NSEEL_code_compile(m_wave[i].m_pf_eel, buf)))
- {
- wchar_t buf[1024];
- swprintf(buf, WASABI_API_LNGSTRINGW(IDS_WARNING_PRESET_X_ERROR_IN_WAVE_X_PER_FRAME_CODE), m_szDesc, i);
- g_plugin.AddError(buf, 6.0f, ERR_PRESET, true);
- }
- #endif
- }
-
- StripLinefeedCharsAndComments(m_wave[i].m_szPerPoint, buf);
- if (buf[0])
- {
- if ( ! (m_wave[i].m_pp_codehandle = NSEEL_code_compile(m_wave[i].m_pp_eel, buf)))
- {
- wchar_t buf[1024];
- swprintf(buf, WASABI_API_LNGSTRINGW(IDS_WARNING_PRESET_X_ERROR_IN_WAVE_X_PER_POINT_CODE), m_szDesc, i);
- g_plugin.AddError(buf, 6.0f, ERR_PRESET, true);
- }
- }
- }
- }
- if (flags & RECOMPILE_SHAPE_CODE)
- {
- for (int i=0; i<MAX_CUSTOM_SHAPES; i++)
- {
-
- StripLinefeedCharsAndComments(m_shape[i].m_szInit, buf);
- if (buf[0] && bReInit)
- {
- #ifndef _NO_EXPR_
- {
- NSEEL_CODEHANDLE codehandle_temp;
- if ( ! (codehandle_temp = NSEEL_code_compile(m_shape[i].m_pf_eel, buf)))
- {
- wchar_t buf[1024];
- swprintf(buf, WASABI_API_LNGSTRINGW(IDS_WARNING_PRESET_X_ERROR_IN_SHAPE_X_INIT_CODE), m_szDesc, i);
- g_plugin.AddError(buf, 6.0f, ERR_PRESET, true);
- int vi = 0;
- for (vi=0; vi<NUM_Q_VAR; vi++)
- *m_shape[i].var_pf_q[vi] = q_values_after_init_code[vi];
- for (vi=0; vi<NUM_T_VAR; vi++)
- m_shape[i].t_values_after_init_code[vi] = 0;
- }
- else
- {
-
-
- g_plugin.LoadCustomShapePerFrameEvallibVars(g_plugin.m_pState, i, 0);
-
-
-
- NSEEL_code_execute(codehandle_temp);
- for (int vi=0; vi<NUM_T_VAR; vi++)
- m_shape[i].t_values_after_init_code[vi] = *m_shape[i].var_pf_t[vi];
- NSEEL_code_free(codehandle_temp);
- codehandle_temp = NULL;
- }
- }
- #endif
- }
-
- StripLinefeedCharsAndComments(m_shape[i].m_szPerFrame, buf);
- if (buf[0])
- {
- #ifndef _NO_EXPR_
- if ( ! (m_shape[i].m_pf_codehandle = NSEEL_code_compile(m_shape[i].m_pf_eel, buf)))
- {
- wchar_t buf[1024];
- swprintf(buf, WASABI_API_LNGSTRINGW(IDS_WARNING_PRESET_X_ERROR_IN_SHAPE_X_PER_FRAME_CODE), m_szDesc, i);
- g_plugin.AddError(buf, 6.0f, ERR_PRESET, true);
- }
- #endif
- }
-
- }
- }
- }
- #endif
- }
- void CState::RandomizePresetVars()
- {
- m_rand_preset = D3DXVECTOR4(FRAND, FRAND, FRAND, FRAND);
- int k = 0;
- do
- {
- for (int i=0; i<4; i++)
- {
- float xlate_mult = 1;
- float rot_mult = 0.9f*powf(k/8.0f, 3.2f);
- m_xlate[k].x = (FRAND*2-1)*xlate_mult;
- m_xlate[k].y = (FRAND*2-1)*xlate_mult;
- m_xlate[k].z = (FRAND*2-1)*xlate_mult;
- m_rot_base[k].x = FRAND*6.28f;
- m_rot_base[k].y = FRAND*6.28f;
- m_rot_base[k].z = FRAND*6.28f;
- m_rot_speed[k].x = (FRAND*2-1)*rot_mult;
- m_rot_speed[k].y = (FRAND*2-1)*rot_mult;
- m_rot_speed[k].z = (FRAND*2-1)*rot_mult;
- k++;
- }
- }
- while (k < sizeof(m_xlate)/sizeof(m_xlate[0]));
- }
- CBlendableFloat::CBlendableFloat()
- {
- m_bBlending = false;
- }
- CBlendableFloat::~CBlendableFloat()
- {
- }
- float CBlendableFloat::eval(float fTime)
- {
- if (fTime < 0)
- {
- return val;
- }
- if (m_bBlending && (fTime > m_fBlendStartTime + m_fBlendDuration) || (fTime < m_fBlendStartTime))
- {
- m_bBlending = false;
- }
- if (!m_bBlending)
- {
- return val;
- }
- else
- {
- float mix = (fTime - m_fBlendStartTime) / m_fBlendDuration;
- return (m_fBlendFrom*(1.0f - mix) + val*mix);
- }
- }
- void CBlendableFloat::StartBlendFrom(CBlendableFloat *f_from, float fAnimTime, float fDuration)
- {
- if (fDuration < 0.001f)
- return;
- m_fBlendFrom = f_from->eval(fAnimTime);
- m_bBlending = true;
- m_fBlendStartTime = fAnimTime;
- m_fBlendDuration = fDuration;
- }
|