summaryrefslogtreecommitdiff
path: root/src/effects.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/effects.cpp')
-rw-r--r--src/effects.cpp58
1 files changed, 58 insertions, 0 deletions
diff --git a/src/effects.cpp b/src/effects.cpp
new file mode 100644
index 0000000..1aacddb
--- /dev/null
+++ b/src/effects.cpp
@@ -0,0 +1,58 @@
+#include "effects_software.cpp"
+#include "effects_gl.cpp"
+
+static void
+Effect_DrawColor(real32 *Data, int Width, int Height, int BytesPerPixel, void *EffectBitmapAddress, uint16 ShaderProgram)
+{
+ v4 Color = { Data[0], Data[1], Data[2], Data[3] };
+ Effect_GL_DrawColor(Width, Height, BytesPerPixel, EffectBitmapAddress, ShaderProgram, Color);
+}
+
+static void
+Effect_GaussianBlur(real32 *Data, int Width, int Height, int BytesPerPixel, void *EffectBitmapAddress, uint16 ShaderProgram)
+{
+ real32 Radius = Data[0];
+ Effect_GL_GaussianBlur(Width, Height, BytesPerPixel, EffectBitmapAddress, ShaderProgram, Radius);
+}
+
+static void
+Effect_Curves_Init(block_effect *Effect, property_channel *Property)
+{
+ for (int i = 0; i < 5; i++) {
+ Property->Identifier = i;
+ Property++;
+ Property->Identifier = i;
+ Property++;
+
+ Property->CurrentValue = 1.0f;
+ Property->Identifier = i;
+ Property++;
+ Property->CurrentValue = 1.0f;
+ Property->Identifier = i;
+ Property++;
+
+ Effect->ExtraData[i] = 2;
+ }
+}
+
+static void
+Effect_Levels(real32 *Data, int Width, int Height, int BytesPerPixel, void *EffectBitmapAddress, uint16 ShaderProgram)
+{
+ real32 Min = Data[0];
+ real32 Mid = Data[1];
+ real32 Max = Data[2];
+
+ v4 ColMin = *(v4 *)&Data[3];
+ v4 ColMid = *(v4 *)&Data[3+4];
+ v4 ColMax = *(v4 *)&Data[3+8];
+ Effect_GL_Levels(Width, Height, BytesPerPixel, EffectBitmapAddress, ShaderProgram, Min, Mid, Max, ColMin, ColMid, ColMax);
+}
+
+static void
+Effect_Curves(real32 *Data, int Width, int Height, int BytesPerPixel, void *EffectBitmapAddress, uint16 ShaderProgram)
+{
+ real32 PointCount = *Data;
+ v4 PointCount_Col = *(v4 *)(Data + 1);
+ v2 *PointData = (v2 *)(Data + 5);
+ Effect_Software_Curves(Width, Height, BytesPerPixel, EffectBitmapAddress, PointData, PointCount, PointCount_Col);
+}