Steema TeeChart Pro VCL FMX 2020.31.201112 Extracted Sources
Steema TeeChart Pro VCL FMX 2020.31.201112 Extracted Sources
TeeChart Pro charting component library offers hundreds of Graph styles in 2D and 3D for data visualization, 56 mathematical, statistical and financial Functions for you to choose from together with an unlimited number of axes and 30 Palette components.
Full source code
100% TeeChart Pro VCL / FMX source code is available as an option. The TeeChart source code supports Embarcadero Windows IDEs (RAD Studio, Delphi and C++ Builder) and now includes native code FireMonkey support enabling you to use common sourcecode to compile your applications for Windows, Mac OS, iOS / iPhone and Android.
Fast speed and small memory size consumption
The Chart graphical code speaks directly to Windows GDI API. Data is stored in dynamic arrays that are very closely mapped to memory which makes access and modifying the arrays almost as fast as the computer processor. The code is streamlined as much as possible to increase internal speed, especially when re-drawing. Other rendering outputs are OpenGL (3D), SVG, DirectX, etc but they aren't as fast as plain old GDI for realtime charting.
Divided into several modules (units) to reduce executable size
A chart using the basic styles ( line, bar, area, pie, point ), has an executable size of only 190Kb. Packages (groups of units), are logically grouped depending on the category of each feature. Developers can create custom packages or .Net assemblies to group modules as per their own needs.
Easy to use at design and run-time
TeeChart includes powerful and complete editor dialogs, for almost every component and sub-component. These editors are available at design-time and also at run-time. The TeeCommander component (a toolbar with charting specific buttons) provides one-click access to TeeChart editors, print preview dialogs and common features.
Complete Object Oriented API
The architecture of TeeChart is fully Object Oriented. Almost everything is an object or belongs to an object class. Properties, methods and events follow a general, consistent style. Technically speaking, TeeChart Pro consists of 161 modules (units) and 90 form screens, totalling 798 object classes. Each class has properties that in many cases are other sub-classes, either from TeeChart API or from Embarcadero's VCL set of classes.
Huge documentation and examples
The help file and documentation include a reference guide, a user guide, demos with detailed "how to" explanations, end-user help and a comprehensive example project (with complete sources) that contains 376 forms. The TeeChart help file follows the look and rules of Embarcadero's help system and is completely integrated at design-time from the development IDE's. Pressing F1 gives context help for almost all screens and source code elements.
Translations into several languages
Available in 37 languages, translated dialogs and constants can be used both at design-time (if you recompile the packages or assemblies), and at run-time by just recompiling your application. Once your application is compiled, end-users can switch the language for TeeChart dialogs and constants at runtime, without needing any external file or dll, just a single call like - TeeSetSpanish();
VCL only:
Internal canvas classes (GDI and GDI+) have been modified extensively. The default graphic canvas for new charts added at design-time is now GDI+ (TGDIPlusCanvas class) instead of GDI (TTeeCanvas3D class).
Switching from one canvas to another can be done at design-time and run-time through the TChart editor dialog (3D -> Render tab), or manually by code:
uses TeeGDIPlus; Chart1.Canvas := TGDIPlusCanvas.Create
uses TeCanvas; Chart1.Canvas := TTeeCanvas3D.Create
An alternative is to use the TeeGDIPlus component:
TeeGDIPlus1.TeePanel := Chart1;
TeeGDIPlus1.Active := True;
Using the TeeGDIPlus component allows persisting settings, like antialiasing and default text quality.
GDI+ offers several features that cannot be done with GDI (or are done better):
Color alpha (transparency)
Any color (pen, font, gradient, brush, etc) is now treated as a proper 32bit color with RGB and Alpha components.
The only limitation is pseudo-colors can't be used (clBtnFace, clWindow, etc).
Setting a color alpha transparency can be done at design-time using the chart editor dialogs.
Using IDE Object Inspector is also possible, but in VCL there is a limitation that TColor is a signed integer, and so values greater than MaxInt (2^31-1) cannot be manually typed (the Object Inspector raises an exception).
Setting colors by code:
Chart1.Legend.Pen.Color := RGBA( 64,64,64, 128) ; // 128 = semi-transparent
Line Antialias
GDI+ has line antialias, which produces much better looking charts, without jagged diagonal and curved lines and polygon boundaries.
There's a speed penalty when using antialias that is not a problem unless you're plotting many many points and/or performing animations.
If not using a TeeGDIPlus component, Antialiasing can be changed at runtime by code like:
TGDIPlusCanvas(Chart1.Canvas).AntiAlias := False
Filled Pens
The base TTeePen class has a new Fill property (of type TTeeBrush) that is only functional when using the GDI+ canvas. Wide borders and lines (of width 2 or more) can now be filled with textures and gradients.
Series1.Pen.Fill.Gradient.Visible := True
Multi-color gradients
The GDI+ canvas allows gradients with more than 3 colors.
The base TTeeGradient class has a new Colors collection property. Each color item in the collection has Offset and Transparency properties:
Chart1.Gradient.Colors.Add( 0.3, clGreen, 50) // 0.3 means 30%, 50% is transparency
Smooth texturing
GDI+ uses brush images to fill polygons, rectangles and rounded rectangles with better speed and output results than GDI.
Transforms
Rotating, translating and scaling elements (like chart titles, legend, series, etc) are enabled using GDI+ transform methods.
Better clipping
When filling polygons with gradients or textures, or when drawing rounded-corner rectangles, clipping should be done manually in GDI (which is not 100% perfect), while in GDI+ this is done automatically and better.
Shadows
In GDI canvas, "smooth" shadows are painted using an intermediary bitmap with a "blur" filter applied. This is a very slow operation, although the output is quite good.
In GDI+, there's another approach to draw smooth shadows that is way much faster with a little loss in quality. Shadows are done using gradients and transparency.
GDI+ speed penalty
There's one thing that is much faster to paint in GDI than GDI+: non-solid pen lines.
Due to this, a big decision has been taken: axis grid lines are now solid instead of dotted:
Chart1.Axes.Left.Grid.Style := psSolid;
Grid lines can easily be changed again to be non-solid, using the axis editor dialog or Object Inspector.
With all the new changes, the GDI+ canvas is now faster than GDI in many occasions, as soon you use any effect like transparency, gradient fills, or shadows.
GDI is still faster than GDI+ when you dont need antialiasing and any fancy effect, for example when plotting FastLine or Surface series with many many points, but the difference between them is now much smaller, and you can always set back to GDI canvas.
FireMonkey Only:
As FireMonkey is already using GDI+ or Direct2D in Windows (and Quartz/OpenGL and the new GPU canvas for Mac OSX and iOS), the above list of GDI+ advantages for VCL are also valid for FireMonkey.
New editor dialog for j@vascript exporting format.
VCL and Firemonkey:
Gradients
TTeeGradient Colors collection property
Gradients can be now configured to use multiple colors in FireMonkey and also in VCL with GDI+ canvas (the limit was three colors maximum with VCL GDI).
Each color item has Color, Offset and Transparency properties.
The Colors property is also used when exporting charts to j@vascript HTML5 and other formats.
Internal canvas classes (GDI and GDI+) have been modified extensively. The default graphic canvas for new charts added at design-time is now GDI+ (TGDIPlusCanvas class) instead of GDI (TTeeCanvas3D class).
Switching from one canvas to another can be done at design-time and run-time through the TChart editor dialog (3D -> Render tab), or manually by code:
uses TeeGDIPlus; Chart1.Canvas := TGDIPlusCanvas.Create
uses TeCanvas; Chart1.Canvas := TTeeCanvas3D.Create
An alternative is to use the TeeGDIPlus component:
TeeGDIPlus1.TeePanel := Chart1;
TeeGDIPlus1.Active := True;
Using the TeeGDIPlus component allows persisting settings, like antialiasing and default text quality.
GDI+ offers several features that cannot be done with GDI (or are done better):
Color alpha (transparency)
Any color (pen, font, gradient, brush, etc) is now treated as a proper 32bit color with RGB and Alpha components.
The only limitation is pseudo-colors can't be used (clBtnFace, clWindow, etc).
Setting a color alpha transparency can be done at design-time using the chart editor dialogs.
Using IDE Object Inspector is also possible, but in VCL there is a limitation that TColor is a signed integer, and so values greater than MaxInt (2^31-1) cannot be manually typed (the Object Inspector raises an exception).
Setting colors by code:
Chart1.Legend.Pen.Color := RGBA( 64,64,64, 128) ; // 128 = semi-transparent
Line Antialias
GDI+ has line antialias, which produces much better looking charts, without jagged diagonal and curved lines and polygon boundaries.
There's a speed penalty when using antialias that is not a problem unless you're plotting many many points and/or performing animations.
If not using a TeeGDIPlus component, Antialiasing can be changed at runtime by code like:
TGDIPlusCanvas(Chart1.Canvas).AntiAlias := False
Filled Pens
The base TTeePen class has a new Fill property (of type TTeeBrush) that is only functional when using the GDI+ canvas. Wide borders and lines (of width 2 or more) can now be filled with textures and gradients.
Series1.Pen.Fill.Gradient.Visible := True
Multi-color gradients
The GDI+ canvas allows gradients with more than 3 colors.
The base TTeeGradient class has a new Colors collection property. Each color item in the collection has Offset and Transparency properties:
Chart1.Gradient.Colors.Add( 0.3, clGreen, 50) // 0.3 means 30%, 50% is transparency
Smooth texturing
GDI+ uses brush images to fill polygons, rectangles and rounded rectangles with better speed and output results than GDI.
Transforms
Rotating, translating and scaling elements (like chart titles, legend, series, etc) are enabled using GDI+ transform methods.
Better clipping
When filling polygons with gradients or textures, or when drawing rounded-corner rectangles, clipping should be done manually in GDI (which is not 100% perfect), while in GDI+ this is done automatically and better.
Shadows
In GDI canvas, "smooth" shadows are painted using an intermediary bitmap with a "blur" filter applied. This is a very slow operation, although the output is quite good.
In GDI+, there's another approach to draw smooth shadows that is way much faster with a little loss in quality. Shadows are done using gradients and transparency.
GDI+ speed penalty
There's one thing that is much faster to paint in GDI than GDI+: non-solid pen lines.
Due to this, a big decision has been taken: axis grid lines are now solid instead of dotted:
Chart1.Axes.Left.Grid.Style := psSolid;
Grid lines can easily be changed again to be non-solid, using the axis editor dialog or Object Inspector.
With all the new changes, the GDI+ canvas is now faster than GDI in many occasions, as soon you use any effect like transparency, gradient fills, or shadows.
GDI is still faster than GDI+ when you dont need antialiasing and any fancy effect, for example when plotting FastLine or Surface series with many many points, but the difference between them is now much smaller, and you can always set back to GDI canvas.
FireMonkey Only:
As FireMonkey is already using GDI+ or Direct2D in Windows (and Quartz/OpenGL and the new GPU canvas for Mac OSX and iOS), the above list of GDI+ advantages for VCL are also valid for FireMonkey.
New editor dialog for j@vascript exporting format.
VCL and Firemonkey:
Gradients
TTeeGradient Colors collection property
Gradients can be now configured to use multiple colors in FireMonkey and also in VCL with GDI+ canvas (the limit was three colors maximum with VCL GDI).
Each color item has Color, Offset and Transparency properties.
The Colors property is also used when exporting charts to j@vascript HTML5 and other formats.