diff options
author | tobigun <tobigun@b956fd51-792f-4845-bead-9b4dfca2ff2c> | 2007-12-17 16:39:13 +0000 |
---|---|---|
committer | tobigun <tobigun@b956fd51-792f-4845-bead-9b4dfca2ff2c> | 2007-12-17 16:39:13 +0000 |
commit | 69182994753c4dd7f16ba7f6ac2e406a2d71d3a6 (patch) | |
tree | 503b77cbdcb171c264a9db048f55e5767d871372 /Game/Code/lib/projectM | |
parent | 29214cceb54e4683811186e1280a53509f2e888a (diff) | |
download | usdx-69182994753c4dd7f16ba7f6ac2e406a2d71d3a6.tar.gz usdx-69182994753c4dd7f16ba7f6ac2e406a2d71d3a6.tar.xz usdx-69182994753c4dd7f16ba7f6ac2e406a2d71d3a6.zip |
added version 1.0 for testing
git-svn-id: svn://svn.code.sf.net/p/ultrastardx/svn/trunk@714 b956fd51-792f-4845-bead-9b4dfca2ff2c
Diffstat (limited to 'Game/Code/lib/projectM')
-rw-r--r-- | Game/Code/lib/projectM/0.9/projectM.pas | 590 | ||||
-rw-r--r-- | Game/Code/lib/projectM/1.0/projectM.pas | 336 | ||||
-rw-r--r-- | Game/Code/lib/projectM/projectM.pas | 381 |
3 files changed, 926 insertions, 381 deletions
diff --git a/Game/Code/lib/projectM/0.9/projectM.pas b/Game/Code/lib/projectM/0.9/projectM.pas new file mode 100644 index 00000000..511e1744 --- /dev/null +++ b/Game/Code/lib/projectM/0.9/projectM.pas @@ -0,0 +1,590 @@ +unit projectM; + +{$IFDEF FPC} + {$IFNDEF win32} + {$LINKLIB libprojectM} + {$ENDIF} + {$MODE DELPHI} + {$PACKENUM 4} + {$PACKRECORDS C} +{$ENDIF} + +interface + +uses + SysUtils; + +const +{$IFDEF win32} + libprojectM = 'libprojectM.dll'; +{$ELSE} + libprojectM = 'libprojectM.so'; +{$ENDIF} + +const + PROJECTM_VERSION = '0.99'; + PROJECTM_TITLE = 'projectM 0.99'; + +type + // 16bit non-interleaved data + TPCM16 = array[0..1, 0..511] of Smallint; + PPCM16 = ^TPCM16; + // 8bit non-interleaved data + TPCM8_512 = array[0..1, 0..511] of byte; + PPCM8_512 = ^TPCM8_512; + +{ Event types } +type + TProjectMEvent = integer; +const + PROJECTM_KEYUP = 0; + PROJECTM_KEYDOWN = 1;
+ PROJECTM_VIDEORESIZE = 2;
+ PROJECTM_VIDEOQUIT = 3;
+ PROJECTM_NONE = 4;
+
+{ Keycodes }
+type
+ TProjectMKeycode = integer;
+const
+ PROJECTM_K_RETURN = 0;
+ PROJECTM_K_RIGHT = 1;
+ PROJECTM_K_LEFT = 2;
+ PROJECTM_K_UP = 3;
+ PROJECTM_K_DOWN = 4;
+ PROJECTM_K_PAGEUP = 5;
+ PROJECTM_K_PAGEDOWN = 6;
+ PROJECTM_K_INSERT = 7;
+ PROJECTM_K_DELETE = 8;
+ PROJECTM_K_ESCAPE = 9;
+ PROJECTM_K_LSHIFT = 10;
+ PROJECTM_K_RSHIFT = 11;
+ PROJECTM_K_CAPSLOCK = 12;
+ PROJECTM_K_LCTRL = 13;
+ PROJECTM_K_HOME = 14;
+ PROJECTM_K_END = 15;
+ PROJECTM_K_BACKSPACE = 16;
+
+ PROJECTM_K_F1 = 17;
+ PROJECTM_K_F2 = (PROJECTM_K_F1 + 1);
+ PROJECTM_K_F3 = (PROJECTM_K_F1 + 2);
+ PROJECTM_K_F4 = (PROJECTM_K_F1 + 3);
+ PROJECTM_K_F5 = (PROJECTM_K_F1 + 4);
+ PROJECTM_K_F6 = (PROJECTM_K_F1 + 5);
+ PROJECTM_K_F7 = (PROJECTM_K_F1 + 6);
+ PROJECTM_K_F8 = (PROJECTM_K_F1 + 7);
+ PROJECTM_K_F9 = (PROJECTM_K_F1 + 8);
+ PROJECTM_K_F10 = (PROJECTM_K_F1 + 9);
+ PROJECTM_K_F11 = (PROJECTM_K_F1 + 10);
+ PROJECTM_K_F12 = (PROJECTM_K_F1 + 11);
+
+ PROJECTM_K_0 = 48;
+ PROJECTM_K_1 = (PROJECTM_K_0 + 1);
+ PROJECTM_K_2 = (PROJECTM_K_0 + 2);
+ PROJECTM_K_3 = (PROJECTM_K_0 + 3);
+ PROJECTM_K_4 = (PROJECTM_K_0 + 4);
+ PROJECTM_K_5 = (PROJECTM_K_0 + 5);
+ PROJECTM_K_6 = (PROJECTM_K_0 + 6);
+ PROJECTM_K_7 = (PROJECTM_K_0 + 7);
+ PROJECTM_K_8 = (PROJECTM_K_0 + 8);
+ PROJECTM_K_9 = (PROJECTM_K_0 + 9);
+
+ { Upper case }
+ PROJECTM_K_A_UPPERCASE = 65;
+ PROJECTM_K_B_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 1);
+ PROJECTM_K_C_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 2);
+ PROJECTM_K_D_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 3);
+ PROJECTM_K_E_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 4);
+ PROJECTM_K_F_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 5);
+ PROJECTM_K_G_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 6);
+ PROJECTM_K_H_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 7);
+ PROJECTM_K_I_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 8);
+ PROJECTM_K_J_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 9);
+ PROJECTM_K_K_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 10);
+ PROJECTM_K_L_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 11);
+ PROJECTM_K_M_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 12);
+ PROJECTM_K_N_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 13);
+ PROJECTM_K_O_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 14);
+ PROJECTM_K_P_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 15);
+ PROJECTM_K_Q_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 16);
+ PROJECTM_K_R_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 17);
+ PROJECTM_K_S_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 18);
+ PROJECTM_K_T_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 19);
+ PROJECTM_K_U_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 20);
+ PROJECTM_K_V_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 21);
+ PROJECTM_K_W_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 22);
+ PROJECTM_K_X_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 23);
+ PROJECTM_K_Y_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 24);
+ PROJECTM_K_Z_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 25);
+
+ { Lower case }
+ PROJECTM_K_a_LOWERCASE = 97;
+ PROJECTM_K_b_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 1);
+ PROJECTM_K_c_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 2);
+ PROJECTM_K_d_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 3);
+ PROJECTM_K_e_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 4);
+ PROJECTM_K_f_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 5);
+ PROJECTM_K_g_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 6);
+ PROJECTM_K_h_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 7);
+ PROJECTM_K_i_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 8);
+ PROJECTM_K_j_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 9);
+ PROJECTM_K_k_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 10);
+ PROJECTM_K_l_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 11);
+ PROJECTM_K_m_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 12);
+ PROJECTM_K_n_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 13);
+ PROJECTM_K_o_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 14);
+ PROJECTM_K_p_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 15);
+ PROJECTM_K_q_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 16);
+ PROJECTM_K_r_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 17);
+ PROJECTM_K_s_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 18);
+ PROJECTM_K_t_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 19);
+ PROJECTM_K_u_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 20);
+ PROJECTM_K_v_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 21);
+ PROJECTM_K_w_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 22);
+ PROJECTM_K_x_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 23);
+ PROJECTM_K_y_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 24);
+ PROJECTM_K_z_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 25);
+
+ PROJECTM_K_NONE = (PROJECTM_K_z_LOWERCASE + 1);
+
+{ Modifiers }
+type
+ TProjectMModifier = integer;
+const
+ PROJECTM_KMOD_LSHIFT = 0;
+ PROJECTM_KMOD_RSHIFT = 1;
+ PROJECTM_KMOD_CAPS = 2;
+ PROJECTM_KMOD_LCTRL = 3;
+ PROJECTM_KMOD_RCTRL = 4;
+ +type + PProjectM = ^TProjectM; + TProjectM = class(TObject) + private + _pm: Pointer; + public + constructor Create(gx, gy: integer; fps: integer; + texsize: integer; width, height: integer; + presetsDir, fontsDir: string); + + procedure ResetGL(width, height: Integer); + procedure SetTitle(title: string); + procedure RenderFrame(); + + procedure AddPCMfloat(pcmData: PSingle; samples: integer); + procedure AddPCM16(pcmData: PPCM16); + procedure AddPCM16Data(pcmData: PSmallint; samples: Smallint); + procedure AddPCM8_512(pcmData: PPCM8_512); + + procedure RandomPreset(); + procedure PreviousPreset(); + procedure NextPreset(); + procedure ToggleShowPresetNames(); + + procedure KeyHandler(event: TProjectMEvent; + keycode: TProjectMKeycode; + modifier: TProjectMModifier); + + destructor Destroy(); + end; + +implementation + +uses +{$IFNDEF win32} + baseunix, +{$ENDIF} + OpenGL12; + + +{**************** INTERNAL SECTION ****************} + + +type + PPSingle = ^PSingle; + +type + _TContextType = Integer; +const + AGL_CONTEXT = 0; + CGL_CONTEXT = 1; + NSGL_CONTEXT = 2; + GLX_CONTEXT = 3; + WGL_CONTEXT = 4; + +type + _PRenderTarget = ^_TRenderTarget; + _TRenderTarget = record + { Texture size } + texsize: Integer; + + { Application context } + origContextType: _TContextType; + + usePbuffers: Integer; + + {$ifdef LINUX} + lock_func: procedure(); cdecl; + unlock_func: procedure(); cdecl; + {$endif} + + { Opaque pbuffer context and pbuffer } + {$ifdef MACOS} + origContext: Pointer; + pbufferContext: Pointer; + pbuffer: Pointer; + {$endif} + + { Render target texture ID for non-pbuffer systems } + textureID: array[0..2] of TGLuint; + end; + + _PProjectM = ^_TProjectM; + _TProjectM = record + presetURL: PChar; + presetName: PChar; + fontURL: PChar; + + hasInit: Integer; + + noSwitch: Integer; + pcmframes: Integer; + freqframes: Integer; + totalframes: Integer; + + showfps: Integer; + showtitle: Integer; + showpreset: Integer; + showhelp: Integer; + showstats: Integer; + + studio: Integer; + + fbuffer: PGLubyte; + + {$ifndef Win32} + { The first ticks value of the application } + startTime: timeval; + {$else} + startTime: Longint; + {$endif Win32} + Time: Single; + + { Render target texture ID } + renderTarget: _PRenderTarget; + + disp: array[0..79] of Char; + + wave_o: Single; + + //int texsize=1024; //size of texture to do actual graphics + fvw: Integer; //fullscreen dimensions + fvh: Integer; + wvw: Integer; //windowed dimensions + wvh: Integer; + vw: Integer; //runtime dimensions + vh: Integer; + fullscreen: Integer; + + maxsamples: Integer; //size of PCM buffer + numsamples: Integer; //size of new PCM info + pcmdataL: PSingle; //holder for most recent pcm data + pcmdataR: PSingle; //holder for most recent pcm data + + avgtime: Integer; //# frames per preset + + title: PChar; + drawtitle: Integer; + + correction: Integer; + + vol: Single; + + //per pixel equation variables + gridx: PPSingle; //grid containing interpolated mesh + gridy: PPSingle; + origtheta: PPSingle; //grid containing interpolated mesh reference values + origrad: PPSingle; + origx: PPSingle; //original mesh + origy: PPSingle; + origx2: PPSingle; //original mesh + origy2: PPSingle; + + { Timing information } + mspf: Integer; + timed: Integer; + timestart: Integer; + nohard: Integer; + count: Integer; + realfps, + fpsstart: Single; + + { PCM data } + vdataL: array[0..511] of Single; //holders for FFT data (spectrum) + vdataR: array[0..511] of Single; + + { Various toggles } + doPerPixelEffects: Integer; + doIterative: Integer; + + { ENGINE VARIABLES } + { From engine_vars.h } + preset_name: array[0..255] of Char; + + { PER FRAME CONSTANTS BEGIN } + zoom: Single; + zoomexp: Single; + rot: Single; + warp: Single; + + sx: Single; + sy: Single; + dx: Single; + dy: Single; + cx: Single; + cy: Single; + + gy: Integer; + gx: Integer; + + decay: Single; + + wave_r: Single; + wave_g: Single; + wave_b: Single; + wave_x: Single; + wave_y: Single; + wave_mystery: Single; + + ob_size: Single; + ob_r: Single; + ob_g: Single; + ob_b: Single; + ob_a: Single; + + ib_size: Single; + ib_r: Single; + ib_g: Single; + ib_b: Single; + ib_a: Single; + + meshx: Integer; + meshy: Integer; + + mv_a: Single; + mv_r: Single; + mv_g: Single; + mv_b: Single; + mv_l: Single; + mv_x: Single; + mv_y: Single; + mv_dy: Single; + mv_dx: Single; + + treb: Single; + mid: Single; + bass: Single; + bass_old: Single; + beat_sensitivity: Single; + treb_att: Single; + mid_att: Single; + bass_att: Single; + progress: Single; + frame: Integer; + + { PER_FRAME CONSTANTS END } + + { PER_PIXEL CONSTANTS BEGIN } + + x_per_pixel: Single; + y_per_pixel: Single; + rad_per_pixel: Single; + ang_per_pixel: Single; + + { PER_PIXEL CONSTANT END } + + + fRating: Single; + fGammaAdj: Single; + fVideoEchoZoom: Single; + fVideoEchoAlpha: Single; + + nVideoEchoOrientation: Integer; + nWaveMode: Integer; + bAdditiveWaves: Integer; + bWaveDots: Integer; + bWaveThick: Integer; + bModWaveAlphaByVolume: Integer; + bMaximizeWaveColor: Integer; + bTexWrap: Integer; + bDarkenCenter: Integer; + bRedBlueStereo: Integer; + bBrighten: Integer; + bDarken: Integer; + bSolarize: Integer; + bInvert: Integer; + bMotionVectorsOn: Integer; + fps: Integer; + + fWaveAlpha: Single; + fWaveScale: Single; + fWaveSmoothing: Single; + fWaveParam: Single; + fModWaveAlphaStart: Single; + fModWaveAlphaEnd: Single; + fWarpAnimSpeed: Single; + fWarpScale: Single; + fShader: Single; + + + { Q VARIABLES START } + + q1: Single; + q2: Single; + q3: Single; + q4: Single; + q5: Single; + q6: Single; + q7: Single; + q8: Single; + + + { Q VARIABLES END } + + zoom_mesh: PPSingle; + zoomexp_mesh: PPSingle; + rot_mesh: PPSingle; + + sx_mesh: PPSingle; + sy_mesh: PPSingle; + dx_mesh: PPSingle; + dy_mesh: PPSingle; + cx_mesh: PPSingle; + cy_mesh: PPSingle; + + x_mesh: PPSingle; + y_mesh: PPSingle; + rad_mesh: PPSingle; + theta_mesh: PPSingle; + end; + +{ projectM.h declarations } +procedure _projectM_init(pm: _PProjectM); cdecl; external libprojectM name 'projectM_init'; +procedure _projectM_reset(pm: _PProjectM); cdecl; external libprojectM name 'projectM_reset'; +procedure _projectM_resetGL(pm: _PProjectM; width: Integer; height: Integer); cdecl; external libprojectM name 'projectM_resetGL'; +procedure _projectM_setTitle(pm: _PProjectM; title: PChar); cdecl; external libprojectM name 'projectM_setTitle'; +procedure _renderFrame(pm: _PProjectM); cdecl; external libprojectM name 'renderFrame'; + +{ PCM.h declarations } +procedure _addPCMfloat(pcm_data: PSingle; samples: integer); cdecl; external libprojectM name 'addPCMfloat'; +procedure _addPCM16(pcm_data: PPCM16); cdecl; external libprojectM name 'addPCM16'; +procedure _addPCM16Data(pcm_data: PSmallint; samples: Smallint); cdecl; external libprojectM name 'addPCM16Data'; +procedure _addPCM8_512(pcm_data: PPCM8_512); cdecl; external libprojectM name 'addPCM8'; + +{ console_interface.h declarations } +procedure _key_handler(pm: _PProjectM; + event: TProjectMEvent; + keycode: TProjectMKeycode; + modifier: TProjectMModifier); cdecl; external libprojectM name 'key_handler'; + + + + +{**************** EXTERNAL SECTION ****************} + + +constructor TProjectM.Create(gx, gy: integer; fps: integer; + texsize: integer; width, height: integer; + presetsDir, fontsDir: string); +var + pm: _PProjectM; +begin + New(pm); + _pm := pm; + _projectM_reset(pm); + + pm^.fullscreen := 0; + pm^.renderTarget^.texsize := texsize; + pm^.gx := gx; + pm^.gy := gy; + pm^.fps := fps; + pm^.renderTarget^.usePbuffers := 0; + + pm^.fontURL := PChar(fontsDir); + pm^.presetURL := PChar(presetsDir); + + _projectM_init(pm); +end; + +procedure TProjectM.ResetGL(width, height: Integer); +begin + _projectM_resetGL(_pm, width, height); +end; + +procedure TProjectM.SetTitle(title: string); +var pm: _PProjectM; +begin + pm := _pm; + pm^.title := PChar(title); + pm^.showtitle := 1; +end; + +procedure TProjectM.RenderFrame(); +begin + _renderFrame(_pm); +end; + +procedure TProjectM.AddPCMfloat(pcmData: PSingle; samples: integer); +begin + _addPCMfloat(pcmData, samples); +end; + +procedure TProjectM.AddPCM16(pcmData: PPCM16); +begin + _addPCM16(pcmData); +end; + +procedure TProjectM.AddPCM16Data(pcmData: PSmallint; samples: Smallint); +begin + _addPCM16Data(pcmData, samples); +end; + +procedure TProjectM.AddPCM8_512(pcmData: PPCM8_512); +begin + _addPCM8_512(pcmData); +end; + +procedure TProjectM.KeyHandler(event: TProjectMEvent; + keycode: TProjectMKeycode; + modifier: TProjectMModifier); +begin + _key_handler(_pm, event, keycode, modifier); +end; + +procedure TProjectM.RandomPreset(); +begin + KeyHandler(PROJECTM_KEYDOWN, PROJECTM_K_r_LOWERCASE, PROJECTM_KMOD_LSHIFT); +end; + +procedure TProjectM.PreviousPreset(); +begin + KeyHandler(PROJECTM_KEYDOWN, PROJECTM_K_p_LOWERCASE, PROJECTM_KMOD_LSHIFT); +end; + +procedure TProjectM.NextPreset(); +begin + KeyHandler(PROJECTM_KEYDOWN, PROJECTM_K_n_LOWERCASE, PROJECTM_KMOD_LSHIFT); +end; + +procedure TProjectM.ToggleShowPresetNames(); +begin + KeyHandler(PROJECTM_KEYDOWN, PROJECTM_K_F3, PROJECTM_KMOD_LSHIFT); +end; + +destructor TProjectM.Destroy(); +begin + Dispose(_pm); + _pm := nil; +end; + +end. diff --git a/Game/Code/lib/projectM/1.0/projectM.pas b/Game/Code/lib/projectM/1.0/projectM.pas new file mode 100644 index 00000000..87184e2f --- /dev/null +++ b/Game/Code/lib/projectM/1.0/projectM.pas @@ -0,0 +1,336 @@ +unit projectM;
+
+{$IFDEF FPC}
+ {$IFNDEF win32}
+ {$LINKLIB libprojectM}
+ {$ENDIF}
+ {$MODE DELPHI}
+ {$PACKENUM 4}
+ {$PACKRECORDS C}
+{$ENDIF}
+
+interface
+
+uses
+ OpenGL12;
+
+const
+{$IFDEF win32}
+ libprojectM = 'projectM-cwrapper.dll';
+{$ELSE}
+ libprojectM = 'libprojectM-cwrapper.so';
+{$ENDIF}
+
+const
+ PROJECTM_VERSION = '1.00.00';
+ PROJECTM_TITLE = 'projectM 1.00.00';
+
+type
+ // 16bit non-interleaved data
+ TPCM16 = array[0..1, 0..511] of Smallint;
+ PPCM16 = ^TPCM16;
+ // 8bit non-interleaved data (512 samples)
+ TPCM8_512 = array[0..1, 0..511] of byte;
+ PPCM8_512 = ^TPCM8_512;
+ // 8bit non-interleaved data (1024 samples)
+ TPCM8_1024 = array[0..1, 0..1023] of byte;
+ PPCM8_1024 = ^TPCM8_512;
+
+{ Event types }
+type
+ TProjectMEvent = integer;
+const
+ PROJECTM_KEYUP = 0;
+ PROJECTM_KEYDOWN = 1;
+ PROJECTM_VIDEORESIZE = 2;
+ PROJECTM_VIDEOQUIT = 3;
+ PROJECTM_NONE = 4;
+
+{ Keycodes }
+type
+ TProjectMKeycode = integer;
+const
+ PROJECTM_K_RETURN = 0;
+ PROJECTM_K_RIGHT = 1;
+ PROJECTM_K_LEFT = 2;
+ PROJECTM_K_UP = 3;
+ PROJECTM_K_DOWN = 4;
+ PROJECTM_K_PAGEUP = 5;
+ PROJECTM_K_PAGEDOWN = 6;
+ PROJECTM_K_INSERT = 7;
+ PROJECTM_K_DELETE = 8;
+ PROJECTM_K_ESCAPE = 9;
+ PROJECTM_K_LSHIFT = 10;
+ PROJECTM_K_RSHIFT = 11;
+ PROJECTM_K_CAPSLOCK = 12;
+ PROJECTM_K_LCTRL = 13;
+ PROJECTM_K_HOME = 14;
+ PROJECTM_K_END = 15;
+ PROJECTM_K_BACKSPACE = 16;
+
+ PROJECTM_K_F1 = 17;
+ PROJECTM_K_F2 = (PROJECTM_K_F1 + 1);
+ PROJECTM_K_F3 = (PROJECTM_K_F1 + 2);
+ PROJECTM_K_F4 = (PROJECTM_K_F1 + 3);
+ PROJECTM_K_F5 = (PROJECTM_K_F1 + 4);
+ PROJECTM_K_F6 = (PROJECTM_K_F1 + 5);
+ PROJECTM_K_F7 = (PROJECTM_K_F1 + 6);
+ PROJECTM_K_F8 = (PROJECTM_K_F1 + 7);
+ PROJECTM_K_F9 = (PROJECTM_K_F1 + 8);
+ PROJECTM_K_F10 = (PROJECTM_K_F1 + 9);
+ PROJECTM_K_F11 = (PROJECTM_K_F1 + 10);
+ PROJECTM_K_F12 = (PROJECTM_K_F1 + 11);
+
+ PROJECTM_K_0 = 48;
+ PROJECTM_K_1 = (PROJECTM_K_0 + 1);
+ PROJECTM_K_2 = (PROJECTM_K_0 + 2);
+ PROJECTM_K_3 = (PROJECTM_K_0 + 3);
+ PROJECTM_K_4 = (PROJECTM_K_0 + 4);
+ PROJECTM_K_5 = (PROJECTM_K_0 + 5);
+ PROJECTM_K_6 = (PROJECTM_K_0 + 6);
+ PROJECTM_K_7 = (PROJECTM_K_0 + 7);
+ PROJECTM_K_8 = (PROJECTM_K_0 + 8);
+ PROJECTM_K_9 = (PROJECTM_K_0 + 9);
+
+ { Upper case }
+ PROJECTM_K_A_UPPERCASE = 65;
+ PROJECTM_K_B_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 1);
+ PROJECTM_K_C_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 2);
+ PROJECTM_K_D_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 3);
+ PROJECTM_K_E_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 4);
+ PROJECTM_K_F_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 5);
+ PROJECTM_K_G_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 6);
+ PROJECTM_K_H_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 7);
+ PROJECTM_K_I_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 8);
+ PROJECTM_K_J_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 9);
+ PROJECTM_K_K_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 10);
+ PROJECTM_K_L_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 11);
+ PROJECTM_K_M_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 12);
+ PROJECTM_K_N_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 13);
+ PROJECTM_K_O_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 14);
+ PROJECTM_K_P_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 15);
+ PROJECTM_K_Q_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 16);
+ PROJECTM_K_R_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 17);
+ PROJECTM_K_S_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 18);
+ PROJECTM_K_T_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 19);
+ PROJECTM_K_U_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 20);
+ PROJECTM_K_V_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 21);
+ PROJECTM_K_W_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 22);
+ PROJECTM_K_X_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 23);
+ PROJECTM_K_Y_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 24);
+ PROJECTM_K_Z_UPPERCASE = (PROJECTM_K_A_UPPERCASE + 25);
+
+ { Lower case }
+ PROJECTM_K_a_LOWERCASE = 97;
+ PROJECTM_K_b_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 1);
+ PROJECTM_K_c_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 2);
+ PROJECTM_K_d_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 3);
+ PROJECTM_K_e_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 4);
+ PROJECTM_K_f_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 5);
+ PROJECTM_K_g_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 6);
+ PROJECTM_K_h_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 7);
+ PROJECTM_K_i_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 8);
+ PROJECTM_K_j_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 9);
+ PROJECTM_K_k_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 10);
+ PROJECTM_K_l_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 11);
+ PROJECTM_K_m_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 12);
+ PROJECTM_K_n_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 13);
+ PROJECTM_K_o_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 14);
+ PROJECTM_K_p_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 15);
+ PROJECTM_K_q_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 16);
+ PROJECTM_K_r_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 17);
+ PROJECTM_K_s_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 18);
+ PROJECTM_K_t_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 19);
+ PROJECTM_K_u_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 20);
+ PROJECTM_K_v_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 21);
+ PROJECTM_K_w_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 22);
+ PROJECTM_K_x_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 23);
+ PROJECTM_K_y_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 24);
+ PROJECTM_K_z_LOWERCASE = (PROJECTM_K_a_LOWERCASE + 25);
+
+ PROJECTM_K_NONE = (PROJECTM_K_z_LOWERCASE + 1);
+
+{ Modifiers }
+type
+ TProjectMModifier = integer;
+const
+ PROJECTM_KMOD_LSHIFT = 0;
+ PROJECTM_KMOD_RSHIFT = 1;
+ PROJECTM_KMOD_CAPS = 2;
+ PROJECTM_KMOD_LCTRL = 3;
+ PROJECTM_KMOD_RCTRL = 4;
+
+
+type
+ PProjectM = ^TProjectM;
+ TProjectM = class(TObject)
+ private
+ _pm: Pointer;
+ public
+ constructor Create(gx, gy: integer; fps: integer;
+ texsize: integer; width, height: integer;
+ presetsDir, fontsDir: string;
+ titleFont: string = 'Vera.ttf';
+ menuFont: string = 'Vera.ttf'); overload;
+ constructor Create(configFile: string); overload;
+
+ procedure ResetGL(width, height: Integer);
+ procedure SetTitle(title: string);
+ procedure RenderFrame();
+
+ procedure AddPCMfloat(pcmData: PSingle; samples: integer);
+ procedure AddPCM16(pcmData: PPCM16);
+ procedure AddPCM16Data(pcmData: PSmallint; samples: Smallint);
+ procedure AddPCM8_512(pcmData: PPCM8_512);
+ procedure AddPCM8_1024(pcmData: PPCM8_1024);
+
+ procedure RandomPreset();
+ procedure PreviousPreset();
+ procedure NextPreset();
+ procedure ToggleShowPresetNames();
+
+ function InitRenderToTexture(): GLuint;
+
+ procedure KeyHandler(event: TProjectMEvent;
+ keycode: TProjectMKeycode;
+ modifier: TProjectMModifier);
+
+ destructor Destroy();
+ end;
+
+implementation
+
+
+{**************** INTERNAL SECTION ****************}
+
+
+type
+ _PProjectM = Pointer;
+
+{ projectM.hpp declarations }
+function _projectM_create1(config_file: PChar): _PProjectM; cdecl; external libprojectM name 'projectM_create1';
+function _projectM_create2(gx: integer; gy: integer; fps: integer;
+ texsize: integer; width: integer; height: integer;
+ preset_url: PChar; title_fonturl: PChar; title_menuurl: PChar): _PProjectM; cdecl; external libprojectM name 'projectM_create2';
+
+procedure _projectM_resetGL(pm: _PProjectM; width: integer; height: integer); cdecl; external libprojectM name 'projectM_resetGL';
+procedure _projectM_setTitle(pm: _PProjectM; title: PChar); cdecl; external libprojectM name 'projectM_setTitle';
+procedure _projectM_renderFrame(pm: _PProjectM); cdecl; external libprojectM name 'projectM_renderFrame';
+function _projectM_initRenderToTexture(pm: _PProjectM): Cardinal; cdecl; external libprojectM name 'projectM_initRenderToTexture';
+
+procedure _projectM_free(pm: _PProjectM); cdecl; external libprojectM name 'projectM_free';
+
+procedure _projectM_key_handler(pm: _PProjectM; event: TProjectMEvent;
+ keycode: TProjectMKeycode; modifier: TProjectMModifier); cdecl; external libprojectM name 'projectM_key_handler';
+
+{ PCM.hpp declarations }
+procedure _PCM_addPCMfloat(pm: _PProjectM; pcm_data: PSingle; samples: integer); cdecl; external libprojectM name 'PCM_addPCMfloat';
+procedure _PCM_addPCM16(pm: _PProjectM; pcm_data: PPCM16); cdecl; external libprojectM name 'PCM_addPCM16';
+procedure _PCM_addPCM16Data(pm: _PProjectM; pcm_data: PSmallint; samples: Smallint); cdecl; external libprojectM name 'PCM_addPCM16Data';
+procedure _PCM_addPCM8_512(pm: _PProjectM; pcm_data: PPCM8_512); cdecl; external libprojectM name 'PCM_addPCM8_512';
+procedure _PCM_addPCM8_1024(pm: _PProjectM; pcm_data: PPCM8_1024); cdecl; external libprojectM name 'PCM_addPCM8';
+
+
+{**************** EXTERNAL SECTION ****************}
+
+constructor TProjectM.Create(gx, gy: integer; fps: integer;
+ texsize: integer; width, height: integer;
+ presetsDir, fontsDir: string; titleFont, menuFont: string);
+begin
+ _pm := _projectM_create2(gx, gy, fps, texsize, width, height,
+ PChar(presetsDir),
+ PChar(fontsDir + '/' + titleFont),
+ PChar(fontsDir + '/' + menuFont))
+end;
+
+constructor TProjectM.Create(configFile: string);
+begin
+ _pm := _projectM_create1(PChar(configFile));
+end;
+
+procedure TProjectM.ResetGL(width, height: Integer);
+begin
+ _projectM_resetGL(_pm, width, height);
+end;
+
+procedure TProjectM.SetTitle(title: string);
+begin
+ _projectM_setTitle(_pm, PChar(title));
+end;
+
+procedure TProjectM.RenderFrame();
+begin
+ _projectM_renderFrame(_pm);
+end;
+
+procedure TProjectM.AddPCMfloat(pcmData: PSingle; samples: integer);
+begin
+ _PCM_addPCMfloat(_pm, pcmData, samples);
+end;
+
+procedure TProjectM.AddPCM16(pcmData: PPCM16);
+begin
+ _PCM_addPCM16(_pm, pcmData);
+end;
+
+{**
+ * Passes interleaved stereo PCM-samples to projectM.
+ *}
+procedure TProjectM.AddPCM16Data(pcmData: PSmallint; samples: Smallint);
+begin
+ _PCM_addPCM16Data(_pm, pcmData, samples);
+end;
+
+procedure TProjectM.AddPCM8_512(pcmData: PPCM8_512);
+begin
+ _PCM_addPCM8_512(_pm, pcmData);
+end;
+
+procedure TProjectM.AddPCM8_1024(pcmData: PPCM8_1024);
+begin
+ _PCM_addPCM8_1024(_pm, pcmData);
+end;
+
+{**
+ * If the result is > -1 projectM will render to a texture.
+ * The texture-ID is the return-value.
+ *}
+function TProjectM.InitRenderToTexture(): GLuint;
+begin
+ result := _projectM_initRenderToTexture(_pm);
+end;
+
+procedure TProjectM.KeyHandler(event: TProjectMEvent;
+ keycode: TProjectMKeycode;
+ modifier: TProjectMModifier);
+begin
+ _projectM_key_handler(_pm, event, keycode, modifier);
+end;
+
+procedure TProjectM.RandomPreset();
+begin
+ KeyHandler(PROJECTM_KEYDOWN, PROJECTM_K_r_LOWERCASE, PROJECTM_KMOD_LSHIFT);
+end;
+
+procedure TProjectM.PreviousPreset();
+begin
+ KeyHandler(PROJECTM_KEYDOWN, PROJECTM_K_p_LOWERCASE, PROJECTM_KMOD_LSHIFT);
+end;
+
+procedure TProjectM.NextPreset();
+begin
+ KeyHandler(PROJECTM_KEYDOWN, PROJECTM_K_n_LOWERCASE, PROJECTM_KMOD_LSHIFT);
+end;
+
+procedure TProjectM.ToggleShowPresetNames();
+begin
+ KeyHandler(PROJECTM_KEYDOWN, PROJECTM_K_F3, PROJECTM_KMOD_LSHIFT);
+end;
+
+destructor TProjectM.Destroy();
+begin
+ _projectM_free(_pm);
+ _pm := nil;
+end;
+
+end.
diff --git a/Game/Code/lib/projectM/projectM.pas b/Game/Code/lib/projectM/projectM.pas deleted file mode 100644 index 1c699e2b..00000000 --- a/Game/Code/lib/projectM/projectM.pas +++ /dev/null @@ -1,381 +0,0 @@ -unit projectM; - -{$IFDEF FPC} - {$IFNDEF win32} - {$LINKLIB libprojectM} - {$ENDIF} - {$MODE DELPHI} - {$PACKENUM 4} - {$PACKRECORDS C} -{$ENDIF} - -interface - -uses -{$IFNDEF win32} - baseunix, -{$ENDIF} - OpenGL12; - -const -{$IFDEF win32} - libprojectM = 'libprojectM.dll'; -{$ELSE} - libprojectM = 'libprojectM.so'; -{$ENDIF} - -const - PROJECTM_VERSION = '0.99'; - PROJECTM_TITLE = 'projectM 0.99'; - -type - FLOAT = Single; - PFLOAT = ^FLOAT; - PPFLOAT = ^PFLOAT; - INT = Integer; - SHORT = Smallint; - LONG = Longint; - -type - // 16bit interleaved data - TPCM16Data = array[0..511, 0..1] of SHORT; - PPCM16Data = ^TPCM16Data; - // 16bit non-interleaved data - TPCM16 = array[0..1, 0..511] of SHORT; - PPCM16 = ^TPCM16; - // 8bit non-interleaved data - TPCM8 = array[0..1, 0..511] of byte; - PPCM8 = ^TPCM8; - -type - TTextureScale = INT; -const - SCALE_NEAREST = 0; - SCALE_MAGNIFY = 1; - SCALE_MINIFY = 2; - -type - TContextType = INT; -const - AGL_CONTEXT = 0; - CGL_CONTEXT = 1; - NSGL_CONTEXT = 2; - GLX_CONTEXT = 3; - WGL_CONTEXT = 4; - -type - TPBufferPass = INT; -const - PBUFFER_PASS1 = 0; - PBUFFER_PASS2 = 1; - -type - PRenderTarget = ^TRenderTarget; - TRenderTarget = record - { Texture size } - texsize: INT; - - { Application context } - origContextType: TContextType; - - usePbuffers: INT; - - {$ifdef LINUX} - lock_func: procedure(); cdecl; - unlock_func: procedure(); cdecl; - {$endif} - - { Opaque pbuffer context and pbuffer } - {$ifdef MACOS} - origContext: Pointer; - pbufferContext: Pointer; - pbuffer: Pointer; - {$endif} - - { Render target texture ID for non-pbuffer systems } - textureID: array[0..2] of TGLuint; - end; - - { - procedure createPBuffers( width, height: INT; target: PRenderTarget ); - procedure lockPBuffer( target: PRenderTarget; pass: PBufferPass ); - procedure unlockPBuffer( target: PRenderTarget ); - function nearestPower2( value: INT; scaleRule: TTextureScale ): INT; - } - - PProjectM = ^TProjectM; - TProjectM = record - presetURL: PChar; - presetName: PChar; - fontURL: PChar; - - hasInit: INT; - - noSwitch: INT; - pcmframes: INT; - freqframes: INT; - totalframes: INT; - - showfps: INT; - showtitle: INT; - showpreset: INT; - showhelp: INT; - showstats: INT; - - studio: INT; - - fbuffer: PGLubyte; - - {$ifndef Win32} - { The first ticks value of the application } - startTime: timeval; - {$else} - startTime: LONG; - {$endif Win32} - Time: FLOAT; - - { Render target texture ID } - renderTarget: PRenderTarget; - - disp: array[0..79] of Char; - - wave_o: FLOAT; - - //int texsize=1024; //size of texture to do actual graphics - fvw: INT; //fullscreen dimensions - fvh: INT; - wvw: INT; //windowed dimensions - wvh: INT; - vw: INT; //runtime dimensions - vh: INT; - fullscreen: INT; - - maxsamples: INT; //size of PCM buffer - numsamples: INT; //size of new PCM info - pcmdataL: PFLOAT; //holder for most recent pcm data - pcmdataR: PFLOAT; //holder for most recent pcm data - - avgtime: INT; //# frames per preset - - title: PChar; - drawtitle: INT; - - correction: INT; - - vol: FLOAT; - - //per pixel equation variables - gridx: PPFLOAT; //grid containing interpolated mesh - gridy: PPFLOAT; - origtheta: PPFLOAT; //grid containing interpolated mesh reference values - origrad: PPFLOAT; - origx: PPFLOAT; //original mesh - origy: PPFLOAT; - origx2: PPFLOAT; //original mesh - origy2: PPFLOAT; - - { Timing information } - mspf: INT; - timed: INT; - timestart: INT; - nohard: INT; - count: INT; - realfps, - fpsstart: FLOAT; - - { PCM data } - vdataL: array[0..511] of FLOAT; //holders for FFT data (spectrum) - vdataR: array[0..511] of FLOAT; - - { Various toggles } - doPerPixelEffects: INT; - doIterative: INT; - - { ENGINE VARIABLES } - { From engine_vars.h } - preset_name: array[0..255] of Char; - - { PER FRAME CONSTANTS BEGIN } - zoom: FLOAT; - zoomexp: FLOAT; - rot: FLOAT; - warp: FLOAT; - - sx: FLOAT; - sy: FLOAT; - dx: FLOAT; - dy: FLOAT; - cx: FLOAT; - cy: FLOAT; - - gy: INT; - gx: INT; - - decay: FLOAT; - - wave_r: FLOAT; - wave_g: FLOAT; - wave_b: FLOAT; - wave_x: FLOAT; - wave_y: FLOAT; - wave_mystery: FLOAT; - - ob_size: FLOAT; - ob_r: FLOAT; - ob_g: FLOAT; - ob_b: FLOAT; - ob_a: FLOAT; - - ib_size: FLOAT; - ib_r: FLOAT; - ib_g: FLOAT; - ib_b: FLOAT; - ib_a: FLOAT; - - meshx: INT; - meshy: INT; - - mv_a: FLOAT; - mv_r: FLOAT; - mv_g: FLOAT; - mv_b: FLOAT; - mv_l: FLOAT; - mv_x: FLOAT; - mv_y: FLOAT; - mv_dy: FLOAT; - mv_dx: FLOAT; - - treb: FLOAT; - mid: FLOAT; - bass: FLOAT; - bass_old: FLOAT; - beat_sensitivity: FLOAT; - treb_att: FLOAT; - mid_att: FLOAT; - bass_att: FLOAT; - progress: FLOAT; - frame: INT; - - { PER_FRAME CONSTANTS END } - - { PER_PIXEL CONSTANTS BEGIN } - - x_per_pixel: FLOAT; - y_per_pixel: FLOAT; - rad_per_pixel: FLOAT; - ang_per_pixel: FLOAT; - - { PER_PIXEL CONSTANT END } - - - fRating: FLOAT; - fGammaAdj: FLOAT; - fVideoEchoZoom: FLOAT; - fVideoEchoAlpha: FLOAT; - - nVideoEchoOrientation: INT; - nWaveMode: INT; - bAdditiveWaves: INT; - bWaveDots: INT; - bWaveThick: INT; - bModWaveAlphaByVolume: INT; - bMaximizeWaveColor: INT; - bTexWrap: INT; - bDarkenCenter: INT; - bRedBlueStereo: INT; - bBrighten: INT; - bDarken: INT; - bSolarize: INT; - bInvert: INT; - bMotionVectorsOn: INT; - fps: INT; - - fWaveAlpha: FLOAT; - fWaveScale: FLOAT; - fWaveSmoothing: FLOAT; - fWaveParam: FLOAT; - fModWaveAlphaStart: FLOAT; - fModWaveAlphaEnd: FLOAT; - fWarpAnimSpeed: FLOAT; - fWarpScale: FLOAT; - fShader: FLOAT; - - - { Q VARIABLES START } - - q1: FLOAT; - q2: FLOAT; - q3: FLOAT; - q4: FLOAT; - q5: FLOAT; - q6: FLOAT; - q7: FLOAT; - q8: FLOAT; - - - { Q VARIABLES END } - - zoom_mesh: PPFLOAT; - zoomexp_mesh: PPFLOAT; - rot_mesh: PPFLOAT; - - sx_mesh: PPFLOAT; - sy_mesh: PPFLOAT; - dx_mesh: PPFLOAT; - dy_mesh: PPFLOAT; - cx_mesh: PPFLOAT; - cy_mesh: PPFLOAT; - - x_mesh: PPFLOAT; - y_mesh: PPFLOAT; - rad_mesh: PPFLOAT; - theta_mesh: PPFLOAT; - end; - - { Functions } - procedure projectM_init(pm: PProjectM); cdecl; external libprojectM; - procedure projectM_reset(pm: PProjectM); cdecl; external libprojectM; - procedure projectM_resetGL(pm: PProjectM; width: INT; height: INT); cdecl; external libprojectM; - procedure projectM_setTitle(pm: PProjectM; title: PChar); cdecl; external libprojectM; - procedure renderFrame(pm: PProjectM); cdecl; external libprojectM; - - { - procedure draw_help(pm: PProjectM); cdecl; external libprojectM; - procedure draw_fps(pm: PProjectM; fps: Single); cdecl; external libprojectM; - procedure draw_preset(pm: PProjectM); cdecl; external libprojectM; - procedure draw_title(pm: PProjectM); cdecl; external libprojectM; - procedure draw_stats(pm: PProjectM); cdecl; external libprojectM; - - procedure modulate_opacity_by_volume(pm: PProjectM); cdecl; external libprojectM; - procedure maximize_colors(pm: PProjectM); cdecl; external libprojectM; - procedure do_per_pixel_math(pm: PProjectM); cdecl; external libprojectM; - procedure do_per_frame(pm: PProjectM); cdecl; external libprojectM; - procedure darken_center(pm: PProjectM); cdecl; external libprojectM; - - procedure render_interpolation(pm: PProjectM); cdecl; external libprojectM; - procedure render_texture_to_screen(pm: PProjectM); cdecl; external libprojectM; - procedure render_texture_to_studio(pm: PProjectM); cdecl; external libprojectM; - procedure draw_motion_vectors(pm: PProjectM); cdecl; external libprojectM; - procedure draw_borders(pm: PProjectM); cdecl; external libprojectM; - procedure draw_shapes(pm: PProjectM); cdecl; external libprojectM; - procedure draw_waveform(pm: PProjectM); cdecl; external libprojectM; - procedure draw_custom_waves(pm: PProjectM); cdecl; external libprojectM; - - procedure draw_title_to_screen(pm: PProjectM); cdecl; external libprojectM; - procedure draw_title_to_texture(pm: PProjectM); cdecl; external libprojectM; - procedure get_title(pm: PProjectM); cdecl; external libprojectM; - - procedure reset_per_pixel_matrices(pm: PProjectM); cdecl; external libprojectM; - procedure init_per_pixel_matrices(pm: PProjectM); cdecl; external libprojectM; - procedure rescale_per_pixel_matrices(pm: PProjectM); cdecl; external libprojectM; - } - - { PCM.h declarations } - procedure addPCMfloat(pcm_data: PSingle; samples: integer); cdecl; external libprojectM; - procedure addPCM16(pcm_data: PPCM16); cdecl; external libprojectM; - procedure addPCM16Data(pcm_data: PPCM16Data; samples: Smallint); cdecl; external libprojectM; - procedure addPCM8(pcm_data: PPCM8); cdecl; external libprojectM; - -implementation - -end. |