- Added TALCookedUrlW
- Added ExtractHeaders and ExtractBodyStream to TALHttpRequestA/TALHttpRequestW and TALHttpResponseA/TALHttpResponseW
- Changed
ALAcquireKeepAliveWinHttpClient/ALReleaseKeepAliveWinHttpClientto useAUrl: AnsiStringinstead ofAURI: TUri - Changed
ALAcquireKeepAliveNetHttpClient/ALReleaseKeepAliveNetHttpClientto useAUrl: Stringinstead ofAURI: TUri - Renamed
TALImageWrapMode.FitAndCroptoTALImageWrapMode.Cover - Renamed
TALJSONNodeA/TALJSONNodeW.GetChildNodeValueXXXtoTALJSONNodeA/TALJSONNodeW.GetChildValueXXX - Renamed
ALFindJsonNodeByChildNodeValueXXXtoALFindJsonNodeByChildValueXXX
- Added the default indexed property
Chars[index: Integer]: AnsiChar read GetChars write SetChars;toTALStringBuilderA. - Added the default indexed property
Chars[index: Integer]: Char read GetChars write SetChars;toTALStringBuilderW. - Added the following overloads:
function ALExtractHeaderParamValue(const AHeaderValue: AnsiString; const AParamName: AnsiString): AnsiString; overload;function ALExtractHeaderParamValue(const AHeaderValue: String; const AParamName: String): String; overload;
- Added
TALMimePartHeadersAandTALMultipartDecoderA. - Added
function ALJsonEncodeDateTimeA(const AValue: TDateTime): AnsiString;. - Updated
LoadFromJSONStreamandLoadFromBsonStreamto always reset the stream position to 0 before loading. - Removed
ALExtractHttpCharsetFromContentType(useALExtractHeaderParamValueinstead). - Added Keychain helpers:
function ALKeychainReadBytes(const AService: String; const AAccount: String; out ABytes: TBytes): Boolean;procedure ALKeychainWriteBytes(const AService: String; const AAccount: String; const ABytes: TBytes);
- Added platform helpers:
function ALGetPlatform: String;function ALGetDeviceID: String;
- Fixed Alcinoe issue #492.
- Added
TALHttpRequestHeadersA.ContentBoundaryandTALHttpRequestHeadersW.ContentBoundary. - Made
TALMultipartDecoderAzero-copy: it no longer duplicates the payload bytes. Each part body is exposed as a stream that directly references the underlying buffer ofAPayloadStream.
- Added TAlSChannelTlsClient (native Windows SChannel TLS 1.2 / 1.3 support)
- Added TALWinSocketClient
- Added service management helpers:
ALInstallServiceALUninstallServiceALStartServiceALStopServiceALStartServiceCtrlDispatcher
to fully manage Windows services
- Archived
Alcinoe.Winsock.pas(functions moved toAlcinoe.Net) - Renamed
Alcinoe.Winapi.HttpApitoAlcinoe.Winapi.Http - Rebuilt TALSMTPClient with native TLS 1.2 / TLS 1.3 support
- Added TALMultipartMixedEncoderA and TALMultipartAlternativeEncoderA
- Renamed and rebuilt TALEMailHeadersA to TALMailHeadersA
- Archived
Alcinoe.Sqlite3.ClientandAlcinoe.Sqlite3.Wrapper - Archived
Alcinoe.POP3.Client - Archived
Alcinoe.MemCached.Client
- Align Alcinoe versioning with the Delphi compiler version (e.g. Alcinoe built
with Delphi 13.0 now uses version
13.0.x). - Added
HttpWorker.Cancelmethod. - Added
ToStringhelpers forTRectF,TSizeF,TPointF,TALRectD,TALSizeD, andTALPointD. - Added unified path helper functions:
ALGetAppDataPathWALGetTempPathWALGetTempFilenameWALGetCachePathW
- Added
ResourceStreamproperty toTALAnimatedImage. - Added
PrependItem,AppendItem, andDeleteItemmethods toTALDynamicListBox. - Removed
AddItemfromTALDynamicListBox(usePrependItemorAppendIteminstead). TALEditcontrols are now automatically frozen (using a screenshot for rendering) when partially visible, improving Z-order simulation.TALMemoandTALEditnow useALResolveLineHeightMultiplier, ensuring the same line-height algorithm asTALText.- Updated
TALNotificationServiceto useTMessage-based notifications:TNotificationReceivedMessageTGetTokenMessageTDeleteTokenMessageTTokenRefreshMessageTNotificationPermissionResultMessageThis replaces event-based callbacks (OnNotificationReceived,OnGetToken, etc.) and better aligns with the singleton design.
- Added an internal
ScrollBoxtoTALBottomSheetto support content larger than the maximum visible area. - Added
IsAncestorOfmethod toTControl.
- Added
TALHttpWorkercomponent to support background upload/download operations - Refactoring of HTTP-related types to explicitly separate ANSI (A)
and Unicode (W) variants:
TALHttpServerRequest→TALHttpServerRequestATALHttpServerResponse→TALHttpServerResponseATALHttpServer→TALHttpServerATALHTTPCookie→TALHTTPCookieAandTALHTTPCookieWTALHTTPRequestHeaders→TALHTTPRequestHeadersAandTALHTTPRequestHeadersWTALHTTPResponseHeaders→TALHTTPResponseHeadersAandTALHTTPResponseHeadersWTALHTTPRequest→TALHTTPRequestAandTALHTTPRequestWTALHTTPResponse→TALHTTPResponseAandTALHTTPResponseWAlRfc822DayOfWeekNames→AlRfc822DayOfWeekNamesAandAlRfc822DayOfWeekNamesWALRfc822MonthOfTheYearNames→ALRfc822MonthOfTheYearNamesAandALRfc822MonthOfTheYearNamesW
TALUserPreferencesnow saves its settings in the file{PackageName}.user_preferences
- Renamed TALImage.ApplyExifOrientation to TALImage.ApplyMetadataOrientation for consistency with TALVideoPlayer.ApplyMetadataOrientation.
- Added the complete ImageMagick wrapper, including all functions and types from MagickCore and MagickWand. This wrapper was generated automagically using the ImageMagickWrapperGenerator project.
- Renamed
RotateAccordingToMetadataOrientation→ApplyMetadataOrientation - Renamed
RotateAccordingToExifOrientation→ApplyExifOrientation - Added
GetSingle,GetDouble, andGetDateTimetoTALUserPreferences TALBrushnow includes:ResourceStreamOwnsResourceStreamApplyExifOrientation
TALImage:- Now supports
HTTPHeaderswhen downloading from a URL - Added
OwnsResourceStream
- Now supports
- Renamed
TalExifOrientationInfo→TalExifOrientation - Renamed
AlGetExifOrientationInfo→AlGetExifOrientation - Added
AApplyExifOrientationparameter to:ALCreateSkSurfaceFromResourceALCreateSkImageFromResourceALCreateJBitmapFromResourceALCreateCGContextRefFromResourceALCreateCGImageRefFromResourceALCreateTBitmapFromResourceALCreateBitmapFromResourceALCreateDrawableFromResource
- Updated
TALDialog,TALLoadingOverlay, andTALSheetto emulate overlays over system bars (via system bar color adjustments) - Added
ALGetSystemBarsColorandALSetSystemBarsColor
- TALMediaPicker: New cross-platform component to select images/videos or capture media from the camera.
- TALVideoPlayer: Added
RotateAccordingToMetadataOrientationproperty to automatically adjust playback orientation. - TALImage: Added
ResourceStreamproperty to load images directly from a stream.
- Archived
Alcinoe.CGI.pasAlcinoe.ExprEval.pasAlcinoe.FTP.Client.WinINet.pasAlcinoe.FTP.Client.pasAlcinoe.GSMComm.pasAlcinoe.HTTP.Client.WinINet.pasAlcinoe.IsapiHTTP.pasAlcinoe.LibPhoneNumber.pasAlcinoe.MySql.Client.pasAlcinoe.MySql.Wrapper.pasAlcinoe.NNTP.Client.pasAlcinoe.PhpRunner.pasAlcinoe.SphinxQL.Client.pasAlcinoe.WebSocket.Client.WinHTTP.pasAlcinoe.WebSocket.Client.pasAlcinoe.ZLibEx.pasAlcinoe.ZLibExGZ.pasZLibEx.incZLibEx.pasZLibExApi.pasZLibExGZ.pasAlcinoe.iOSApi.WebRTC.pasAlcinoe.FMX.WebRTC.pasAlcinoe.AndroidApi.WebRTC.pasAlcinoe.QuickSortList.pas
- Renamed
Alcinoe.Mime.pas→Alcinoe.Mime.ContentTypes.pasAlcinoe.MultiPartParser.pas→Alcinoe.Mime.Multipart.pasAlcinoe.WinApi.Common.pas→Alcinoe.WinApi.Windows.pasALHTTPEncode→ALUrlEncodeandALPercentEncodeALHTTPDecode→ALUrlDecodeandALPercentDecodeOnChange→OnChangedinTALStringsAandTALStringsW
- Added
TALStringBuilderA(same asTStringBuilderbut forAnsiString)IncludeTrailingLineBreakInTextproperty toTALStringsAandTALStringsWTALHttpSysServer(an HTTP server built on top of Windows http.sys)
- Removed
ALExtractExpressionAALExtractHeaderFieldsWithQuoteEscaped(useALExtractHeaderFieldsinstead)StripParamQuotesfromALExtractTagParamsATALNewsArticleHeader
- ALRectFitInto and ALRectPlaceInto
CenterAtis now expressed in normalized coordinates[0..1]. - ALDrawMultiLineText
Now decodes all HTML entities, not only>and<. - Mouse Events
ChildrenMouseDown,ChildrenMouseMove,ChildrenMouseUp,ChildrenMouseEnter, andChildrenMouseLeave
are now part of Alcinoe and no longer require patching the Embarcadero source file.
- Removed
AlInt2BaseNandAlBaseN2Int - Added
TALJSONNodeA.CloneandTALJSONNodeW.Clone - Introduced
ALDefaultEstimateLineHeightMultiplier: When theLineHeightMultiplierof a text is0, the function assigned toALDefaultEstimateLineHeightMultiplier(e.g.ALEstimateLineHeightMultiplier) will be used to determine the multiplier
- Set
TALText.AutoSizeto default toTALAutoSizeMode.Both. - If
TALText.MaxWidth = 0, no explicit maximum width is enforced; the control expands to the largest width that still fits fully inside its parent container. - If
TALText.MaxHeight = 0, no explicit maximum height is enforced; the control expands to the largest height that still fits fully inside its parent container. - Added
ShowLoadingIndicatorandHideLoadingIndicatormethods toTALButtonto morph it into a loading indicator. - Renamed resource
alcinoe_loadertoalcinoe_loading_indicator.
- Added
TALSnackbarcomponent for displaying brief, informative messages to users with optional actions. - Renamed
TALDownloadContexttoTALWorkerContextto better reflect its broader purpose in managing background tasks. - Added Secure option to
TALUserPreferencesto enable encrypted storage of sensitive user data.
- Added
TALLoadingOverlaycomponent — a full-screen overlay designed to block user interaction while displaying a Material-inspired loading indicator.
- Added
TALLeftSheet,TALRightSheet,TALTopSheet, andTALBottomSheet. - Updated
TALDialogto support right-to-left layouts (inherits theBiDiModefrom the main application form). - Improved
TALDialogwith smooth upward animation when the virtual keyboard is displayed. - Renamed
ALBrokenImageResourceNamefrom'broken_image'to'alcinoe_broken_image'.
- Added
TALWebBrowser. - Introduced
FreezeNativeViewandUnFreezeNativeViewmethods toTALNativeControl-based controls such asTALEdit,TALMemo, andTALWebBrowser. These methods capture a screenshot of the underlying native view (FNativeView), hide the actual native control, and draw the captured bitmap in its place. This allows simulating z-order (e.g., displaying a popup dialog above the control) without altering the native view hierarchy. - Refactored
Alcinoe.FMX.EditandAlcinoe.FMX.Memounits.
- Renamed the following
TALInterpolationTypeentries to use theMaterial3prefix for improved clarity and alignment with Material Design 3:MaterialExpressiveFastSpatial→Material3ExpressiveFastSpatialMaterialExpressiveDefaultSpatial→Material3ExpressiveDefaultSpatialMaterialExpressiveSlowSpatial→Material3ExpressiveSlowSpatialMaterialExpressiveFastEffects→Material3ExpressiveFastEffectsMaterialExpressiveDefaultEffects→Material3ExpressiveDefaultEffectsMaterialExpressiveSlowEffects→Material3ExpressiveSlowEffectsMaterialStandardFastSpatial→Material3StandardFastSpatialMaterialStandardDefaultSpatial→Material3StandardDefaultSpatialMaterialStandardSlowSpatial→Material3StandardSlowSpatialMaterialStandardFastEffects→Material3StandardFastEffectsMaterialStandardDefaultEffects→Material3StandardDefaultEffectsMaterialStandardSlowEffects→Material3StandardSlowEffectsMaterialEmphasized→Material3EmphasizedMaterialEmphasizedDecelerate→Material3EmphasizedDecelerateMaterialEmphasizedAccelerate→Material3EmphasizedAccelerate
- Added
TALToggleButtoncontrol. - Added Material 3 Expressive button styles.
- Extended
TALInterpolatedAnimationwithBeziersupport viaTALInterpolationTypeandTALInterpolationParams. - Improved text layout to allow character-level breaking when word boundaries are not available.
- Added
ClickSound: TALClickSoundMode (Default, Always, Never)property to allTALControlcomponents. - Changed
StateLayer.XRadiusandYRadiusto default toNaN, allowing them to inherit radius values from their parent control.
- Replaced
AutoSize: BooleanwithAutoSize: TALAutoSizeModeto provide more granular control over sizing behavior.TALAutoSizeMode = (None, Width, Height, All);
- Removed
ReadyBeforeResourcesLoaded. - Replaced
IsReadyToDisplaywithIsReadyToDisplay(const AStrict: Boolean = False). - Renamed
TALAnimation.Interpolation→TALAnimation.InterpolationType. - Renamed
TALAnimation.AnimationType→TALAnimation.InterpolationMode. - Updated
TALStateTransition.Interpolationto useTALAnimation.InterpolationType. - Updated
TALStateTransition.AnimationTypeto useTALAnimation.InterpolationMode. - Refactored
TALAniIndicator; addedMotionMode = (Frame, Rotate). - Removed
Trimmingproperty fromTALBaseTextSettings.
Fill.ImageNoRadiusis nowTrueby default.- Added
ALVibrateDevice. - Reactivated
OnDblClickevent. - Split the unit
Alcinoe.FMX.DynamicListBox.pasinto several smaller units:Alcinoe.FMX.Dynamic.Common.pasAlcinoe.FMX.Dynamic.Controls.pasAlcinoe.FMX.Dynamic.Layouts.pasAlcinoe.FMX.Dynamic.ListBox.pasAlcinoe.FMX.Dynamic.Objects.pasAlcinoe.FMX.Dynamic.PageController.pasAlcinoe.FMX.Dynamic.StdCtrls.pasAlcinoe.FMX.Dynamic.VideoPlayer.pas
- Added
IsPreciseGeoLocationAccessGrantedtoTALGeoLocationSensor.
- Moved
TALFormatSettingsAandTALFormatSettingsWto theAlcinoe.Localizationunit for better organization of locale-specific utilities. - Added
ALIsAlphaStringandALIsAlphaNumerichelper functions for string validation, and renamedALIsDecimaltoALIsNumericfor improved clarity. - Introduced
TALPluralRules, a new class for handling language-specific pluralization rules based on numeric values, enabling proper selection of plural forms in internationalized applications. This supports use cases such as correctly displaying localized strings for quantities (e.g., "1 item" vs "2 items") based on the user's language. - Added
TALDialog.GetButtons, a method that returns the list of buttons currently attached to the dialog.
- Added the following easing types to TALInterpolationType, matching Material Design 3 motion system:
- MaterialExpressiveFastSpatial
- MaterialExpressiveDefaultSpatial
- MaterialExpressiveSlowSpatial
- MaterialExpressiveFastEffects
- MaterialExpressiveDefaultEffects
- MaterialExpressiveSlowEffects
- MaterialStandardFastSpatial
- MaterialStandardDefaultSpatial
- MaterialStandardSlowSpatial
- MaterialStandardFastEffects
- MaterialStandardDefaultEffects
- MaterialStandardSlowEffects
- MaterialEmphasized
- MaterialEmphasizedDecelerate
- MaterialEmphasizedAccelerate
- Removed Overshoot from TALInterpolatedAnimation.
- Added imageTintColor to TALBrush to allow tinting images with a defined color.
- Added support for image tint in HTML via:
<img src="{ResourceName}" color="#FFFFFF or {ColorKey} or inherit"> - Removed ALConvertFontFamily and replaced it with ALResolveFontFamily.
- Set TextSettings.IsHtml to true by default.
- HasTouchScreen is now disabled in debug mode on devices without a touchscreen.
- Added TALAlignLayout.contents.
- Introduced new TALDialog component.
- Added
ColorKeyto pair with each color property. - Introduced
TALStyleManager. - In dark mode, resource loading now first checks for
xxx_darkbefore loadingxxx. - Renamed
TALIniFiletoTALIniFileA. - Added
TALUserPreferences.
- Rename alcinoe-common.jar to alcinoe-broadcastreceiver.jar
- TALGeoPositionSensor has been replaced by TALGeoLocationSensor.
- TALTabControl has been replaced by TALPageController.
- TALPageIndicator has been added.
- TALBufDrawableCacheEngine now inherits from TALRefCountObject.
- Renamed TALBounds.OnChange to TALBounds.OnChanged.
- Renamed TALPosition.OnChange to TALPosition.OnChanged.
- Added the function ALGetHasTouchScreen.
- Removed TALControl.BeginTextUpdate and TALControl.EndTextUpdate.
- Added Metal support to TALColorAdjustEffect, removed Highlights and Shadows, and changed the Contrast parameter to accept values from -1 to 1 (instead of -2 to 2).
- Added TALRefCountBitmap.
- Removed AutoShowing and Opacity from TALScrollEngine; these properties are now directly managed in TALScrollBox.TScrollBar.
- Added TALScrollEngine.startScroll and introduced TALScrollEngine.TouchMode (with options: Disabled, Enabled, Auto) as well as TALScrollEngine.Friction.
- Added the fill property and published ScrollEngine to TALScrollBox.
- Removed HasTouchScreen, AutoHide, and ShowScrollBars from TALScrollEngine.
- Changed TALScrollBox.TViewportPositionChangeEvent from:
to
procedure (Sender: TObject; const OldViewportPosition, NewViewportPosition: TPointF) of object;procedure (Sender: TObject; const OldViewportPosition, NewViewportPosition: TALPointD) of object;
- Replace RotationCenter with Pivot (RSS-2824).
- The Scale property of controls now only affects their visual size (zoom in/out) and no longer impacts their alignment within the parent layout (RSS-2823).
- Added
FillMaskResourceName,FillMaskBitmap,FillImageNoRadius,FillCropCenter, andFillBlurRadiusproperties toTALMultiLineTextOptions. - Introduced global variables
ALBrokenImageResourceName,ALBrokenImageWidth, andALBrokenImageHeightto define the image shown when downloading an image inTALImagefails. - Added the
TALPositioncomponent, a lightweight version ofTPosition. - Removed
ALGetResourceDirectory. - Introduced the
TALBitmaptype, along with theALNullBitmapconstant and theALIsBitmapNullandALFreeAndNilBitmapfunctions. - Renamed the following functions:
ALCreateBitmapFromSkPixmap,ALCreateBitmapFromSkSurface,ALCreateBitmapFromSkImagetoALCreateTBitmapFromSkPixmap,ALCreateTBitmapFromSkSurface,ALCreateTBitmapFromSkImage.ALUpdateBitmapFromSkPixmap,ALUpdateBitmapFromSkSurface,ALUpdateBitmapFromSkImagetoALUpdateTBitmapFromSkPixmap,ALUpdateTBitmapFromSkSurface,ALUpdateTBitmapFromSkImage.ALCreateBitmapFromCGContextRef,ALUpdateBitmapFromCGContextReftoALCreateTBitmapFromCGContextRef,ALUpdateTBitmapFromCGContextRef.ALCreateTextureFromBitmapSurface,ALCreateTextureFromBitmap,ALUpdateTextureFromBitmapSurface,ALUpdateTextureFromBitmaptoALCreateTextureFromTBitmapSurface,ALCreateTextureFromTBitmap,ALUpdateTextureFromTBitmapSurface,ALUpdateTextureFromTBitmap.
- Corrected typo in
ALGetImageDimensions. - Added
ALGetExifOrientationInfoto retrieve ExifOrientationInfo from a stream as well as from a file name. - Added
AFillResourceStreamparameter toALGetShapeSurfaceRect. - Removed all auto-generated
ALLoadFromxxxfunctions fromalcinoe.FMX.Graphics. UseALCreatexxxFromResourcefunctions instead. - Replaced the
ALDrawRectanglefunction with theTALDrawRectangleHelperrecord. - Removed the
ALDrawCirclefunction; useALDrawRectanglewith radius instead. - Updated
TALImageto support downloading images from the Internet. AddedMaskResourceName,MaskBitmap,BackgroundColor,LoadingColor,BlurRadius,Corners,CropCenter,Shadow,Sides,Stroke,XRadius, andYRadiusproperties. - Added the
TALEllipsecomponent. - Introduced the
AlIsHttpOrHttpsUrlfunction.
-
Default Fill Color Change
The default fill color ofTALBrushhas been updated to white (previously$FFE0E0E0).
This change affects the default fill color of components such asTALRectangleandTALCircle. -
Removal of
TALFont.AutoConvertProperty
TheAutoConvertproperty has been removed fromTALFont.
Its behavior is now always enabled (equivalent toAutoConvert = True).