Contains routines and types used in LCL Platform definitions.

lclplatformdef.pas contains types, constants, variables and routines used in LCL platform definitions.

lclplatformdef.pas is part of the Lazarus Component Library (LCL).

Represents the supported platforms for the LCL. GIMP ToolKit. GTK version 2. GTK version 3. Windows API (née Win32 API). Windows CE. macOS Carbon API. QT version 4. QT version 5. FreePascal GUI. No GUI. macOS Cocoa API. Custom-drawn. Magic User Interface (MUI) for AmigaOS, AROS. Set type used to store TLCLPlatform enumeration value(s). Gets the platform enumeration value for the specified directory name.

DirNameToLCLPlatform is a TLCLPlatform function used to get the platform identifier for the source directory specified in the ADirName argument. It is assumed that ADirName contains only the directory name relative to ($LazarusDir)/lcl/interfaces without path delimiters. In other words, a value like: 'win32', 'qt5', or 'gtk3'.

DirNameToLCLPlatform performs a case-insensitive comparison between ADirName and each of the values in the LCLPlatformDirNames constant. The return value is the enumeration value which identifies the platform and widgetset for the specified directory.

If a matching value in LCLPlatformDirNames is not found, the return value is set to lpGtk2.

DirNameToLCLPlatform is called from the lazbuild utility when a widgetset override has been provided on the command line.

TLCLPlatform enumeration value for the given directory name. Directory name to convert to a TLCLPlatform enumeration value. Gets the descriptive name for the LCL widgetset located in the specified directory name.

DirNameToDisplayName is String function used to get the descriptive name associated with the specified widgetset directory name.

ADirName contains the widgetset directory handled in the routine. It is not a full path - or even a relative path - it simply a directory name like 'qt5' or 'win32'.

DirNameToDisplayName calls DirNameToLCLPlatform to get the TLCLPlatform enumeration value for the widgetset directory. If ADirName is not found, the lpGtk2 platform is assumed. The enumeration value is used an an index into the LCLPlatformDisplayNames constant where the return value is stored.

Use DisplayNameToDirName to convert the descriptive name back to the directory where the widgetset files are found.

Added in LCL 3.0.
Descriptive name for the specified widgetset directory. Widgetset directory name converted in the routine. Gets the directory name where the widgetset files are stored for the specified descriptive name.

DisplayNameToDirName is a String function used to convert the specified descriptive name for a widgetset to the directory where its files are stored.

The return value refers to a directory located in the ($LazarusDir)/lcl/interfaces directory.

ADisplayName contains the descriptive name for the widgetset as returned from DirNameToDisplayName, and should contain a value from the LCLPlatformDisplayNames constant. Case is not significant for the argument value.

DisplayNameToDirName iterates over the values in LCLPlatformDisplayNames to locate the position for the value in ADisplayName. The corresponding value from LCLPatformDirNames is used as the return value. If the specified descriptive name is not found, the value 'gtk2' is used.

Added in LCL 3.0.
Directory name where the files for the specified widgetset are located. Descriptive name for the requested widgetset directory. Gets the value in the BuildLCLWidgetType variable.

Used by the GetDefaultLCLWidgetType routine (in interfacebase.pp) to get the type and name for the target widgetset.

InterfaceBase.GetDefaultLCLWidgetType
TLCLPlatform enumeration value for the platform. Array constant with the directory names for supported LCL platforms.

LCLPlatformDirNames is a array of Strings with directory names for the platforms supported for the LCL. The directory names are relative to the ($LazarusDir)/lcl/interfaces base path and should not include path delimiters. Values in the array are indexed by TLCLPlatform enumeration values.

For example:

// var SDir, SName: String; // SDir contains 'win32' SDir := LCLPlatformDirNames[lpWin32]; // SName contains 'win32/win64' SName := LCLPlatformDisplayNames[lpWin32];

Use LCLPlatformDisplayNames to get the display name for a given TLCLPlatform enumeration value.

Array constant with the display names for supported LCL platforms.

LCLPlatformDisplayNames is a array of Strings with display names for the supported LCL platforms. Values in the array are indexed by TLCLPlatform enumeration values. For example:

// var SDir, SName: String; // SDir contains 'win32' SDir := LCLPlatformDirNames[lpWin32]; // SName contains 'win32/win64' SName := LCLPlatformDisplayNames[lpWin32];

Use LCLPlatformDirNames to get the directory name for a given TLCLPlatform enumeration value.

Gets the TLCLPlatform enumeration value for the current platform.

BuildLCLWidgetType is a TLCLPlatform variable with an enumeration value which identifies the widgetset for the current platform. Its value is determined by the compiler define active when the LCL was built. For example:

MSWindows
Sets the variable to lpWin32.
darwin
Sets the variable to lpCarbon for systems using the PowerPC processor. Otherwise, the variable is set to lpCocoa.
HASAMIGA
Sets the variable to lpMUI.

For other platforms where a specific compiler define was not set, the variable is set to lpGtk2.

The value in BuildLCLWidgetType is used in the lazbuild utility to get the target widgetset used for the various platform defines, and when GetDefaultLCLWidgetType is called from the LCL interface.

For LCL version 2.2 and higher, the default widgetset for the macOS (Darwin) platform uses the Cocoa (lpCocoa) API. For versions prior to 2.2, the default widgetset used was the Carbon (lpCarbon) API. For Macs using the PowerPC processor, the widgetset continues to use the Carbon (lpCarbon) API. GetDefaultLCLWidgetType