// Copyright (c) 2026 Storm Dragon // Authors: Storm Dragon, Angus Kola // SPDX-License-Identifier: GPL-3.0-or-later package preferences /* #include #include "native.h" */ import "C" import ( "unsafe" "git.stormux.org/storm/cthulhu/internal/config" ) func setOCRValues(value config.OCRSettings) { id, content := C.CString("ocrLanguageEntry"), C.CString(value.Language) C.prefs_entry_set(id, content) C.free(unsafe.Pointer(id)) C.free(unsafe.Pointer(content)) setCombo("ocrLayoutCombo", map[int]int{3: 0, 6: 1, 11: 2}[value.Layout]) setSpin("ocrScaleSpinButton", float64(value.Scale)) setCheck("ocrGrayscaleCheckButton", value.Grayscale) setCheck("ocrInvertCheckButton", value.Invert) setCheck("ocrBlackWhiteCheckButton", value.BlackWhite) setSpin("ocrBlackWhiteValueSpinButton", float64(value.Threshold)) setCheck("ocrAutoRefreshCheckButton", value.AutoRefresh) setSpin("ocrRefreshIntervalSpinButton", float64(value.RefreshInterval)) setCheck("ocrConfirmClickCheckButton", value.ConfirmClick) setCheck("ocrCopyToClipboardCheckButton", value.CopyFirstResult) setCheck("ocrAutoReadAllCheckButton", value.AutoReadAll) } func getOCRValues() config.OCRSettings { id := C.CString("ocrLanguageEntry") language := C.GoString(C.prefs_entry_get(id)) C.free(unsafe.Pointer(id)) layout := 3 if index := getCombo("ocrLayoutCombo"); index >= 0 && index < 3 { layout = []int{3, 6, 11}[index] } return config.OCRSettings{ Language: language, Layout: layout, Scale: int(getSpin("ocrScaleSpinButton")), Grayscale: getCheck("ocrGrayscaleCheckButton"), Invert: getCheck("ocrInvertCheckButton"), BlackWhite: getCheck("ocrBlackWhiteCheckButton"), Threshold: int(getSpin("ocrBlackWhiteValueSpinButton")), AutoRefresh: getCheck("ocrAutoRefreshCheckButton"), RefreshInterval: int(getSpin("ocrRefreshIntervalSpinButton")), ConfirmClick: getCheck("ocrConfirmClickCheckButton"), CopyFirstResult: getCheck("ocrCopyToClipboardCheckButton"), AutoReadAll: getCheck("ocrAutoReadAllCheckButton"), } }