package com.android.gallery3d.filtershow.editors;
-import android.app.Dialog;
+import android.app.ActionBar;
import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.BitmapFactory;
+import android.graphics.Color;
+import android.graphics.drawable.GradientDrawable;
+import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
-import android.view.WindowManager.LayoutParams;
+import android.view.ViewGroup;
import android.widget.Button;
import android.widget.FrameLayout;
+import android.widget.ImageButton;
+import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.PopupMenu;
import android.widget.SeekBar;
import com.android.gallery3d.R;
-import com.android.gallery3d.filtershow.FilterShowActivity;
-import com.android.gallery3d.filtershow.colorpicker.ColorGridDialog;
-import com.android.gallery3d.filtershow.colorpicker.RGBListener;
+import com.android.gallery3d.filtershow.colorpicker.ColorHueView;
+import com.android.gallery3d.filtershow.colorpicker.ColorListener;
+import com.android.gallery3d.filtershow.colorpicker.ColorOpacityView;
+import com.android.gallery3d.filtershow.colorpicker.ColorSVRectView;
+import com.android.gallery3d.filtershow.controller.BitmapCaller;
+import com.android.gallery3d.filtershow.controller.ColorChooser;
+import com.android.gallery3d.filtershow.controller.FilterView;
+import com.android.gallery3d.filtershow.controller.ParameterColor;
import com.android.gallery3d.filtershow.filters.FilterDrawRepresentation;
import com.android.gallery3d.filtershow.filters.FilterRepresentation;
import com.android.gallery3d.filtershow.filters.ImageFilterDraw;
import com.android.gallery3d.filtershow.imageshow.ImageDraw;
-public class EditorDraw extends Editor {
+public class EditorDraw extends ParametricEditor implements FilterView {
private static final String LOGTAG = "EditorDraw";
public static final int ID = R.id.editorDraw;
public ImageDraw mImageDraw;
+ private static final int MODE_SIZE = FilterDrawRepresentation.PARAM_SIZE;
+ private static final int MODE_SIZEE = FilterDrawRepresentation.PARAM_SIZE;
+ private static final int MODE_STYLE = FilterDrawRepresentation.PARAM_STYLE;
+ private static final int MODE_COLOR = FilterDrawRepresentation.PARAM_COLOR;
+ int[] brushIcons = {
+ R.drawable.brush_flat,
+ R.drawable.brush_round,
+ R.drawable.brush_gauss,
+ R.drawable.brush_marker,
+ R.drawable.brush_spatter
+ };
+
+ int[] mBasColors = {
+ FilterDrawRepresentation.DEFAULT_MENU_COLOR1,
+ FilterDrawRepresentation.DEFAULT_MENU_COLOR2,
+ FilterDrawRepresentation.DEFAULT_MENU_COLOR3,
+ FilterDrawRepresentation.DEFAULT_MENU_COLOR4,
+ FilterDrawRepresentation.DEFAULT_MENU_COLOR5,
+ };
+ private EditorDrawTabletUI mTabletUI;
+ private String mParameterString;
+ private int mSelectedColorButton;
public EditorDraw() {
super(ID);
}
@Override
+ public String calculateUserMessage(Context context, String effectName, Object parameterValue) {
+ FilterDrawRepresentation rep = getDrawRep();
+ if (rep == null) {
+ return "";
+ }
+ if (mParameterString == null) {
+ mParameterString = "";
+ }
+ String paramString;
+ String val = rep.getValueString();
+
+ mImageDraw.displayDrawLook();
+ return mParameterString + val;
+ }
+
+ @Override
public void createEditor(Context context, FrameLayout frameLayout) {
- super.createEditor(context, frameLayout);
mView = mImageShow = mImageDraw = new ImageDraw(context);
+ super.createEditor(context, frameLayout);
mImageDraw.setEditor(this);
}
public void reflectCurrentFilter() {
super.reflectCurrentFilter();
FilterRepresentation rep = getLocalRepresentation();
-
if (rep != null && getLocalRepresentation() instanceof FilterDrawRepresentation) {
FilterDrawRepresentation drawRep = (FilterDrawRepresentation) getLocalRepresentation();
mImageDraw.setFilterDrawRepresentation(drawRep);
+ if (!ParametricEditor.useCompact(mContext)) {
+ if (mTabletUI != null) {
+
+ mTabletUI.setDrawRepresentation(drawRep);
+ }
+ return;
+ }
+
+ drawRep.getParam(FilterDrawRepresentation.PARAM_STYLE).setFilterView(this);
+ drawRep.setPramMode(FilterDrawRepresentation.PARAM_COLOR);
+ mParameterString = mContext.getString(R.string.draw_hue);
+ control(drawRep.getCurrentParam(), mEditControl);
}
}
@Override
public void openUtilityPanel(final LinearLayout accessoryViewList) {
Button view = (Button) accessoryViewList.findViewById(R.id.applyEffect);
- view.setText(mContext.getString(R.string.draw_style));
+ view.setText(mContext.getString(R.string.draw_hue));
view.setOnClickListener(new OnClickListener() {
- @Override
+ @Override
public void onClick(View arg0) {
showPopupMenu(accessoryViewList);
}
});
}
+ @Override
+ public boolean showsSeekBar() {
+ return false;
+ }
+
private void showPopupMenu(LinearLayout accessoryViewList) {
final Button button = (Button) accessoryViewList.findViewById(
R.id.applyEffect);
@Override
public boolean onMenuItemClick(MenuItem item) {
- ImageFilterDraw filter = (ImageFilterDraw) mImageShow.getCurrentFilter();
- if (item.getItemId() == R.id.draw_menu_color) {
- showColorGrid(item);
- } else if (item.getItemId() == R.id.draw_menu_size) {
- showSizeDialog(item);
- } else if (item.getItemId() == R.id.draw_menu_style_brush_marker) {
- ImageDraw idraw = (ImageDraw) mImageShow;
- idraw.setStyle(ImageFilterDraw.BRUSH_STYLE_MARKER);
- } else if (item.getItemId() == R.id.draw_menu_style_brush_spatter) {
- ImageDraw idraw = (ImageDraw) mImageShow;
- idraw.setStyle(ImageFilterDraw.BRUSH_STYLE_SPATTER);
- } else if (item.getItemId() == R.id.draw_menu_style_line) {
- ImageDraw idraw = (ImageDraw) mImageShow;
- idraw.setStyle(ImageFilterDraw.SIMPLE_STYLE);
- } else if (item.getItemId() == R.id.draw_menu_clear) {
- ImageDraw idraw = (ImageDraw) mImageShow;
- idraw.resetParameter();
- commitLocalRepresentation();
- }
- mView.invalidate();
+ selectMenuItem(item);
return true;
}
});
popupMenu.show();
+
}
- public void showSizeDialog(final MenuItem item) {
- FilterShowActivity ctx = mImageShow.getActivity();
- final Dialog dialog = new Dialog(ctx);
- dialog.setTitle(R.string.draw_size_title);
- dialog.setContentView(R.layout.filtershow_draw_size);
- final SeekBar bar = (SeekBar) dialog.findViewById(R.id.sizeSeekBar);
+ protected void selectMenuItem(MenuItem item) {
+ ImageFilterDraw filter = (ImageFilterDraw) mImageShow.getCurrentFilter();
+ FilterDrawRepresentation rep = getDrawRep();
+ if (rep == null) {
+ return;
+ }
+
+ switch (item.getItemId()) {
+ case R.id.draw_menu_clear:
+ clearDrawing();
+ break;
+ case R.id.draw_menu_size:
+ rep.setPramMode(FilterDrawRepresentation.PARAM_SIZE);
+ break;
+ case R.id.draw_menu_style:
+ rep.setPramMode(FilterDrawRepresentation.PARAM_STYLE);
+ break;
+ case R.id.draw_menu_color:
+ rep.setPramMode(FilterDrawRepresentation.PARAM_COLOR);
+ break;
+ }
+ if (item.getItemId() != R.id.draw_menu_clear) {
+ mParameterString = item.getTitle().toString();
+ }
+ if (mControl instanceof ColorChooser) {
+ ColorChooser c = (ColorChooser) mControl;
+ mBasColors = c.getColorSet();
+ }
+ control(rep.getCurrentParam(), mEditControl);
+ if (mControl instanceof ColorChooser) {
+ ColorChooser c = (ColorChooser) mControl;
+ c.setColorSet(mBasColors);
+ }
+ mControl.updateUI();
+ mView.invalidate();
+ }
+
+ public void clearDrawing(){
ImageDraw idraw = (ImageDraw) mImageShow;
- bar.setProgress(idraw.getSize());
- Button button = (Button) dialog.findViewById(R.id.sizeAcceptButton);
- button.setOnClickListener(new OnClickListener() {
+ idraw.resetParameter();
+ commitLocalRepresentation();
+ }
+
+ @Override
+ public void setUtilityPanelUI(View actionButton, View editControl) {
+ if (ParametricEditor.useCompact(mContext)) {
+ super.setUtilityPanelUI(actionButton, editControl);
+ return;
+ }
+ mSeekBar = (SeekBar) editControl.findViewById(R.id.primarySeekBar);
+ if (mSeekBar != null) {
+ mSeekBar.setVisibility(View.GONE);
+ }
+ LayoutInflater inflater =
+ (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ LinearLayout lp = (LinearLayout) inflater.inflate(
+ R.layout.filtershow_draw_ui, (ViewGroup) editControl, true);
+
+ mTabletUI = new EditorDrawTabletUI(this, mContext, lp);
- @Override
- public void onClick(View arg0) {
- int p = bar.getProgress();
- ImageDraw idraw = (ImageDraw) mImageShow;
- idraw.setSize(p + 1);
- dialog.dismiss();
- }
- });
- dialog.show();
}
- public void showColorGrid(final MenuItem item) {
- RGBListener cl = new RGBListener() {
- @Override
- public void setColor(int rgb) {
- ImageDraw idraw = (ImageDraw) mImageShow;
- idraw.setColor(rgb);
- }
- };
- ColorGridDialog cpd = new ColorGridDialog(mImageShow.getActivity(), cl);
- cpd.show();
- LayoutParams params = cpd.getWindow().getAttributes();
+ FilterDrawRepresentation getDrawRep() {
+ FilterRepresentation rep = getLocalRepresentation();
+ if (rep instanceof FilterDrawRepresentation) {
+ return (FilterDrawRepresentation) rep;
+ }
+ return null;
}
+
+ @Override
+ public void computeIcon(int index, BitmapCaller caller) {
+ Bitmap bitmap = BitmapFactory.decodeResource(mContext.getResources(), brushIcons[index]);
+ caller.available(bitmap);
+ }
+
+ public int getBrushIcon(int type) {
+ return brushIcons[type];
+ }
+
}