// Path: src/com/ezio/multiwii/helpers/Functions.java
// public class Functions {
// 
// 	
// 	public static long ConcatInt(int x, int y) {
// 		return (int) ((x * Math.pow(10, numberOfDigits(y))) + y);
// 	}
// 
// 	public static float map(float x, float in_min, float in_max, float out_min, float out_max) {
// 		return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
// 	}
// 
// 	public static int map(int x, int in_min, int in_max, int out_min, int out_max) {
// 		return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
// 	}
// 
// 	public static int numberOfDigits(long n) {
// 		// Guessing 4 digit numbers will be more probable.
// 		// They are set in the first branch.
// 		if (n < 10000L) { // from 1 to 4
// 			if (n < 100L) { // 1 or 2
// 				if (n < 10L) {
// 					return 1;
// 				} else {
// 					return 2;
// 				}
// 			} else { // 3 or 4
// 				if (n < 1000L) {
// 					return 3;
// 				} else {
// 					return 4;
// 				}
// 			}
// 		} else { // from 5 a 20 (albeit longs can't have more than 18 or 19)
// 			if (n < 1000000000000L) { // from 5 to 12
// 				if (n < 100000000L) { // from 5 to 8
// 					if (n < 1000000L) { // 5 or 6
// 						if (n < 100000L) {
// 							return 5;
// 						} else {
// 							return 6;
// 						}
// 					} else { // 7 u 8
// 						if (n < 10000000L) {
// 							return 7;
// 						} else {
// 							return 8;
// 						}
// 					}
// 				} else { // from 9 to 12
// 					if (n < 10000000000L) { // 9 or 10
// 						if (n < 1000000000L) {
// 							return 9;
// 						} else {
// 							return 10;
// 						}
// 					} else { // 11 or 12
// 						if (n < 100000000000L) {
// 							return 11;
// 						} else {
// 							return 12;
// 						}
// 					}
// 				}
// 			} else { // from 13 to ... (18 or 20)
// 				if (n < 10000000000000000L) { // from 13 to 16
// 					if (n < 100000000000000L) { // 13 or 14
// 						if (n < 10000000000000L) {
// 							return 13;
// 						} else {
// 							return 14;
// 						}
// 					} else { // 15 or 16
// 						if (n < 1000000000000000L) {
// 							return 15;
// 						} else {
// 							return 16;
// 						}
// 					}
// 				} else { // from 17 to ...¿20?
// 					if (n < 1000000000000000000L) { // 17 or 18
// 						if (n < 100000000000000000L) {
// 							return 17;
// 						} else {
// 							return 18;
// 						}
// 					} else { // 19? Can it be?
// 						// 10000000000000000000L is'nt a valid long.
// 						return 19;
// 					}
// 				}
// 			}
// 		}
// 	}
// }


import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Rect;
import android.util.AttributeSet;
import com.ezio.multiwii.R;
import com.ezio.multiwii.helpers.Functions;
		mPaint.setColor(Color.rgb(50, 50, 50));
		mPaint.setStyle(Style.FILL_AND_STROKE);
		mPaint.setTextSize(12);

		DrawingRec = new Rect();
	}

	public void Set(float pitch, float roll) {
		this.roll = -roll;
		this.pitch = pitch;
	}

	public void Draw(Canvas c, int x, int y) {
		// super.onDraw(c);
		// c.drawRect(DrawingRec, mPaint);

		if (!D) {
			matrix.reset();
			matrix.postRotate(roll, bmp[0].getWidth() / 2, bmp[0].getHeight() / 2);
			matrix.postTranslate(x + (ww - bmp[0].getWidth()) / 2, y + (hh - bmp[0].getHeight()) / 2);
			c.drawBitmap(bmp[0], matrix, null);

			matrix.reset();
			if (pitch > 90)
				pitch = 90;
			if (pitch < -90)
				pitch = -90;
			tmp = Functions.map(pitch, -90, 90, -(bmp[1].getHeight() / 2), bmp[1].getHeight() / 2);
			matrix.postRotate(roll, bmp[1].getWidth() / 2, bmp[1].getHeight() / 2 - tmp);
			matrix.postTranslate(x + (ww - bmp[1].getWidth()) / 2, y + ((hh - bmp[1].getHeight()) / 2) + tmp);
// Path: src/com/ezio/multiwii/helpers/Functions.java
// public class Functions {
// 
// 	
// 	public static long ConcatInt(int x, int y) {
// 		return (int) ((x * Math.pow(10, numberOfDigits(y))) + y);
// 	}
// 
// 	public static float map(float x, float in_min, float in_max, float out_min, float out_max) {
// 		return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
// 	}
// 
// 	public static int map(int x, int in_min, int in_max, int out_min, int out_max) {
// 		return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
// 	}
// 
// 	public static int numberOfDigits(long n) {
// 		// Guessing 4 digit numbers will be more probable.
// 		// They are set in the first branch.
// 		if (n < 10000L) { // from 1 to 4
// 			if (n < 100L) { // 1 or 2
// 				if (n < 10L) {
// 					return 1;
// 				} else {
// 					return 2;
// 				}
// 			} else { // 3 or 4
// 				if (n < 1000L) {
// 					return 3;
// 				} else {
// 					return 4;
// 				}
// 			}
// 		} else { // from 5 a 20 (albeit longs can't have more than 18 or 19)
// 			if (n < 1000000000000L) { // from 5 to 12
// 				if (n < 100000000L) { // from 5 to 8
// 					if (n < 1000000L) { // 5 or 6
// 						if (n < 100000L) {
// 							return 5;
// 						} else {
// 							return 6;
// 						}
// 					} else { // 7 u 8
// 						if (n < 10000000L) {
// 							return 7;
// 						} else {
// 							return 8;
// 						}
// 					}
// 				} else { // from 9 to 12
// 					if (n < 10000000000L) { // 9 or 10
// 						if (n < 1000000000L) {
// 							return 9;
// 						} else {
// 							return 10;
// 						}
// 					} else { // 11 or 12
// 						if (n < 100000000000L) {
// 							return 11;
// 						} else {
// 							return 12;
// 						}
// 					}
// 				}
// 			} else { // from 13 to ... (18 or 20)
// 				if (n < 10000000000000000L) { // from 13 to 16
// 					if (n < 100000000000000L) { // 13 or 14
// 						if (n < 10000000000000L) {
// 							return 13;
// 						} else {
// 							return 14;
// 						}
// 					} else { // 15 or 16
// 						if (n < 1000000000000000L) {
// 							return 15;
// 						} else {
// 							return 16;
// 						}
// 					}
// 				} else { // from 17 to ...¿20?
// 					if (n < 1000000000000000000L) { // 17 or 18
// 						if (n < 100000000000000000L) {
// 							return 17;
// 						} else {
// 							return 18;
// 						}
// 					} else { // 19? Can it be?
// 						// 10000000000000000000L is'nt a valid long.
// 						return 19;
// 					}
// 				}
// 			}
// 		}
// 	}
// }


// Path: src/com/ezio/multiwii/dashboard/HorizonClass.java
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.Paint.Style;
import android.graphics.Rect;
import android.util.AttributeSet;
import com.ezio.multiwii.R;
import com.ezio.multiwii.helpers.Functions;

		mPaint.setColor(Color.rgb(50, 50, 50));
		mPaint.setStyle(Style.FILL_AND_STROKE);
		mPaint.setTextSize(12);

		DrawingRec = new Rect();
	}

	public void Set(float pitch, float roll) {
		this.roll = -roll;
		this.pitch = pitch;
	}

	public void Draw(Canvas c, int x, int y) {
		// super.onDraw(c);
		// c.drawRect(DrawingRec, mPaint);

		if (!D) {
			matrix.reset();
			matrix.postRotate(roll, bmp[0].getWidth() / 2, bmp[0].getHeight() / 2);
			matrix.postTranslate(x + (ww - bmp[0].getWidth()) / 2, y + (hh - bmp[0].getHeight()) / 2);
			c.drawBitmap(bmp[0], matrix, null);

			matrix.reset();
			if (pitch > 90)
				pitch = 90;
			if (pitch < -90)
				pitch = -90;
			tmp = Functions.map(pitch, -90, 90, -(bmp[1].getHeight() / 2), bmp[1].getHeight() / 2);
			matrix.postRotate(roll, bmp[1].getWidth() / 2, bmp[1].getHeight() / 2 - tmp);
			matrix.postTranslate(x + (ww - bmp[1].getWidth()) / 2, y + ((hh - bmp[1].getHeight()) / 2) + tmp);
			c.drawBitmap(bmp[1], matrix, null);