title: drawArc not drawing properly when startAngle > endAngle in android
body: <p>I am trying to draw an arc between two points in a circle using touch listener. Here is my code:</p>
  
  <pre><code>public class MainActivity extends Activity implements OnTouchListener {
  
  ImageView whiteCircle, centreCircle, slideArcFrame;
  int xStart = 0, yStart = 0, xEnd = 0, yEnd = 0, centerIx = 0, centerIy = 0;
  Bitmap output;
  
  @Override
  protected void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      setContentView(R.layout.activity_main);
      whiteCircle = (ImageView) findViewById(R.id.centerImageWhite);
      centreCircle = (ImageView) findViewById(R.id.centerImage2);
      slideArcFrame = (ImageView) findViewById(R.id.centerImage);
      slideArcFrame.setOnTouchListener(this);
      slideArcFrame.setDrawingCacheEnabled(true);
      slideArcFrame.measure(
              MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED),
              MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
      slideArcFrame.layout(0, 0, slideArcFrame.getMeasuredWidth(),
              slideArcFrame.getMeasuredHeight());
      slideArcFrame.buildDrawingCache(true);
      output = Bitmap.createBitmap(slideArcFrame.getDrawingCache());
      centerIx = 100;
      centerIy = 100;
  }
  
  @Override
  public boolean onTouch(View arg0, MotionEvent arg1) {
      if (arg1.getAction() == MotionEvent.ACTION_DOWN) {
          xStart = (int) arg1.getX();
          yStart = (int) arg1.getY();
      }
      if (arg1.getAction() == MotionEvent.ACTION_MOVE) {
          xEnd = (int) arg1.getX();
          yEnd = (int) arg1.getY();
          drawArc();
      }
      if (arg1.getAction() == MotionEvent.ACTION_UP) {
          xEnd = (int) arg1.getX();
          yEnd = (int) arg1.getY();
      }
      return true;
  }
  
  private void drawArc() {
      Bitmap outp = Bitmap.createBitmap(output.getWidth(),
              output.getHeight(), Config.ARGB_8888);
      Canvas can = new Canvas(outp);
      final Paint paint = new Paint();
      RectF rect = new RectF(0, 0, output.getWidth(), output.getHeight());
      can.drawARGB(0, 0, 0, 0);
      paint.setAntiAlias(true);
      paint.setColor(getResources().getColor(R.color.white));
      double quadXS, quadYS, quadXE, quadYE;
      double quadrantS = 0, quadrantE = 0;
      quadXS = xStart - centerIx;
      quadYS = yStart - centerIy;
      quadXE = xEnd - centerIx;
      quadYE = yEnd - centerIy;
      if (quadXS &gt;= 0 &amp;&amp; quadYS &gt;= 0)
          quadrantS = 1;
      if (quadXS &lt; 0 &amp;&amp; quadYS &gt;= 0)
          quadrantS = 2;
      if (quadXS &lt; 0 &amp;&amp; quadYS &lt; 0)
          quadrantS = 3;
      if (quadXS &gt;= 0 &amp;&amp; quadYS &lt; 0)
          quadrantS = 4;
      if (quadXE &gt;= 0 &amp;&amp; quadYE &gt;= 0)
          quadrantE = 1;
      if (quadXE &lt; 0 &amp;&amp; quadYE &gt;= 0)
          quadrantE = 2;
      if (quadXE &lt; 0 &amp;&amp; quadYE &lt; 0)
          quadrantE = 3;
      if (quadXE &gt;= 0 &amp;&amp; quadYE &lt; 0)
          quadrantE = 4;
      double startAngle = 0, endAngle = 0;
      if (quadrantS == 1) {
          startAngle = Math.toDegrees(Math.atan((double) (quadYS) / quadXS));
      }
      if (quadrantS == 2) {
          startAngle = 180 - Math.toDegrees(Math.atan((double) (quadYS)
                  / -quadXS));
      }
      if (quadrantS == 3) {
          startAngle = 180 + Math.toDegrees(Math.atan((double) (-quadYS)
                  / -quadXS));
      }
      if (quadrantS == 4) {
          startAngle = 360 - Math.toDegrees(Math.atan((double) (-quadYS)
                  / quadXS));
      }
      if (quadrantE == 1) {
          endAngle = Math.toDegrees(Math.atan((double) (quadYE) / quadXE));
      }
      if (quadrantE == 2) {
          endAngle = 180 - Math.toDegrees(Math.atan((double) (quadYE)
                  / -quadXE));
      }
      if (quadrantE == 3) {
          endAngle = 180 + Math.toDegrees(Math.atan((double) (-quadYE)
                  / -quadXE));
      }
      if (quadrantE == 4) {
          endAngle = 360 - Math.toDegrees(Math.atan((double) (-quadYE)
                  / quadXE));
      }
      can.drawArc(rect, (float) startAngle, (float) endAngle
              - (float) startAngle, true, paint);
      slideArcFrame.setImageBitmap(outp);
  }
  }
  </code></pre>
  
  <p>When the start angle is greater than end angle, the arc is drawn from end angle to start angle. Can anyone explain please?</p>