Visit Gigasoft's Web Site
ProEssentials v8 Help

New V8 Charting Features for .NET, ActiveX, MFC, VCL

I. Speed Improvements:

Version 8 adds Direct2D and Direct3D rendering options: RenderEngine additional enums.

  • Direct2D RenderEngine setting renders significantly faster than GdiPlus and allows gradients, antialiasing, and higher levels of chart complexity at more comfortable speeds for larger data sets; and most importantly, mixes with Direct3D for compositing purposes. This feature required us to rewrite all rendering logic to mimic GdiPlus in every detail for the entire feature set. Porting current ProEssentials projects to version 8 and using the new Direct2D setting will be nearly unnoticeable in look. All charting objects, Pego, Pesgo, Pepso, Pepco, and Pe3do support this rendering option.

  • Direct3D RenderEngine setting uses DirectX for the Pe3do to plot much faster, allowing much larger data sets, and better shaded and shaded contour visuals. This feature allows the Pe3do to better zoom, rotate, shift, and offer lighting control. This feature also establishes an internal framework to expand upon as v8 has started to support the Direct3D setting for Pesgo and Pego Line PlottingMethod. See examples 115, 123, 138, and 019 in the demo/example projects to learn about 2D Direct3D real-time and large data handling). 2D rendering support of the Direct3D setting will continue to expand and Point, Area, Bar plotting methods plus other 2D features will soon show. The WebForm interfaces also support DirectX allowing websites to dynamically produce DirectX based content. The DirectX features required rewriting all Pe3do rendering logic. The legacy rendering is still available and helps with smaller data sets and producing SVG WMF vector based output for razor sharp print or when vector rendering is preferred.

II. Interface Improvements:

  • WPF interfaces have been added to our existing WinForm, WebForm, DLL, OCX, and VCL interfaces. No longer will customers need to host our WinForms in their WPF applications. Native WPF interfaces will resolve air space issues and provide fast quality results for your WPF projects. Rendering for Pego, Pesgo, Pepso, and Pepco controls is rasterized for maximum speed and takes full advantage of Direct2D speed and quality. Pe3do control rendering is interfaced at WPF's lowest native internal DirectX level. This new assembly is named Gigasoft.ProEssentialsWpf.DLL

  • The WPF, WinForm, WebForm, ActiveX/OCX, and VCL interfaces all required extra work to support Direct2D and DirectX rendering technologies.

  • The WebForm interfaces were polished and improved to work with VS2013 and its BrowserLink technology. ActiveX rendering within latest IE is much improved (thank you Microsoft). High-end IE browser based applications should be taken advantage of, and is the only real option for true client side power inside your website with no performance or feature compromise.

III. Functional Improvements:

What's New...

 

All Object.PeConfigure.RenderEngine

Additional enums Direct2D and Direct3D.

 

Touch / Gestures features have been added. Most notedly for the Pego, Pesgo, and Pe3do controls. WinForm, Wpf, Delphi, and DLL all support gestures a bit different though we worked hard to make the touch feature transparent of interface used.

  • Pego/Pesgo: two finger drag scrolls left and right; pinch to zoom/unzoom.

  • Pe3do: two finger drag translates the viewport, pinch to zoom/unzoom, rotate two fingers a quarter turn to turn on light movement where continuted one or two finger drag moves the light position.

WinForm, DLL and standard window gestures are separate action, first zoom, then translate, etc. WPF gestures allow seemless transition from zoom to translate to zoom though sadly WPF gesture update speed is a bit rough thanks to MS's WPF event/touch design.

Note WPF requires setting IsManipulationEnabled to True, and Delphi also has Delphi specific Touch feature flags to enable.

Note MouseDraggingX and optionally MouseDraggingY must be true for WinForm, WPF, Delphi scroll gestures. Along with ScrollingHorzZoom and ScrollingVertZoom.

Version 8 adds dragging and sizing the zoom-box within the ZoomWindow. The zoom-box is the highlighted section within the ZoomWindow that is currently charted in the main view. The developer may read the ZoomBoxDragging property to learn if mouse move events are currently related to dragging the zoom-box.

Pego / Pesgo.PeUserInterface.Scrollbar.MouseWheelFunction
Pego and Pesgo expand MouseWheelFunction to zoom horizontal, or zoom horizontal+vertical. Vertical zooming is only supported if a single axis area is rendered. When MultiAxesSubsets is defined, MouseWheel vertical zooming will be limited to if overlapping all axes or dragging a zoom box or data zooming by selecting subsets to chart which results in a single charting area.

Pego / Pesgo / Pe3do.PeUserInterface.Scrollbar.MouseWheelZoomSmoothness
Default value is zero/disabled. Set to between 2 to 40 to force additional n image updates and animate the transition in zoom via mouse wheel. We recommend a value 6 for good mix of performance and smoothness. Direct3D RenderEngine can easily support 20 or more.

Pego / Pesgo / Pe3do.PeUserInterface.Scrollbar.PinchZoomSmoothness
Default value is zero/disabled. Set to between 2 to 20 to force additional n image updates and animate the transition in zoom via pinch gesture. We recommend a value of 2 or 3. There are inheriently more default pinch events/updates as compared to mouse wheel events so a smaller value is best.

Pe3do.PeUserInterface.Scrollbar.ScrollSmoothness
Default value zero/disabled. Set to 2 to 20 to force additional n image updates per 3D rotation. We recommend a value of 4 to 8 to smooth 3D rotation effects.

Pego / Pesgo.PeUserInterface.Scrollbar.MouseWheelZoomFactor
Controls a logical zoom/unzoom amount per notch on the mouse wheel. Allows controlling the rate at which the data is zoomed via the mouse wheel.
Pego default 1.25. Pesgo default 1.40. Likely range is 2.0 to 1.01. Note value is always larger than 1.01

Pego / Pesgo.PeUserInterface.Scrollbar.PinchZoomFactor
Controls a logical zoom/unzoom amount per pinch/zoom gesture messsage/event . Allows controlling the rate at which the data is zoomed via the pinch gesture.
Default 1.07. Likely range is 2.0 to 1.01. Note vaue is always larger than 1.01

Pe3do.PeUserInterface.Scrollbar.MouseWheelZoomFactor3D
Controls a logical zoom/unzoom adjustment per notch on the mouse wheel. Allows controlling the rate at which the data is zoomed via the mouse wheel.
Default 1.0 and likely range is 3.0 to .03.

Pe3do.PeUserInterface.Scrollbar.PinchZoomFactor3D
Controls a logical zoom/unzoom adjustment per pinch/zoom gesture messsage/event . Allows controlling the rate at which the data is zoomed via the pinch gesture.
Default 1.0 and likely range is 3.0 to .03.

Pego / Pesgo.PeConfigure.Composite2D3D
When RenderingEngine = Direct3D, this property is used to control how Direct2D and Direct3D are combined. The default setting is to form two layers, a background and foreground layer. This property enables forcing all Direct2D content into either the background or foreground and thus reducing overhead in preparing and drawing two layers instead of one.


Pego / Pesgo.PeData.DynamicBuffers
Set to true when RenderEngine = Direct3D and a real-time implementation will need to incrementally change data. Used in conjunction with properties RealTimeStartingIndex, RealTimeQuantity. These features are added to implement a chart with a very large amount of data, that needs to be updated incrementally but rapidly. Historically, for large data sets, the chart would become slower as more data was rendered causing the system to become less responsive over time. These new features avoid this concern. The one draw back to this feature is DynnamicBuffers cause an extra delay upon initial initialization of the Direct3D buffers.

Pego / Pesgo.PeData.ReatTimeStartingIndex
Used when RenderEngine = Direct3D and DynamicBuffers set to True. Within the chart update event/timer logic, the developer will set this property to coincide with the new data indices updated. See example 138 in the demo/example project. This is a fairly specific use so your implementations will need to mimic example 138 closely.

Pego / Pesgo.PeData.RealTimeQuantity

Used when RenderEngine = Direct3D and DynamicBuffers set to True. Within the chart update event/timer logic, the developer will set this property to coincide with the amount of new data indices updated. See example 138 in the demo/example project. This is a fairly specific use so your implementations will need to mimic example 138 closely. All subsets will be redrawn for the point range defined by RealTimeStartingIndex and RealTimeQuantity.

All Objects PeConfigure.Decimal
Set to override the operating system's current decimal separator symbol. Set to any decimal / ascii character as needed.

All Objects.PeConfigure.Thousands
Set to override the operating system's current thousands separator symbol. Set to any decimal / ascii character as needed.

Pe3do.PeGrid.Configure.ManualScaleCullMinY
If using ManualScaleControlY and ManualMinY, this property controls if data is hidden when below the ManualMinY value. Behavior is dependent on PlottingMethod and Polymode. Surface (SurfaceNullDataGaps must be True), Scatter, Bar polymodes apply.

Pe3do.PeGrid.Configure.ManualScaleCullMaxY
If using ManualScaleControlY and ManualMaxY, this property controls if data is hidden when above the ManualMaxY value. Behavior is dependent on PlottingMethod and Polymode. Surface (SurfaceNullDataGaps must be True), Scatter polymode apply.

Pe3do.PeGrid.Configure.ManualScaleCullX
If using ManualScaleControlX, this property controls if data is hidden when above ManualMaxX and below ManualMinX. Behavior is dependent on PlottingMethod and Polymode. Surface (SurfaceNullDataGaps must be True), Scatter polymodes apply.

Pe3do.PeGrid.Configure.ManualScaleCullZ
If using ManualScaleControlZ, this property controls if data is hidden when above ManualMaxZ and below ManualMinZ. Behavior is dependent on PlottingMethod and Polymode. Surface (SurfaceNullDataGaps must be True), Scatter polymodes apply.

Pe3do.PeGrid.Configure.ManualScalePlateauMinY
If using ManualScaleControlY and ManualMinY, this property controls if data is drawn truncated to ManualMinY value. Behavior is dependent on PlottingMethod and Polymode. Surface (SurfaceNullDataGaps must be True), Scatter polymode Line plotting methods apply.

Pe3do.PeGrid.Configure.ManualScalePlateauMaxY
If using ManualScaleControlY and ManualMaxY, this property controls if data is drawn truncated to ManualMaxY value. Behavior is dependent on PlottingMethod and Polymode. Surface (SurfaceNullDataGaps must be True), Scatter polymode Line, Waterfall plotting methods, and Bar polymode apply.

All Object.IsDxAvailable
Read Only to determine if operating system currently supports Direct2D and DirectX11. Reading within your initialization code can help optimize chart features and configuration for legacy look and speed.
#define PEP_bISDXAVAILABLE 1957

Pe3do.PePlot.Option.DxFitControlShape
For Direct3D RenderEngine setting. Default True means the chart's 3D scene fills the control's shape. Setting False will result in maintaining a square cube scene, or as defined by GridAspectX, GridAspectY, GridAspectZ.
#define PEP_b3DXFITCONTROLSHAPE 1928

Pe3do.PePlot.Option.DxFarFOV

For Direct3D RenderEngine setting, this property sets a viewing frustum far plane distance. Probably never needs adjusting.

#define PEP_f3DXFARFOV 1956

 

Pe3do.PePlot.Option.DxNearFOV

For Direct3D RenderEngine setting, this property sets the viewing frustum near plane distance. Setting to 1.0 can create a data slicing effect when zooming inward.

#define PEP_f3DXNEARFOV 1955

 

Pe3do.PePlot.Option.DxViewportX

For Direct3D RenderEngine setting, this property sets a translational X distance, shifting the image left or right within the visible viewport. With DegreePrompting set to True, the chart will display the DxViewportX amount while using the mouse to shift image. This can help determine a programmatic value for desired scene.

#define PEP_f3DXVIEWPORTX1929


Pe3do.PePlot.Option.DxViewportY

For Direct3D RenderEngine setting, this property sets a translational Y distance, shifting the image up or down within the visible viewport. With DegreePrompting set to True, the chart will display the DxViewportY amount while using the mouse to shift image. This can help determine a programmatic value for desired scene.

#define PEP_f3DXVIEWPORTY1930

 

Pe3do.PePlot.Option.DxZoom

For Direct3D RenderEngine setting, this property sets a viewing distance factor for the 3D image. With DegreePrompting set to True, the chart will display the DxZoom amount while using the mouse to zoom. This can help determine a programmatic value for desired scene.

#define PEP_f3DXZOOM 1926

 

Pe3do.PeGrid.Option.AxisFormatZ

For adding text before and after grid numbers. It also controls placing commas on thousand marks and forcing decimal positions. The format string consists of {PRE-TEXT}|{.}{,}{0000}|{POST-TEXT} Where all items are optional except pipe symbols, and one or more zeros can be provided in middle section.

#define PEP_szAXISFORMATZ4066

 

Similar to above AxisFormatZ, AxisFormatX and AxisFormatY have also been added to the Pe3do control.

 

.Net Pe3do DirectX Light0 Set and Get functions.

Pe3do.PeFunction.SetLight(int nLight, float X, float Y, float Z)
ProEssentials.Structs.Point3D Pe3do.PeFunction.GetLight(int nLight)

 

OCX Pe3do DirectX Light0 Set and Get functions.

DxSetLight(nLight As Integer, X As Single, Y As Single, Z As Single)
DxGetLight(nLight As Integer, pX As Single, pY As Single, pZ As Single)
DxGetLightEx(int nLight, [out] VARIANT * pfX, [out] VARIANT * pfY, [out] VARIANT * pfZ )

DLL, and VCL interfaces use PEvset and PEvget with struct POINT3D and below property to set and retrieve the light location.

#define PEP_struct3DXLIGHT0 1954

typedef struct { float X; float Y; float Z; } POINT3D;

 

Pesgo.PeFunction.Force3dxNewColors

Setting this property True sets a flag used within the DirectX render loop that causes subset color information (shader buffers) to be rebuilt to reflect changes in SubsetColors data. Only used if RenderEngine is set to Direct3D. Upon the next render loop this property will be reset to FALSE.

 

PeFunction.Force3dxVerticeRebuild

Setting this property True sets a flag used within the DirectX render loop that causes vertices to be rebuilt to reflect changes in X, Y, and Z Data. Only used if RenderEngine is set to Direct3D. The feature is most likely used for real-time implementations when the scales do not need updating. If scale need updating, use PEreconstruct3dpolygons instead of this setting.

#define PEP_bFORCE3DXVERTICEREBUILD 1960

 

Pe3do.PeAnnotation.NoRangeCheck

Set to true to allow annotations to be placed outside axis extents. Default False is to hide annotations not positioned within axis extents. Useful to place a symbol or text on edge of axis or slightly outside axis.

#define PEP_bGRAPHANNOTATIONNORANGECHECK 4069

 

Al lObject.PeFunction.Image.MaxPrintDimension

Gets or Sets the maximum print pixel size when printing via prepared bitmap (PrintDpi is non zero)

#define PEP_nMAXPRINTDIMENSION 1950

All Object.PeFunction.Image.MaxPrintDimension3dx

Gets or Sets the maximum print pixel size when printing Direct3D based charts via prepared bitmap (PrintDpi must be non zero).

#define PEP_nMAXPRINTDIMENSION3DX 1949

 

Pego / Pesgo.PePlot.Option.SplineType

Gets or Sets the spline type when RenderEngine is GdiPlus or Direct2D. Default 0 is Cardinal based off DrawCurve api call. Set to B-Spline to use internal math to produce data and PolyLine api call.. Applies when PlottingMethod is set to Spline.

#define PEP_nSPLINETYPE 3467

 

All Object.PeSpecial.ActivelyScrolling

Used internally when we need to know if image is in the process of being scrolled. Rare but may be useful in your implementations.

#define PEP_bACTIVELYSCROLLING 1958

 

#define PEP_hDIBMEMBITMAP 1948

This property identifies a display-compatible memory- dib bitmap that is used to prepare the objects image in memory for the WPF interfaces. Non WPF interfaces use PEP_hMEMBITMAP

 

Related to above PEP_hDIBMEMBITMAP and PEP_hMEMDC.

#define PEP_hRGBMEMSECTION 1947

If PEP_hDIBMEMBITMAP is non zero, then PEP_hRGBMEMSECTION (1947) is used as first argument to System.Windows.Interop.Imaging.CreateBitmapSourceFromMemorySection to create an InteropBitmap/ImageSource for our rendering the chart in WPF.

Those wanting to be fancy might enjoy but likely will never be needed.

 

Pego / Pesgo.PePlot.Allow.StackedPercentMenus

This property controls whether the chart will support the stacked percent plotting methods. These plotting methods include: Area Stacked Percent and Bar Stacked Percent.

#define PEP_bDISABLESTACKEDPERCENTMENUS 3466

 

Pego / Pesgo / Pe3do / Pepso.PePlot.Option.PointGradientStyle

This property controls gradient style for all subsets plotted in point PlottingMethod. This property provides an alternate method of applying gradients as compared to SubsetGradientStyle.

#define PEP_nPOINTGRADIENTSTYLE 1938


Pego / Pesgo / Pe3do / Pepso.PointBorderColor

Controls the border line around solid points when PePlot.Method is set to include points. Default is argb 0 for no border, set to Color.Empty for border color to match solid fill brush, else set to any color as needed.

#define PEP_dwPOINTBORDERCOLOR 1939

 

Pego / Pesgo / Pe3do / Pepso.LineSymbolThickness

For non Direct3D rendeing, controls thickness for all non solid points (cross, dash, non solid dot, etc) for PePlot.Method set to Point. Pixel units are for images less than 3300 pixels in size else thickness scales larger. 1 = 1 pixel 2 = 2 pixels 3 and higer = multiples of a thin line logical unit unit.

#define PEP_nLINESYMBOLTHICKNESS 1940

 

Pego / Pesgo.PePlot.Option.AreaBorder

Controls if a polyline top border is added to GdiPlus or Direct2D Area plotting method graphics. Helps with large data sets where spikes in data results in a zero-width polygon portion that GdiPlus can sometimes hide. Value can be 1, 2, 3 pixel units for monitor display. Print and vector wmf/svg output will scale this size.

#define PEP_nAREABORDER 3464

 

Pego / Pesgo.PePlot.Option.SolidLineOverArea

Controls if a top border polyline is added on top Area plotting methods. These lines are drawn after all areas so they are always on top. Similar to HiddenLinesInArea but solid and allows thickness control. Value can be 1, 2, 3 pixel units for display. Print, svg scales.

#define PEP_nSOLIDLINEOVERAREA 3465

All Object.PeSpecial.SvgXmlParms

Allows setting the ?XML tag string content at start of SVG xml. End this string with question-mark greater sign "?>".

#define PEP_szSVGXMLPARMS 1935

 

All Object.PeSpecial.SvgXmlnsParms

Allows setting the starting svg XMLNS parms. If setting this option, start with less-than svg "<svg", include width, height, viewbox to match your export. End string with greater sign ">".

#define PEP_szSVGXMLNSPARMS 1936

 

All Object.PeSpecial.ExportShapeLimit

Set to 2, 3 to relax the shape limit when exporting images. 2 = 1/20 to 20: 3 = 1/30 to 30: etc..

#define PEP_nEXPORTSHAPELIMIT 1931

 

All Object.PeConfigure.PixelOffsetHalf

Controls if GdiPlus antialias mode is half or none. True = Half = HighQuality. Color edges are usually lighter for high quality setting.

#define PEP_bPIXELOFFSETHALF1937


#define PEP_nLEGENDSUBSETMAX 1932 default 0 = 60 legends maximum, else if for some reason you need more legends than 60, set with PEnset.

In .Net, Gigasoft.ProEssentials.Api.PEnset(Pego1.PeSpecial.hObject, 1932, 80) for example to set to 80

 

Pego / Pesgo / Pe3do / Pepso.PePlot.Option.SubsetPointSizes

If one element is defined, controls all subset point sizes by this amount, else, each subset index can be assigned a point size factor. For example, setting to 2.0 will produce point sizes twice as large.

#define PEP_faSUBSETPOINTSIZES 1925

 

Pego / Pesgo.PeGrid.AxisBorders

When PeConfigure.BorderTypes is set to NoBorders, this property controls if axes still include a minimal border line where grid numbers are located.

#define PEP_bAXISBORDERS 3462

 

Pepco.PePlot.SliceLabelFormat

If ShowPieLabels is set to show numberic values. This property allows for adding text before and after slice data numbers. It also controls placing commas on thousand marks and forcing decimal positions. The format string consists of {PRE-TEXT}|{.}{,}{0000}|{POST-TEXT} Where all items are optional except pipe symbols, and one or more zeros can be provided in middle section.

#define PEP_szSLICELABELFORMAT 3931

 

HotSpotSize has been enhanced to allow any size defined. This property controls the size of data hot spots. In addition to predefined enums. The developer can assign any integer such as 30 for 30 pixels. This is very helpful for touch screen use.

 

Pego / Pesgo / Pepso.PeAnnotation.Graph.GraphAnnotRectHotSpots

Gets or Sets whether entire rect graph annotation is hotspot (true) or just corners (false).

#define PEP_bGRAPHANNOTRECTHOTSPOTS 3461

 

Pego / Pesgo.PeGrid.Option.YearMonthDayStyle

Controls the order of year, month, day witin bottom-left and top-axis date prompts when DateTimeMode = True:

#define PEP_nYEARMONTHDAYSTYLE 3197

#define PEYMDS_OS_CONTROLLED 0 = Looks if system setting starts with year. Try this setting or below Legacy to see which one behaves best for you.

#define PEYMDS_YMD 1

#define PEYMDS_MDY 2
#define PEYMDS_LEGACY 3 = Also OS controlled and uses older "iDate" item from the international profile INI settings.

 

Pego / Pesgo.PeAnnotation.Line.LineAnnotBackColor

Gets or Sets the background color of line annotation text that uses 'S' (right side opaque justification code) or 'M' (left side opaque).

#define PEP_dwLINEANNOTBACKCOLOR 3196

 

AreaGradientStyle, BarGradientStyle, SubsetGradientStyle adds an optional style...

VerticalAscentInverse, that is similar to VerticalAscent but up side down for alternate lighting effect.

#define PEPGS_VERTICAL_ASCENT2 17

 

Pepco.PePlot.GradientStyle adds NoGradient option.

#define PEPGS_NO_PIE_GRADIENT 3