chapmanworld.com

Craig Chapman, Software Consultant

Instantly expose a table as a REST endpoint – again. Introduction A while back I wrote a component for exposing FireDAC tables as REST endpoints in Delphi. I wasn’t entirely happy with the component that I’d written, however, it was really intended as a proof of concept. I was quite surprised to learn that people were actually making use of that component, rather than simply using it as an example of what could be done. Fast-Forward a couple of years, and I found myself needing precisely that component in another project. I wasn’...

Posted by on in Programming
A vulkan header generator for Delphi. What is darkVulkanGen? A handful of months back, I began working on a game engine for Delphi named darkGlass. see: http://chapmanworld.com/darkglass/ https://github.com/chapmanworld/DarkGlass At that time I’d intended to write the rendering part of the game engine using OpenGL, however, for a variety of reasons I decided to use Vulkan instead. Vulkan is a modern graphics API maintained by the Khronos group (a non-profit organisation which collaborates with many of the major organizations...
A new mutlti-threading library for Delphi. (darkThreading) My regular readers may be aware that over the past two or three months, I’ve been working on building a new video game engine for Delphi. I’ve also had many other demands on my time, which has meant that I’ve not posted in a while. Today however, I got to the point in the game development project that I’m able to release another of it’s sub-components as an open source library for Delphi. I’d like to introduce you to darkThreading. Introduction Many multi-threading or parallel programming libr...

Posted by on in Programming
darkUnicode codec for Delphi Another library to drop out of my Dark Glass development project today is my unicode codec (now named darkUnicode). https://github.com/chapmanworld/darkUnicode This simple class can be used to encode and decode unicode code-points by hand (independent of RTL functions to do the same), and I’ve used it previously to create my own unicode text buffer and stream support.  It can also  be used to determine the unicode format of a text file, by calling the DecodeBOM() method in the appropriate ...
Dynamic Library Loader – My first published GitHub project! A few weeks ago, I began a live-streamed coding project to develop a game engine named DarkGlass using Delphi. When I began the project, I knew that it was possible that several useful libraries might drop out of the development process, and so I have been working to separate the concerns of each piece of the code. Today, my first “useful” code library from that project can be considered at release status. The darkDynLib library. Okay, so my opening paragraph has a couple of slight e...

Posted by on in Programming
Media file meta-data on Windows in Delphi. Here’s a little Déjà vu for regular readers of my blog. One of my customers emailed me with an interesting problem this morning. “I need to be able to peek into a video file, specifically a .mp4 file, and determine if it’s PAL or NTSC.” This seemed like a fun challenge, so I thought I’d write a helper class to solve it.. The Problem. The above excerpt is from a blog that I posted a few days ago (here), in which I was able to determine the media file attributes for an mp4 file on Android. I...
Media file meta-data on Android in Delphi. One of my customers emailed me with an interesting problem this morning. “I need to be able to peek into a video file, specifically a .mp4 file, and determine if it’s PAL or NTSC.” This seemed like a fun challenge, so I thought I’d write a helper class to solve it.. The Problem. Ultimately, what determines if an image or video conforms to PAL or NTSC is a combination of the frame rate and the image resolution. PAL has a frame rate of 25 per second, and a vertical resolut...

Posted by on in Programming
Delphi Xlib headers Back in November for CodeRage-12, I demonstrated a partial translation of the Xlib headers for X11. At that time I explained that I’d not completed the headers, but would notify on my blog when I had. Well, I’ve just done a major update to those headers for the sake of my game engine development project DarkGlass. I would still not quite call these headers complete, because there are about 12 functions that I did not translate, and several of the macros remain un-translated. I would ...

Posted by on in Programming
Delphi PodCast – Delphi Game Engines In case you missed it, here’s the Delphi podcast for Feb 27th 2018 – Delphi Game Engines (skip to about 9:30 to spare yourself the technical difficulties with the stream)...

Posted by on in Programming
Delphi PodCast – Favorite Coding Books As many of you may already be aware, I am now a regular guest on Jim McKeeth’s Delphi podcast along side David Millington. The pod-casts recently became video streamed, and have adopted a more structured “Themed Episode” format. Catch us Live on Tuesdays at noon CST. In case you missed it, here’s the Feb 19th 2018 episode on our Favorite Coding Books:  ...

Check out more tips and tricks in this development video: