Tomasz,

Thank you for adding the new status fields. They are very helpful for mixed chart and gfx plotting!

Best regards,
Dennis

On Apr 30, 2008, at 11:31 AM, Tomasz Janeczko wrote:

Hello,

AmiBroker 5.09.0 BETA released
http://www.amibroker.com/devlog/2008/04/30/amibroker-5090-beta-released/

CHANGES FOR VERSION 5.09.0 (as compared to 5.08.0)

MDI Tab order is now saved in the layout
Added interface to BugslayerUtil.dll for optional call stack / symbol dump report in crash recovery window Now in the bottom of the crash report there is a detailed call stack and CPU register state. This should allow quicker/easier fixes of any crashes
New fields in Status() function: pxchart*

Status("pxchartleft") - returns x-coordinate of top-left corner of chart area Status("pxcharttop") - returns y-coordinate of top-left corner of chart area Status("pxchartright") - returns x-coordinate of bottom-right corner of chart area Status("pxchartbottom") - returns y-coordinate of bottom-right corner of chart area
Status("pxchartwidth") - returns width chart area (right-left)
Status("pxchartheight") - returns width chart area (bottom-top)
Chart co-ordinates are useful because they automatically take into account selected axis font size, whenever date axis is on or off
and other settings (New Look chart style)
All co-ordinates are in screen pixels. Note that top, left coordinates may not be zero as chart rectangle is smaller than underlying window because there is an extra space (padding) around chart.

// Test code:
Title = StrFormat("left=%g, top=%g, right=%g, bottom=%g, width=%g, height=%g",
left=Status("pxchartleft"),
top=Status("pxcharttop"),
right=Status("pxchartright"),
bottom=Status("pxchartbottom"),
Status("pxchartwidth"),
Status("pxchartheight") );
GfxSetOverlayMode(1);
GfxRectangle(Left,top, right, bottom);

============ Overlay sample ================
_SECTION_BEGIN("GfxOverlaySampleNew");

function GetVisibleBarCount()
{
 lvb = Status("lastvisiblebar");
 fvb = Status("firstvisiblebar");

 return Min( Lvb - fvb, BarCount - fvb );
}

function GfxConvertBarToPixelX( bar )
{
 lvb = Status("lastvisiblebar");
 fvb = Status("firstvisiblebar");
 pxchartleft = Status("pxchartleft");
 pxchartwidth = Status("pxchartwidth");

 return pxchartleft + bar  * pxchartwidth / ( Lvb - fvb + 1 );
}

function GfxConvertValueToPixelY( Value )
{
 local Miny, Maxy, pxchartbottom, pxchartheight;

 Miny = Status("axisminy");
 Maxy = Status("axismaxy");

 pxchartbottom = Status("pxchartbottom");
 pxchartheight = Status("pxchartheight");

return pxchartbottom - floor( 0.5 + ( Value - Miny ) * pxchartheight/ ( Maxy - Miny ) );
}



Plot(C, "Price", colorBlack, styleHistogram );

GfxSetOverlayMode(0);
GfxSelectSolidBrush( colorRed );
GfxSelectPen( colorRed );

AllVisibleBars = GetVisibleBarCount();
fvb = Status("firstvisiblebar");

for( i = 0; i < AllVisibleBars ; i++ )
{
   x = GfxConvertBarToPixelX( i );
   y = GfxConvertValueToPixelY( C[ i + fvb ] );

  GfxRectangle( x-1, y-1, x + 2, y+1 );
}

//SetChartBkGradientFill( ColorRGB(200,200,200), ColorRGB( 255,255,255) );
_SECTION_END();



OLE: Name property is now writable, allowing switchin currently selected symbol for the document

Example (JScript):
AB = new ActiveXObject("Broker.Application");
AB.ActiveDocument.Name = "MSFT"; // change the symbol for current document to "MSFT"

Best regards,
Tomasz Janeczko
amibroker.com


Reply via email to