Clarion projects – Report Engine
The Clarion Report engine ( the engine in the RTL) has been evolving since it was first implemented in the original Clarion for Windows back in the W95/98 days. Its uses Windows metafiles to generate Reports. Metafiles are created in memory and are written to disk files. The RTL also uses metafiles for direct drawing as in ARC() or PIE() both REPORTs and WINDOWs. A metafile is a simple way to store drawing operations but there are several limitations:
Windows metafiles do not support all GDI functions, for example, images with semi-transparent parts can’t be stored in Windows metafiles. Reports are actually sequences of bands. Bands consist of controls and they can be nested. Multiple drawing operations can be required to draw controls. For example, multiple lines and multiple strings must be drawn for LIST controls. Reports are actually represented internally with a tree structure, and metafiles with their linear organization are not really an adequate way to represent them. The BLANK statement with parameters makes it necessary for the RTL to insert some additional records right in the middle of the metafile. The RTL must also carefully track images, pens and fonts used in metafiles to provide a correct representation of the report, and to avoid leaking of resources.
At the upcoming DevCon in Orlando I’ll be talking about (the details) of how we plan to solve these types of issues, and at the same time bring brand new capabilities to your reports. And as we always strive to do – maintain 100% backward compatibility.