Skip to content

Commit

Permalink
Format Capture.pb
Browse files Browse the repository at this point in the history
  • Loading branch information
Dadido3 committed Feb 5, 2024
1 parent 15e2b88 commit d9d8c9c
Showing 1 changed file with 31 additions and 31 deletions.
62 changes: 31 additions & 31 deletions bin/capture-b/Capture.pb
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
; Copyright (c) 2019-2023 David Vogel
; Copyright (c) 2019-2024 David Vogel
;
; This software is released under the MIT License.
; https://opensource.org/licenses/MIT
Expand All @@ -16,14 +16,14 @@ Structure QueueElement
EndStructure

Structure GLViewportDims
x.i
y.i
width.i
height.i
x.i
y.i
width.i
height.i
EndStructure

Structure WorkerInfo
workerNumber.i
workerNumber.i
EndStructure

; Returns the size of the main OpenGL rendering output.
Expand All @@ -42,10 +42,10 @@ ProcedureDLL GetRect(*rect.RECT)
If Not *rect
ProcedureReturn #False
EndIf

Protected dims.GLViewportDims
glGetIntegerv_(#GL_VIEWPORT, dims)

*rect\left = dims\x
*rect\top = dims\y
*rect\right = dims\x + dims\width
Expand All @@ -61,10 +61,10 @@ ProcedureDLL AttachProcess(Instance)

CreateDirectory("mods/noita-mapcap/output/")

Static Workers = 8
Dim WorkerInfos.WorkerInfo(Workers-1)
Static Workers = 8
Dim WorkerInfos.WorkerInfo(Workers-1)
For i = 0 To Workers-1
WorkerInfos(i)\workerNumber = i
WorkerInfos(i)\workerNumber = i
CreateThread(@Worker(), @WorkerInfos(i))
Next
EndProcedure
Expand All @@ -89,11 +89,11 @@ Procedure Worker(*workerInfo.WorkerInfo)
ResizeImage(img, sx, sy)
EndIf

; Save image temporary, and only move it once it's fully exported.
; This prevents images getting corrupted when the main process crashes.
; Save image temporary, and only move it once it's fully exported.
; This prevents images getting corrupted when the main process crashes.
If SaveImage(img, "mods/noita-mapcap/output/worker_" + *workerInfo\workerNumber + ".tmp", #PB_ImagePlugin_PNG)
RenameFile("mods/noita-mapcap/output/worker_" + *workerInfo\workerNumber + ".tmp", "mods/noita-mapcap/output/" + x + "," + y + ".png")
; We can't really do anything when either SaveImage or RenameFile fails, so just silently fail.
RenameFile("mods/noita-mapcap/output/worker_" + *workerInfo\workerNumber + ".tmp", "mods/noita-mapcap/output/" + x + "," + y + ".png")
; We can't really do anything when either SaveImage or RenameFile fails, so just silently fail.
EndIf

FreeImage(img)
Expand All @@ -117,38 +117,38 @@ ProcedureDLL Capture(*capRect.RECT, x.l, y.l, sx.l, sy.l)
If *capRect\bottom < *capRect\top : *capRect\bottom = *capRect\top : EndIf
If *capRect\right > viewportRect\right : *capRect\right = viewportRect\right : EndIf
If *capRect\bottom > viewportRect\bottom : *capRect\bottom = viewportRect\bottom : EndIf

Protected capWidth = *capRect\right - *capRect\left
Protected capHeight = *capRect\bottom - *capRect\top

imageID = CreateImage(#PB_Any, capWidth, capHeight)
If Not imageID
ProcedureReturn #False
EndIf

;Protected *pixelBuf = AllocateMemory(3 * width * height)

hDC = StartDrawing(ImageOutput(imageID))
If Not hDC
FreeImage(imageID)
ProcedureReturn #False
EndIf

*pixelBuffer = DrawingBuffer()
glReadPixels_(*capRect\left, *capRect\top, capWidth, capHeight, #GL_BGR_EXT, #GL_UNSIGNED_BYTE, *pixelBuffer)
glReadPixels_(*capRect\left, *capRect\top, capWidth, capHeight, #GL_BGR_EXT, #GL_UNSIGNED_BYTE, *pixelBuffer)

;For y = 0 To *capRect\height - 1
; *Line.Pixel = Buffer + Pitch * y
;
; For x = 0 To *capRect\width - 1
; For y = 0 To *capRect\height - 1
; *Line.Pixel = Buffer + Pitch * y
;
; For x = 0 To *capRect\width - 1
;
; *Line\Pixel = ColorTable(pos2) ; Write the pixel directly to the memory !
; *Line+Offset
;
; *Line\Pixel = ColorTable(pos2) ; Write the pixel directly to the memory !
; *Line+Offset
;
; ; You can try with regular plot to see the speed difference
; ; Plot(x, y, ColorTable(pos2))
; Next
; Next
; ; You can try with regular plot to see the speed difference
; ; Plot(x, y, ColorTable(pos2))
; Next
; Next

StopDrawing()

Expand Down

0 comments on commit d9d8c9c

Please sign in to comment.