unit PlatformUtils; { PlatformUtils.pas - small helpers for desktop/runtime platform checks. } {$IFDEF FPC} {$MODE Delphi} {$ENDIF} interface function QtPlatformAllowsOpenGLControls: Boolean; function HasOpenGLSpectrumSwitch: Boolean; function CurrentScreenDPI: Integer; implementation uses SysUtils, Forms; function QtPlatformAllowsOpenGLControls: Boolean; var Qpa, FirstQpa, SessionType: string; Sep: Integer; begin Result := True; Qpa := LowerCase(Trim(GetEnvironmentVariable('QT_QPA_PLATFORM'))); SessionType := LowerCase(Trim(GetEnvironmentVariable('XDG_SESSION_TYPE'))); if Qpa <> '' then begin FirstQpa := Qpa; Sep := Pos(';', FirstQpa); if Sep > 0 then FirstQpa := Copy(FirstQpa, 1, Sep - 1); Result := FirstQpa <> 'wayland'; Exit; end; Result := SessionType <> 'wayland'; end; 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 Result := Screen.PixelsPerInch; if Result <= 0 then Result := 96; end; end.