summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/filtershow/ui/FramedTextButton.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/filtershow/ui/FramedTextButton.java')
-rw-r--r--src/com/android/gallery3d/filtershow/ui/FramedTextButton.java137
1 files changed, 137 insertions, 0 deletions
diff --git a/src/com/android/gallery3d/filtershow/ui/FramedTextButton.java b/src/com/android/gallery3d/filtershow/ui/FramedTextButton.java
new file mode 100644
index 000000000..c1e4109d2
--- /dev/null
+++ b/src/com/android/gallery3d/filtershow/ui/FramedTextButton.java
@@ -0,0 +1,137 @@
+/*
+ * Copyright (C) 2012 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.gallery3d.filtershow.ui;
+
+import android.content.Context;
+import android.content.res.TypedArray;
+import android.graphics.Canvas;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.graphics.Rect;
+import android.util.AttributeSet;
+import android.widget.ImageButton;
+
+import com.android.gallery3d.R;
+
+public class FramedTextButton extends ImageButton {
+ private static final String LOGTAG = "FramedTextButton";
+ private String mText = null;
+ private static int mTextSize = 24;
+ private static int mTextPadding = 20;
+ private static Paint gPaint = new Paint();
+ private static Path gPath = new Path();
+ private static int mTrianglePadding = 2;
+ private static int mTriangleSize = 30;
+
+ public static void setTextSize(int value) {
+ mTextSize = value;
+ }
+
+ public static void setTextPadding(int value) {
+ mTextPadding = value;
+ }
+
+ public static void setTrianglePadding(int value) {
+ mTrianglePadding = value;
+ }
+
+ public static void setTriangleSize(int value) {
+ mTriangleSize = value;
+ }
+
+ public void setText(String text) {
+ mText = text;
+ invalidate();
+ }
+
+ public void setTextFrom(int itemId) {
+ switch (itemId) {
+ case R.id.curve_menu_rgb: {
+ setText(getContext().getString(R.string.curves_channel_rgb));
+ break;
+ }
+ case R.id.curve_menu_red: {
+ setText(getContext().getString(R.string.curves_channel_red));
+ break;
+ }
+ case R.id.curve_menu_green: {
+ setText(getContext().getString(R.string.curves_channel_green));
+ break;
+ }
+ case R.id.curve_menu_blue: {
+ setText(getContext().getString(R.string.curves_channel_blue));
+ break;
+ }
+ }
+ invalidate();
+ }
+
+ public FramedTextButton(Context context) {
+ this(context, null);
+ }
+
+ public FramedTextButton(Context context, AttributeSet attrs) {
+ super(context, attrs);
+ if (attrs == null) {
+ return;
+ }
+ TypedArray a = getContext().obtainStyledAttributes(
+ attrs, R.styleable.ImageButtonTitle);
+
+ mText = a.getString(R.styleable.ImageButtonTitle_android_text);
+ }
+
+ public String getText(){
+ return mText;
+ }
+
+ @Override
+ public void onDraw(Canvas canvas) {
+ gPaint.setARGB(96, 255, 255, 255);
+ gPaint.setStrokeWidth(2);
+ gPaint.setStyle(Paint.Style.STROKE);
+ int w = getWidth();
+ int h = getHeight();
+ canvas.drawRect(mTextPadding, mTextPadding, w - mTextPadding,
+ h - mTextPadding, gPaint);
+ gPath.reset();
+ gPath.moveTo(w - mTextPadding - mTrianglePadding - mTriangleSize,
+ h - mTextPadding - mTrianglePadding);
+ gPath.lineTo(w - mTextPadding - mTrianglePadding,
+ h - mTextPadding - mTrianglePadding - mTriangleSize);
+ gPath.lineTo(w - mTextPadding - mTrianglePadding,
+ h - mTextPadding - mTrianglePadding);
+ gPath.close();
+ gPaint.setARGB(128, 255, 255, 255);
+ gPaint.setStrokeWidth(1);
+ gPaint.setStyle(Paint.Style.FILL_AND_STROKE);
+ canvas.drawPath(gPath, gPaint);
+ if (mText != null) {
+ gPaint.reset();
+ gPaint.setARGB(255, 255, 255, 255);
+ gPaint.setTextSize(mTextSize);
+ float textWidth = gPaint.measureText(mText);
+ Rect bounds = new Rect();
+ gPaint.getTextBounds(mText, 0, mText.length(), bounds);
+ int x = (int) ((w - textWidth) / 2);
+ int y = (h + bounds.height()) / 2;
+
+ canvas.drawText(mText, x, y, gPaint);
+ }
+ }
+
+}