unit PlatformUtils; { PlatformUtils.pas - small helpers for desktop/runtime platform checks. } {$IFDEF FPC} {$MODE Delphi} {$ENDIF} interface function HasOpenGLSpectrumSwitch: Boolean; function CurrentScreenDPI: Integer; // Возвращает каталог для хранения конфигурации (с завершающим разделителем). // macOS: ~/Library/Application Support/ewsdr/ // Linux: ~/.config/ewsdr/ // Windows: %APPDATA%\ewsdr\ function GetAppCfgDir: string; implementation uses SysUtils {$IFNDEF HEADLESS}, Forms{$ENDIF}; function HasOpenGLSpectrumSwitch: Boolean; var I: Integer; S: string; begin Result := False; for I := 1 to ParamCount do begin S := LowerCase(ParamStr(I)); if (S = '--opengl') or (S = '-opengl') or (S = '/opengl') then Exit(True); end; end; function CurrentScreenDPI: Integer; begin {$IFNDEF HEADLESS} Result := Screen.PixelsPerInch; if Result <= 0 then Result := 96; {$ELSE} Result := 96; // headless-демон без LCL: экрана нет, дефолт DPI {$ENDIF} end; function GetAppCfgDir: string; begin {$IFDEF WINDOWS} Result := GetEnvironmentVariable('APPDATA'); if Result = '' then Result := GetEnvironmentVariable('LOCALAPPDATA'); if Result = '' then Result := ExtractFilePath(ParamStr(0)); Result := IncludeTrailingPathDelimiter(Result) + 'ewsdr' + PathDelim; {$ELSE} Result := IncludeTrailingPathDelimiter(GetAppConfigDir(False)); {$ENDIF} if not DirectoryExists(Result) then ForceDirectories(Result); end; end.