Adam’s September 2019 Meeting Summary


  • Skia graphics library – Dave Capps
  • An intro to Oxygene – Ian Hamilton

Adam’s Summary

Developer Group Meeting Notes September 2019

I arrived at the end of the “News”, so sorry … I missed any useful details, web-links from that part of the meeting. Other users might want to add some comments if there were useful parts to share.

Mark shared the “tip of the day”, in Windows switch on “Clipboard History” and then use [WindowsLogoKey] + V to paste. This gives the option of pasting anything from your recent history of clipboard use.

David introduced Skia ( in an excellent 90 minute session.

Skia is an open source 2D graphics library, available as a 32 and 64 bit DLL, or buildable from the source-tree if you wish.

Skia consists of a set of components: SKCanvas, SKPath, SKImage etc., which have similar-but-different interfaces to Delphi’s TCanvas, TImage etc. The main difference being that the Delphi VCL components compile to Windows, which Skia is specifically designed to be multi-platform.

Skia is used by Chrome and other major browsers, meaning it is core to operation of some of the world’s biggest software programmes. This, hopefully, means it should survive the test of time.

Skia is vector-based so all drawing, stretching, rotating and scaling occurs without pixelization.

David demoed drawing and manipulating simple shapes, images and text with Skia using Visual Studio in C#. He also showed the initial work that Savoy Systems have undertaken to port the Skia library to Delphi.

There is a lot more work to do to complete the Skia port to Delphi. There was active discussion in the group as to whether it might be a project that could interest members, and whether Savoy would make their initial work available for extension and development.

Ian spoke about Oxygene ( & Elements (, the REMObjects ( version of Pascal & Delphi.

REMObjects have been developing a Tool-chain called Elements which allows programmers to write code and compile projects using more than one programming language, and targetting multiple operating systems.

Elements is hosted within other IDEs. Visual Studio is the most obvious one. Using Elements you can write code in C#, Java, Oxygene ( = an extended Pascal), Swift and Go. You can compile onto Cocoa, .NET, Java and REMObjects “new platform” Island. Code compiled to Island can be run on Windows 32 and 64 bit, Android and other environments.

Jon Assenden is now working for REMObjects on Oxygene/Elements.

Key to Oxygene is that it has added a number of extensions to the Pascal we are familiar with in Delphi.

The most obvious language-change is that “function” and “procedure” are deprecated, replaced by “method”, where a method may or may not return a result.

Constructors are nameless, and called using the C# convention “new”.

Methods can start with a “requires” section and end with an “ensure” section in which boolean tests occur and an access violation is called if the test fails.

Records can have properties and methods.

There is an “old” keyword, which returns the value of a variable at the start of a method.

Interfaces can be “soft”, allowing a type which does not implement an interface to return a value by interface provided it contains the requested variable or property.

Jason Chapman lead a session on Delphi 10.3.2, and discussed planned extensions in 10.3.3.

This lead to a lively “what the xxxx is going on at Embarcadero” discussion, which included some eye-watering, scary facts. Users of C++ say that the C++ product is now “almost unusable” as basic features like debugging no longer work.

The generally lamentable state of EMB infrastructure, as shown by the collapse of its servers during the 10.3.1 release was also discussed. There were quite a few comments along the lines of “I think we all hope they get their act together soon”.

There were positive comments, including the fact that the interface is now faster, some features work more reliably and better. But it felt like quite a mixed bag, and certainly did not feel like the type of service a customer should expect for a product with a professional price point.

A decent meeting, and several good sessions suggested for October. I hope to see you all there.