From 69733d1f2171978e3d15078d24323af39d54c518 Mon Sep 17 00:00:00 2001 From: nathansmith117 Date: Mon, 3 Feb 2025 08:43:19 -0700 Subject: Scripting working so far --- src/sldj.c | 66 +++++++++++++++++++++++++++++++++++++++----------------------- 1 file changed, 42 insertions(+), 24 deletions(-) (limited to 'src/sldj.c') 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; +} + -- cgit v1.2.3