From a7111d3cacd16577a4a8dc34e79b1d8a9191cd6d Mon Sep 17 00:00:00 2001
From: Kieron Morris <kjm@kieronmorris.me>
Date: Sun, 6 Feb 2022 13:26:12 +0000
Subject: [PATCH] Draw texture function added to Video driver.

---
 src/driver/video/video.pas | 17 ++++++++++++++++-
 1 file changed, 16 insertions(+), 1 deletion(-)

diff --git a/src/driver/video/video.pas b/src/driver/video/video.pas
index 1c9b6f46..2ef4c46e 100644
--- a/src/driver/video/video.pas
+++ b/src/driver/video/video.pas
@@ -22,7 +22,7 @@ unit video;
 interface
 
 uses
-    lmemorymanager, tracer, color, videotypes, hashmap, util;
+    lmemorymanager, tracer, color, videotypes, hashmap, util, texture;
 
 procedure init();
 procedure DrawPixel(X : uint32; Y : uint32; Pixel : TRGB32);
@@ -41,6 +41,8 @@ function backBufferWidth : uint32;
 function backBufferHeight : uint32;
 function backBufferBpp : uint8;
 
+Procedure basicFDrawTexture(Buffer : PVideoBuffer; X : uint32; Y : uint32; Texture : PTexture);
+
 implementation
 
 Procedure dummyFDrawPixel(Buffer : PVideoBuffer; X : uint32; Y : uint32; Pixel : TRGB32);
@@ -70,6 +72,19 @@ begin
     end;
 end;
 
+Procedure basicFDrawTexture(Buffer : PVideoBuffer; X : uint32; Y : uint32; Texture : PTexture);
+var
+    i, j : uint32;
+
+begin
+    //Draw texture to Buffer at x and y
+    for i:=0 to Texture^.Height - 1 do begin
+        for j:=0 to Texture^.Width - 1 do begin
+            DrawPixel(X + j, Y + i, Texture^.Pixels[(i * Texture^.Width) + j]);
+        end;
+    end;
+end;
+
 procedure basicFDrawLine(Buffer : PVideoBuffer; x1,y1,x2,y2 : uint32; thickness : uint32; Color : TRGB32);
 var
     X, Y, DX, DY, DX1, DY1, PX, PY, XE, YE, I : sint32;