예제 #1
0
        private void drawData()
        {
            worker.setAntiAliasing(gdef.antiAliasing);
            worker.clip(im.xorigin + 1, im.yorigin - gdef.height - 1, gdef.width - 1, gdef.height + 2);
            double areazero = mapper.ytr((im.minval > 0.0) ? im.minval : (im.maxval < 0.0) ? im.maxval : 0.0);

            double[] x = xtr(dproc.getTimestamps()), lastY = null;
            // draw line, area and stack
            foreach (PlotElement plotElement in gdef.plotElements)
            {
                if (plotElement.GetType() == typeof(Line) ||
                    plotElement.GetType() == typeof(Area) ||
                    plotElement.GetType() == typeof(Stack))
                {
                    SourcedPlotElement source = (SourcedPlotElement)plotElement;
                    double[]           y      = ytr(source.getValues());
                    if (source.GetType() == typeof(Line))
                    {
                        worker.drawPolyline(x, y, source.color, ((Line)source).width);
                    }
                    else if (source.GetType() == typeof(Area))
                    {
                        worker.fillPolygon(x, areazero, y, source.color);
                    }
                    else if (source.GetType() == typeof(Stack))
                    {
                        Stack stack = (Stack)source;
                        float width = stack.getParentLineWidth();
                        if (width >= 0F)
                        {
                            // line
                            worker.drawPolyline(x, y, stack.color, width);
                        }
                        else
                        {
                            // area
                            worker.fillPolygon(x, lastY, y, stack.color);
                            worker.drawPolyline(x, lastY, stack.getParentColor(), 0);
                        }
                    }
                    else
                    {
                        // should not be here
                        throw new ApplicationException("Unknown plot source: " + source.GetType());
                    }
                    lastY = y;
                }
            }
            worker.reset();
            worker.setAntiAliasing(false);
        }
예제 #2
0
 internal float getParentLineWidth()
 {
     if (parent.GetType() == typeof(Line))
     {
         return(((Line)parent).width);
     }
     else if (parent.GetType() == typeof(Area))
     {
         return(-1F);
     }
     else /* if(parent instanceof Stack) */
     {
         return(((Stack)parent).getParentLineWidth());
     }
 }