aboutsummaryrefslogtreecommitdiff
path: root/Src/Plugins/Visualization/vis_milk2/texmgr.h
diff options
context:
space:
mode:
authorJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
committerJef <jef@targetspot.com>2024-09-24 08:54:57 -0400
commit20d28e80a5c861a9d5f449ea911ab75b4f37ad0d (patch)
tree12f17f78986871dd2cfb0a56e5e93b545c1ae0d0 /Src/Plugins/Visualization/vis_milk2/texmgr.h
parent537bcbc86291b32fc04ae4133ce4d7cac8ebe9a7 (diff)
downloadwinamp-20d28e80a5c861a9d5f449ea911ab75b4f37ad0d.tar.gz
Initial community commit
Diffstat (limited to 'Src/Plugins/Visualization/vis_milk2/texmgr.h')
-rw-r--r--Src/Plugins/Visualization/vis_milk2/texmgr.h120
1 files changed, 120 insertions, 0 deletions
diff --git a/Src/Plugins/Visualization/vis_milk2/texmgr.h b/Src/Plugins/Visualization/vis_milk2/texmgr.h
new file mode 100644
index 00000000..78db5a74
--- /dev/null
+++ b/Src/Plugins/Visualization/vis_milk2/texmgr.h
@@ -0,0 +1,120 @@
+/*
+ LICENSE
+ -------
+Copyright 2005-2013 Nullsoft, Inc.
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification,
+are permitted provided that the following conditions are met:
+
+ * Redistributions of source code must retain the above copyright notice,
+ this list of conditions and the following disclaimer.
+
+ * Redistributions in binary form must reproduce the above copyright notice,
+ this list of conditions and the following disclaimer in the documentation
+ and/or other materials provided with the distribution.
+
+ * Neither the name of Nullsoft nor the names of its contributors may be used to
+ endorse or promote products derived from this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
+IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
+CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+#ifndef GEISS_TEXTURE_MANAGER
+#define GEISS_TEXTURE_MANAGER 1
+
+#define NUM_TEX 16
+
+#ifdef _DEBUG
+ #define D3D_DEBUG_INFO // declare this before including d3d9.h
+#endif
+#include <d3d9.h>
+#include "ns-eel2/ns-eel.h"
+#include "md_defines.h"
+
+#define TEXMGR_ERROR_MASK 0x0F
+#define TEXMGR_ERR_SUCCESS 0
+#define TEXMGR_ERR_BAD_INDEX 1
+/*
+#define TEXMGR_ERR_OPENING 2
+#define TEXMGR_ERR_IMAGE_NOT_24_BIT 3
+#define TEXMGR_ERR_IMAGE_TOO_LARGE 4
+#define TEXMGR_ERR_CREATESURFACE_FAILED 5
+#define TEXMGR_ERR_LOCKSURFACE_FAILED 6
+#define TEXMGR_ERR_CORRUPT_JPEG 7
+*/
+#define TEXMGR_ERR_FORMAT 8
+#define TEXMGR_ERR_BADFILE 9
+#define TEXMGR_ERR_OUTOFMEM 10
+#define TEXMGR_WARNING_MASK 0xF0
+#define TEXMGR_WARN_ERROR_IN_INIT_CODE 0x10
+#define TEXMGR_WARN_ERROR_IN_REG_CODE 0x20
+
+typedef struct
+{
+ LPDIRECT3DTEXTURE9 pSurface;
+ int img_w, img_h;
+ /*
+ int tex_w, tex_h;
+ float scale_x, scale_y; // the factors by which the original image was squished to become (img_w x img_h) texels in size.
+ DDPIXELFORMAT ddpf;
+ */
+ wchar_t szFileName[512];
+ float fStartTime;
+ int nStartFrame;
+ int nUserData;
+
+ // stuff for expressions:
+ char m_szExpr[8192]; // for expression eval
+ NSEEL_CODEHANDLE m_codehandle; // for expression eval
+ // input variables for expression eval
+ double *var_time, *var_frame, *var_fps, *var_progress;
+ double *var_bass, *var_bass_att, *var_mid, *var_mid_att, *var_treb, *var_treb_att;
+ // output variables for expression eval
+ double *var_x, *var_y;
+ double *var_sx, *var_sy, *var_rot, *var_flipx, *var_flipy;
+ double *var_r, *var_g, *var_b, *var_a;
+ double *var_blendmode;
+ double *var_repeatx, *var_repeaty;
+ double *var_done, *var_burn;
+ NSEEL_VMCTX tex_eel_ctx;
+}
+td_tex;
+
+class texmgr
+{
+public:
+ texmgr();
+ ~texmgr();
+
+ // members
+ void Init(LPDIRECT3DDEVICE9 lpDD); // DirectDraw object
+ int LoadTex(wchar_t *szFilename, int iSlot, char *szInitCode, char *szCode, float time, int frame, unsigned int ck);
+ void KillTex(int iSlot);
+ void Finish();
+
+ // data
+ td_tex m_tex[NUM_TEX];
+
+protected:
+ // members
+ //bool TryCreateDDrawSurface(int iSlot, int w, int h);
+ void FreeVars(int iSlot);
+ void FreeCode(int iSlot);
+ void RegisterBuiltInVariables(int iSlot);
+ bool RunInitCode(int iSlot, char *szInitCode);
+ bool RecompileExpressions(int iSlot);
+ void StripLinefeedCharsAndComments(char *src, char *dest);
+
+ // data
+ LPDIRECT3DDEVICE9 m_lpDD;
+};
+
+#endif \ No newline at end of file