summaryrefslogtreecommitdiff
path: root/WaterfallFile_UI/FileSpectrum.swift
diff options
context:
space:
mode:
Diffstat (limited to 'WaterfallFile_UI/FileSpectrum.swift')
-rw-r--r--WaterfallFile_UI/FileSpectrum.swift64
1 files changed, 64 insertions, 0 deletions
diff --git a/WaterfallFile_UI/FileSpectrum.swift b/WaterfallFile_UI/FileSpectrum.swift
new file mode 100644
index 0000000..6415dfa
--- /dev/null
+++ b/WaterfallFile_UI/FileSpectrum.swift
@@ -0,0 +1,64 @@
+//
+// FileSpectrum.swift
+// PrySDR
+//
+// Created by Jacky Jack on 01/01/2025.
+//
+
+import Accelerate
+import AppKit
+import Combine
+import CoreImage
+
+
+class FileSpectrum: NSObject, ObservableObject {
+
+ let default_width = 512
+ let default_height = 512
+
+ let sessionQueue = DispatchQueue(label: "sessionQueue",
+ attributes: [],
+ autoreleaseFrequency: .workItem)
+
+ @Published var outputImage = emptyCGImage
+
+ let simpleImage = SimpleImage(width: 256, height: 256)
+
+ /// A 1x1 Core Graphics image.
+ static var emptyCGImage: CGImage = {
+ let buffer = vImage.PixelBuffer(
+ pixelValues: [0],
+ size: .init(width: 1, height: 1),
+ pixelFormat: vImage.Planar8.self)
+
+ let fmt = vImage_CGImageFormat(
+ bitsPerComponent: 8,
+ bitsPerPixel: 8 ,
+ colorSpace: CGColorSpaceCreateDeviceGray(),
+ bitmapInfo: CGBitmapInfo(rawValue: CGImageAlphaInfo.none.rawValue),
+ renderingIntent: .defaultIntent)
+
+ return buffer.makeCGImage(cgImageFormat: fmt!)!
+ }()
+
+ func makeSpectrogramImage() -> NSImage {
+
+ return NSImage(cgImage: FileSpectrum.emptyCGImage, size: .zero)
+ }
+
+
+
+ func startRunning() {
+ sessionQueue.async {
+ print("lets start the task for spectrum analysis")
+ for i in 0..<100 {
+ print("Process the task \(i)")
+ self.simpleImage.drawPixel(i, i, PixelData(a: 255, r: 255, g: 0, b: 0))
+ DispatchQueue.main.async {
+ self.outputImage = self.simpleImage.toCGImage()!
+ }
+ sleep(1)
+ }
+ }
+ }
+}