// Path: src/com/painless/glclock/Constants.java
// public static final class WidgetCode {
// 	public final String code;
// 	public final String prefix;
// 
// 	public final String offset;
// 	public final String offsetDefault;
// 
// 	public final String color;
// 	public final String zoom;
// 
// 	private WidgetCode(String code, String defaultOffset) {
// 		this.code = code + "Enabled";
// 		this.offset = code + "Offset";
// 		this.color  = code + "color";
// 		this.zoom  = code + "zoom";
// 		this.prefix = code + "_";
// 
// 		this.offsetDefault = defaultOffset;
// 	}
// 
// 	public int[] getOffset(SharedPreferences pref) {
// 		final String[] values = pref.getString(offset, offsetDefault).split(",");
// 
// 		final int[] offsets = new int[2];
// 		try {
// 			offsets[0] = Integer.valueOf(values[0]);
// 			offsets[1] = Integer.valueOf(values[1]);
// 		} catch (final Exception e) {
// 			offsets[0] = 0;
// 			offsets[1] = 0;
// 		}
// 		return offsets;
// 	}
// 
// 	public float getZoom(SharedPreferences pref) {
// 		return pref.getFloat(zoom, 1);
// 	}
// }
// 
// Path: src/com/painless/glclock/Debug.java
// public class Debug {
// 
// 	private static final String TAG = "ClockGL";
// 
// 	public static void log(Object msg) {
// 		Log.e(getTag(), msg + "");
// 	}
// 
// 	public static void log(Throwable err) {
// 		Log.e(getTag(), err.getMessage() + " ");
// 		err.printStackTrace();
// 	}
// 
// 	private static String getTag() {
// 		boolean startFound = false;
// 		String className = Debug.class.getName();
// 
// 		StackTraceElement[] trace = Thread.currentThread().getStackTrace();
// 		for(StackTraceElement item : trace){
// 			if (item.getClassName().equals(className)) {
// 				startFound = true;
// 			} else if (startFound) {
// 				return String.format(
// 						"[%s/%s/%s]", item.getFileName(), item.getMethodName(), item.getLineNumber());
// 			}
// 		}
// 
// 		return TAG;
// 	}
// }


import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.graphics.Rect;
import com.painless.glclock.Constants.WidgetCode;
import com.painless.glclock.Debug;
		setZoom(mMain.prefs.getFloat(widgetCode.zoom, 1));
	}

	public void showDrag(int sx, int sy) {
		sx += offsetX;
		sy += offsetY;

		move(sx, sy);
	}

	public void finishMove(int endX, int endY) {
		offsetX += endX;
		offsetY += endY;
		dstRect.offsetTo(mMain.halfW + offsetX, mMain.halfH + offsetY);

		move(offsetX, offsetY);
	}

	private void move(int ox, int oy) {
		dstRect.offsetTo(mMain.halfW + ox + zoomOffsetX, mMain.halfH + oy + zoomOffsetY);
	}

	public boolean isIn(int pointX, int pointY) {
		return dstRect.contains(pointX, pointY);
	}

	public void saveSettings() {
		final int fx = offsetX + previewBitmap.getWidth() / 2;
		final int fy = offsetY + previewBitmap.getHeight() / 2;
		mMain.prefs.edit().putString(widgetCode.offset, fx + "," + fy).commit();
// Path: src/com/painless/glclock/Constants.java
// public static final class WidgetCode {
// 	public final String code;
// 	public final String prefix;
// 
// 	public final String offset;
// 	public final String offsetDefault;
// 
// 	public final String color;
// 	public final String zoom;
// 
// 	private WidgetCode(String code, String defaultOffset) {
// 		this.code = code + "Enabled";
// 		this.offset = code + "Offset";
// 		this.color  = code + "color";
// 		this.zoom  = code + "zoom";
// 		this.prefix = code + "_";
// 
// 		this.offsetDefault = defaultOffset;
// 	}
// 
// 	public int[] getOffset(SharedPreferences pref) {
// 		final String[] values = pref.getString(offset, offsetDefault).split(",");
// 
// 		final int[] offsets = new int[2];
// 		try {
// 			offsets[0] = Integer.valueOf(values[0]);
// 			offsets[1] = Integer.valueOf(values[1]);
// 		} catch (final Exception e) {
// 			offsets[0] = 0;
// 			offsets[1] = 0;
// 		}
// 		return offsets;
// 	}
// 
// 	public float getZoom(SharedPreferences pref) {
// 		return pref.getFloat(zoom, 1);
// 	}
// }
// 
// Path: src/com/painless/glclock/Debug.java
// public class Debug {
// 
// 	private static final String TAG = "ClockGL";
// 
// 	public static void log(Object msg) {
// 		Log.e(getTag(), msg + "");
// 	}
// 
// 	public static void log(Throwable err) {
// 		Log.e(getTag(), err.getMessage() + " ");
// 		err.printStackTrace();
// 	}
// 
// 	private static String getTag() {
// 		boolean startFound = false;
// 		String className = Debug.class.getName();
// 
// 		StackTraceElement[] trace = Thread.currentThread().getStackTrace();
// 		for(StackTraceElement item : trace){
// 			if (item.getClassName().equals(className)) {
// 				startFound = true;
// 			} else if (startFound) {
// 				return String.format(
// 						"[%s/%s/%s]", item.getFileName(), item.getMethodName(), item.getLineNumber());
// 			}
// 		}
// 
// 		return TAG;
// 	}
// }


// Path: src/com/painless/glclock/setting/DragImg.java
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.PorterDuff;
import android.graphics.PorterDuffColorFilter;
import android.graphics.Rect;
import com.painless.glclock.Constants.WidgetCode;
import com.painless.glclock.Debug;

		setZoom(mMain.prefs.getFloat(widgetCode.zoom, 1));
	}

	public void showDrag(int sx, int sy) {
		sx += offsetX;
		sy += offsetY;

		move(sx, sy);
	}

	public void finishMove(int endX, int endY) {
		offsetX += endX;
		offsetY += endY;
		dstRect.offsetTo(mMain.halfW + offsetX, mMain.halfH + offsetY);

		move(offsetX, offsetY);
	}

	private void move(int ox, int oy) {
		dstRect.offsetTo(mMain.halfW + ox + zoomOffsetX, mMain.halfH + oy + zoomOffsetY);
	}

	public boolean isIn(int pointX, int pointY) {
		return dstRect.contains(pointX, pointY);
	}

	public void saveSettings() {
		final int fx = offsetX + previewBitmap.getWidth() / 2;
		final int fy = offsetY + previewBitmap.getHeight() / 2;
		mMain.prefs.edit().putString(widgetCode.offset, fx + "," + fy).commit();
		Debug.log("Save " + widgetCode.offset + " " + fx + "," + fy);