ElegantJ Gauges Java API Specification v1.1

com.elegantj.gauges.dial
Class Circle

java.lang.Object
  extended byjava.awt.Component
      extended byjava.awt.Canvas
          extended bycom.elegantj.gauges.dial.Circle
All Implemented Interfaces:
javax.accessibility.Accessible, java.awt.image.ImageObserver, java.awt.MenuContainer, java.io.Serializable

public class Circle
extends java.awt.Canvas
implements java.io.Serializable

This is used for rendering Dial

See Also:
Serialized Form

Nested Class Summary
 
Nested classes inherited from class java.awt.Canvas
java.awt.Canvas.AccessibleAWTCanvas
 
Nested classes inherited from class java.awt.Component
java.awt.Component.AccessibleAWTComponent, java.awt.Component.BltBufferStrategy, java.awt.Component.FlipBufferStrategy
 
Field Summary
 
Fields inherited from class java.awt.Component
BOTTOM_ALIGNMENT, CENTER_ALIGNMENT, LEFT_ALIGNMENT, RIGHT_ALIGNMENT, TOP_ALIGNMENT
 
Fields inherited from interface java.awt.image.ImageObserver
ABORT, ALLBITS, ERROR, FRAMEBITS, HEIGHT, PROPERTIES, SOMEBITS, WIDTH
 
Constructor Summary
Circle(double cx, double cy, double radius, java.util.Vector new_Zones, double theMaximum, double theMinimum, double maxAngle)
           
Circle(double cx, double cy, double radius, java.util.Vector new_Zones, double theMaximum, double theMinimum, double minAngle, double maxAngle)
           
Circle(double cx, double cy, double radius, java.util.Vector new_Zones, double theMaximum, double theMinimum, double minAngle, double maxAngle, boolean clockwise)
          Creates a Circle with specified location, radious, zones, minimum value, maximum value and maximum angle.
Circle(double cx, double cy, java.util.Vector new_Zones, double theMaximum, double theMinimum, double maxAngle)
           
 
Method Summary
 double calAngleValue(double angle)
          Calculates the value for given angle degree
 double calPointAngle(int x, int y)
          Calculates the angle value for given point
 double calValueAngle(double value)
          Calculates the value angle for each value
 void draw(java.awt.Graphics g, java.awt.Color color, GaugeBorder border)
          Basic circle renderer
 void drawBox(java.awt.Graphics g, java.lang.String str, java.awt.Color bColor, java.awt.Color fColor, java.awt.Font font, GaugeBorder border)
          Draws a rectangular box to display the given text
 void drawFooter(java.awt.Graphics g, java.lang.String text, java.awt.Font font, java.awt.Color bColor, java.awt.Color fColor, java.awt.Rectangle bounds)
          Draws the footer area
 void drawGrad(java.awt.Graphics g, int gradType, java.awt.Color gradColor, double gradLength, double gradWidth, int subGradType, java.awt.Color subGradColor, double subGradLength, double subGradWidth, GaugeBorder border)
          Draws the graduations of the circle
 void drawHeader(java.awt.Graphics g, java.lang.String text, java.awt.Font font, java.awt.Color bColor, java.awt.Color fColor, java.awt.Rectangle bounds)
          Draws the header area
 void drawInner(java.awt.Graphics g, java.awt.Color baseColor, GaugeBorder baseDialBorder)
          Draws the innermost filled circle
 void drawNeedle(java.awt.Graphics g, int needleType, java.awt.Color needleColor, double needleWidth, double needleLength, double needleTail, GaugeBorder needleBorder)
          Draws a Needle
 void drawRadial(java.awt.Graphics g, double angle, int gradType, java.awt.Color gradColor, double gradLength, double gradWidth, int borderWidth)
          Draw a single radial.
 void drawRadialValues(java.awt.Graphics g, java.awt.Font font, java.awt.Color fontColor)
          Draws the intermediate values of each zone
 void drawStaticZone(java.awt.Graphics g, java.awt.Color dColor, java.awt.Color bColor, GaugeBorder border)
          Draws a static zone of gray color when the maximum angle is less than 360
 void drawSubRadial(java.awt.Graphics g, double angle, int subGradType, java.awt.Color subGradColor, double subGradLength, double subGradWidth, int borderWidth)
          Draw a single subradial.
 void drawUnit(java.awt.Graphics g, java.lang.String unit, java.awt.Font font, java.awt.Color fontColor, java.awt.Point location)
          Draws the unit text
 void drawValues(java.awt.Graphics g, java.awt.Font font, java.awt.Color fontColor)
          Draws the low and high values of each zone
 void drawZone(java.awt.Graphics g, java.awt.Color color, int borderWidth)
          Draws the various zones of the circle
 java.lang.String fp2ScaleString(double value)
          Convert a double value to a scale String representation.
 double getAdjustedBaseRadius()
          Gets the base circle's radius adjusted to the gauge
 java.awt.Rectangle getAdjustedDisplayBoxBounds()
          Gets the display box boundaries adjusted to the gauge
 double getAdjustedGradLength(int gradType, double gradLength)
          Gets the grad length adjusted to the gauge
 double getAdjustedGradRadius()
          Gets the grad radius adjusted to the gauge
 int getAdjustedGradType(int gradType)
          Gets the grad type adjusted to the gauge
 double getAdjustedGradWidth(int gradType, double gradWidth)
          Gets the grad width adjusted to the gauge
 int getAdjustedInt(double value)
          Gets the adjusted integer value for the given double value
 double getAdjustedNeedleLength(double needleType, double needleLength)
          Gets the needle length adjusted to the gauge
 double getAdjustedNeedleTail(int needleType, double needleTail)
          Gets the needle tail adjusted to the gauge
 int getAdjustedNeedleType(int needleType)
          Gets the needle type adjusted to the gauge
 double getAdjustedNeedleWidth(int needleType, double needleWidth)
          Gets the needle width adjusted to the gauge
 double getAdjustedSubGradLength(int subGradType, double subGradLength)
          Gets the subgrad length adjusted to the gauge
 int getAdjustedSubGradType(int subGradType)
          Gets the subgrad type adjusted to the gauge
 double getAdjustedSubGradWidth(int subGradType, double subGradWidth)
          Gets the subgrad width adjusted to the gauge
 java.awt.Point getAdjustedUnitLocation(java.awt.Font font, java.lang.String unit, java.awt.Point location)
          Gets the unit location adjusted to the gauge
 double getAdjustedValueRadius()
          Gets the value radius adjusted to the gauge
 double getBaseRadius()
          Gets the length of a arrow radial.
 double getDialRadius()
          Gets the radius of the dial to be displayed.
 java.awt.Rectangle getDisplayBoxBounds()
          Gets the display box boundaries
 int getFraction()
          Gets the length of the fraction part of the value
 double getGradRadius()
          Gets the radius of the grads to be displayed.
 double getMaximum()
          Returns maximum value of the needle gauge
 double getMaximumAngle()
          Returns maximum angle value of the needle gauge
 double getMinimum()
          Returns minimum value of the needle gauge
 double getMinimumAngle()
          Returns minimum angle value of the needle gauge
 double getValue()
          Gets the current value of the needle guage
 double getValueRadius()
          Gets the radius of the values to be displayed.
 java.util.Vector getZones()
          Returns zones of the dial
 boolean isClockwise()
          Gets the direction of the dial rotation clockwise or anticlockwise
 void setBaseRadius(double val)
          Sets the radius of a base circle's radial.
 void setClockwise(boolean value)
          Sets the direction of the dial rotation clockwise or anticlockwise
 void setDialRadius(double val)
          Sets the radius of the dial to be displayed.
 void setDisplayBoxBounds(java.awt.Rectangle rect)
          Sets the display box boundaries, considers default values, if the rectangle is -1,-1,-1,-1
 void setFraction(int len)
          Sets the length of the fraction part of the value
 void setGradRadius(double val)
          Sets the radius of the grads to be displayed.
 void setInnerRadius(double smallRadiusPct)
          Define the length of a inner radial by defining the radii it has to fit in.
 void setMaximum(double theMaximum)
          Sets the maximum value of the needle guage
 void setMaximumAngle(double angle)
          Sets the maximum angle value of the needle guage
 void setMinimum(double theMinimum)
          Sets the minimum value of the needle guage
 void setMinimumAngle(double angle)
          Sets the minimum angle value of the needle guage
 void setNewValues(double cx, double cy, double val)
          Sets new values for the dial.
 void setOuterRadius(double largeRadiusPct)
          Define the length of a outer radial by defining the radii it has to fit in.
 void setRadialSize(double smallRadiusPct, double largeRadiusPct)
          Define the length of a inner radial and outer radial by defining the radii it has to fit in.
 void setValue(double theValue)
          Sets the current value of the needle guage
 void setValueRadius(double val)
          Sets the radius of the values to be displayed.
 void setZonesToNewValue(java.util.Vector v)
          Sets the new zone values
 void totalDiv1()
          Calculating the total divisions
 
Methods inherited from class java.awt.Canvas
addNotify, createBufferStrategy, createBufferStrategy, getAccessibleContext, getBufferStrategy, paint, update
 
Methods inherited from class java.awt.Component
action, add, addComponentListener, addFocusListener, addHierarchyBoundsListener, addHierarchyListener, addInputMethodListener, addKeyListener, addMouseListener, addMouseMotionListener, addMouseWheelListener, addPropertyChangeListener, addPropertyChangeListener, applyComponentOrientation, areFocusTraversalKeysSet, bounds, checkImage, checkImage, coalesceEvents, contains, contains, createImage, createImage, createVolatileImage, createVolatileImage, deliverEvent, disable, disableEvents, dispatchEvent, doLayout, enable, enable, enableEvents, enableInputMethods, firePropertyChange, firePropertyChange, firePropertyChange, getAlignmentX, getAlignmentY, getBackground, getBounds, getBounds, getColorModel, getComponentAt, getComponentAt, getComponentListeners, getComponentOrientation, getCursor, getDropTarget, getFocusCycleRootAncestor, getFocusListeners, getFocusTraversalKeys, getFocusTraversalKeysEnabled, getFont, getFontMetrics, getForeground, getGraphics, getGraphicsConfiguration, getHeight, getHierarchyBoundsListeners, getHierarchyListeners, getIgnoreRepaint, getInputContext, getInputMethodListeners, getInputMethodRequests, getKeyListeners, getListeners, getLocale, getLocation, getLocation, getLocationOnScreen, getMaximumSize, getMinimumSize, getMouseListeners, getMouseMotionListeners, getMouseWheelListeners, getName, getParent, getPeer, getPreferredSize, getPropertyChangeListeners, getPropertyChangeListeners, getSize, getSize, getToolkit, getTreeLock, getWidth, getX, getY, gotFocus, handleEvent, hasFocus, hide, imageUpdate, inside, invalidate, isBackgroundSet, isCursorSet, isDisplayable, isDoubleBuffered, isEnabled, isFocusable, isFocusCycleRoot, isFocusOwner, isFocusTraversable, isFontSet, isForegroundSet, isLightweight, isOpaque, isShowing, isValid, isVisible, keyDown, keyUp, layout, list, list, list, list, list, locate, location, lostFocus, minimumSize, mouseDown, mouseDrag, mouseEnter, mouseExit, mouseMove, mouseUp, move, nextFocus, paintAll, paramString, postEvent, preferredSize, prepareImage, prepareImage, print, printAll, processComponentEvent, processEvent, processFocusEvent, processHierarchyBoundsEvent, processHierarchyEvent, processInputMethodEvent, processKeyEvent, processMouseEvent, processMouseMotionEvent, processMouseWheelEvent, remove, removeComponentListener, removeFocusListener, removeHierarchyBoundsListener, removeHierarchyListener, removeInputMethodListener, removeKeyListener, removeMouseListener, removeMouseMotionListener, removeMouseWheelListener, removeNotify, removePropertyChangeListener, removePropertyChangeListener, repaint, repaint, repaint, repaint, requestFocus, requestFocus, requestFocusInWindow, requestFocusInWindow, reshape, resize, resize, setBackground, setBounds, setBounds, setComponentOrientation, setCursor, setDropTarget, setEnabled, setFocusable, setFocusTraversalKeys, setFocusTraversalKeysEnabled, setFont, setForeground, setIgnoreRepaint, setLocale, setLocation, setLocation, setName, setSize, setSize, setVisible, show, show, size, toString, transferFocus, transferFocusBackward, transferFocusUpCycle, validate
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Constructor Detail

Circle

public Circle(double cx,
              double cy,
              java.util.Vector new_Zones,
              double theMaximum,
              double theMinimum,
              double maxAngle)

Circle

public Circle(double cx,
              double cy,
              double radius,
              java.util.Vector new_Zones,
              double theMaximum,
              double theMinimum,
              double maxAngle)

Circle

public Circle(double cx,
              double cy,
              double radius,
              java.util.Vector new_Zones,
              double theMaximum,
              double theMinimum,
              double minAngle,
              double maxAngle)

Circle

public Circle(double cx,
              double cy,
              double radius,
              java.util.Vector new_Zones,
              double theMaximum,
              double theMinimum,
              double minAngle,
              double maxAngle,
              boolean clockwise)
Creates a Circle with specified location, radious, zones, minimum value, maximum value and maximum angle.

Parameters:
cx - x-cordinate of the circle's center
radius - radius of the circle, default 100.0
new_Zones - zones description
theMaximum - maximum value
theMinimum - minimum value
minAngle - minimum angle of the circle
maxAngle - maximum angle of the circle
clockwise - rotation of the circle's value
Method Detail

setNewValues

public void setNewValues(double cx,
                         double cy,
                         double val)
Sets new values for the dial.

Parameters:
cx - it is used to set x-coordinate of the center point
cy - it is used to set y-coordinate of the center point
val - it is used to set the inner radius, outer radius, arrow radius

setBaseRadius

public void setBaseRadius(double val)
Sets the radius of a base circle's radial. Considers default value, if it is -1

Parameters:
val - the base circle's radius

getBaseRadius

public double getBaseRadius()
Gets the length of a arrow radial.

Returns:
the arrow radius

setValueRadius

public void setValueRadius(double val)
Sets the radius of the values to be displayed. Considers default value, if it is -1

Parameters:
val - the value radius

getValueRadius

public double getValueRadius()
Gets the radius of the values to be displayed.

Returns:
the value radius

setGradRadius

public void setGradRadius(double val)
Sets the radius of the grads to be displayed. Considers default value, if it is -1

Parameters:
val - the grad radius

getGradRadius

public double getGradRadius()
Gets the radius of the grads to be displayed.

Returns:
the grad radius

setDialRadius

public void setDialRadius(double val)
Sets the radius of the dial to be displayed. Considers default value, if it is -1

Parameters:
val - the dial radius

getDialRadius

public double getDialRadius()
Gets the radius of the dial to be displayed.

Returns:
the dial radius

setInnerRadius

public void setInnerRadius(double smallRadiusPct)
Define the length of a inner radial by defining the radii it has to fit in.

Parameters:
smallRadiusPct - inner radius value

setOuterRadius

public void setOuterRadius(double largeRadiusPct)
Define the length of a outer radial by defining the radii it has to fit in.

Parameters:
largeRadiusPct - outer radius value

setRadialSize

public void setRadialSize(double smallRadiusPct,
                          double largeRadiusPct)
Define the length of a inner radial and outer radial by defining the radii it has to fit in.

Parameters:
smallRadiusPct - inner radius value
largeRadiusPct - outer radius value

getZones

public java.util.Vector getZones()
Returns zones of the dial

Returns:
vector containing the zone values

setZonesToNewValue

public void setZonesToNewValue(java.util.Vector v)
Sets the new zone values

Parameters:
v - zone new values

setClockwise

public void setClockwise(boolean value)
Sets the direction of the dial rotation clockwise or anticlockwise

Parameters:
value - boolean type true specifies double clockwise direction

isClockwise

public boolean isClockwise()
Gets the direction of the dial rotation clockwise or anticlockwise

Returns:
boolean type true specifies double clockwise direction

fp2ScaleString

public java.lang.String fp2ScaleString(double value)
Convert a double value to a scale String representation. Numbers like 23.0000000002 are converted to 23.00 for fraction length 2 56.7999999998 are converted to 56 for fraction length 0 with the specified fraction length

Parameters:
value - Specifies double value to be converted

totalDiv1

public void totalDiv1()
Calculating the total divisions


draw

public void draw(java.awt.Graphics g,
                 java.awt.Color color,
                 GaugeBorder border)
Basic circle renderer


drawZone

public void drawZone(java.awt.Graphics g,
                     java.awt.Color color,
                     int borderWidth)
Draws the various zones of the circle

Parameters:
g -
color - inner color of the dial

drawGrad

public void drawGrad(java.awt.Graphics g,
                     int gradType,
                     java.awt.Color gradColor,
                     double gradLength,
                     double gradWidth,
                     int subGradType,
                     java.awt.Color subGradColor,
                     double subGradLength,
                     double subGradWidth,
                     GaugeBorder border)
Draws the graduations of the circle


drawValues

public void drawValues(java.awt.Graphics g,
                       java.awt.Font font,
                       java.awt.Color fontColor)
Draws the low and high values of each zone


drawRadialValues

public void drawRadialValues(java.awt.Graphics g,
                             java.awt.Font font,
                             java.awt.Color fontColor)
Draws the intermediate values of each zone


drawBox

public void drawBox(java.awt.Graphics g,
                    java.lang.String str,
                    java.awt.Color bColor,
                    java.awt.Color fColor,
                    java.awt.Font font,
                    GaugeBorder border)
Draws a rectangular box to display the given text


drawUnit

public void drawUnit(java.awt.Graphics g,
                     java.lang.String unit,
                     java.awt.Font font,
                     java.awt.Color fontColor,
                     java.awt.Point location)
Draws the unit text


drawStaticZone

public void drawStaticZone(java.awt.Graphics g,
                           java.awt.Color dColor,
                           java.awt.Color bColor,
                           GaugeBorder border)
Draws a static zone of gray color when the maximum angle is less than 360


drawInner

public void drawInner(java.awt.Graphics g,
                      java.awt.Color baseColor,
                      GaugeBorder baseDialBorder)
Draws the innermost filled circle


drawRadial

public void drawRadial(java.awt.Graphics g,
                       double angle,
                       int gradType,
                       java.awt.Color gradColor,
                       double gradLength,
                       double gradWidth,
                       int borderWidth)
Draw a single radial. The radial is defined to connect the inner and outer circle so these circle parameters have to be set first.

Parameters:
g - graphics context
angle - angle value to draw a radial
gradType - grad type such as linear or circular
gradColor - grad color
gradLength - grad length
gradWidth - grad width
borderWidth - inner border width

drawSubRadial

public void drawSubRadial(java.awt.Graphics g,
                          double angle,
                          int subGradType,
                          java.awt.Color subGradColor,
                          double subGradLength,
                          double subGradWidth,
                          int borderWidth)
Draw a single subradial.

Parameters:
g - graphics context
angle - angle value to draw a subradial
subGradType - subgrad type such as linear or circular
subGradColor - subgrad color
subGradLength - subgrad length
subGradWidth - subgrad width
borderWidth - inner border width

drawNeedle

public void drawNeedle(java.awt.Graphics g,
                       int needleType,
                       java.awt.Color needleColor,
                       double needleWidth,
                       double needleLength,
                       double needleTail,
                       GaugeBorder needleBorder)
Draws a Needle


drawHeader

public void drawHeader(java.awt.Graphics g,
                       java.lang.String text,
                       java.awt.Font font,
                       java.awt.Color bColor,
                       java.awt.Color fColor,
                       java.awt.Rectangle bounds)
Draws the header area


drawFooter

public void drawFooter(java.awt.Graphics g,
                       java.lang.String text,
                       java.awt.Font font,
                       java.awt.Color bColor,
                       java.awt.Color fColor,
                       java.awt.Rectangle bounds)
Draws the footer area


calValueAngle

public double calValueAngle(double value)
Calculates the value angle for each value


calPointAngle

public double calPointAngle(int x,
                            int y)
Calculates the angle value for given point

Returns:
-1, if point lies outside the circle

calAngleValue

public double calAngleValue(double angle)
Calculates the value for given angle degree


setFraction

public void setFraction(int len)
Sets the length of the fraction part of the value

Parameters:
len - the length of the fraction part of the value

getFraction

public int getFraction()
Gets the length of the fraction part of the value

Returns:
the length of the fraction part of the value

setValue

public void setValue(double theValue)
Sets the current value of the needle guage

Parameters:
theValue - current value

getValue

public double getValue()
Gets the current value of the needle guage

Returns:
double value

setMinimum

public void setMinimum(double theMinimum)
Sets the minimum value of the needle guage

Parameters:
theMinimum - lowest value the meter can indicate

getMinimum

public double getMinimum()
Returns minimum value of the needle gauge

Returns:
double

setMaximum

public void setMaximum(double theMaximum)
Sets the maximum value of the needle guage

Parameters:
theMaximum - highest value the meter can indicate

getMaximum

public double getMaximum()
Returns maximum value of the needle gauge

Returns:
maximum value

setMinimumAngle

public void setMinimumAngle(double angle)
Sets the minimum angle value of the needle guage

Parameters:
angle - lowest angle value the meter can rotate

getMinimumAngle

public double getMinimumAngle()
Returns minimum angle value of the needle gauge

Returns:
minimum value of the rotation

setMaximumAngle

public void setMaximumAngle(double angle)
Sets the maximum angle value of the needle guage

Parameters:
angle - highest angle value the meter can rotate

getMaximumAngle

public double getMaximumAngle()
Returns maximum angle value of the needle gauge

Returns:
maximum value of the rotation

setDisplayBoxBounds

public void setDisplayBoxBounds(java.awt.Rectangle rect)
Sets the display box boundaries, considers default values, if the rectangle is -1,-1,-1,-1

Parameters:
rect - the rectangle contains the display box boundaries

getDisplayBoxBounds

public java.awt.Rectangle getDisplayBoxBounds()
Gets the display box boundaries

Returns:
the rectangle contains the display box boundaries

getAdjustedDisplayBoxBounds

public java.awt.Rectangle getAdjustedDisplayBoxBounds()
Gets the display box boundaries adjusted to the gauge

Returns:
the rectangle contains the display box boundaries

getAdjustedBaseRadius

public double getAdjustedBaseRadius()
Gets the base circle's radius adjusted to the gauge

Returns:
the base radius

getAdjustedValueRadius

public double getAdjustedValueRadius()
Gets the value radius adjusted to the gauge

Returns:
the value radius

getAdjustedGradRadius

public double getAdjustedGradRadius()
Gets the grad radius adjusted to the gauge

Returns:
the grad radius

getAdjustedNeedleType

public int getAdjustedNeedleType(int needleType)
Gets the needle type adjusted to the gauge

Returns:
the needle type

getAdjustedNeedleLength

public double getAdjustedNeedleLength(double needleType,
                                      double needleLength)
Gets the needle length adjusted to the gauge

Returns:
the needle length

getAdjustedNeedleWidth

public double getAdjustedNeedleWidth(int needleType,
                                     double needleWidth)
Gets the needle width adjusted to the gauge

Returns:
the needle width

getAdjustedNeedleTail

public double getAdjustedNeedleTail(int needleType,
                                    double needleTail)
Gets the needle tail adjusted to the gauge

Returns:
the needle tail

getAdjustedUnitLocation

public java.awt.Point getAdjustedUnitLocation(java.awt.Font font,
                                              java.lang.String unit,
                                              java.awt.Point location)
Gets the unit location adjusted to the gauge

Returns:
the unit location

getAdjustedGradType

public int getAdjustedGradType(int gradType)
Gets the grad type adjusted to the gauge

Returns:
the grad type

getAdjustedGradLength

public double getAdjustedGradLength(int gradType,
                                    double gradLength)
Gets the grad length adjusted to the gauge

Returns:
the grad length

getAdjustedGradWidth

public double getAdjustedGradWidth(int gradType,
                                   double gradWidth)
Gets the grad width adjusted to the gauge

Returns:
the grad width

getAdjustedSubGradType

public int getAdjustedSubGradType(int subGradType)
Gets the subgrad type adjusted to the gauge

Returns:
the subgrad type

getAdjustedSubGradLength

public double getAdjustedSubGradLength(int subGradType,
                                       double subGradLength)
Gets the subgrad length adjusted to the gauge

Returns:
the subgrad length

getAdjustedSubGradWidth

public double getAdjustedSubGradWidth(int subGradType,
                                      double subGradWidth)
Gets the subgrad width adjusted to the gauge

Returns:
the subgrad width

getAdjustedInt

public int getAdjustedInt(double value)
Gets the adjusted integer value for the given double value

Returns:
the adjusted integer value

ElegantJ Gauges Java API Specification v1.1

Submit a bug or feature

Copyright(c)
Elegant Microweb Technologies Pvt. Ltd.
www.elegantmicroweb.com
www.elegantjcharts.com
All Rights Reserved.