aboutsummaryrefslogtreecommitdiffstats
path: root/src/sldj.c
diff options
context:
space:
mode:
authornathansmith117 <nathansmith117@sdf.org>2025-02-03 15:43:19 +0000
committernathansmith117 <nathansmith117@sdf.org>2025-02-03 15:43:19 +0000
commit69733d1f2171978e3d15078d24323af39d54c518 (patch)
tree4dacf17246b9a873fb1f505968eecac899e684fe /src/sldj.c
parent305c224104be6558f2ece595a47cf29348b60d66 (diff)
downloadsldj-69733d1f2171978e3d15078d24323af39d54c518.tar.gz
sldj-69733d1f2171978e3d15078d24323af39d54c518.tar.bz2
sldj-69733d1f2171978e3d15078d24323af39d54c518.zip
Scripting working so far
Diffstat (limited to 'src/sldj.c')
-rw-r--r--src/sldj.c66
1 files changed, 42 insertions, 24 deletions
diff --git a/src/sldj.c b/src/sldj.c
index a2b0c47..ca566b7 100644
--- a/src/sldj.c
+++ b/src/sldj.c
@@ -2,21 +2,25 @@
void initSldj(Sldj* sldj)
{
+ // Create window.
InitWindow(WINDOW_WIDTH, WINDOW_HEIGHT, "Scanline DJ");
SetWindowState(FLAG_WINDOW_RESIZABLE);
- SetTargetFPS(FRAME_RATE);
+ SetTargetFPS(DEFAULT_FRAME_RATE);
- sldj->screenTexture = LoadRenderTexture(SCREEN_WIDTH, SCREEN_HEIGHT);
+ sldj->viewport = LoadRenderTexture(DEFAULT_SCREEN_WIDTH, DEFAULT_SCREEN_HEIGHT);
sldj->frameCounter = 0;
-}
+ sldj->xCount = UINT16_MAX / DEFAULT_SCREEN_WIDTH;
+ sldj->yCount = UINT16_MAX / DEFAULT_SCREEN_HEIGHT;
-uint16_t noise = 0;
+ // Scripting.
+ initScripting(&sldj->scripting);
-Color scanPoint(uint16_t x, uint16_t y, int frame)
-{
- noise ^= frame;
- noise ^= x ^ y;
- return (Color){.r = (y >> (6 - noise)) ^ (frame << 4), .g = noise >> x, .b = 0, .a = 255};
+ compileScript(&sldj->scripting, "/home/nathan/Documents/dev/sldj/test/scanTest1.c");
+
+ if (sldj->scripting.lineScanner != NULL)
+ {
+ printf("%d", sldj->scripting.lineScanner(0, 0, 0).b);
+ }
}
void updateSldj(Sldj* sldj)
@@ -24,31 +28,36 @@ void updateSldj(Sldj* sldj)
BeginDrawing();
// Scan image.
- BeginTextureMode(sldj->screenTexture);
-
- uint16_t xScaled = 0;
- uint16_t yScaled = 0;
+ BeginTextureMode(sldj->viewport);
- for (uint16_t y = 0; y < SCREEN_HEIGHT; ++y)
+ if (sldj->scripting.lineScanner != NULL)
{
- xScaled = 0;
+ uint16_t xScan = 0;
+ uint16_t yScan = 0;
- for (uint16_t x = 0; x < SCREEN_WIDTH; ++x)
+ for (int y = 0; y < sldj->viewport.texture.height; ++y)
{
- DrawPixel(x, y, scanPoint(xScaled, yScaled, sldj->frameCounter));
- xScaled += 65536 / SCREEN_WIDTH;
- }
+ xScan = 0;
+
+ for (int x = 0; x < sldj->viewport.texture.width; ++x)
+ {
+ DrawPixel(x, y, sldj->scripting.lineScanner(xScan, yScan, sldj->frameCounter));
+ ++xScan;
+ }
- yScaled += 65536 / SCREEN_HEIGHT;
+ ++yScan;
+ }
}
EndTextureMode();
// Draw scanned image.
+ Texture viewport = sldj->viewport.texture;
+
DrawTexturePro(
- sldj->screenTexture.texture,
- (Rectangle){0.0, 0.0, SCREEN_WIDTH, SCREEN_HEIGHT},
- (Rectangle){0.0, 0.0, SCREEN_WIDTH, SCREEN_HEIGHT},
+ viewport,
+ (Rectangle){0.0, 0.0, viewport.width, viewport.height},
+ (Rectangle){0.0, 0.0, viewport.width, viewport.height},
(Vector2){0.0, 0.0},
0.0,
WHITE
@@ -61,8 +70,17 @@ void updateSldj(Sldj* sldj)
void closeSldj(Sldj* sldj)
{
- UnloadRenderTexture(sldj->screenTexture);
+ UnloadRenderTexture(sldj->viewport);
+ closeScripting(&sldj->scripting);
CloseWindow();
}
+void resetViewport(Sldj* sldj, int width, int height)
+{
+ UnloadRenderTexture(sldj->viewport);
+ sldj->viewport = LoadRenderTexture(width, height);
+ sldj->xCount = UINT16_MAX / width;
+ sldj->yCount = UINT16_MAX / height;
+}
+