-
Content Count
278 -
Joined
-
Last visited
-
Days Won
30
Everything posted by vfbb
-
Question about installing Skia on RAD Studio Community v10.4
vfbb replied to TimCruise's topic in Delphi IDE and APIs
The installer should have done this, it's working fine for dozens of developers. Something is blocking the build during installation, maybe an antivirus. Maybe you have run as administrator (which is not necessary) and windows defender blocked the build... Anyway, in a few weeks we will have a new version with a new installer and a code certificate that will avoid these blocks. -
Question about installing Skia on RAD Studio Community v10.4
vfbb replied to TimCruise's topic in Delphi IDE and APIs
Ok. In the previous folder also does not have any files? "Skia4Delphi\Library\Delphi10Sydney\Win32\Release\" If you don't have any files either, check your rsvars.bat, "C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\rsvars.bat", if it contains the same content: @SET BDS=C:\Program Files (x86)\Embarcadero\Studio\21.0 @SET BDSINCLUDE=C:\Program Files (x86)\Embarcadero\Studio\21.0\include @SET BDSCOMMONDIR=C:\Users\Public\Documents\Embarcadero\Studio\21.0 @SET FrameworkDir=C:\Windows\Microsoft.NET\Framework\v4.0.30319 @SET FrameworkVersion=v4.5 @SET FrameworkSDKDir= @SET PATH=%FrameworkDir%;%FrameworkSDKDir%;C:\Program Files (x86)\Embarcadero\Studio\21.0\bin;C:\Program Files (x86)\Embarcadero\Studio\21.0\bin64;C:\Program Files (x86)\Embarcadero\Studio\21.0\cmake;C:\Users\Public\Documents\Embarcadero\InterBase\redist\InterBaseXE7\IDE_spoof;%PATH% @SET LANGDIR=EN @SET PLATFORM= @SET PlatformSDK= -
Question about installing Skia on RAD Studio Community v10.4
vfbb replied to TimCruise's topic in Delphi IDE and APIs
What files have in your folder "Skia4Delphi\Library\Delphi10Sydney\Win32\Release\", after installation? -
Question about installing Skia on RAD Studio Community v10.4
vfbb replied to TimCruise's topic in Delphi IDE and APIs
@TimCruise You will have to remove these two registries and reinstall skia4delphi. But to be sure, follow the steps: 1) Uninstall via GetIt (if you haven't already) 2) With your RAD Studio closed, delete these two skia records in "HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\21.0\Disabled Packages" 3) Go to Windows Configurations > Applications > search for Skia4Delphi (if found, uninstall it with your RAD Studio closed). 4) Check if the file "C:\Users\Public\Documents\Embarcadero\Studio\Skia4Delphi\unins000.exe" exists, if so, run it to uninstall. 5) Install the Skia4Delphi running the "Skia4Delphi_2.0.1_Setup.exe", because some uses have reported problems using out GetIt package in Sydney. In setup's platforms screen, select just the platforms that your IDE is already to compile. 6) After installation, try to run our sample "skia4delphi\Samples\Basic\FMX\Skia4Delphi_Basic.dproj" -
Question about installing Skia on RAD Studio Community v10.4
vfbb replied to TimCruise's topic in Delphi IDE and APIs
Yes, my brother and I are the authors. Right. I suspect that some unsuccessful install is hampering new installs, but I need more information: 1) Did you install only using installer (Skia4Delphi_2.0.1_Setup.exe) or did you try another method (GetIt or manual)? 2) Was there an error during an installation? If so, do you still have the Build.Logs.txt that is generated in the folder you installed skia4delphi in? 3) Access RegEdit.exe, and take a screenshot of "HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\21.0\Known Packages" and "HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\21.0\Disabled Packages". -
Question about installing Skia on RAD Studio Community v10.4
vfbb replied to TimCruise's topic in Delphi IDE and APIs
Very strange. If you find any problems during use, open an issue so we can investigate further. -
Question about installing Skia on RAD Studio Community v10.4
vfbb replied to TimCruise's topic in Delphi IDE and APIs
Just reinstall the Skia4Delphi and the new platform will be available at installation. -
Question about installing Skia on RAD Studio Community v10.4
vfbb replied to TimCruise's topic in Delphi IDE and APIs
Now that's a mistake. Probably the folder you are installing requires administrator permission and you have not run the installer as an administrator. The solution in this case is to uninstall and install in the default folder that the installer suggests (does not require admin permission). -
Question about installing Skia on RAD Studio Community v10.4
vfbb replied to TimCruise's topic in Delphi IDE and APIs
@TimCruise There is but you need a macOS to install the SDK in your RAD Studio. It's even possible to run macOS on windows with VMWare, but that's probably illegal. Anyway, with the SDK installed you'll only be able to compile, the simulator doesn't work, you'll have to have an iPhone too. Without the SDK, you won't even be able to compile a blank project for the platform you want. About the Skia4Delphi installer, basically it checks if it is possible to compile for the platform, so if your delphi is really ready to compile for the platform, then yes it will appear available to be selected in its installation. -
Question about installing Skia on RAD Studio Community v10.4
vfbb replied to TimCruise's topic in Delphi IDE and APIs
@TimCruise The installer automatically detects the platforms installed in your RAD Studio. Platforms that are disabled are those that have not yet configured the SDK in your IDE. Install the SDK of the platform you want on your delphi and then reinstall Skia4Delphi. -
Hello. I adapted your test with Skia4Delphi to directly access the pixels instead of painting the pixel. The result was 45 ms on win64. procedure TfrmMain.Button3Click(Sender: TObject); procedure DrawMandelbrotPixmap(APixmap: ISkPixmap; X, Y, au, bu: Double; X2, Y2: Integer); var c1, c2, z1, z2, tmp: Double; i, j, Count, rgb: Integer; hue, saturation, value: Double; begin c2 := bu; for i := 10 to X2 - 1 do begin c1 := au; for j := 0 to Y2 - 1 do begin z1 := 0; z2 := 0; Count := 0; // count is deep of iteration of the mandelbrot set // if |z| >=2 then z is not a member of a mandelset while (((z1 * z1 + z2 * z2 < 4) and (Count <= 50))) do begin tmp := z1; z1 := z1 * z1 - z2 * z2 + c1; z2 := 2 * tmp * z2 + c2; Inc(Count); end; // The color depends on the number of iterations hue := count / 50; saturation := 0.6; value := 0.5; PCardinal(APixmap.PixelAddr[i, j])^ := HSLtoRGB(hue, saturation, value); c1 := c1 + X; end; c2 := c2 + Y; end; end; var au, ao: Double; dX, dY, bo, bu: Double; LWidth: Integer; LHeight: Integer; LTimer: TStopwatch; LBitmap: TBitmap; LSurface: ISkSurface; begin LTimer := TStopwatch.StartNew; LWidth := Image1.Width; LHeight := Image1.Height; LSurface := TSkSurface.MakeRaster(LWidth, LHeight); LBitmap := TBitmap.Create(LWidth, LHeight); try ao := 1; au := -2; bo := 1.5; bu := -1.5; // direct scaling cause of speed dX := (ao - au) / (LWidth); dY := (bo - bu) / (LHeight); DrawMandelbrotPixmap(LSurface.PeekPixels, dX, dY, au, bu, LWidth, LHeight); LBitmap.SkiaDraw( procedure (const ACanvas: ISkCanvas) begin ACanvas.DrawImage(LSurface.MakeImageSnapshot, 0, 0); end); Image1.Picture.Assign(LBitmap); finally LBitmap.Free; end; Showmessage(LTimer.Elapsed.TotalMilliseconds.ToString+' ms'); end; However, your benchmark isn't accurate, you're basically changing pixel by pixel, it's not a good way to measure drawing library performance. Also, tasks that change an image pixel by pixel almost always perform better by creating a shader to run on the GPU. This is another advantage of Skia4Delphi, as it allows you to create shaders at runtime through the Skia Shader Language (based on GLSL). Even now I'm preparing a VCL sample of an animated shader, see the performance: 27.11.2021_01.05.45_REC.mp4 27.11.2021_01.05.45_REC.mp4
-
Currently skia4delphi closed beta supports gif on all platforms. The next release will be available in 2 weeks.
-
Eric, what version of your PAServer? Is it 13.0.12.0? I couldn't confirm it, but someone reported in a whatsapp group that the PAServer patch 1 link on my.embarcadero.com is the link of the old version, 13.0.11.9... So if that's your case, install the patch via getit and use the new PAServer which will be in the RADStudio directory.
-
I never worked with grpc but, AFAIK, you should use a client thats support http/2, and put in body the generated protocol buffer based on .proto file of the api service. You can make a delphi record based on .proto struct and use the Erik Van Bilsen serialization code https://github.com/grijjy/GrijjyFoundation/blob/master/Grijjy.ProtocolBuffers.pas
-
FMX on mobile: Best practice to handle touch scroll of components?
vfbb replied to Hans♫'s topic in FMX
@Hans♫ I couldn't simulate your problem. I set up the same scenario you described in a blank project and the scroll worked perfectly. I also mounted on a TVertScrollBox and it worked perfectly. I'm using RAD Studio 11, but it works the same as in previous versions. Try simulating on a blank project to see where the problem is. I don't know what's going on, but maybe some other control is capturing the gesture... -
FMX on mobile: Best practice to handle touch scroll of components?
vfbb replied to Hans♫'s topic in FMX
This is strange because the scrollbox does not use mousedown, mouseup, it uses gestures, and with hittest or without hit test in the components above, it should work in the same way. -
FMX on mobile: Best practice to handle touch scroll of components?
vfbb replied to Hans♫'s topic in FMX
You can use OnClick normally with this code: uses FMX.Objects, FMX.Math, FMX.Math.Vectors; type TipControl = class(TRectangle) private const DEFAULT_MOVEMENT_TOLERANCE = 4; private FAbsolutePressedPoint: TPointF; FIsMouseDown: Boolean; FIsValidClick: Boolean; FLastMouseActivePoint: TPointF; FMovementTolerance: Single; function IsMovementToleranceStored: Boolean; protected function CheckHasValidClick: Boolean; virtual; procedure Click; override; procedure DoClick; virtual; procedure MouseDown(AButton: TMouseButton; AShift: TShiftState; X, Y: Single); override; procedure MouseMove(AShift: TShiftState; X, Y: Single); override; procedure MouseUp(AButton: TMouseButton; AShift: TShiftState; X, Y: Single); override; public constructor Create(AOwner: TComponent); override; property IsValidClick: Boolean read FIsValidClick; published property MovementTolerance: Single read FMovementTolerance write FMovementTolerance stored IsMovementToleranceStored; end; function TipControl.CheckHasValidClick: Boolean; function CheckIsMouseOver: Boolean; begin Result := FIsMouseOver and TouchTargetExpansion.MarginRect(LocalRect).Contains(FLastMouseActivePoint); end; begin Result := FIsValidClick and FIsMouseDown and CheckIsMouseOver and ((FMovementTolerance = 0) or ((PressedPosition.Distance(FLastMouseActivePoint) <= FMovementTolerance) and (FAbsolutePressedPoint.Distance(LocalToAbsolute(FLastMouseActivePoint)) <= FMovementTolerance))); end; procedure TipControl.Click; begin if Pressed then begin if not CheckHasValidClick then FIsValidClick := False; if IsValidClick then DoClick; end else DoClick; end; constructor TipControl.Create(AOwner: TComponent); begin inherited; FMovementTolerance := DEFAULT_MOVEMENT_TOLERANCE; FLastMouseActivePoint := PointF(-10000,-10000); end; procedure TipControl.DoClick; begin inherited Click; end; function TipControl.IsMovementToleranceStored: Boolean; begin Result := not SameValue(FMovementTolerance, DEFAULT_MOVEMENT_TOLERANCE, TEpsilon.Position); end; procedure TipControl.MouseDown(AButton: TMouseButton; AShift: TShiftState; X, Y: Single); begin FAbsolutePressedPoint := LocalToAbsolute(PointF(X, Y)); FIsValidClick := True; FIsMouseDown := True; FLastMouseActivePoint := PointF(X, Y); inherited; end; procedure TipControl.MouseMove(AShift: TShiftState; X, Y: Single); begin if CheckHasValidClick then begin FLastMouseActivePoint := PointF(X, Y); if not CheckHasValidClick then FIsValidClick := False; end else FLastMouseActivePoint := PointF(X, Y); inherited; end; procedure TipControl.MouseUp(AButton: TMouseButton; AShift: TShiftState; X, Y: Single); var LInvalidPressed: Boolean; begin FLastMouseActivePoint := PointF(X, Y); LInvalidPressed := not CheckHasValidClick; if LInvalidPressed then FIsValidClick := False; FIsMouseDown := False; inherited; end; -
Made sample here: https://github.com/viniciusfbb/skia4delphi/issues/12#issuecomment-933528854 Result:
-
According to the Alexandria docwiki, the new OSXARM64 platform is defined for OSX directive but not defined for MACOS directive, which doesn't make sense since MACOS directive has always been defined for OSX and iOS. Unfortunately I don't have any mac arm to confirm. Can anyone confirm this?
-
Delphi 11 - Is MACOS defined in OSXARM64 platform?
vfbb replied to vfbb's topic in Delphi IDE and APIs
@Kazantsev Alexey Truth! It didn't cross my mind to use compile time messages. I took the test and confirmed the suspicion. MACOS is defined in OSXARM64. Docwiki is wrong. Issue reported. -
@Rollo62 Explained Svg limitations in documentation, and see how to avoid in the considerations.
-
We are very pleased to announce the 2.0 release of the Skia4Delphi project. The library was almost completely rewritten, bringing many new features such as visual components (VCL/FMX), easy installation, easy configuration, miscellaneous error handling, and much more. Now it also has many more features as well as more examples. See main changes: v2.0.0 Added support for Delphi 11 Added support for OSX ARM 64-bit Added Setup (friendly install) Added IDE plugin to enable the skia in your project: replacing manual changes in project settings, deployment and dlls that were needed before. Now it's automatic, just right click on your project inside the IDE then "Enable Skia" Built-in by default the "icudtl.dat" file in dll Added the controls TSkLottieAnimation, TSkPaintBox and TSkSvg Added SkParagraph (multiple styles in text) Added support for Telegram stickers (using TSkLottieAnimation) Added error handling in sensitive methods Added the source of our website: https://skia4delphi.org Library rewritted Improved the integration with apple's MetalKit Improved library usage, like replacing SkStream to TStream Fixed AccessViolation using TStream Fixed issue with transparent bitmap in Vcl sample Fixed minor issues Explained Svg limitations in documentation We are now using the latest inactive milestone release of Skia (M88), because the others are updated frequently. Deprecated non-windows platforms in Delphi 10.3 Rio or older Homepage: skia4delphi.org GitHub: https://github.com/viniciusfbb/skia4delphi A liittle preview Setup Just download the Skia4Delphi_2.0.0_Setup.exe attached in Releases page. Enabling your project Telegram sticker (tgs files): SkParagraph: WebP: kung_fu_panda.webp Format Size Png (100% quality) 512 KB Jpeg (80% quality) 65.1 KB WebP (80% quality) 51.6 KB Controls And much more...
-
TDialogService.MessageDialog('You want to ........ ', TMsgDlgType.mtConfirmation, mbYesNo, TMsgDlgBtn.mbNo, nil, procedure(const aResult: TModalResult) …
-
Edge, Firefox and Chrome open any pdf without addon.
-
Try this: uses System.SysUtils, System.IOUtils, Winapi.Windows, Winapi.ShellAPI; procedure OpenPdf(const AFileName: string); var LURL: string; begin LURL := TPath.GetFullPath(AFileName).Replace('\', '/', [rfReplaceAll]); LURL := 'file://' + LURL; ShellExecute(0, 'open', PChar(LURL), nil, nil, SW_SHOWNORMAL); end;