Jump to content

loki5100

Members
  • Content Count

    9
  • Joined

  • Last visited

Everything posted by loki5100

  1. I’m working on a project using Material 3 Design in Delphi FireMonkey for Athens 12.2. With Skia now integrated in Athens 12.2, we have a similar graphics foundation to Flutter, but we still need a powerful UI component suite to fully unlock Delphi’s design potential. I’ve been using Alcinoe to customize components like Text, Buttons, Switches, TrackBars, etc., into Material 3 Design or even Cupertino style—whatever fits the design. You can easily manage different states like hover, pressed, or disabled directly through the object inspector, which makes it super easy to work with in Athens 12.2. For more info on Alcinoe and Material 3 controls for Delphi, you can check it out here: Material 3 Controls for Delphi – A Modern UI Approach 3. I’ve put together a demo app specifically for Athens 12.2, and I’d really appreciate it if you could test it and give me your feedback. Here’s the link to the demo: https://play.google.com/apps/internaltest/4701314002613599109 To get the app on Google Play, I need around 20 testers. If you’re interested, please send me your Android Gmail address, and I’ll invite you to give it a try. Thanks a lot for your help!
  2. loki5100

    Delphi 11.2 and MacOS SDK 15.5

    Hi I have EXACTLY the same problem 😞 I use also a macOS virtual machine and the connection between Delphi and PAServer is very very slow exactly like you. I even try to reinstall the macos from scratch, nothing change. but on some other macos computer it's work fine. I quite sure the problem is located in PAServer I have just created this jira : https://quality.embarcadero.com/browse/RSP-41260 please add a note to show that it's not only connected to me
  3. loki5100

    Integrate AAR SDK in FMX Android app

    I have just made the AndroidMerger Tool: Integrate AAR SDK in FMX Android app An Android library, also called as Android Archive, includes everything you need to build an app like source files, resource files, manifest etc. This is the reason why AARs are different from JARs. AARs can contain resource files as well other than compiled byte code. Adding such library to Delphi project is long and convoluted process consisting of extracting resources from library, manually adding them to Delphi deployment files, compiling R.Java class, checking dependancies, etc. With AndroidMerger all of the above can now be done automatically in a single command line. In brief AndroidMerger will: Use graddle or internal implementation to list all dependencies. Download libraries and dependancies from local or central maven repository. Merge the resources of all AARs inside a single directory. Merge the AndroidManifest files of all AARs inside AndroidManifest.template.xml. Merge google-services.json in the resources of the project. Create the R.jar with all resource IDs using aapt or aapt2. Update the project file (.dproj) to include all resources. Generate the Delphi native bridge file from the Java libraries. Everything is here (source code included) : https://github.com/MagicFoundation/Alcinoe/tree/master/Tools/AndroidMerger
  4. loki5100

    Weak reference is dangerous

    @vfbb yes FPiette is right, your code is false 😞 you must do Tmonitor.Enter before modifying a variable that is accessed by several threads ! it's not a bug
  5. loki5100

    Weak reference is dangerous

    Ouuch, this is quite serious and this could probably explain my bug: https://stackoverflow.com/questions/64829275/android-memory-corruption I just open a report on quality central: https://quality.embarcadero.com/browse/RSP-31858
  6. loki5100

    iOS handle incoming url

    Right now you can not handle universal link in ios APP, embarcadero need to implement func application(_ application: UIApplication, continue userActivity: NSUserActivity, restorationHandler: @escaping ([Any]?) -> Void) -> Bool
  7. In Objective-c header I have this : - (void)offerForConstraints:(RTCMediaConstraints *)constraints completionHandler:(nullable void (^)(RTCSessionDescription *_Nullable sdp, NSError *_Nullable error))completionHandler; That I translate like this: type TWebRTCPeerConnectionOfferForConstraintsCompletionHandler = procedure(sdp: RTCSessionDescription; error: NSError) of object; procedure offerForConstraints( constraints: RTCMediaConstraints; completionHandler: TWebRTCPeerConnectionOfferForConstraintsCompletionHandler); cdecl; But every time I call offerForConstraints I Have : Any idea what going wrong?
  8. loki5100

    How to draw a YUV texture with delphi?

    As far as I Know, YUV texture is a composition of 2 textures (the Y and the UV). Those 2 textures must be drawn on the canvas using a shader like this one : #version 100 precision mediump float; varying vec2 vUV; uniform sampler2D SamplerY; uniform sampler2D SamplerUV; void main() { mediump vec3 yuv; lowp vec3 rgb; yuv.x = texture2D(SamplerY, vUV).r; yuv.yz = texture2D(SamplerUV, vUV).rg - vec2(0.5, 0.5); // Using BT.709 which is the standard for HDTV rgb = mat3( 1, 1, 1, 0, -.18732, 1.8556, 1.57481, -.46813, 0) * yuv; gl_FragColor = vec4(rgb, 1); } I know how to use a shader with one texture (for example overridden TFilterBaseFilter), however, I don't know how I can use a shader with 2 textures in parameters (finality is to draw my YUV texture on a canvas)
  9. loki5100

    How to draw a YUV texture with delphi?

    Thanks, Dalija, however, I m not sure I can use this to draw my YUV frame to a Canvas 😞 In Delphi, we have this, but I didn't find a way to make it work 😞 procedure TCustomContextOpenGL.DoSetShaderVariable(const Name: string; const Texture: TTexture); var Variable: TContextShaderVariable; begin if Valid then begin if FCurrentProgram <> nil then begin if FCurrentProgram.Variables.TryGetValue(Name, Variable) then begin glActiveTexture(GL_TEXTURE0 + Variable.TextureUnit); if Texture = nil then glBindTexture(GL_TEXTURE_2D, 0) else glBindTexture(GL_TEXTURE_2D, Texture.Handle); glUniform1i(Variable.Index, Variable.TextureUnit); glActiveTexture(GL_TEXTURE0); end; end; if GLHasAnyErrors then RaiseContextExceptionFmt(@SCannotFindShaderVariable, [Name]); end; end;
×