/// <summary>
 /// reset the properties of builder object so that the canvas will get new data
 /// </summary>
 /// <param name="canvas"></param>
 /// <param name="x_count"></param>
 /// <param name="y_count"></param>
 /// <param name="marginX"></param>
 /// <param name="marginY"></param>
 /// <param name="priceOffset"></param>
 /// <param name="volumeOffset"></param>
 /// <param name="symbol"></param>
 /// <param name="type"></param>
 public void Refresh(ref Canvas canvas, int x_count, int y_count, int marginX, int marginY, double priceOffset, int volumeOffset, string symbol, string type)
 {
     canvas.Children.Clear();                                         // clean all old data
     canvas.MouseDown   -= new MouseButtonEventHandler(AddPointInfo); //clear event handler
     canvas.MouseUp     -= new MouseButtonEventHandler(RemovePointInfo);
     this.x_count        = x_count;
     this.y_count        = y_count;
     this.marginX        = marginX;
     this.marginY        = marginY;
     this.priceOffset    = priceOffset;
     this.volumeOffset   = volumeOffset;
     this.type           = type;
     this.stockData      = netReader.FetchStockMajorDataObject("ACB", type);
     datesAxisKeypoint   = GetDateKeypointsForXAxis(stockData);
     pricesAxisKeypoint  = GetPriceKeypointsForYAxis(stockData, y_count);
     volumesAxisKeypoint = GetVolumeKeypointsForYAxis(stockData, y_count);
     DrawStockMajorToCanvas(ref canvas);
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="canvas">canvas object</param>
 /// <param name="x_count">x axis key point number</param>
 /// <param name="y_count">y axis key point number</param>
 /// <param name="margin">coordinate margin</param>
 /// <param name="priceOffset">the percentage range above the highest price and below the lowest price</param>
 /// <param name="meta"></param>
 public CoordinateBuilder(Canvas canvas, MenuSetting menusettings, NetworkDataReader reader, SqlDataReader sqlReader, int x_count, int y_count, int marginX, int marginY, double priceOffset, int volumeOffset, string symbol, string type)
 {
     width               = canvas.Width;
     height              = canvas.Height;
     this.x_count        = x_count;
     this.y_count        = y_count;
     this.marginX        = marginX;
     this.marginY        = marginY;
     this.priceOffset    = priceOffset;
     this.volumeOffset   = volumeOffset;
     this.type           = type;
     netReader           = reader;
     this.sqlReader      = sqlReader;
     this.stockData      = netReader.FetchStockMajorDataObject("ACB", type);
     datesAxisKeypoint   = GetDateKeypointsForXAxis(stockData);
     pricesAxisKeypoint  = GetPriceKeypointsForYAxis(stockData, y_count);
     volumesAxisKeypoint = GetVolumeKeypointsForYAxis(stockData, y_count);
     this.menuSetting    = menusettings;
 }