Remove renderscript filters
Test: treehugger
Change-Id: I87ff245cbf536c8bc2d51f46315d3ad4ad4f8b6a
diff --git a/Android.mk b/Android.mk
index 9aef7f5..d26d555 100644
--- a/Android.mk
+++ b/Android.mk
@@ -22,7 +22,6 @@
LOCAL_SRC_FILES := \
$(call all-java-files-under, src) \
- $(call all-renderscript-files-under, src) \
$(call all-java-files-under, src_pd)
LOCAL_RESOURCE_DIR += $(LOCAL_PATH)/res
diff --git a/res/layout/editor_grad_button.xml b/res/layout/editor_grad_button.xml
deleted file mode 100644
index 032eb68..0000000
--- a/res/layout/editor_grad_button.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2013 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.
--->
-
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:layout_alignParentTop="true"
- android:layout_marginStart="26dp"
- android:layout_marginTop="21dp"
- android:orientation="horizontal" >
-
- <com.android.gallery3d.filtershow.ui.FramedTextButton
- android:id="@+id/editorGradButton"
- android:layout_width="84dip"
- android:layout_height="84dip"
- android:layout_gravity="center_vertical|left"
- android:background="@drawable/filtershow_button_background"
- android:scaleType="centerInside"
- android:visibility="visible"
- android:text="@string/editor_grad_style" />
-
- <ToggleButton
- android:id="@+id/editor_grad_new"
- android:layout_width="84dip"
- android:layout_height="84dip"
- android:layout_gravity="center_vertical|left"
- android:background="@drawable/filtershow_grad_button"
- android:scaleType="centerInside"
- android:visibility="visible"
- android:textOff="@string/editor_grad_new"
- android:textOn="@string/editor_grad_new" />
-
-</LinearLayout>
\ No newline at end of file
diff --git a/res/layout/filtershow_grad_editor.xml b/res/layout/filtershow_grad_editor.xml
deleted file mode 100644
index 6c4721e..0000000
--- a/res/layout/filtershow_grad_editor.xml
+++ /dev/null
@@ -1,29 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2013 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.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:id="@+id/gradEditor"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1" >
-
- <com.android.gallery3d.filtershow.imageshow.ImageGrad
- android:id="@+id/imageShow"
- android:layout_width="match_parent"
- android:layout_height="wrap_content" />
-
- </FrameLayout>
\ No newline at end of file
diff --git a/res/layout/filtershow_vignette_editor.xml b/res/layout/filtershow_vignette_editor.xml
deleted file mode 100644
index 9c9b4cb..0000000
--- a/res/layout/filtershow_vignette_editor.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2013 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.
--->
-
-<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:iconbutton="http://schemas.android.com/apk/res/com.android.gallery3d"
- android:id="@+id/vignetteEditor"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_weight="1" >
-
- <com.android.gallery3d.filtershow.imageshow.ImageVignette
- android:id="@+id/imageVignette"
- android:layout_width="match_parent"
- android:layout_height="wrap_content" />
-
- </FrameLayout>
\ No newline at end of file
diff --git a/res/values/filtershow_ids.xml b/res/values/filtershow_ids.xml
index 8cfb250..677976b 100644
--- a/res/values/filtershow_ids.xml
+++ b/res/values/filtershow_ids.xml
@@ -48,8 +48,6 @@
<item type="id" name="editorRotate" />
<item type="id" name="editorStraighten" />
<item type="id" name="editorParametric" />
- <item type="id" name="editorGrad" />
- <item type="id" name="editorChanSat" />
<item type="id" name="editorMakeup" />
<item type="id" name="editorDualCam" />
<item type="id" name="editorDualCamSketch" />
diff --git a/src/com/android/gallery3d/filtershow/editors/EditorChanSat.java b/src/com/android/gallery3d/filtershow/editors/EditorChanSat.java
deleted file mode 100644
index 6b7d47f..0000000
--- a/src/com/android/gallery3d/filtershow/editors/EditorChanSat.java
+++ /dev/null
@@ -1,381 +0,0 @@
-/*
- * Copyright (C) 2013 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.editors;
-
-import android.content.Context;
-import android.graphics.Bitmap;
-import android.os.Handler;
-import android.view.LayoutInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.widget.LinearLayout;
-import android.widget.PopupMenu;
-import android.widget.SeekBar;
-import android.widget.SeekBar.OnSeekBarChangeListener;
-
-import android.widget.TextView;
-import com.android.gallery3d.R;
-import com.android.gallery3d.filtershow.FilterShowActivity;
-import com.android.gallery3d.filtershow.controller.BasicParameterStyle;
-import com.android.gallery3d.filtershow.controller.BitmapCaller;
-import com.android.gallery3d.filtershow.controller.FilterView;
-import com.android.gallery3d.filtershow.controller.Parameter;
-import com.android.gallery3d.filtershow.filters.FilterBasicRepresentation;
-import com.android.gallery3d.filtershow.filters.FilterChanSatRepresentation;
-import com.android.gallery3d.filtershow.filters.FilterRepresentation;
-import com.android.gallery3d.filtershow.imageshow.MasterImage;
-import com.android.gallery3d.filtershow.pipeline.ImagePreset;
-
-public class EditorChanSat extends ParametricEditor implements OnSeekBarChangeListener, FilterView {
- public static final int ID = R.id.editorChanSat;
- private final String LOGTAG = "EditorGrunge";
- private SwapButton mButton;
- private final Handler mHandler = new Handler();
-
- private SeekBar mMainBar;
- private SeekBar mRedBar;
- private SeekBar mYellowBar;
- private SeekBar mGreenBar;
- private SeekBar mCyanBar;
- private SeekBar mBlueBar;
- private SeekBar mMagentaBar;
- private TextView mMainValue;
- private TextView mRedValue;
- private TextView mYellowValue;
- private TextView mGreenValue;
- private TextView mCyanValue;
- private TextView mBlueValue;
- private TextView mMagentaValue;
-
- int[] mMenuStrings = {
- R.string.editor_chan_sat_main,
- R.string.editor_chan_sat_red,
- R.string.editor_chan_sat_yellow,
- R.string.editor_chan_sat_green,
- R.string.editor_chan_sat_cyan,
- R.string.editor_chan_sat_blue,
- R.string.editor_chan_sat_magenta
- };
-
- String mCurrentlyEditing = null;
-
- public EditorChanSat() {
- super(ID, R.layout.filtershow_default_editor, R.id.basicEditor);
- }
-
- @Override
- public String calculateUserMessage(Context context, String effectName, Object parameterValue) {
- FilterRepresentation rep = getLocalRepresentation();
- if (rep == null || !(rep instanceof FilterChanSatRepresentation)) {
- return "";
- }
- FilterChanSatRepresentation csrep = (FilterChanSatRepresentation) rep;
- int mode = csrep.getParameterMode();
- String paramString;
-
- paramString = mContext.getString(mMenuStrings[mode]);
-
- int val = csrep.getCurrentParameter();
- return paramString + ((val > 0) ? " +" : " ") + val;
- }
-
- @Override
- public void openUtilityPanel(final LinearLayout accessoryViewList) {
- mButton = (SwapButton) accessoryViewList.findViewById(R.id.applyEffect);
- mButton.setText(mContext.getString(R.string.editor_chan_sat_main));
-
- if (useCompact(mContext)) {
- final PopupMenu popupMenu = new PopupMenu(mImageShow.getActivity(), mButton);
-
- popupMenu.getMenuInflater().inflate(R.menu.filtershow_menu_chan_sat,
- popupMenu.getMenu());
-
- popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
- @Override
- public boolean onMenuItemClick(MenuItem item) {
- selectMenuItem(item);
- return true;
- }
- });
- mButton.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- popupMenu.show();
- ((FilterShowActivity)mContext).onShowMenu(popupMenu);
- }
- });
- mButton.setListener(this);
-
- FilterChanSatRepresentation csrep = getChanSatRep();
- String menuString = mContext.getString(mMenuStrings[0]);
- switchToMode(csrep, FilterChanSatRepresentation.MODE_MASTER, menuString);
- } else {
- mButton.setText(mContext.getString(R.string.saturation));
- }
- }
-
- @Override
- public void reflectCurrentFilter() {
- if (useCompact(mContext)) {
- super.reflectCurrentFilter();
- updateText();
- return;
- }
- mLocalRepresentation = null;
- if (getLocalRepresentation() != null
- && getLocalRepresentation() instanceof FilterChanSatRepresentation) {
- FilterChanSatRepresentation rep =
- (FilterChanSatRepresentation) getLocalRepresentation();
- int value = rep.getValue(FilterChanSatRepresentation.MODE_MASTER);
- mMainBar.setProgress(value + 100);
- mMainValue.setText("" + value);
- value = rep.getValue(FilterChanSatRepresentation.MODE_RED);
- mRedBar.setProgress(value + 100);
- mRedValue.setText("" + value);
- value = rep.getValue(FilterChanSatRepresentation.MODE_YELLOW);
- mYellowBar.setProgress(value + 100);
- mYellowValue.setText("" + value);
- value = rep.getValue(FilterChanSatRepresentation.MODE_GREEN);
- mGreenBar.setProgress(value + 100);
- mGreenValue.setText("" + value);
- value = rep.getValue(FilterChanSatRepresentation.MODE_CYAN);
- mCyanBar.setProgress(value + 100);
- mCyanValue.setText("" + value);
- value = rep.getValue(FilterChanSatRepresentation.MODE_BLUE);
- mBlueBar.setProgress(value + 100);
- mBlueValue.setText("" + value);
- value = rep.getValue(FilterChanSatRepresentation.MODE_MAGENTA);
- mMagentaBar.setProgress(value + 100);
- mMagentaValue.setText("" + value);
- super.reflectCurrentFilter();
- updateText();
- }
- }
-
- @Override
- public void setEditPanelUI(View editControl) {
- if (useCompact(mContext)) {
- super.setEditPanelUI(editControl);
- return;
- }
- mEditControl = editControl;
- mEditTitle.setCompoundDrawables(null, null, null, null);
- LinearLayout group = (LinearLayout) editControl;
- LayoutInflater inflater =
- (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- LinearLayout controls = (LinearLayout) inflater.inflate(
- R.layout.filtershow_saturation_controls, group, false);
- ViewGroup.LayoutParams lp = new LinearLayout.LayoutParams(
- ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
- controls.setLayoutParams(lp);
- group.removeAllViews();
- group.addView(controls);
- mMainBar = (SeekBar) controls.findViewById(R.id.mainSeekbar);
- mMainBar.setMax(200);
- mMainBar.setOnSeekBarChangeListener(this);
- mMainValue = (TextView) controls.findViewById(R.id.mainValue);
- mRedBar = (SeekBar) controls.findViewById(R.id.redSeekBar);
- mRedBar.setMax(200);
- mRedBar.setOnSeekBarChangeListener(this);
- mRedValue = (TextView) controls.findViewById(R.id.redValue);
- mYellowBar = (SeekBar) controls.findViewById(R.id.yellowSeekBar);
- mYellowBar.setMax(200);
- mYellowBar.setOnSeekBarChangeListener(this);
- mYellowValue = (TextView) controls.findViewById(R.id.yellowValue);
- mGreenBar = (SeekBar) controls.findViewById(R.id.greenSeekBar);
- mGreenBar.setMax(200);
- mGreenBar.setOnSeekBarChangeListener(this);
- mGreenValue = (TextView) controls.findViewById(R.id.greenValue);
- mCyanBar = (SeekBar) controls.findViewById(R.id.cyanSeekBar);
- mCyanBar.setMax(200);
- mCyanBar.setOnSeekBarChangeListener(this);
- mCyanValue = (TextView) controls.findViewById(R.id.cyanValue);
- mBlueBar = (SeekBar) controls.findViewById(R.id.blueSeekBar);
- mBlueBar.setMax(200);
- mBlueBar.setOnSeekBarChangeListener(this);
- mBlueValue = (TextView) controls.findViewById(R.id.blueValue);
- mMagentaBar = (SeekBar) controls.findViewById(R.id.magentaSeekBar);
- mMagentaBar.setMax(200);
- mMagentaBar.setOnSeekBarChangeListener(this);
- mMagentaValue = (TextView) controls.findViewById(R.id.magentaValue);
- }
-
- public int getParameterIndex(int id) {
- switch (id) {
- case R.id.editor_chan_sat_main:
- return FilterChanSatRepresentation.MODE_MASTER;
- case R.id.editor_chan_sat_red:
- return FilterChanSatRepresentation.MODE_RED;
- case R.id.editor_chan_sat_yellow:
- return FilterChanSatRepresentation.MODE_YELLOW;
- case R.id.editor_chan_sat_green:
- return FilterChanSatRepresentation.MODE_GREEN;
- case R.id.editor_chan_sat_cyan:
- return FilterChanSatRepresentation.MODE_CYAN;
- case R.id.editor_chan_sat_blue:
- return FilterChanSatRepresentation.MODE_BLUE;
- case R.id.editor_chan_sat_magenta:
- return FilterChanSatRepresentation.MODE_MAGENTA;
- }
- return -1;
- }
-
- @Override
- public void detach() {
- if (mButton == null) {
- return;
- }
- mButton.setListener(null);
- mButton.setOnClickListener(null);
- }
-
- private void updateSeekBar(FilterChanSatRepresentation rep) {
- mControl.updateUI();
- }
-
- @Override
- protected Parameter getParameterToEdit(FilterRepresentation rep) {
- if (rep instanceof FilterChanSatRepresentation) {
- FilterChanSatRepresentation csrep = (FilterChanSatRepresentation) rep;
- Parameter param = csrep.getFilterParameter(csrep.getParameterMode());
- if (param instanceof BasicParameterStyle) {
- param.setFilterView(EditorChanSat.this);
- }
- return param;
- }
- return null;
- }
-
- private FilterChanSatRepresentation getChanSatRep() {
- FilterRepresentation rep = getLocalRepresentation();
- if (rep != null
- && rep instanceof FilterChanSatRepresentation) {
- FilterChanSatRepresentation csrep = (FilterChanSatRepresentation) rep;
- return csrep;
- }
- return null;
- }
-
- @Override
- public void computeIcon(int n, BitmapCaller caller) {
- FilterChanSatRepresentation rep = getChanSatRep();
- if (rep == null) return;
- rep = (FilterChanSatRepresentation) rep.copy();
- ImagePreset preset = new ImagePreset();
- preset.addFilter(rep);
- Bitmap src = MasterImage.getImage().getThumbnailBitmap();
- caller.available(src);
- }
-
- protected void selectMenuItem(MenuItem item) {
- if (getLocalRepresentation() != null
- && getLocalRepresentation() instanceof FilterChanSatRepresentation) {
- FilterChanSatRepresentation csrep =
- (FilterChanSatRepresentation) getLocalRepresentation();
-
- switchToMode(csrep, getParameterIndex(item.getItemId()), item.getTitle().toString());
-
- }
- }
-
- protected void switchToMode(FilterChanSatRepresentation csrep, int mode, String title) {
- if (csrep == null) {
- return;
- }
- csrep.setParameterMode(mode);
- mCurrentlyEditing = title;
- mButton.setText(mCurrentlyEditing);
- {
- Parameter param = getParameterToEdit(csrep);
-
- control(param, mEditControl);
- }
- updateSeekBar(csrep);
- mView.invalidate();
- }
-
- @Override
- public void onProgressChanged(SeekBar sbar, int progress, boolean arg2) {
- FilterChanSatRepresentation rep = getChanSatRep();
- int value = progress - 100;
- switch (sbar.getId()) {
- case R.id.mainSeekbar:
- rep.setParameterMode(FilterChanSatRepresentation.MODE_MASTER);
- mMainValue.setText("" + value);
- break;
- case R.id.redSeekBar:
- rep.setParameterMode(FilterChanSatRepresentation.MODE_RED);
- mRedValue.setText("" + value);
- break;
- case R.id.yellowSeekBar:
- rep.setParameterMode(FilterChanSatRepresentation.MODE_YELLOW);
- mYellowValue.setText("" + value);
- break;
- case R.id.greenSeekBar:
- rep.setParameterMode(FilterChanSatRepresentation.MODE_GREEN);
- mGreenValue.setText("" + value);
- break;
- case R.id.cyanSeekBar:
- rep.setParameterMode(FilterChanSatRepresentation.MODE_CYAN);
- mCyanValue.setText("" + value);
- break;
- case R.id.blueSeekBar:
- rep.setParameterMode(FilterChanSatRepresentation.MODE_BLUE);
- mBlueValue.setText("" + value);
- break;
- case R.id.magentaSeekBar:
- rep.setParameterMode(FilterChanSatRepresentation.MODE_MAGENTA);
- mMagentaValue.setText("" + value);
- break;
- }
- rep.setCurrentParameter(value);
- commitLocalRepresentation();
- }
-
- @Override
- public void swapLeft(MenuItem item) {
- super.swapLeft(item);
- mButton.setTranslationX(0);
- mButton.animate().translationX(mButton.getWidth()).setDuration(SwapButton.ANIM_DURATION);
- Runnable updateButton = new Runnable() {
- @Override
- public void run() {
- mButton.animate().cancel();
- mButton.setTranslationX(0);
- }
- };
- mHandler.postDelayed(updateButton, SwapButton.ANIM_DURATION);
- selectMenuItem(item);
- }
-
- @Override
- public void swapRight(MenuItem item) {
- super.swapRight(item);
- mButton.setTranslationX(0);
- mButton.animate().translationX(-mButton.getWidth()).setDuration(SwapButton.ANIM_DURATION);
- Runnable updateButton = new Runnable() {
- @Override
- public void run() {
- mButton.animate().cancel();
- mButton.setTranslationX(0);
- }
- };
- mHandler.postDelayed(updateButton, SwapButton.ANIM_DURATION);
- selectMenuItem(item);
- }
-}
diff --git a/src/com/android/gallery3d/filtershow/editors/EditorGrad.java b/src/com/android/gallery3d/filtershow/editors/EditorGrad.java
deleted file mode 100644
index cc8f28c..0000000
--- a/src/com/android/gallery3d/filtershow/editors/EditorGrad.java
+++ /dev/null
@@ -1,433 +0,0 @@
-/*
- * Copyright (C) 2013 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.editors;
-
-import android.content.Context;
-import android.view.LayoutInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.View.OnClickListener;
-import android.view.ViewGroup;
-import android.widget.Button;
-import android.widget.FrameLayout;
-import android.widget.LinearLayout;
-import android.widget.PopupMenu;
-import android.widget.SeekBar;
-import android.widget.SeekBar.OnSeekBarChangeListener;
-import android.widget.TextView;
-import android.widget.ToggleButton;
-
-import com.android.gallery3d.R;
-import com.android.gallery3d.filtershow.FilterShowActivity;
-import com.android.gallery3d.filtershow.controller.Control;
-import com.android.gallery3d.filtershow.controller.FilterView;
-import com.android.gallery3d.filtershow.controller.Parameter;
-import com.android.gallery3d.filtershow.controller.ParameterActionAndInt;
-import com.android.gallery3d.filtershow.filters.FilterGradRepresentation;
-import com.android.gallery3d.filtershow.filters.FilterRepresentation;
-import com.android.gallery3d.filtershow.imageshow.ImageGrad;
-import com.android.gallery3d.filtershow.imageshow.MasterImage;
-
-public class EditorGrad extends ParametricEditor
- implements OnSeekBarChangeListener, ParameterActionAndInt {
- private static final String LOGTAG = "EditorGrad";
- public static final int ID = R.id.editorGrad;
- PopupMenu mPopupMenu;
- ToggleButton mAddModeButton;
- String mEffectName = "";
- private static final int MODE_BRIGHTNESS = FilterGradRepresentation.PARAM_BRIGHTNESS;
- private static final int MODE_SATURATION = FilterGradRepresentation.PARAM_SATURATION;
- private static final int MODE_CONTRAST = FilterGradRepresentation.PARAM_CONTRAST;
- private static final int ADD_ICON = R.drawable.addspot;
- private static final int DEL_ICON = R.drawable.delete;
- private int mSliderMode = MODE_BRIGHTNESS;
- ImageGrad mImageGrad;
- ParamAdapter []mAdapters = new ParamAdapter[3];
- public EditorGrad() {
- super(ID, R.layout.filtershow_grad_editor, R.id.gradEditor);
- }
-
- @Override
- public void createEditor(Context context, FrameLayout frameLayout) {
- super.createEditor(context, frameLayout);
- mImageGrad = (ImageGrad) mImageShow;
- mImageGrad.setEditor(this);
-
- }
-
- public void clearAddMode() {
- mAddModeButton.setChecked(false);
- FilterRepresentation tmpRep = getLocalRepresentation();
- if (tmpRep instanceof FilterGradRepresentation) {
- updateMenuItems((FilterGradRepresentation) tmpRep);
- }
- }
-
- @Override
- public void reflectCurrentFilter() {
- super.reflectCurrentFilter();
- FilterRepresentation tmpRep = getLocalRepresentation();
- if (tmpRep instanceof FilterGradRepresentation) {
- FilterGradRepresentation rep = (FilterGradRepresentation) tmpRep;
- boolean f = rep.showParameterValue();
-
- mImageGrad.setRepresentation(rep);
- }
- }
-
- public void updateSeekBar(FilterGradRepresentation rep) {
- if (ParametricEditor.useCompact(mContext)) {
- mControl.updateUI();
- } else {
- updateParameters();
- }
- }
-
- @Override
- public void onProgressChanged(SeekBar sbar, int progress, boolean arg2) {
- FilterRepresentation tmpRep = getLocalRepresentation();
- if (tmpRep instanceof FilterGradRepresentation) {
- FilterGradRepresentation rep = (FilterGradRepresentation) tmpRep;
- int min = rep.getParameterMin(mSliderMode);
- int value = progress + min;
- rep.setParameter(mSliderMode, value);
- mView.invalidate();
- commitLocalRepresentation();
- }
- }
-
- @Override
- public void openUtilityPanel(final LinearLayout accessoryViewList) {
- Button view = (Button) accessoryViewList.findViewById(R.id.applyEffect);
- if (useCompact(mContext)) {
- view.setText(mContext.getString(R.string.editor_grad_brightness));
- view.setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View arg0) {
- showPopupMenu(accessoryViewList);
- }
- });
-
- setUpPopupMenu(view);
- setEffectName();
- } else {
- view.setText(mContext.getString(R.string.grad));
- }
- }
-
- private void updateMenuItems(FilterGradRepresentation rep) {
- int n = rep.getNumberOfBands();
- }
-
- public void setEffectName() {
- if (mPopupMenu != null) {
- MenuItem item = mPopupMenu.getMenu().findItem(R.id.editor_grad_brightness);
- mEffectName = item.getTitle().toString();
- }
- }
-
- @Override
- public void setEditPanelUI(View editControl) {
- if (ParametricEditor.useCompact(mContext)) {
- super.setEditPanelUI(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_grad_ui, (ViewGroup) editControl, true);
-
- mAdapters[0] = new ParamAdapter(R.id.gradContrastSeekBar, R.id.gradContrastValue,
- lp, MODE_CONTRAST);
- mAdapters[1] = new ParamAdapter(R.id.gradBrightnessSeekBar, R.id.gradBrightnessValue,
- lp, MODE_BRIGHTNESS);
- mAdapters[2] = new ParamAdapter(R.id.gradSaturationSeekBar, R.id.gradSaturationValue,
- lp, MODE_SATURATION);
- lp.findViewById(R.id.gradAddButton).setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View view) {
- fireLeftAction();
- }
- });
- lp.findViewById(R.id.gradDelButton).setOnClickListener(new OnClickListener() {
- @Override
- public void onClick(View view) {
- fireRightAction();
- }
- });
- setMenuIcon(false);
- }
-
- public void updateParameters() {
- FilterGradRepresentation rep = getGradRepresentation();
- for (int i = 0; i < mAdapters.length; i++) {
- mAdapters[i].updateValues(rep);
- }
- }
-
- private class ParamAdapter implements OnSeekBarChangeListener {
- SeekBar mSlider;
- TextView mTextView;
- int mMin = -100;
- int mMax = 100;
- int mMode;
-
- public ParamAdapter(int seekId, int textId, LinearLayout layout, int mode) {
- mSlider = (SeekBar) layout.findViewById(seekId);
- mTextView = (TextView) layout.findViewById(textId);
- mSlider.setMax(mMax - mMin);
- mMode = mode;
- FilterGradRepresentation rep = getGradRepresentation();
- if (rep != null){
- updateValues(rep);
- }
- mSlider.setOnSeekBarChangeListener(this);
- }
-
- public void updateValues(FilterGradRepresentation rep) {
- int value = rep.getParameter(mMode);
- mTextView.setText(Integer.toString(value));
- mSlider.setProgress(value - mMin);
- }
-
- @Override
- public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- FilterGradRepresentation rep = getGradRepresentation();
- int value = progress + mMin;
- rep.setParameter(mMode, value);
- if (mSliderMode != mMode) {
- mSliderMode = mMode;
- mEffectName = mContext.getResources().getString(getModeNameid(mMode));
-// mEffectName = mEffectName.toUpperCase();
- }
- mTextView.setText(Integer.toString(value));
- mView.invalidate();
- commitLocalRepresentation();
- }
-
- private int getModeNameid(int mode) {
- switch (mode) {
- case MODE_CONTRAST:
- return R.string.editor_grad_contrast;
- case MODE_BRIGHTNESS:
- return R.string.editor_grad_brightness;
- case MODE_SATURATION:
- return R.string.editor_grad_saturation;
- }
- return 0;
- }
-
- @Override
- public void onStartTrackingTouch(SeekBar seekBar) {
-
- }
-
- @Override
- public void onStopTrackingTouch(SeekBar seekBar) {
-
- }
- }
-
- private void showPopupMenu(LinearLayout accessoryViewList) {
- Button button = (Button) accessoryViewList.findViewById(R.id.applyEffect);
- if (button == null) {
- return;
- }
-
- if (mPopupMenu == null) {
- setUpPopupMenu(button);
- }
- mPopupMenu.show();
- ((FilterShowActivity)mContext).onShowMenu(mPopupMenu);
- }
-
- private void setUpPopupMenu(Button button) {
- mPopupMenu = new PopupMenu(mImageShow.getActivity(), button);
- mPopupMenu.getMenuInflater()
- .inflate(R.menu.filtershow_menu_grad, mPopupMenu.getMenu());
- FilterGradRepresentation rep = (FilterGradRepresentation) getLocalRepresentation();
- if (rep == null) {
- return;
- }
- updateMenuItems(rep);
- hackFixStrings(mPopupMenu.getMenu());
- setEffectName();
- updateText();
-
- mPopupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
- @Override
- public boolean onMenuItemClick(MenuItem item) {
- FilterRepresentation tmpRep = getLocalRepresentation();
-
- if (tmpRep instanceof FilterGradRepresentation) {
- FilterGradRepresentation rep = (FilterGradRepresentation) tmpRep;
- int cmdID = item.getItemId();
- switch (cmdID) {
- case R.id.editor_grad_brightness:
- mSliderMode = MODE_BRIGHTNESS;
- mEffectName = item.getTitle().toString();
- break;
- case R.id.editor_grad_contrast:
- mSliderMode = MODE_CONTRAST;
- mEffectName = item.getTitle().toString();
- break;
- case R.id.editor_grad_saturation:
- mSliderMode = MODE_SATURATION;
- mEffectName = item.getTitle().toString();
- break;
- }
- updateMenuItems(rep);
- updateSeekBar(rep);
-
- commitLocalRepresentation();
- mView.invalidate();
- }
- return true;
- }
- });
- }
-
- @Override
- public String calculateUserMessage(Context context, String effectName, Object parameterValue) {
- FilterGradRepresentation rep = getGradRepresentation();
- if (rep == null) {
- return mEffectName;
- }
- int val = rep.getParameter(mSliderMode);
- return mEffectName + ((val > 0) ? " +" : " ") + val;
- }
-
- private FilterGradRepresentation getGradRepresentation() {
- FilterRepresentation tmpRep = getLocalRepresentation();
- if (tmpRep instanceof FilterGradRepresentation) {
- return (FilterGradRepresentation) tmpRep;
- }
- return null;
- }
-
- @Override
- public int getMaximum() {
- FilterGradRepresentation rep = getGradRepresentation();
- if (rep == null) {
- return 0;
- }
- return rep.getParameterMax(mSliderMode);
- }
-
- @Override
- public int getMinimum() {
- FilterGradRepresentation rep = getGradRepresentation();
- if (rep == null) {
- return 0;
- }
- return rep.getParameterMin(mSliderMode);
- }
-
- @Override
- public int getDefaultValue() {
- return 0;
- }
-
- @Override
- public int getValue() {
- FilterGradRepresentation rep = getGradRepresentation();
- if (rep == null) {
- return 0;
- }
- return rep.getParameter(mSliderMode);
- }
-
- @Override
- public String getValueString() {
- return null;
- }
-
- @Override
- public void setValue(int value) {
- FilterGradRepresentation rep = getGradRepresentation();
- if (rep == null) {
- return;
- }
- rep.setParameter(mSliderMode, value);
- }
-
- @Override
- public String getParameterName() {
- return mEffectName;
- }
-
- @Override
- public String getParameterType() {
- return sParameterType;
- }
-
- @Override
- public void setController(Control c) {
-
- }
-
- @Override
- public void fireLeftAction() {
- FilterGradRepresentation rep = getGradRepresentation();
- if (rep == null) {
- return;
- }
- rep.addBand(MasterImage.getImage().getOriginalBounds());
- updateMenuItems(rep);
- updateSeekBar(rep);
-
- commitLocalRepresentation();
- mView.invalidate();
- }
-
- @Override
- public int getLeftIcon() {
- return ADD_ICON;
- }
-
- @Override
- public void fireRightAction() {
- FilterGradRepresentation rep = getGradRepresentation();
- if (rep == null) {
- return;
- }
- rep.deleteCurrentBand();
-
- updateMenuItems(rep);
- updateSeekBar(rep);
- commitLocalRepresentation();
- mView.invalidate();
- }
-
- @Override
- public int getRightIcon() {
- return DEL_ICON;
- }
-
- @Override
- public void setFilterView(FilterView editor) {
-
- }
-
- @Override
- public void copyFrom(Parameter src) {
-
- }
-}
diff --git a/src/com/android/gallery3d/filtershow/editors/EditorVignette.java b/src/com/android/gallery3d/filtershow/editors/EditorVignette.java
deleted file mode 100644
index c470231..0000000
--- a/src/com/android/gallery3d/filtershow/editors/EditorVignette.java
+++ /dev/null
@@ -1,378 +0,0 @@
-/*
- * 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.editors;
-
-import android.content.Context;
-import android.os.Handler;
-import android.view.LayoutInflater;
-import android.view.MenuItem;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.FrameLayout;
-import android.widget.LinearLayout;
-import android.widget.PopupMenu;
-import android.widget.SeekBar;
-import android.widget.TextView;
-
-import com.android.gallery3d.R;
-import com.android.gallery3d.filtershow.FilterShowActivity;
-import com.android.gallery3d.filtershow.controller.BasicParameterInt;
-import com.android.gallery3d.filtershow.controller.Parameter;
-import com.android.gallery3d.filtershow.filters.FilterVignetteRepresentation;
-import com.android.gallery3d.filtershow.filters.FilterRepresentation;
-import com.android.gallery3d.filtershow.imageshow.ImageVignette;
-
-public class EditorVignette extends ParametricEditor {
- public static final int ID = R.id.vignetteEditor;
- private static final String LOGTAG = "EditorVignettePlanet";
- ImageVignette mImageVignette;
-
- private SeekBar mVignetteBar;
- private SeekBar mExposureBar;
- private SeekBar mSaturationBar;
- private SeekBar mContrastBar;
- private SeekBar mFalloffBar;
-
-
- private TextView mVignetteValue;
- private TextView mExposureValue;
- private TextView mSaturationValue;
- private TextView mContrastValue;
- private TextView mFalloffValue;
-
- private SwapButton mButton;
- private final Handler mHandler = new Handler();
-
- int[] mMenuStrings = {
- R.string.vignette_main,
- R.string.vignette_exposure,
- R.string.vignette_saturation,
- R.string.vignette_contrast,
- R.string.vignette_falloff,
- };
-
- String mCurrentlyEditing = null;
-
-
- public EditorVignette() {
- super(ID, R.layout.filtershow_vignette_editor, R.id.imageVignette);
- }
-
- @Override
- public void createEditor(Context context, FrameLayout frameLayout) {
- super.createEditor(context, frameLayout);
- mImageVignette = (ImageVignette) mImageShow;
- mImageVignette.setEditor(this);
- }
-
- @Override
- public void reflectCurrentFilter() {
- if (useCompact(mContext)) {
- super.reflectCurrentFilter();
-
- FilterRepresentation rep = getLocalRepresentation();
- if (rep != null && getLocalRepresentation() instanceof FilterVignetteRepresentation) {
- FilterVignetteRepresentation drawRep = (FilterVignetteRepresentation) rep;
- mImageVignette.setRepresentation(drawRep);
- }
- updateText();
- return;
- }
- mLocalRepresentation = null;
- if (getLocalRepresentation() != null
- && getLocalRepresentation() instanceof FilterVignetteRepresentation) {
- FilterVignetteRepresentation rep =
- (FilterVignetteRepresentation) getLocalRepresentation();
- int min;
- int []mode = {
- FilterVignetteRepresentation.MODE_VIGNETTE,
- FilterVignetteRepresentation.MODE_EXPOSURE,
- FilterVignetteRepresentation.MODE_SATURATION,
- FilterVignetteRepresentation.MODE_CONTRAST,
- FilterVignetteRepresentation.MODE_FALLOFF
- };
- SeekBar []sliders = {
- mVignetteBar,
- mExposureBar,
- mSaturationBar,
- mContrastBar,
- mFalloffBar
- };
- TextView []label = {
- mVignetteValue,
- mExposureValue,
- mSaturationValue,
- mContrastValue,
- mFalloffValue
- };
- for (int i = 0; i < mode.length; i++) {
- BasicParameterInt p = (BasicParameterInt) rep.getFilterParameter(mode[i]);
- int value = p.getValue();
- sliders[i].setMax(p.getMaximum() - p.getMinimum());
- sliders[i].setProgress(value - p.getMinimum());
- label[i].setText("" + value);
- }
-
- mImageVignette.setRepresentation(rep);
- super.reflectCurrentFilter();
- updateText();
- }
- }
-
-
-
- @Override
- public String calculateUserMessage(Context context, String effectName, Object parameterValue) {
- FilterRepresentation rep = getLocalRepresentation();
- if (rep == null || !(rep instanceof FilterVignetteRepresentation)) {
- return "";
- }
- FilterVignetteRepresentation csrep = (FilterVignetteRepresentation) rep;
- int mode = csrep.getParameterMode();
- String paramString;
-
- paramString = mContext.getString(mMenuStrings[mode]);
-
- int val = csrep.getCurrentParameter();
- return paramString + ((val > 0) ? " +" : " ") + val;
- }
-
- @Override
- public void openUtilityPanel(final LinearLayout accessoryViewList) {
- mButton = (SwapButton) accessoryViewList.findViewById(R.id.applyEffect);
- mButton.setText(mContext.getString(R.string.vignette_main));
-
- if (useCompact(mContext)) {
- final PopupMenu popupMenu = new PopupMenu(mImageShow.getActivity(), mButton);
-
- popupMenu.getMenuInflater().inflate(R.menu.filtershow_menu_vignette,
- popupMenu.getMenu());
-
- popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
- @Override
- public boolean onMenuItemClick(MenuItem item) {
- selectMenuItem(item);
- return true;
- }
- });
- mButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View arg0) {
- popupMenu.show();
- ((FilterShowActivity)mContext).onShowMenu(popupMenu);
- }
- });
- mButton.setListener(this);
-
- FilterVignetteRepresentation csrep = getVignetteRep();
- String menuString = mContext.getString(mMenuStrings[0]);
- switchToMode(csrep, FilterVignetteRepresentation.MODE_VIGNETTE, menuString);
- } else {
- mButton.setText(mContext.getString(R.string.vignette_main));
- }
- }
-
- @Override
- public void setEditPanelUI(View editControl) {
- if (useCompact(mContext)) {
- super.setEditPanelUI(editControl);
- return;
- }
- mEditControl = editControl;
- mEditTitle.setCompoundDrawables(null, null, null, null);
- LinearLayout group = (LinearLayout) editControl;
- LayoutInflater inflater =
- (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- LinearLayout controls = (LinearLayout) inflater.inflate(
- R.layout.filtershow_vignette_controls, group, false);
- ViewGroup.LayoutParams lp = new LinearLayout.LayoutParams(
- ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
- controls.setLayoutParams(lp);
- group.removeAllViews();
- group.addView(controls);
-
- mVignetteBar = (SeekBar) controls.findViewById(R.id.mainVignetteSeekbar);
- mVignetteBar.setMax(200);
- mVignetteBar.setOnSeekBarChangeListener(this);
- mVignetteValue = (TextView) controls.findViewById(R.id.mainVignetteValue);
- mExposureBar = (SeekBar) controls.findViewById(R.id.exposureSeekBar);
- mExposureBar.setMax(200);
- mExposureBar.setOnSeekBarChangeListener(this);
- mExposureValue = (TextView) controls.findViewById(R.id.exposureValue);
- mSaturationBar = (SeekBar) controls.findViewById(R.id.saturationSeekBar);
- mSaturationBar.setMax(200);
- mSaturationBar.setOnSeekBarChangeListener(this);
- mSaturationValue = (TextView) controls.findViewById(R.id.saturationValue);
- mContrastBar = (SeekBar) controls.findViewById(R.id.contrastSeekBar);
- mContrastBar.setMax(200);
- mContrastBar.setOnSeekBarChangeListener(this);
- mContrastValue = (TextView) controls.findViewById(R.id.contrastValue);
- mFalloffBar = (SeekBar) controls.findViewById(R.id.falloffSeekBar);
- mFalloffBar.setMax(200);
- mFalloffBar.setOnSeekBarChangeListener(this);
- mFalloffValue = (TextView) controls.findViewById(R.id.falloffValue);
- }
-
- public int getParameterIndex(int id) {
- switch (id) {
- case R.id.editor_vignette_main:
- return FilterVignetteRepresentation.MODE_VIGNETTE;
- case R.id.editor_vignette_saturation:
- return FilterVignetteRepresentation.MODE_SATURATION;
- case R.id.editor_vignette_contrast:
- return FilterVignetteRepresentation.MODE_CONTRAST;
- case R.id.editor_vignette_exposure:
- return FilterVignetteRepresentation.MODE_EXPOSURE;
- case R.id.editor_vignette_falloff:
- return FilterVignetteRepresentation.MODE_FALLOFF;
- }
- return -1;
- }
-
- @Override
- public void detach() {
- if (mButton == null) {
- return;
- }
- mButton.setListener(null);
- mButton.setOnClickListener(null);
- }
-
- private void updateSeekBar(FilterVignetteRepresentation rep) {
- mControl.updateUI();
- }
-
- @Override
- protected Parameter getParameterToEdit(FilterRepresentation rep) {
- if (rep instanceof FilterVignetteRepresentation) {
- FilterVignetteRepresentation csrep = (FilterVignetteRepresentation) rep;
- Parameter param = csrep.getFilterParameter(csrep.getParameterMode());
-
- return param;
- }
- return null;
- }
-
- private FilterVignetteRepresentation getVignetteRep() {
- FilterRepresentation rep = getLocalRepresentation();
- if (rep != null
- && rep instanceof FilterVignetteRepresentation) {
- FilterVignetteRepresentation csrep = (FilterVignetteRepresentation) rep;
- return csrep;
- }
- return null;
- }
-
- protected void selectMenuItem(MenuItem item) {
- if (getLocalRepresentation() != null
- && getLocalRepresentation() instanceof FilterVignetteRepresentation) {
- FilterVignetteRepresentation csrep =
- (FilterVignetteRepresentation) getLocalRepresentation();
-
- switchToMode(csrep, getParameterIndex(item.getItemId()), item.getTitle().toString());
- }
- }
-
- protected void switchToMode(FilterVignetteRepresentation csrep, int mode, String title) {
- if (csrep == null) {
- return;
- }
- csrep.setParameterMode(mode);
- mCurrentlyEditing = title;
- mButton.setText(mCurrentlyEditing);
- {
- Parameter param = getParameterToEdit(csrep);
-
- control(param, mEditControl);
- }
- updateSeekBar(csrep);
- mView.invalidate();
- }
-
- @Override
- public void onProgressChanged(SeekBar sbar, int progress, boolean arg2) {
- FilterVignetteRepresentation rep = getVignetteRep();
- int value = progress;
- BasicParameterInt p;
- switch (sbar.getId()) {
- case R.id.mainVignetteSeekbar:
- rep.setParameterMode(FilterVignetteRepresentation.MODE_VIGNETTE);
- p = rep.getFilterParameter(rep.getParameterMode());
- value += p.getMinimum();
- mVignetteValue.setText("" + value);
- break;
- case R.id.exposureSeekBar:
- rep.setParameterMode(FilterVignetteRepresentation.MODE_EXPOSURE);
- p = rep.getFilterParameter(rep.getParameterMode());
- value += p.getMinimum();
- mExposureValue.setText("" + value);
- break;
- case R.id.saturationSeekBar:
- rep.setParameterMode(FilterVignetteRepresentation.MODE_SATURATION);
- p = rep.getFilterParameter(rep.getParameterMode());
- value += p.getMinimum();
- mSaturationValue.setText("" + value);
- break;
- case R.id.contrastSeekBar:
- rep.setParameterMode(FilterVignetteRepresentation.MODE_CONTRAST);
- p = rep.getFilterParameter(rep.getParameterMode());
- value += p.getMinimum();
- mContrastValue.setText("" + value);
- break;
- case R.id.falloffSeekBar:
- rep.setParameterMode(FilterVignetteRepresentation.MODE_FALLOFF);
- p = rep.getFilterParameter(rep.getParameterMode());
- value += p.getMinimum();
- mFalloffValue.setText("" + value);
- break;
- }
- rep.setCurrentParameter(value);
- commitLocalRepresentation();
- }
-
- @Override
- public void swapLeft(MenuItem item) {
- super.swapLeft(item);
- mButton.setTranslationX(0);
- mButton.animate().translationX(mButton.getWidth()).setDuration(SwapButton.ANIM_DURATION);
- Runnable updateButton = new Runnable() {
- @Override
- public void run() {
- mButton.animate().cancel();
- mButton.setTranslationX(0);
- }
- };
- mHandler.postDelayed(updateButton, SwapButton.ANIM_DURATION);
- selectMenuItem(item);
- }
-
- @Override
- public void swapRight(MenuItem item) {
- super.swapRight(item);
- mButton.setTranslationX(0);
- mButton.animate().translationX(-mButton.getWidth()).setDuration(SwapButton.ANIM_DURATION);
- Runnable updateButton = new Runnable() {
- @Override
- public void run() {
- mButton.animate().cancel();
- mButton.setTranslationX(0);
- }
- };
- mHandler.postDelayed(updateButton, SwapButton.ANIM_DURATION);
- selectMenuItem(item);
- }
-}
diff --git a/src/com/android/gallery3d/filtershow/filters/BaseFiltersManager.java b/src/com/android/gallery3d/filtershow/filters/BaseFiltersManager.java
index 70f5018..fc40a09 100644
--- a/src/com/android/gallery3d/filtershow/filters/BaseFiltersManager.java
+++ b/src/com/android/gallery3d/filtershow/filters/BaseFiltersManager.java
@@ -134,31 +134,18 @@
}
}
- public void freeRSFilterScripts() {
- for (Class c : mFilters.keySet()) {
- ImageFilter filter = mFilters.get(c);
- if (filter != null && filter instanceof ImageFilterRS) {
- ((ImageFilterRS) filter).resetScripts();
- }
- }
- }
-
protected void addFilterClasses(Vector<Class> filters) {
filters.add(ImageFilterTinyPlanet.class);
filters.add(ImageFilterRedEye.class);
filters.add(ImageFilterWBalance.class);
filters.add(ImageFilterExposure.class);
- filters.add(ImageFilterVignette.class);
- filters.add(ImageFilterGrad.class);
filters.add(ImageFilterContrast.class);
filters.add(ImageFilterShadows.class);
filters.add(ImageFilterHighlights.class);
filters.add(ImageFilterVibrance.class);
- filters.add(ImageFilterSharpen.class);
filters.add(ImageFilterCurves.class);
filters.add(ImageFilterDraw.class);
filters.add(ImageFilterHue.class);
- filters.add(ImageFilterChanSat.class);
filters.add(ImageFilterSaturated.class);
filters.add(ImageFilterBwFilter.class);
filters.add(ImageFilterNegative.class);
@@ -398,7 +385,6 @@
mEffects.add(getRepresentation(ImageFilterExposure.class));
mEffects.add(getRepresentation(ImageFilterContrast.class));
mEffects.add(getRepresentation(ImageFilterVibrance.class));
- mEffects.add(getRepresentation(ImageFilterSharpen.class));
}
public void addMakeups(Context context) {
diff --git a/src/com/android/gallery3d/filtershow/filters/FilterChanSatRepresentation.java b/src/com/android/gallery3d/filtershow/filters/FilterChanSatRepresentation.java
deleted file mode 100644
index 6c5274d..0000000
--- a/src/com/android/gallery3d/filtershow/filters/FilterChanSatRepresentation.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright (C) 2013 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.filters;
-
-import android.util.JsonReader;
-import android.util.JsonWriter;
-
-import com.android.gallery3d.R;
-import com.android.gallery3d.filtershow.controller.BasicParameterInt;
-import com.android.gallery3d.filtershow.controller.Parameter;
-import com.android.gallery3d.filtershow.controller.ParameterSet;
-import com.android.gallery3d.filtershow.editors.EditorChanSat;
-import com.android.gallery3d.filtershow.imageshow.ControlPoint;
-import com.android.gallery3d.filtershow.imageshow.Spline;
-
-import java.io.IOException;
-import java.util.Vector;
-
-/**
- * Representation for a filter that has per channel & Master saturation
- */
-public class FilterChanSatRepresentation extends FilterRepresentation implements ParameterSet {
- private static final String LOGTAG = "FilterChanSatRepresentation";
- private static final String ARGS = "ARGS";
- private static final String SERIALIZATION_NAME = "channelsaturation";
-
- public static final int MODE_MASTER = 0;
- public static final int MODE_RED = 1;
- public static final int MODE_YELLOW = 2;
- public static final int MODE_GREEN = 3;
- public static final int MODE_CYAN = 4;
- public static final int MODE_BLUE = 5;
- public static final int MODE_MAGENTA = 6;
- private int mParameterMode = MODE_MASTER;
-
- private static int MINSAT = -100;
- private static int MAXSAT = 100;
- private BasicParameterInt mParamMaster = new BasicParameterInt(MODE_MASTER, 0, MINSAT, MAXSAT);
- private BasicParameterInt mParamRed = new BasicParameterInt(MODE_RED, 0, MINSAT, MAXSAT);
- private BasicParameterInt mParamYellow = new BasicParameterInt(MODE_YELLOW, 0, MINSAT, MAXSAT);
- private BasicParameterInt mParamGreen = new BasicParameterInt(MODE_GREEN, 0, MINSAT, MAXSAT);
- private BasicParameterInt mParamCyan = new BasicParameterInt(MODE_CYAN, 0, MINSAT, MAXSAT);
- private BasicParameterInt mParamBlue = new BasicParameterInt(MODE_BLUE, 0, MINSAT, MAXSAT);
- private BasicParameterInt mParamMagenta = new BasicParameterInt(MODE_MAGENTA, 0, MINSAT, MAXSAT);
-
- private BasicParameterInt[] mAllParam = {
- mParamMaster,
- mParamRed,
- mParamYellow,
- mParamGreen,
- mParamCyan,
- mParamBlue,
- mParamMagenta};
-
- public FilterChanSatRepresentation() {
- super("ChannelSaturation");
- setTextId(R.string.saturation);
- setFilterType(FilterRepresentation.TYPE_NORMAL);
- setSerializationName(SERIALIZATION_NAME);
- setFilterClass(ImageFilterChanSat.class);
- setEditorId(EditorChanSat.ID);
- setSupportsPartialRendering(true);
- }
-
- public String toString() {
- return getName() + " : " + mParamRed + ", " + mParamCyan + ", " + mParamRed
- + ", " + mParamGreen + ", " + mParamMaster + ", " + mParamYellow;
- }
-
- @Override
- public FilterRepresentation copy() {
- FilterChanSatRepresentation representation = new FilterChanSatRepresentation();
- copyAllParameters(representation);
- return representation;
- }
-
- @Override
- protected void copyAllParameters(FilterRepresentation representation) {
- super.copyAllParameters(representation);
- representation.useParametersFrom(this);
- }
-
- public void useParametersFrom(FilterRepresentation a) {
- if (a instanceof FilterChanSatRepresentation) {
- FilterChanSatRepresentation representation = (FilterChanSatRepresentation) a;
-
- for (int i = 0; i < mAllParam.length; i++) {
- mAllParam[i].copyFrom(representation.mAllParam[i]);
- }
- }
- }
-
- @Override
- public boolean equals(FilterRepresentation representation) {
- if (!super.equals(representation)) {
- return false;
- }
- if (representation instanceof FilterChanSatRepresentation) {
- FilterChanSatRepresentation rep = (FilterChanSatRepresentation) representation;
- for (int i = 0; i < mAllParam.length; i++) {
- if (rep.getValue(i) != getValue(i))
- return false;
- }
- return true;
- }
- return false;
- }
-
- public int getValue(int mode) {
- return mAllParam[mode].getValue();
- }
-
- public void setValue(int mode, int value) {
- mAllParam[mode].setValue(value);
- }
-
- public int getMinimum() {
- return mParamMaster.getMinimum();
- }
-
- public int getMaximum() {
- return mParamMaster.getMaximum();
- }
-
- public int getParameterMode() {
- return mParameterMode;
- }
-
- public void setParameterMode(int parameterMode) {
- mParameterMode = parameterMode;
- }
-
- public int getCurrentParameter() {
- return getValue(mParameterMode);
- }
-
- public void setCurrentParameter(int value) {
- setValue(mParameterMode, value);
- }
-
- @Override
- public int getNumberOfParameters() {
- return 6;
- }
-
- @Override
- public Parameter getFilterParameter(int index) {
- return mAllParam[index];
- }
-
- @Override
- public void serializeRepresentation(JsonWriter writer) throws IOException {
- writer.beginObject();
-
- writer.name(ARGS);
- writer.beginArray();
- writer.value(getValue(MODE_MASTER));
- writer.value(getValue(MODE_RED));
- writer.value(getValue(MODE_YELLOW));
- writer.value(getValue(MODE_GREEN));
- writer.value(getValue(MODE_CYAN));
- writer.value(getValue(MODE_BLUE));
- writer.value(getValue(MODE_MAGENTA));
- writer.endArray();
- writer.endObject();
- }
-
- @Override
- public void deSerializeRepresentation(JsonReader sreader) throws IOException {
- sreader.beginObject();
-
- while (sreader.hasNext()) {
- String name = sreader.nextName();
- if (name.startsWith(ARGS)) {
- sreader.beginArray();
- sreader.hasNext();
- setValue(MODE_MASTER, sreader.nextInt());
- sreader.hasNext();
- setValue(MODE_RED, sreader.nextInt());
- sreader.hasNext();
- setValue(MODE_YELLOW, sreader.nextInt());
- sreader.hasNext();
- setValue(MODE_GREEN, sreader.nextInt());
- sreader.hasNext();
- setValue(MODE_CYAN, sreader.nextInt());
- sreader.hasNext();
- setValue(MODE_BLUE, sreader.nextInt());
- sreader.hasNext();
- setValue(MODE_MAGENTA, sreader.nextInt());
- sreader.hasNext();
- sreader.endArray();
- } else {
- sreader.skipValue();
- }
- }
- sreader.endObject();
- }
-}
\ No newline at end of file
diff --git a/src/com/android/gallery3d/filtershow/filters/FilterGradRepresentation.java b/src/com/android/gallery3d/filtershow/filters/FilterGradRepresentation.java
deleted file mode 100644
index 928c3ea..0000000
--- a/src/com/android/gallery3d/filtershow/filters/FilterGradRepresentation.java
+++ /dev/null
@@ -1,497 +0,0 @@
-/*
- * Copyright (C) 2013 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.filters;
-
-import android.graphics.Rect;
-import android.util.JsonReader;
-import android.util.JsonWriter;
-
-import com.android.gallery3d.R;
-import com.android.gallery3d.filtershow.editors.EditorGrad;
-import com.android.gallery3d.filtershow.imageshow.MasterImage;
-import com.android.gallery3d.filtershow.imageshow.Line;
-
-import java.io.IOException;
-import java.util.Vector;
-
-public class FilterGradRepresentation extends FilterRepresentation
- implements Line {
- private static final String LOGTAG = "FilterGradRepresentation";
- public static final int MAX_POINTS = 16;
- public static final int PARAM_BRIGHTNESS = 0;
- public static final int PARAM_SATURATION = 1;
- public static final int PARAM_CONTRAST = 2;
- private static final double ADD_MIN_DIST = .05;
- private static String LINE_NAME = "Point";
- private static final String SERIALIZATION_NAME = "grad";
-
- public FilterGradRepresentation() {
- super("Grad");
- setSerializationName(SERIALIZATION_NAME);
- creatExample();
- setOverlayId(R.drawable.filtershow_button_grad);
- setFilterClass(ImageFilterGrad.class);
- setTextId(R.string.grad);
- setEditorId(EditorGrad.ID);
- }
-
- public void trimVector(){
- int n = mBands.size();
- for (int i = n; i < MAX_POINTS; i++) {
- mBands.add(new Band());
- }
- for (int i = MAX_POINTS; i < n; i++) {
- mBands.remove(i);
- }
- }
-
- Vector<Band> mBands = new Vector<Band>();
- Band mCurrentBand;
-
- static class Band {
- private boolean mask = true;
-
- private int xPos1 = -1;
- private int yPos1 = 100;
- private int xPos2 = -1;
- private int yPos2 = 100;
- private int brightness = -40;
- private int contrast = 0;
- private int saturation = 0;
-
-
- public Band() {
- }
-
- public Band(int x, int y) {
- xPos1 = x;
- yPos1 = y+30;
- xPos2 = x;
- yPos2 = y-30;
- }
-
- public Band(Band copy) {
- mask = copy.mask;
- xPos1 = copy.xPos1;
- yPos1 = copy.yPos1;
- xPos2 = copy.xPos2;
- yPos2 = copy.yPos2;
- brightness = copy.brightness;
- contrast = copy.contrast;
- saturation = copy.saturation;
- }
-
- }
-
- @Override
- public String toString() {
- int count = 0;
- for (Band point : mBands) {
- if (!point.mask) {
- count++;
- }
- }
- return "c=" + mBands.indexOf(mCurrentBand) + "[" + mBands.size() + "]" + count;
- }
-
- private void creatExample() {
- Band p = new Band();
- p.mask = false;
- p.xPos1 = -1;
- p.yPos1 = 100;
- p.xPos2 = -1;
- p.yPos2 = 100;
- p.brightness = -50;
- p.contrast = 0;
- p.saturation = 0;
- mBands.add(0, p);
- mCurrentBand = p;
- trimVector();
- }
-
- @Override
- public void useParametersFrom(FilterRepresentation a) {
- FilterGradRepresentation rep = (FilterGradRepresentation) a;
- Vector<Band> tmpBands = new Vector<Band>();
- int n = (rep.mCurrentBand == null) ? 0 : rep.mBands.indexOf(rep.mCurrentBand);
- for (Band band : rep.mBands) {
- tmpBands.add(new Band(band));
- }
- mCurrentBand = null;
- mBands = tmpBands;
- mCurrentBand = mBands.elementAt(n);
- }
-
- @Override
- public FilterRepresentation copy() {
- FilterGradRepresentation representation = new FilterGradRepresentation();
- copyAllParameters(representation);
- return representation;
- }
-
- @Override
- protected void copyAllParameters(FilterRepresentation representation) {
- super.copyAllParameters(representation);
- representation.useParametersFrom(this);
- }
-
- @Override
- public boolean equals(FilterRepresentation representation) {
- if (representation instanceof FilterGradRepresentation) {
- FilterGradRepresentation rep = (FilterGradRepresentation) representation;
- int n = getNumberOfBands();
- if (rep.getNumberOfBands() != n) {
- return false;
- }
- for (int i = 0; i < mBands.size(); i++) {
- Band b1 = mBands.get(i);
- Band b2 = rep.mBands.get(i);
- if (b1.mask != b2.mask
- || b1.brightness != b2.brightness
- || b1.contrast != b2.contrast
- || b1.saturation != b2.saturation
- || b1.xPos1 != b2.xPos1
- || b1.xPos2 != b2.xPos2
- || b1.yPos1 != b2.yPos1
- || b1.yPos2 != b2.yPos2) {
- return false;
- }
- }
- return true;
- }
- return false;
- }
-
- public int getNumberOfBands() {
- int count = 0;
- for (Band point : mBands) {
- if (!point.mask) {
- count++;
- }
- }
- return count;
- }
-
- public int addBand(Rect rect) {
- mBands.add(0, mCurrentBand = new Band(rect.centerX(), rect.centerY()));
- mCurrentBand.mask = false;
- int x = (mCurrentBand.xPos1 + mCurrentBand.xPos2)/2;
- int y = (mCurrentBand.yPos1 + mCurrentBand.yPos2)/2;
- double addDelta = ADD_MIN_DIST * Math.max(rect.width(), rect.height());
- boolean moved = true;
- int count = 0;
- int toMove = mBands.indexOf(mCurrentBand);
-
- while (moved) {
- moved = false;
- count++;
- if (count > 14) {
- break;
- }
-
- for (Band point : mBands) {
- if (point.mask) {
- break;
- }
- }
-
- for (Band point : mBands) {
- if (point.mask) {
- break;
- }
- int index = mBands.indexOf(point);
-
- if (toMove != index) {
- double dist = Math.hypot(point.xPos1 - x, point.yPos1 - y);
- if (dist < addDelta) {
- moved = true;
- mCurrentBand.xPos1 += addDelta;
- mCurrentBand.yPos1 += addDelta;
- mCurrentBand.xPos2 += addDelta;
- mCurrentBand.yPos2 += addDelta;
- x = (mCurrentBand.xPos1 + mCurrentBand.xPos2)/2;
- y = (mCurrentBand.yPos1 + mCurrentBand.yPos2)/2;
-
- if (mCurrentBand.yPos1 > rect.bottom) {
- mCurrentBand.yPos1 = (int) (rect.top + addDelta);
- }
- if (mCurrentBand.xPos1 > rect.right) {
- mCurrentBand.xPos1 = (int) (rect.left + addDelta);
- }
- }
- }
- }
- }
- trimVector();
- return 0;
- }
-
- public void deleteCurrentBand() {
- int index = mBands.indexOf(mCurrentBand);
- mBands.remove(mCurrentBand);
- trimVector();
- if (getNumberOfBands() == 0) {
- addBand(MasterImage.getImage().getOriginalBounds());
- }
- mCurrentBand = mBands.get(0);
- }
-
- public void nextPoint(){
- int index = mBands.indexOf(mCurrentBand);
- int tmp = index;
- Band point;
- int k = 0;
- do {
- index = (index+1)% mBands.size();
- point = mBands.get(index);
- if (k++ >= mBands.size()) {
- break;
- }
- }
- while (point.mask == true);
- mCurrentBand = mBands.get(index);
- }
-
- public void setSelectedPoint(int pos) {
- mCurrentBand = mBands.get(pos);
- }
-
- public int getSelectedPoint() {
- return mBands.indexOf(mCurrentBand);
- }
-
- public boolean[] getMask() {
- boolean[] ret = new boolean[mBands.size()];
- int i = 0;
- for (Band point : mBands) {
- ret[i++] = !point.mask;
- }
- return ret;
- }
-
- public int[] getXPos1() {
- int[] ret = new int[mBands.size()];
- int i = 0;
- for (Band point : mBands) {
- ret[i++] = point.xPos1;
- }
- return ret;
- }
-
- public int[] getYPos1() {
- int[] ret = new int[mBands.size()];
- int i = 0;
- for (Band point : mBands) {
- ret[i++] = point.yPos1;
- }
- return ret;
- }
-
- public int[] getXPos2() {
- int[] ret = new int[mBands.size()];
- int i = 0;
- for (Band point : mBands) {
- ret[i++] = point.xPos2;
- }
- return ret;
- }
-
- public int[] getYPos2() {
- int[] ret = new int[mBands.size()];
- int i = 0;
- for (Band point : mBands) {
- ret[i++] = point.yPos2;
- }
- return ret;
- }
-
- public int[] getBrightness() {
- int[] ret = new int[mBands.size()];
- int i = 0;
- for (Band point : mBands) {
- ret[i++] = point.brightness;
- }
- return ret;
- }
-
- public int[] getContrast() {
- int[] ret = new int[mBands.size()];
- int i = 0;
- for (Band point : mBands) {
- ret[i++] = point.contrast;
- }
- return ret;
- }
-
- public int[] getSaturation() {
- int[] ret = new int[mBands.size()];
- int i = 0;
- for (Band point : mBands) {
- ret[i++] = point.saturation;
- }
- return ret;
- }
-
- public int getParameter(int type) {
- switch (type){
- case PARAM_BRIGHTNESS:
- return mCurrentBand.brightness;
- case PARAM_SATURATION:
- return mCurrentBand.saturation;
- case PARAM_CONTRAST:
- return mCurrentBand.contrast;
- }
- throw new IllegalArgumentException("no such type " + type);
- }
-
- public int getParameterMax(int type) {
- switch (type) {
- case PARAM_BRIGHTNESS:
- return 100;
- case PARAM_SATURATION:
- return 100;
- case PARAM_CONTRAST:
- return 100;
- }
- throw new IllegalArgumentException("no such type " + type);
- }
-
- public int getParameterMin(int type) {
- switch (type) {
- case PARAM_BRIGHTNESS:
- return -100;
- case PARAM_SATURATION:
- return -100;
- case PARAM_CONTRAST:
- return -100;
- }
- throw new IllegalArgumentException("no such type " + type);
- }
-
- public void setParameter(int type, int value) {
- mCurrentBand.mask = false;
- switch (type) {
- case PARAM_BRIGHTNESS:
- mCurrentBand.brightness = value;
- break;
- case PARAM_SATURATION:
- mCurrentBand.saturation = value;
- break;
- case PARAM_CONTRAST:
- mCurrentBand.contrast = value;
- break;
- default:
- throw new IllegalArgumentException("no such type " + type);
- }
- }
-
- @Override
- public void setPoint1(float x, float y) {
- mCurrentBand.xPos1 = (int)x;
- mCurrentBand.yPos1 = (int)y;
- }
-
- @Override
- public void setPoint2(float x, float y) {
- mCurrentBand.xPos2 = (int)x;
- mCurrentBand.yPos2 = (int)y;
- }
-
- @Override
- public float getPoint1X() {
- return mCurrentBand.xPos1;
- }
-
- @Override
- public float getPoint1Y() {
- return mCurrentBand.yPos1;
- }
- @Override
- public float getPoint2X() {
- return mCurrentBand.xPos2;
- }
-
- @Override
- public float getPoint2Y() {
- return mCurrentBand.yPos2;
- }
-
- @Override
- public void serializeRepresentation(JsonWriter writer) throws IOException {
- writer.beginObject();
- int len = mBands.size();
- int count = 0;
-
- for (int i = 0; i < len; i++) {
- Band point = mBands.get(i);
- if (point.mask) {
- continue;
- }
- writer.name(LINE_NAME + count);
- count++;
- writer.beginArray();
- writer.value(point.xPos1);
- writer.value(point.yPos1);
- writer.value(point.xPos2);
- writer.value(point.yPos2);
- writer.value(point.brightness);
- writer.value(point.contrast);
- writer.value(point.saturation);
- writer.endArray();
- }
- writer.endObject();
- }
-
- @Override
- public void deSerializeRepresentation(JsonReader sreader) throws IOException {
- sreader.beginObject();
- Vector<Band> points = new Vector<Band>();
-
- while (sreader.hasNext()) {
- String name = sreader.nextName();
- if (name.startsWith(LINE_NAME)) {
- int pointNo = Integer.parseInt(name.substring(LINE_NAME.length()));
- sreader.beginArray();
- Band p = new Band();
- p.mask = false;
- sreader.hasNext();
- p.xPos1 = sreader.nextInt();
- sreader.hasNext();
- p.yPos1 = sreader.nextInt();
- sreader.hasNext();
- p.xPos2 = sreader.nextInt();
- sreader.hasNext();
- p.yPos2 = sreader.nextInt();
- sreader.hasNext();
- p.brightness = sreader.nextInt();
- sreader.hasNext();
- p.contrast = sreader.nextInt();
- sreader.hasNext();
- p.saturation = sreader.nextInt();
- sreader.hasNext();
- sreader.endArray();
- points.add(p);
-
- } else {
- sreader.skipValue();
- }
- }
- mBands = points;
- trimVector();
- mCurrentBand = mBands.get(0);
- sreader.endObject();
- }
-}
diff --git a/src/com/android/gallery3d/filtershow/filters/FilterVignetteRepresentation.java b/src/com/android/gallery3d/filtershow/filters/FilterVignetteRepresentation.java
deleted file mode 100644
index 512594f..0000000
--- a/src/com/android/gallery3d/filtershow/filters/FilterVignetteRepresentation.java
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * 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.filters;
-
-import android.util.JsonReader;
-import android.util.JsonWriter;
-
-import com.android.gallery3d.R;
-import com.android.gallery3d.filtershow.controller.BasicParameterInt;
-import com.android.gallery3d.filtershow.controller.Parameter;
-import com.android.gallery3d.filtershow.editors.EditorVignette;
-import com.android.gallery3d.filtershow.imageshow.Oval;
-
-import java.io.IOException;
-
-public class FilterVignetteRepresentation extends FilterRepresentation implements Oval {
- private static final String LOGTAG = "FilterVignetteRepresentation";
-
- private float mCenterX = .5f;
- private float mCenterY = .5f;
- private float mRadiusX = .5f;
- private float mRadiusY = .5f;
- public static final int MODE_VIGNETTE = 0;
- public static final int MODE_EXPOSURE = 1;
- public static final int MODE_SATURATION = 2;
- public static final int MODE_CONTRAST = 3;
- public static final int MODE_FALLOFF = 4;
- private static int MIN = -100;
- private static int MAX = 100;
- private static int MAXFALLOF = 200;
-
- private BasicParameterInt mParamVignette = new BasicParameterInt(MODE_VIGNETTE, 50, MIN, MAX);
- private BasicParameterInt mParamExposure = new BasicParameterInt(MODE_EXPOSURE, 0, MIN, MAX);
- private BasicParameterInt mParamSaturation = new BasicParameterInt(MODE_SATURATION, 0, MIN, MAX);
- private BasicParameterInt mParamContrast = new BasicParameterInt(MODE_CONTRAST, 0, MIN, MAX);
- private BasicParameterInt mParamFalloff = new BasicParameterInt(MODE_FALLOFF, 40, 0, MAXFALLOF);
- private BasicParameterInt[] mAllParam = {
- mParamVignette,
- mParamExposure,
- mParamSaturation,
- mParamContrast,
- mParamFalloff};
- private int mParameterMode;
-
- public FilterVignetteRepresentation() {
- super("Vignette");
- setSerializationName("VIGNETTE");
- setShowParameterValue(true);
- setFilterType(FilterRepresentation.TYPE_VIGNETTE);
- setTextId(R.string.vignette);
- setEditorId(EditorVignette.ID);
- setName("Vignette");
- setFilterClass(ImageFilterVignette.class);
- }
-
- @Override
- public void useParametersFrom(FilterRepresentation a) {
- super.useParametersFrom(a);
- FilterVignetteRepresentation rep = (FilterVignetteRepresentation) a;
- mCenterX = rep.mCenterX;
- mCenterY = rep.mCenterY;
- mRadiusX = rep.mRadiusX;
- mRadiusY = rep.mRadiusY;
- mParamVignette.setValue(rep.mParamVignette.getValue());
- mParamExposure.setValue(rep.mParamExposure.getValue());
- mParamSaturation.setValue(rep.mParamSaturation.getValue());
- mParamContrast.setValue(rep.mParamContrast.getValue());
- mParamFalloff.setValue(rep.mParamFalloff.getValue());
- }
-
- public int getValue(int mode) {
- return mAllParam[mode].getValue();
- }
-
- public void setValue(int mode, int value) {
- mAllParam[mode].setValue(value);
- }
-
- @Override
- public String toString() {
- return getName() + " : " + mCenterX + ", " + mCenterY + " radius: " + mRadiusX;
- }
-
- @Override
- public FilterRepresentation copy() {
- FilterVignetteRepresentation representation = new FilterVignetteRepresentation();
- copyAllParameters(representation);
- return representation;
- }
-
- @Override
- protected void copyAllParameters(FilterRepresentation representation) {
- super.copyAllParameters(representation);
- representation.useParametersFrom(this);
- }
-
- @Override
- public void setCenter(float centerX, float centerY) {
- mCenterX = centerX;
- mCenterY = centerY;
- }
-
- @Override
- public float getCenterX() {
- return mCenterX;
- }
-
- @Override
- public float getCenterY() {
- return mCenterY;
- }
-
- @Override
- public void setRadius(float radiusX, float radiusY) {
- mRadiusX = radiusX;
- mRadiusY = radiusY;
- }
-
- @Override
- public void setRadiusX(float radiusX) {
- mRadiusX = radiusX;
- }
-
- @Override
- public void setRadiusY(float radiusY) {
- mRadiusY = radiusY;
- }
-
- @Override
- public float getRadiusX() {
- return mRadiusX;
- }
-
- @Override
- public float getRadiusY() {
- return mRadiusY;
- }
-
- public boolean isCenterSet() {
- return !Float.isNaN(mCenterX);
- }
-
- @Override
- public boolean isNil() {
- return false;
- }
-
- @Override
- public boolean equals(FilterRepresentation representation) {
- if (!super.equals(representation)) {
- return false;
- }
- if (representation instanceof FilterVignetteRepresentation) {
- FilterVignetteRepresentation rep = (FilterVignetteRepresentation) representation;
- for (int i = 0; i < mAllParam.length; i++) {
- if (mAllParam[i].getValue() != rep.mAllParam[i].getValue())
- return false;
- }
- if (rep.getCenterX() == getCenterX()
- && rep.getCenterY() == getCenterY()
- && rep.getRadiusX() == getRadiusX()
- && rep.getRadiusY() == getRadiusY()) {
- return true;
- }
- }
- return false;
- }
-
- private static final String ELLIPSE = "ellipse";
- private static final String ARGS = "adjust";
- @Override
- public void serializeRepresentation(JsonWriter writer) throws IOException {
- writer.beginObject();
- writer.name(ELLIPSE);
- writer.beginArray();
- writer.value(mCenterX);
- writer.value(mCenterY);
- writer.value(mRadiusX);
- writer.value(mRadiusY);
- writer.endArray();
-
- writer.name(ARGS);
- writer.beginArray();
- writer.value(mParamVignette.getValue());
- writer.value(mParamExposure.getValue());
- writer.value(mParamSaturation.getValue());
- writer.value(mParamContrast.getValue());
- writer.value(mParamFalloff.getValue());
- writer.endArray();
- writer.endObject();
- }
-
-
- @Override
- public void deSerializeRepresentation(JsonReader sreader) throws IOException {
- sreader.beginObject();
-
- while (sreader.hasNext()) {
- String name = sreader.nextName();
- if (name.startsWith(ELLIPSE)) {
- sreader.beginArray();
- sreader.hasNext();
- mCenterX = (float) sreader.nextDouble();
- sreader.hasNext();
- mCenterY = (float) sreader.nextDouble();
- sreader.hasNext();
- mRadiusX = (float) sreader.nextDouble();
- sreader.hasNext();
- mRadiusY = (float) sreader.nextDouble();
- sreader.hasNext();
- sreader.endArray();
- } else if (name.startsWith(ARGS)) {
- sreader.beginArray();
- sreader.hasNext();
- mParamVignette.setValue(sreader.nextInt());
- sreader.hasNext();
- mParamExposure.setValue(sreader.nextInt());
- sreader.hasNext();
- mParamSaturation.setValue(sreader.nextInt());
- sreader.hasNext();
- mParamContrast.setValue(sreader.nextInt());
- sreader.hasNext();
- mParamFalloff.setValue(sreader.nextInt());
- sreader.hasNext();
- sreader.endArray();
- } else {
- sreader.skipValue();
- }
- }
- sreader.endObject();
- }
- public int getParameterMode() {
- return mParameterMode;
- }
-
- public void setParameterMode(int parameterMode) {
- mParameterMode = parameterMode;
- }
-
- public int getCurrentParameter() {
- return getValue(mParameterMode);
- }
-
- public void setCurrentParameter(int value) {
- setValue(mParameterMode, value);
- }
-
- public BasicParameterInt getFilterParameter(int index) {
- return mAllParam[index];
- }
-
-}
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterChanSat.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterChanSat.java
deleted file mode 100644
index 6acf3d4..0000000
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterChanSat.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright (C) 2013 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.filters;
-
-import android.graphics.Bitmap;
-import android.graphics.Matrix;
-import android.renderscript.Allocation;
-import android.renderscript.Element;
-import android.renderscript.RenderScript;
-import android.renderscript.Script.LaunchOptions;
-import android.renderscript.Type;
-
-import com.android.gallery3d.R;
-import com.android.gallery3d.filtershow.pipeline.FilterEnvironment;
-
-public class ImageFilterChanSat extends ImageFilterRS {
- private static final String LOGTAG = "ImageFilterChanSat";
- private Bitmap mSourceBitmap;
-
- private static final int STRIP_SIZE = 64;
-
- FilterChanSatRepresentation mParameters = new FilterChanSatRepresentation();
- private Bitmap mOverlayBitmap;
-
- public ImageFilterChanSat() {
- mName = "ChannelSat";
- }
-
- @Override
- public FilterRepresentation getDefaultRepresentation() {
- return new FilterChanSatRepresentation();
- }
-
- @Override
- public void useRepresentation(FilterRepresentation representation) {
- mParameters = (FilterChanSatRepresentation) representation;
- }
-
- @Override
- protected void resetAllocations() {
-
- }
-
- @Override
- public void resetScripts() {
- }
- @Override
- protected void createFilter(android.content.res.Resources res, float scaleFactor,
- int quality) {
- createFilter(res, scaleFactor, quality, getInPixelsAllocation());
- }
-
- @Override
- protected void createFilter(android.content.res.Resources res, float scaleFactor,
- int quality, Allocation in) {
- RenderScript rsCtx = getRenderScriptContext();
-
- Type.Builder tb_float = new Type.Builder(rsCtx, Element.F32_4(rsCtx));
- tb_float.setX(in.getType().getX());
- tb_float.setY(in.getType().getY());
- }
-
-
- private Bitmap getSourceBitmap() {
- assert (mSourceBitmap != null);
- return mSourceBitmap;
- }
-
- @Override
- public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
- if (SIMPLE_ICONS && FilterEnvironment.QUALITY_ICON == quality) {
- return bitmap;
- }
-
- mSourceBitmap = bitmap;
- Bitmap ret = super.apply(bitmap, scaleFactor, quality);
- mSourceBitmap = null;
-
- return ret;
- }
-
- @Override
- protected void bindScriptValues() {
- int width = getInPixelsAllocation().getType().getX();
- int height = getInPixelsAllocation().getType().getY();
- }
-
-
-
- @Override
- protected void runFilter() {
- int []sat = new int[7];
- for(int i = 0;i<sat.length ;i ++){
- sat[i] = mParameters.getValue(i);
- }
-
-
- int width = getInPixelsAllocation().getType().getX();
- int height = getInPixelsAllocation().getType().getY();
- Matrix m = getOriginalToScreenMatrix(width, height);
-
-
- runSelectiveAdjust(
- getInPixelsAllocation(), getOutPixelsAllocation());
-
- }
-
- private void runSelectiveAdjust(Allocation in, Allocation out) {
- int width = in.getType().getX();
- int height = in.getType().getY();
-
- LaunchOptions options = new LaunchOptions();
- int ty;
- options.setX(0, width);
-
- for (ty = 0; ty < height; ty += STRIP_SIZE) {
- int endy = ty + STRIP_SIZE;
- if (endy > height) {
- endy = height;
- }
- options.setY(ty, endy);
- if (checkStop()) {
- return;
- }
- }
- }
-
- private boolean checkStop() {
- RenderScript rsCtx = getRenderScriptContext();
- rsCtx.finish();
- if (getEnvironment().needsStop()) {
- return true;
- }
- return false;
- }
-}
-
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterGrad.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterGrad.java
deleted file mode 100644
index 4956c2c..0000000
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterGrad.java
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * Copyright (C) 2013 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.filters;
-
-import android.graphics.Bitmap;
-import android.graphics.Color;
-import android.graphics.Matrix;
-
-import com.android.gallery3d.R;
-import com.android.gallery3d.filtershow.pipeline.FilterEnvironment;
-
-import android.graphics.Bitmap;
-import android.graphics.Color;
-import android.graphics.Matrix;
-import android.renderscript.Allocation;
-import android.renderscript.Element;
-import android.renderscript.RenderScript;
-import android.renderscript.Script.LaunchOptions;
-import android.renderscript.Type;
-import android.util.Log;
-
-import com.android.gallery3d.R;
-import com.android.gallery3d.filtershow.pipeline.FilterEnvironment;
-
-public class ImageFilterGrad extends ImageFilterRS {
- private static final String LOGTAG = "ImageFilterGrad";
- private Bitmap mSourceBitmap;
- private static final int RADIUS_SCALE_FACTOR = 160;
-
- private static final int STRIP_SIZE = 64;
-
- FilterGradRepresentation mParameters = new FilterGradRepresentation();
- private Bitmap mOverlayBitmap;
-
- public ImageFilterGrad() {
- mName = "grad";
- }
-
- @Override
- public FilterRepresentation getDefaultRepresentation() {
- return new FilterGradRepresentation();
- }
-
- @Override
- public void useRepresentation(FilterRepresentation representation) {
- mParameters = (FilterGradRepresentation) representation;
- }
-
- @Override
- protected void resetAllocations() {
-
- }
-
- @Override
- public void resetScripts() {
- }
- @Override
- protected void createFilter(android.content.res.Resources res, float scaleFactor,
- int quality) {
- createFilter(res, scaleFactor, quality, getInPixelsAllocation());
- }
-
- @Override
- protected void createFilter(android.content.res.Resources res, float scaleFactor,
- int quality, Allocation in) {
- RenderScript rsCtx = getRenderScriptContext();
-
- Type.Builder tb_float = new Type.Builder(rsCtx, Element.F32_4(rsCtx));
- tb_float.setX(in.getType().getX());
- tb_float.setY(in.getType().getY());
- }
-
-
- private Bitmap getSourceBitmap() {
- assert (mSourceBitmap != null);
- return mSourceBitmap;
- }
-
- @Override
- public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
- if (SIMPLE_ICONS && FilterEnvironment.QUALITY_ICON == quality) {
- return bitmap;
- }
-
- mSourceBitmap = bitmap;
- Bitmap ret = super.apply(bitmap, scaleFactor, quality);
- mSourceBitmap = null;
-
- return ret;
- }
-
- @Override
- protected void bindScriptValues() {
- int width = getInPixelsAllocation().getType().getX();
- int height = getInPixelsAllocation().getType().getY();
- }
-
- @Override
- protected void runFilter() {
- int[] x1 = mParameters.getXPos1();
- int[] y1 = mParameters.getYPos1();
- int[] x2 = mParameters.getXPos2();
- int[] y2 = mParameters.getYPos2();
-
- int width = getInPixelsAllocation().getType().getX();
- int height = getInPixelsAllocation().getType().getY();
- Matrix m = getOriginalToScreenMatrix(width, height);
- float[] coord = new float[2];
- for (int i = 0; i < x1.length; i++) {
- coord[0] = x1[i];
- coord[1] = y1[i];
- m.mapPoints(coord);
- x1[i] = (int) coord[0];
- y1[i] = (int) coord[1];
- coord[0] = x2[i];
- coord[1] = y2[i];
- m.mapPoints(coord);
- x2[i] = (int) coord[0];
- y2[i] = (int) coord[1];
- }
-
-
- runSelectiveAdjust(
- getInPixelsAllocation(), getOutPixelsAllocation());
-
- }
-
- private void runSelectiveAdjust(Allocation in, Allocation out) {
- int width = in.getType().getX();
- int height = in.getType().getY();
-
- LaunchOptions options = new LaunchOptions();
- int ty;
- options.setX(0, width);
-
- for (ty = 0; ty < height; ty += STRIP_SIZE) {
- int endy = ty + STRIP_SIZE;
- if (endy > height) {
- endy = height;
- }
- options.setY(ty, endy);
- if (checkStop()) {
- return;
- }
- }
- }
-
- private boolean checkStop() {
- RenderScript rsCtx = getRenderScriptContext();
- rsCtx.finish();
- if (getEnvironment().needsStop()) {
- return true;
- }
- return false;
- }
-}
-
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java
deleted file mode 100644
index 31d1575..0000000
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterRS.java
+++ /dev/null
@@ -1,254 +0,0 @@
-/*
- * 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.filters;
-
-import android.graphics.Bitmap;
-import android.graphics.BitmapFactory;
-import android.renderscript.*;
-import android.util.Log;
-import android.content.res.Resources;
-import com.android.gallery3d.R;
-import com.android.gallery3d.filtershow.pipeline.PipelineInterface;
-
-public abstract class ImageFilterRS extends ImageFilter {
- private static final String LOGTAG = "ImageFilterRS";
- private boolean DEBUG = false;
- private int mLastInputWidth = 0;
- private int mLastInputHeight = 0;
- private long mLastTimeCalled;
-
- public static boolean PERF_LOGGING = false;
-
- private static RenderScript mRScache = null;
-
- private volatile boolean mResourcesLoaded = false;
-
- protected abstract void createFilter(android.content.res.Resources res,
- float scaleFactor, int quality);
-
- protected void createFilter(android.content.res.Resources res,
- float scaleFactor, int quality, Allocation in) {}
- protected void bindScriptValues(Allocation in) {}
-
- protected abstract void runFilter();
-
- protected void update(Bitmap bitmap) {
- getOutPixelsAllocation().copyTo(bitmap);
- }
-
- protected RenderScript getRenderScriptContext() {
- PipelineInterface pipeline = getEnvironment().getPipeline();
- return pipeline.getRSContext();
- }
-
- protected Allocation getInPixelsAllocation() {
- PipelineInterface pipeline = getEnvironment().getPipeline();
- return pipeline.getInPixelsAllocation();
- }
-
- protected Allocation getOutPixelsAllocation() {
- PipelineInterface pipeline = getEnvironment().getPipeline();
- return pipeline.getOutPixelsAllocation();
- }
-
- @Override
- public void apply(Allocation in, Allocation out) {
- long startOverAll = System.nanoTime();
- if (PERF_LOGGING) {
- long delay = (startOverAll - mLastTimeCalled) / 1000;
- String msg = String.format("%s; image size %dx%d; ", getName(),
- in.getType().getX(), in.getType().getY());
- msg += String.format("called after %.2f ms (%.2f FPS); ",
- delay / 1000.f, 1000000.f / delay);
- Log.i(LOGTAG, msg);
- }
- mLastTimeCalled = startOverAll;
- long startFilter = 0;
- long endFilter = 0;
- if (!mResourcesLoaded) {
- PipelineInterface pipeline = getEnvironment().getPipeline();
- createFilter(pipeline.getResources(), getEnvironment().getScaleFactor(),
- getEnvironment().getQuality(), in);
- mResourcesLoaded = true;
- }
- startFilter = System.nanoTime();
- bindScriptValues(in);
- run(in, out);
- if (PERF_LOGGING) {
- getRenderScriptContext().finish();
- endFilter = System.nanoTime();
- long endOverAll = System.nanoTime();
- String msg = String.format("%s; image size %dx%d; ", getName(),
- in.getType().getX(), in.getType().getY());
- long timeOverAll = (endOverAll - startOverAll) / 1000;
- long timeFilter = (endFilter - startFilter) / 1000;
- msg += String.format("over all %.2f ms (%.2f FPS); ",
- timeOverAll / 1000.f, 1000000.f / timeOverAll);
- msg += String.format("run filter %.2f ms (%.2f FPS)",
- timeFilter / 1000.f, 1000000.f / timeFilter);
- Log.i(LOGTAG, msg);
- }
- }
-
- protected void run(Allocation in, Allocation out) {}
-
- @Override
- public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
- if (bitmap == null || bitmap.getWidth() == 0 || bitmap.getHeight() == 0) {
- return bitmap;
- }
- try {
- PipelineInterface pipeline = getEnvironment().getPipeline();
- if (DEBUG) {
- Log.v(LOGTAG, "apply filter " + getName() + " in pipeline " + pipeline.getName());
- }
- Resources rsc = pipeline.getResources();
- boolean sizeChanged = false;
- if (getInPixelsAllocation() != null
- && ((getInPixelsAllocation().getType().getX() != mLastInputWidth)
- || (getInPixelsAllocation().getType().getY() != mLastInputHeight))) {
- sizeChanged = true;
- }
- if (pipeline.prepareRenderscriptAllocations(bitmap)
- || !isResourcesLoaded() || sizeChanged) {
- freeResources();
- createFilter(rsc, scaleFactor, quality);
- setResourcesLoaded(true);
- mLastInputWidth = getInPixelsAllocation().getType().getX();
- mLastInputHeight = getInPixelsAllocation().getType().getY();
- }
- bindScriptValues();
- runFilter();
- update(bitmap);
- if (DEBUG) {
- Log.v(LOGTAG, "DONE apply filter " + getName() + " in pipeline " + pipeline.getName());
- }
- } catch (android.renderscript.RSIllegalArgumentException e) {
- Log.e(LOGTAG, "Illegal argument? " + e);
- } catch (android.renderscript.RSRuntimeException e) {
- Log.e(LOGTAG, "RS runtime exception ? " + e);
- } catch (java.lang.OutOfMemoryError e) {
- // Many of the renderscript filters allocated large (>16Mb resources) in order to apply.
- System.gc();
- displayLowMemoryToast();
- Log.e(LOGTAG, "not enough memory for filter " + getName(), e);
- }
- return bitmap;
- }
-
- protected static Allocation convertBitmap(RenderScript RS, Bitmap bitmap) {
- return Allocation.createFromBitmap(RS, bitmap,
- Allocation.MipmapControl.MIPMAP_NONE,
- Allocation.USAGE_SCRIPT | Allocation.USAGE_GRAPHICS_TEXTURE);
- }
-
- private static Allocation convertRGBAtoA(RenderScript RS, Bitmap bitmap) {
- if (RS != mRScache) {
- mRScache = RS;
- }
-
- Type.Builder tb_a8 = new Type.Builder(RS, Element.A_8(RS));
-
- Allocation bitmapTemp = convertBitmap(RS, bitmap);
- if (bitmapTemp.getType().getElement().isCompatible(Element.A_8(RS))) {
- return bitmapTemp;
- }
-
- tb_a8.setX(bitmapTemp.getType().getX());
- tb_a8.setY(bitmapTemp.getType().getY());
- Allocation bitmapAlloc = Allocation.createTyped(RS, tb_a8.create(),
- Allocation.MipmapControl.MIPMAP_NONE,
- Allocation.USAGE_SCRIPT | Allocation.USAGE_GRAPHICS_TEXTURE);
- bitmapTemp.destroy();
- return bitmapAlloc;
- }
-
- public Allocation loadScaledResourceAlpha(int resource, int inSampleSize) {
- Resources res = getEnvironment().getPipeline().getResources();
- final BitmapFactory.Options options = new BitmapFactory.Options();
- options.inSampleSize = inSampleSize;
- Bitmap bitmap = BitmapFactory.decodeResource(
- res,
- resource, options);
- Allocation ret = convertRGBAtoA(getRenderScriptContext(), bitmap);
- bitmap.recycle();
- return ret;
- }
-
- public Allocation loadScaledResourceAlpha(int resource, int w, int h, int inSampleSize) {
- Resources res = getEnvironment().getPipeline().getResources();
- final BitmapFactory.Options options = new BitmapFactory.Options();
- options.inSampleSize = inSampleSize;
- Bitmap bitmap = BitmapFactory.decodeResource(
- res,
- resource, options);
- Bitmap resizeBitmap = Bitmap.createScaledBitmap(bitmap, w, h, true);
- Allocation ret = convertRGBAtoA(getRenderScriptContext(), resizeBitmap);
- resizeBitmap.recycle();
- bitmap.recycle();
- return ret;
- }
-
- public Allocation loadResourceAlpha(int resource) {
- return loadScaledResourceAlpha(resource, 1);
- }
-
- public Allocation loadResource(int resource) {
- Resources res = getEnvironment().getPipeline().getResources();
- final BitmapFactory.Options options = new BitmapFactory.Options();
- options.inPreferredConfig = Bitmap.Config.ARGB_8888;
- Bitmap bitmap = BitmapFactory.decodeResource(
- res,
- resource, options);
- Allocation ret = convertBitmap(getRenderScriptContext(), bitmap);
- bitmap.recycle();
- return ret;
- }
-
- private boolean isResourcesLoaded() {
- return mResourcesLoaded;
- }
-
- private void setResourcesLoaded(boolean resourcesLoaded) {
- mResourcesLoaded = resourcesLoaded;
- }
-
- /**
- * Bitmaps and RS Allocations should be cleared here
- */
- abstract protected void resetAllocations();
-
- /**
- * RS Script objects (and all other RS objects) should be cleared here
- */
- public abstract void resetScripts();
-
- /**
- * Scripts values should be bound here
- */
- abstract protected void bindScriptValues();
-
- public void freeResources() {
- if (!isResourcesLoaded()) {
- return;
- }
- resetAllocations();
- mLastInputWidth = 0;
- mLastInputHeight = 0;
- setResourcesLoaded(false);
- }
-}
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java
deleted file mode 100755
index e556c23..0000000
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterSharpen.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * 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.filters;
-
-import android.renderscript.Element;
-import android.renderscript.ScriptIntrinsicConvolve3x3;
-
-import com.android.gallery3d.filtershow.editors.BasicEditor;
-import com.android.gallery3d.R;
-
-public class ImageFilterSharpen extends ImageFilterRS {
- private static final String SERIALIZATION_NAME = "SHARPEN";
- private static final String LOGTAG = "ImageFilterSharpen";
- private ScriptIntrinsicConvolve3x3 mScript;
-
- private FilterBasicRepresentation mParameters;
-
- public ImageFilterSharpen() {
- mName = "Sharpen";
- }
-
- public FilterRepresentation getDefaultRepresentation() {
- FilterRepresentation representation = new FilterBasicRepresentation("Sharpen", -100, 0, 100);
- representation.setSerializationName(SERIALIZATION_NAME);
- representation.setShowParameterValue(true);
- representation.setFilterClass(ImageFilterSharpen.class);
- representation.setTextId(R.string.sharpness);
- representation.setEditorId(BasicEditor.ID);
- representation.setSupportsPartialRendering(true);
- return representation;
- }
-
- public void useRepresentation(FilterRepresentation representation) {
- FilterBasicRepresentation parameters = (FilterBasicRepresentation) representation;
- mParameters = parameters;
- }
-
- @Override
- protected void resetAllocations() {
- // nothing to do
- }
-
- @Override
- public void resetScripts() {
- if (mScript != null) {
- mScript.destroy();
- mScript = null;
- }
- }
-
- @Override
- protected void createFilter(android.content.res.Resources res, float scaleFactor,
- int quality) {
- if (mScript == null) {
- mScript = ScriptIntrinsicConvolve3x3.create(getRenderScriptContext(),
- Element.RGBA_8888(getRenderScriptContext()));
- }
- }
-
- private void computeKernel() {
- float p1 = mParameters.getValue();
- float value = p1 / 100.0f;
- float f[] = new float[9];
- float p = value;
- f[0] = -p;
- f[1] = -p;
- f[2] = -p;
- f[3] = -p;
- f[4] = 8 * p + 1;
- f[5] = -p;
- f[6] = -p;
- f[7] = -p;
- f[8] = -p;
- mScript.setCoefficients(f);
- }
-
- @Override
- protected void bindScriptValues() {
- }
-
- @Override
- protected void runFilter() {
- if (mParameters == null) {
- return;
- }
- computeKernel();
- mScript.setInput(getInPixelsAllocation());
- mScript.forEach(getOutPixelsAllocation());
- }
-
-}
diff --git a/src/com/android/gallery3d/filtershow/filters/ImageFilterVignette.java b/src/com/android/gallery3d/filtershow/filters/ImageFilterVignette.java
deleted file mode 100644
index fd8b5bd..0000000
--- a/src/com/android/gallery3d/filtershow/filters/ImageFilterVignette.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * 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.filters;
-
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.Matrix;
-import android.graphics.Rect;
-import com.android.gallery3d.R;
-import com.android.gallery3d.filtershow.imageshow.MasterImage;
-import com.android.gallery3d.filtershow.pipeline.FilterEnvironment;
-import android.renderscript.Allocation;
-import android.renderscript.Element;
-import android.renderscript.RenderScript;
-import android.renderscript.Script.LaunchOptions;
-import android.renderscript.Type;
-import android.util.Log;
-
-public class ImageFilterVignette extends ImageFilterRS {
- private static final String LOGTAG = "ImageFilterVignette";
- private Bitmap mOverlayBitmap;
- FilterVignetteRepresentation mParameters;
- public static final int MODE_VIGNETTE = FilterVignetteRepresentation.MODE_VIGNETTE;
- public static final int MODE_EXPOSURE = FilterVignetteRepresentation.MODE_EXPOSURE;
- public static final int MODE_SATURATION = FilterVignetteRepresentation.MODE_SATURATION;
- public static final int MODE_CONTRAST = FilterVignetteRepresentation.MODE_CONTRAST;
- public static final int MODE_FALLOFF = FilterVignetteRepresentation.MODE_FALLOFF;
-
- public ImageFilterVignette() {
- mName = "Vignette";
- }
-
- @Override
- public FilterRepresentation getDefaultRepresentation() {
- FilterVignetteRepresentation representation = new FilterVignetteRepresentation();
- return representation;
- }
-
- @Override
- public void useRepresentation(FilterRepresentation representation) {
- mParameters = (FilterVignetteRepresentation) representation;
- }
-
- native protected void nativeApplyFilter(
- Bitmap bitmap, int w, int h, int cx, int cy, float radx, float rady,
- float strength, float finalValue);
-
- private float calcRadius(float cx, float cy, int w, int h) {
- float d = cx;
- if (d < (w - cx)) {
- d = w - cx;
- }
- if (d < cy) {
- d = cy;
- }
- if (d < (h - cy)) {
- d = h - cy;
- }
- return d * d * 2.0f;
- }
-
- @Override
- protected void createFilter(Resources res, float scaleFactor, int quality) {
- RenderScript rsCtx = getRenderScriptContext();
-
- }
-
- @Override
- protected void runFilter() {
-
- int w = getInPixelsAllocation().getType().getX();
- int h = getInPixelsAllocation().getType().getY();
-
- float cx = w / 2;
- float cy = h / 2;
- float r = calcRadius(cx, cy, w, h);
- float rx = r;
- float ry = r;
-
- float[]c = new float[2];
- if (mParameters.isCenterSet()) {
- Matrix m = getOriginalToScreenMatrix(w, h);
- Rect bounds = MasterImage.getImage().getOriginalBounds();
- c[0] = bounds.right * mParameters.getCenterX();
- c[1] = bounds.bottom * mParameters.getCenterY();
- m.mapPoints(c);
- cx = c[0];
- cy = c[1];
- c[0] = bounds.right * mParameters.getRadiusX();
- c[1] = bounds.bottom * mParameters.getRadiusY();
- m.mapVectors(c);
- rx = c[0];
- ry = c[1];
- }
-
- int v = mParameters.getValue(MODE_VIGNETTE);
- }
-
- @Override
- public Bitmap apply(Bitmap bitmap, float scaleFactor, int quality) {
- if (SIMPLE_ICONS && FilterEnvironment.QUALITY_ICON == quality) {
- if (mOverlayBitmap == null) {
- Resources res = getEnvironment().getPipeline().getResources();
- mOverlayBitmap = IconUtilities.getFXBitmap(res,
- R.drawable.filtershow_icon_vignette);
- }
-
- Canvas c = new Canvas(bitmap);
- int dim = Math.max(bitmap.getWidth(), bitmap.getHeight());
- Rect r = new Rect(0, 0, dim, dim);
- c.drawBitmap(mOverlayBitmap, null, r, null);
- return bitmap;
- }
- Bitmap ret = super.apply(bitmap, scaleFactor, quality);
- return bitmap;
- }
-
-
- @Override
- protected void resetAllocations() {
-
- }
-
- @Override
- public void resetScripts() {
-
- }
-
- @Override
- protected void bindScriptValues() {
- int width = getInPixelsAllocation().getType().getX();
- int height = getInPixelsAllocation().getType().getY();
- }
-}
diff --git a/src/com/android/gallery3d/filtershow/filters/convolve3x3.rs b/src/com/android/gallery3d/filtershow/filters/convolve3x3.rs
deleted file mode 100644
index d348b92..0000000
--- a/src/com/android/gallery3d/filtershow/filters/convolve3x3.rs
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- * 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.
- */
-
-#pragma version(1)
-#pragma rs java_package_name(com.android.gallery3d.filtershow.filters)
-#pragma rs_fp_relaxed
-
-int32_t gWidth;
-int32_t gHeight;
-const uchar4 *gPixels;
-rs_allocation gIn;
-
-float gCoeffs[9];
-
-void root(const uchar4 *in, uchar4 *out, const void *usrData, uint32_t x, uint32_t y) {
- uint32_t x1 = min((int32_t)x+1, gWidth-1);
- uint32_t x2 = max((int32_t)x-1, 0);
- uint32_t y1 = min((int32_t)y+1, gHeight-1);
- uint32_t y2 = max((int32_t)y-1, 0);
-
- float4 p00 = rsUnpackColor8888(*((uchar4 *)rsGetElementAt(gIn, x1, y1)));
- float4 p01 = rsUnpackColor8888(*((uchar4 *)rsGetElementAt(gIn, x, y1)));
- float4 p02 = rsUnpackColor8888(*((uchar4 *)rsGetElementAt(gIn, x2, y1)));
- float4 p10 = rsUnpackColor8888(*((uchar4 *)rsGetElementAt(gIn, x1, y)));
- float4 p11 = rsUnpackColor8888(*((uchar4 *)rsGetElementAt(gIn, x, y)));
- float4 p12 = rsUnpackColor8888(*((uchar4 *)rsGetElementAt(gIn, x2, y)));
- float4 p20 = rsUnpackColor8888(*((uchar4 *)rsGetElementAt(gIn, x1, y2)));
- float4 p21 = rsUnpackColor8888(*((uchar4 *)rsGetElementAt(gIn, x, y2)));
- float4 p22 = rsUnpackColor8888(*((uchar4 *)rsGetElementAt(gIn, x2, y2)));
-
- p00 *= gCoeffs[0];
- p01 *= gCoeffs[1];
- p02 *= gCoeffs[2];
- p10 *= gCoeffs[3];
- p11 *= gCoeffs[4];
- p12 *= gCoeffs[5];
- p20 *= gCoeffs[6];
- p21 *= gCoeffs[7];
- p22 *= gCoeffs[8];
-
- p00 += p01;
- p02 += p10;
- p11 += p12;
- p20 += p21;
-
- p22 += p00;
- p02 += p11;
-
- p20 += p22;
- p20 += p02;
-
- p20 = clamp(p20, 0.f, 1.f);
- *out = rsPackColorTo8888(p20.r, p20.g, p20.b);
-}
diff --git a/src/com/android/gallery3d/filtershow/filters/grad.rs b/src/com/android/gallery3d/filtershow/filters/grad.rs
deleted file mode 100644
index ddbafd3..0000000
--- a/src/com/android/gallery3d/filtershow/filters/grad.rs
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * Copyright (C) 2012 Unknown
- *
- * 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.
- */
-
-#pragma version(1)
-#pragma rs java_package_name(com.android.gallery3d.filtershow.filters)
-
-#define MAX_POINTS 16
-
-uint32_t inputWidth;
-uint32_t inputHeight;
-static const float Rf = 0.2999f;
-static const float Gf = 0.587f;
-static const float Bf = 0.114f;
-//static const float size_scale = 0.01f;
-
-typedef struct {
- rs_matrix3x3 colorMatrix;
- float rgbOff;
- float dx;
- float dy;
- float off;
-} UPointData;
-int mNumberOfLines;
-// input data
-bool mask[MAX_POINTS];
-int xPos1[MAX_POINTS];
-int yPos1[MAX_POINTS];
-int xPos2[MAX_POINTS];
-int yPos2[MAX_POINTS];
-int size[MAX_POINTS];
-int brightness[MAX_POINTS];
-int contrast[MAX_POINTS];
-int saturation[MAX_POINTS];
-
-// generated data
-static UPointData grads[MAX_POINTS];
-
-void setupGradParams() {
- int k = 0;
- for (int i = 0; i < MAX_POINTS; i++) {
- if (!mask[i]) {
- continue;
- }
- float x1 = xPos1[i];
- float y1 = yPos1[i];
- float x2 = xPos2[i];
- float y2 = yPos2[i];
-
- float denom = (y2 * y2 - 2 * y1 * y2 + x2 * x2 - 2 * x1 * x2 + y1 * y1 + x1 * x1);
- if (denom == 0) {
- continue;
- }
- grads[k].dy = (y1 - y2) / denom;
- grads[k].dx = (x1 - x2) / denom;
- grads[k].off = (y2 * y2 + x2 * x2 - x1 * x2 - y1 * y2) / denom;
-
- float S = 1+saturation[i]/100.f;
- float MS = 1-S;
- float Rt = Rf * MS;
- float Gt = Gf * MS;
- float Bt = Bf * MS;
-
- float b = 1+brightness[i]/100.f;
- float c = 1+contrast[i]/100.f;
- b *= c;
- grads[k].rgbOff = .5f - c/2.f;
- rsMatrixSet(&grads[i].colorMatrix, 0, 0, b * (Rt + S));
- rsMatrixSet(&grads[i].colorMatrix, 1, 0, b * Gt);
- rsMatrixSet(&grads[i].colorMatrix, 2, 0, b * Bt);
- rsMatrixSet(&grads[i].colorMatrix, 0, 1, b * Rt);
- rsMatrixSet(&grads[i].colorMatrix, 1, 1, b * (Gt + S));
- rsMatrixSet(&grads[i].colorMatrix, 2, 1, b * Bt);
- rsMatrixSet(&grads[i].colorMatrix, 0, 2, b * Rt);
- rsMatrixSet(&grads[i].colorMatrix, 1, 2, b * Gt);
- rsMatrixSet(&grads[i].colorMatrix, 2, 2, b * (Bt + S));
-
- k++;
- }
- mNumberOfLines = k;
-}
-
-void init() {
-
-}
-
-uchar4 __attribute__((kernel)) selectiveAdjust(const uchar4 in, uint32_t x,
- uint32_t y) {
- float4 pixel = rsUnpackColor8888(in);
-
- float4 wsum = pixel;
- wsum.a = 0.f;
- for (int i = 0; i < mNumberOfLines; i++) {
- UPointData* grad = &grads[i];
- float t = clamp(x*grad->dx+y*grad->dy+grad->off,0.f,1.0f);
- wsum.xyz = wsum.xyz*(1-t)+
- t*(rsMatrixMultiply(&grad->colorMatrix ,wsum.xyz)+grad->rgbOff);
-
- }
-
- pixel.rgb = wsum.rgb;
- pixel.a = 1.0f;
-
- uchar4 out = rsPackColorTo8888(clamp(pixel, 0.f, 1.0f));
- return out;
-}
-
-
-
diff --git a/src/com/android/gallery3d/filtershow/filters/grey.rs b/src/com/android/gallery3d/filtershow/filters/grey.rs
deleted file mode 100644
index e018803..0000000
--- a/src/com/android/gallery3d/filtershow/filters/grey.rs
+++ /dev/null
@@ -1,22 +0,0 @@
- /*
- * Copyright (C) 2013 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.
- */
-
-#pragma version(1)
-#pragma rs java_package_name(com.android.gallery3d.filtershow.filters)
-
-uchar __attribute__((kernel)) RGBAtoA(uchar4 in) {
- return in.r;
-}
diff --git a/src/com/android/gallery3d/filtershow/filters/saturation.rs b/src/com/android/gallery3d/filtershow/filters/saturation.rs
deleted file mode 100644
index 5b21640..0000000
--- a/src/com/android/gallery3d/filtershow/filters/saturation.rs
+++ /dev/null
@@ -1,160 +0,0 @@
-/*
- * Copyright (C) 2012 Unknown
- *
- * 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.
- */
-
-#pragma version(1)
-#pragma rs java_package_name(com.android.gallery3d.filtershow.filters)
-
-#define MAX_CHANELS 7
-#define MAX_HUE 4096
-static const int ABITS = 4;
-static const int HSCALE = 256;
-static const int k1=255 << ABITS;
-static const int k2=HSCALE << ABITS;
-
-static const float Rf = 0.2999f;
-static const float Gf = 0.587f;
-static const float Bf = 0.114f;
-
-rs_matrix3x3 colorMatrix_min;
-rs_matrix3x3 colorMatrix_max;
-
-int mNumberOfLines;
-// input data
-int saturation[MAX_CHANELS];
-float sat[MAX_CHANELS];
-
-float satLut[MAX_HUE];
-// generated data
-
-
-void setupGradParams() {
-
- int master = saturation[0];
- int max = master+saturation[1];
- int min = max;
-
- // calculate the minimum and maximum saturation
- for (int i = 1; i < MAX_CHANELS; i++) {
- int v = master+saturation[i];
- if (max < v) {
- max = v;
- }
- else if (min > v) {
- min = v;
- }
- }
- // generate a lookup table for all hue 0 to 4K which goes from 0 to 1 0=min sat 1 = max sat
- min = min - 1;
- for(int i = 0; i < MAX_HUE ; i++) {
- float p = i * 6 / (float)MAX_HUE;
- int ip = ((int)(p + .5f)) % 6;
- int v = master + saturation[ip + 1];
- satLut[i] = (v - min)/(float)(max - min);
- }
-
- float S = 1 + max / 100.f;
- float MS = 1 - S;
- float Rt = Rf * MS;
- float Gt = Gf * MS;
- float Bt = Bf * MS;
- float b = 1.f;
-
- // Generate 2 color matrix one at min sat and one at max
- rsMatrixSet(&colorMatrix_max, 0, 0, b * (Rt + S));
- rsMatrixSet(&colorMatrix_max, 1, 0, b * Gt);
- rsMatrixSet(&colorMatrix_max, 2, 0, b * Bt);
- rsMatrixSet(&colorMatrix_max, 0, 1, b * Rt);
- rsMatrixSet(&colorMatrix_max, 1, 1, b * (Gt + S));
- rsMatrixSet(&colorMatrix_max, 2, 1, b * Bt);
- rsMatrixSet(&colorMatrix_max, 0, 2, b * Rt);
- rsMatrixSet(&colorMatrix_max, 1, 2, b * Gt);
- rsMatrixSet(&colorMatrix_max, 2, 2, b * (Bt + S));
-
- S = 1 + min / 100.f;
- MS = 1-S;
- Rt = Rf * MS;
- Gt = Gf * MS;
- Bt = Bf * MS;
- b = 1;
-
- rsMatrixSet(&colorMatrix_min, 0, 0, b * (Rt + S));
- rsMatrixSet(&colorMatrix_min, 1, 0, b * Gt);
- rsMatrixSet(&colorMatrix_min, 2, 0, b * Bt);
- rsMatrixSet(&colorMatrix_min, 0, 1, b * Rt);
- rsMatrixSet(&colorMatrix_min, 1, 1, b * (Gt + S));
- rsMatrixSet(&colorMatrix_min, 2, 1, b * Bt);
- rsMatrixSet(&colorMatrix_min, 0, 2, b * Rt);
- rsMatrixSet(&colorMatrix_min, 1, 2, b * Gt);
- rsMatrixSet(&colorMatrix_min, 2, 2, b * (Bt + S));
-}
-
-static ushort rgb2hue( uchar4 rgb)
-{
- int iMin,iMax,chroma;
-
- int ri = rgb.r;
- int gi = rgb.g;
- int bi = rgb.b;
- short rv,rs,rh;
-
- if (ri > gi) {
- iMax = max (ri, bi);
- iMin = min (gi, bi);
- } else {
- iMax = max (gi, bi);
- iMin = min (ri, bi);
- }
-
- rv = (short) (iMax << ABITS);
-
- if (rv == 0) {
- return 0;
- }
-
- chroma = iMax - iMin;
- rs = (short) ((k1 * chroma) / iMax);
- if (rs == 0) {
- return 0;
- }
-
- if ( ri == iMax ) {
- rh = (short) ((k2 * (6 * chroma + gi - bi))/(6 * chroma));
- if (rh >= k2) {
- rh -= k2;
- }
- return rh;
- }
-
- if (gi == iMax) {
- return(short) ((k2 * (2 * chroma + bi - ri)) / (6 * chroma));
- }
-
- return (short) ((k2 * (4 * chroma + ri - gi)) / (6 * chroma));
-}
-
-uchar4 __attribute__((kernel)) selectiveAdjust(const uchar4 in, uint32_t x,
- uint32_t y) {
- float4 pixel = rsUnpackColor8888(in);
-
- int hue = rgb2hue(in);
-
- float t = satLut[hue];
- pixel.xyz = rsMatrixMultiply(&colorMatrix_min ,pixel.xyz) * (1 - t) +
- t * (rsMatrixMultiply(&colorMatrix_max ,pixel.xyz));
-
- pixel.a = 1.0f;
- return rsPackColorTo8888(clamp(pixel, 0.f, 1.0f));
-}
diff --git a/src/com/android/gallery3d/filtershow/filters/vignette.rs b/src/com/android/gallery3d/filtershow/filters/vignette.rs
deleted file mode 100644
index 7ab4663..0000000
--- a/src/com/android/gallery3d/filtershow/filters/vignette.rs
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2013 Unknown
- *
- * 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.
- */
-
-#pragma version(1)
-#pragma rs java_package_name(com.android.gallery3d.filtershow.filters)
-
-uint32_t inputWidth;
-uint32_t inputHeight;
-float centerx;
-float centery;
-float radiusx;
-float radiusy;
-float strength;
-float finalBright;
-float finalSaturation;
-float finalContrast;
-float finalSubtract;
-rs_matrix3x3 colorMatrix;
-float scalex;
-float scaley;
-float offset;
-static const float Rf = 0.2999f;
-static const float Gf = 0.587f;
-static const float Bf = 0.114f;
-
-
-void setupVignetteParams() {
- scalex = 1.f / radiusx;
- scaley = 1.f / radiusy;
-
- float S = 1 + finalSaturation / 100.f;
- float MS = 1 - S;
- float Rt = Rf * MS;
- float Gt = Gf * MS;
- float Bt = Bf * MS;
-
- float b = 1 + finalBright / 100.f;
- float c = 1 + finalContrast / 100.f;
- b *= c;
- offset = .5f - c / 2.f - finalSubtract / 100.f;
- rsMatrixSet(&colorMatrix, 0, 0, b * (Rt + S));
- rsMatrixSet(&colorMatrix, 1, 0, b * Gt);
- rsMatrixSet(&colorMatrix, 2, 0, b * Bt);
- rsMatrixSet(&colorMatrix, 0, 1, b * Rt);
- rsMatrixSet(&colorMatrix, 1, 1, b * (Gt + S));
- rsMatrixSet(&colorMatrix, 2, 1, b * Bt);
- rsMatrixSet(&colorMatrix, 0, 2, b * Rt);
- rsMatrixSet(&colorMatrix, 1, 2, b * Gt);
- rsMatrixSet(&colorMatrix, 2, 2, b * (Bt + S));
-}
-
-uchar4 __attribute__((kernel)) vignette(const uchar4 in, uint32_t x, uint32_t y) {
- float4 pixel = rsUnpackColor8888(in);
- float radx = (x - centerx) * scalex;
- float rady = (y - centery) * scaley;
- float dist = strength * (sqrt(radx * radx + rady * rady) - 1.f);
- float t = (1.f + dist / sqrt(1.f + dist* dist)) * .5f;
- float4 wsum = pixel;
- wsum.xyz = wsum.xyz * (1 - t) + t * (rsMatrixMultiply(&colorMatrix, wsum.xyz) + offset);
- wsum.a = 1.0f;
- uchar4 out = rsPackColorTo8888(clamp(wsum, 0.f, 1.0f));
- return out;
-}
diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageGrad.java b/src/com/android/gallery3d/filtershow/imageshow/ImageGrad.java
deleted file mode 100644
index b55cc2b..0000000
--- a/src/com/android/gallery3d/filtershow/imageshow/ImageGrad.java
+++ /dev/null
@@ -1,215 +0,0 @@
-package com.android.gallery3d.filtershow.imageshow;
-/*
- * Copyright (C) 2013 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.
- */
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.graphics.Canvas;
-import android.graphics.Matrix;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-
-import com.android.gallery3d.R;
-import com.android.gallery3d.filtershow.editors.EditorGrad;
-import com.android.gallery3d.filtershow.filters.FilterGradRepresentation;
-
-public class ImageGrad extends ImageShow {
- private static final String LOGTAG = "ImageGrad";
- private FilterGradRepresentation mGradRep;
- private EditorGrad mEditorGrad;
- private float mMinTouchDist;
- private int mActiveHandle = -1;
- private GradControl mEllipse;
-
- Matrix mToScr = new Matrix();
- float[] mPointsX = new float[FilterGradRepresentation.MAX_POINTS];
- float[] mPointsY = new float[FilterGradRepresentation.MAX_POINTS];
-
- public ImageGrad(Context context) {
- super(context);
- Resources res = context.getResources();
- mMinTouchDist = res.getDimensionPixelSize(R.dimen.gradcontrol_min_touch_dist);
- mEllipse = new GradControl(context);
- mEllipse.setShowReshapeHandles(false);
- }
-
- public ImageGrad(Context context, AttributeSet attrs) {
- super(context, attrs);
- Resources res = context.getResources();
- mMinTouchDist = res.getDimensionPixelSize(R.dimen.gradcontrol_min_touch_dist);
- mEllipse = new GradControl(context);
- mEllipse.setShowReshapeHandles(false);
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- int mask = event.getActionMasked();
-
- if (mActiveHandle == -1) {
- if (MotionEvent.ACTION_DOWN != mask) {
- return super.onTouchEvent(event);
- }
- if (event.getPointerCount() == 1) {
- mActiveHandle = mEllipse.getCloseHandle(event.getX(), event.getY());
- if (mActiveHandle == -1) {
- float x = event.getX();
- float y = event.getY();
- float min_d = Float.MAX_VALUE;
- int pos = -1;
- for (int i = 0; i < mPointsX.length; i++) {
- if (mPointsX[i] == -1) {
- continue;
- }
- float d = (float) Math.hypot(x - mPointsX[i], y - mPointsY[i]);
- if ( min_d > d) {
- min_d = d;
- pos = i;
- }
- }
- if (min_d > mMinTouchDist){
- pos = -1;
- }
-
- if (pos != -1) {
- mGradRep.setSelectedPoint(pos);
- resetImageCaches(this);
- mEditorGrad.updateSeekBar(mGradRep);
- mEditorGrad.commitLocalRepresentation();
- invalidate();
- }
- }
- }
- if (mActiveHandle == -1) {
- return super.onTouchEvent(event);
- }
- } else {
- switch (mask) {
- case MotionEvent.ACTION_UP: {
-
- mActiveHandle = -1;
- break;
- }
- case MotionEvent.ACTION_DOWN: {
- break;
- }
- }
- }
- float x = event.getX();
- float y = event.getY();
-
- mEllipse.setScrImageInfo(getScreenToImageMatrix(true),
- MasterImage.getImage().getOriginalBounds());
-
- switch (mask) {
- case (MotionEvent.ACTION_DOWN): {
- mEllipse.actionDown(x, y, mGradRep);
- break;
- }
- case (MotionEvent.ACTION_UP):
- case (MotionEvent.ACTION_MOVE): {
- mEllipse.actionMove(mActiveHandle, x, y, mGradRep);
- setRepresentation(mGradRep);
- break;
- }
- }
- invalidate();
- mEditorGrad.commitLocalRepresentation();
- return true;
- }
-
- public void setRepresentation(FilterGradRepresentation pointRep) {
- mGradRep = pointRep;
- Matrix toImg = getScreenToImageMatrix(false);
-
- toImg.invert(mToScr);
-
- float[] c1 = new float[] { mGradRep.getPoint1X(), mGradRep.getPoint1Y() };
- float[] c2 = new float[] { mGradRep.getPoint2X(), mGradRep.getPoint2Y() };
-
- if (c1[0] == -1) {
- float cx = MasterImage.getImage().getOriginalBounds().width() / 2;
- float cy = MasterImage.getImage().getOriginalBounds().height() / 2;
- float rx = Math.min(cx, cy) * .4f;
-
- mGradRep.setPoint1(cx, cy-rx);
- mGradRep.setPoint2(cx, cy+rx);
- c1[0] = cx;
- c1[1] = cy-rx;
- mToScr.mapPoints(c1);
- if (getWidth() != 0) {
- mEllipse.setPoint1(c1[0], c1[1]);
- c2[0] = cx;
- c2[1] = cy+rx;
- mToScr.mapPoints(c2);
- mEllipse.setPoint2(c2[0], c2[1]);
- }
- mEditorGrad.commitLocalRepresentation();
- } else {
- mToScr.mapPoints(c1);
- mToScr.mapPoints(c2);
- mEllipse.setPoint1(c1[0], c1[1]);
- mEllipse.setPoint2(c2[0], c2[1]);
- }
- }
-
- public void drawOtherPoints(Canvas canvas) {
- computCenterLocations();
- for (int i = 0; i < mPointsX.length; i++) {
- if (mPointsX[i] != -1) {
- mEllipse.paintGrayPoint(canvas, mPointsX[i], mPointsY[i]);
- }
- }
- }
-
- public void computCenterLocations() {
- int x1[] = mGradRep.getXPos1();
- int y1[] = mGradRep.getYPos1();
- int x2[] = mGradRep.getXPos2();
- int y2[] = mGradRep.getYPos2();
- int selected = mGradRep.getSelectedPoint();
- boolean m[] = mGradRep.getMask();
- float[] c = new float[2];
- for (int i = 0; i < m.length; i++) {
- if (selected == i || !m[i]) {
- mPointsX[i] = -1;
- continue;
- }
-
- c[0] = (x1[i]+x2[i])/2;
- c[1] = (y1[i]+y2[i])/2;
- mToScr.mapPoints(c);
-
- mPointsX[i] = c[0];
- mPointsY[i] = c[1];
- }
- }
-
- public void setEditor(EditorGrad editorGrad) {
- mEditorGrad = editorGrad;
- }
-
- @Override
- public void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- if (mGradRep == null) {
- return;
- }
- setRepresentation(mGradRep);
- mEllipse.draw(canvas);
- drawOtherPoints(canvas);
- }
-
-}
diff --git a/src/com/android/gallery3d/filtershow/imageshow/ImageVignette.java b/src/com/android/gallery3d/filtershow/imageshow/ImageVignette.java
deleted file mode 100644
index 9571287..0000000
--- a/src/com/android/gallery3d/filtershow/imageshow/ImageVignette.java
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * Copyright (C) 2013 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.imageshow;
-
-import android.content.Context;
-import android.graphics.Canvas;
-import android.graphics.Matrix;
-import android.util.AttributeSet;
-import android.view.MotionEvent;
-
-import com.android.gallery3d.filtershow.editors.EditorVignette;
-import com.android.gallery3d.filtershow.filters.FilterVignetteRepresentation;
-
-public class ImageVignette extends ImageShow {
- private static final String LOGTAG = "ImageVignette";
-
- private FilterVignetteRepresentation mVignetteRep;
- private EditorVignette mEditorVignette;
- private OvalSpaceAdapter mScreenOval = new OvalSpaceAdapter();
- private int mActiveHandle = -1;
-
- EclipseControl mElipse;
-
- public ImageVignette(Context context) {
- super(context);
- mElipse = new EclipseControl(context);
- }
-
- public ImageVignette(Context context, AttributeSet attrs) {
- super(context, attrs);
- mElipse = new EclipseControl(context);
- }
-
- static class OvalSpaceAdapter implements Oval {
- private Oval mOval;
- Matrix mToScr;
- Matrix mToImage;
- int mImgWidth;
- int mImgHeight;
- float[] mTmp = new float[2];
- float mTmpRadiusX;
- float mTmpRadiusY;
-
- public void setImageOval(Oval oval) {
- mOval = oval;
- }
-
- public void setTransform(Matrix toScr, Matrix toImage, int imgWidth, int imgHeight) {
- mToScr = toScr;
- mToImage = toImage;
- mImgWidth = imgWidth;
- mImgHeight = imgHeight;
- mTmpRadiusX = getRadiusX();
- mTmpRadiusY = getRadiusY();
- }
-
- @Override
- public void setCenter(float x, float y) {
- mTmp[0] = x;
- mTmp[1] = y;
- mToImage.mapPoints(mTmp);
- mOval.setCenter(mTmp[0] / mImgWidth, mTmp[1] / mImgHeight);
- }
-
- @Override
- public void setRadius(float w, float h) {
- mTmp[0] = mTmpRadiusX = w;
- mTmp[1] = mTmpRadiusY = h;
- mToImage.mapVectors(mTmp);
- mOval.setRadius(mTmp[0] / mImgWidth, mTmp[1] / mImgHeight);
- }
-
- @Override
- public float getCenterX() {
- mTmp[0] = mOval.getCenterX() * mImgWidth;
- mTmp[1] = mOval.getCenterY() * mImgHeight;
- mToScr.mapPoints(mTmp);
-
- return mTmp[0];
- }
-
- @Override
- public float getCenterY() {
- mTmp[0] = mOval.getCenterX() * mImgWidth;
- mTmp[1] = mOval.getCenterY() * mImgHeight;
- mToScr.mapPoints(mTmp);
- return mTmp[1];
- }
-
- @Override
- public float getRadiusX() {
- mTmp[0] = mOval.getRadiusX() * mImgWidth;
- mTmp[1] = mOval.getRadiusY() * mImgHeight;
- mToScr.mapVectors(mTmp);
- return Math.abs(mTmp[0]);
- }
-
- @Override
- public float getRadiusY() {
- mTmp[0] = mOval.getRadiusX() * mImgWidth;
- mTmp[1] = mOval.getRadiusY() * mImgHeight;
- mToScr.mapVectors(mTmp);
- return Math.abs(mTmp[1]);
- }
-
- @Override
- public void setRadiusY(float y) {
- mTmp[0] = mTmpRadiusX;
- mTmp[1] = mTmpRadiusY = y;
- mToImage.mapVectors(mTmp);
- mOval.setRadiusX(mTmp[0] / mImgWidth);
- mOval.setRadiusY(mTmp[1] / mImgHeight);
- }
-
- @Override
- public void setRadiusX(float x) {
- mTmp[0] = mTmpRadiusX = x;
- mTmp[1] = mTmpRadiusY;
- mToImage.mapVectors(mTmp);
- mOval.setRadiusX(mTmp[0] / mImgWidth);
- mOval.setRadiusY(mTmp[1] / mImgHeight);
- }
- }
-
- @Override
- public boolean onTouchEvent(MotionEvent event) {
- int w = MasterImage.getImage().getOriginalBounds().width();
- int h = MasterImage.getImage().getOriginalBounds().height();
- int mask = event.getActionMasked();
- if (mActiveHandle == -1) {
- if (MotionEvent.ACTION_DOWN != mask) {
- return super.onTouchEvent(event);
- }
- if (event.getPointerCount() == 1) {
- mActiveHandle = mElipse.getCloseHandle(event.getX(), event.getY());
- }
- if (mActiveHandle == -1) {
- return super.onTouchEvent(event);
- }
- } else {
- switch (mask) {
- case MotionEvent.ACTION_UP:
- mActiveHandle = -1;
- break;
- case MotionEvent.ACTION_DOWN:
- break;
- }
- }
- float x = event.getX();
- float y = event.getY();
-
- mElipse.setScrImageInfo(new Matrix(),
- MasterImage.getImage().getOriginalBounds());
-
- boolean didComputeEllipses = false;
- switch (mask) {
- case (MotionEvent.ACTION_DOWN):
- mElipse.actionDown(x, y, mScreenOval);
- break;
- case (MotionEvent.ACTION_UP):
- case (MotionEvent.ACTION_MOVE):
-
- mElipse.actionMove(mActiveHandle, x, y, mScreenOval);
- setRepresentation(mVignetteRep);
- didComputeEllipses = true;
- break;
- }
- if (!didComputeEllipses) {
- computeEllipses();
- }
- invalidate();
- return true;
- }
-
- public void setRepresentation(FilterVignetteRepresentation vignetteRep) {
- mVignetteRep = vignetteRep;
- mScreenOval.setImageOval(mVignetteRep);
- computeEllipses();
- }
-
- public void computeEllipses() {
- if (mVignetteRep == null) {
- return;
- }
- float w = MasterImage.getImage().getOriginalBounds().width();
- float h = MasterImage.getImage().getOriginalBounds().height();
- Matrix toImg = getScreenToImageMatrix(false);
- Matrix toScr = new Matrix();
- toImg.invert(toScr);
- mScreenOval.setTransform(toScr, toImg, (int) w, (int) h);
-
- mElipse.setCenter(mScreenOval.getCenterX(), mScreenOval.getCenterY());
- mElipse.setRadius(mScreenOval.getRadiusX(), mScreenOval.getRadiusY());
-
- mEditorVignette.commitLocalRepresentation();
- }
-
- public void setEditor(EditorVignette editorVignette) {
- mEditorVignette = editorVignette;
- }
-
- @Override
- public void onSizeChanged(int w, int h, int oldw, int oldh) {
- super.onSizeChanged(w, h, oldw, oldh);
- computeEllipses();
- }
-
- @Override
- public void onDraw(Canvas canvas) {
- super.onDraw(canvas);
- if (mVignetteRep == null) {
- return;
- }
- float w = MasterImage.getImage().getOriginalBounds().width();
- float h = MasterImage.getImage().getOriginalBounds().height();
- Matrix toImg = getScreenToImageMatrix(false);
- Matrix toScr = new Matrix();
- toImg.invert(toScr);
- mScreenOval.setTransform(toScr, toImg, (int) w, (int) h);
- mElipse.setCenter(mScreenOval.getCenterX(), mScreenOval.getCenterY());
- mElipse.setRadius(mScreenOval.getRadiusX(), mScreenOval.getRadiusY());
-
- mElipse.draw(canvas);
- }
-
-}
diff --git a/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java b/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java
index 39ae8c5..4631ff7 100755
--- a/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java
+++ b/src/com/android/gallery3d/filtershow/pipeline/ProcessingService.java
@@ -345,9 +345,6 @@
private void tearDownPipeline() {
ImageFilter.resetStatics();
- FiltersManager.getPreviewManager().freeRSFilterScripts();
- FiltersManager.getManager().freeRSFilterScripts();
- FiltersManager.getHighresManager().freeRSFilterScripts();
FiltersManager.reset();
CachingPipeline.destroyRenderScriptContext();
}
diff --git a/src_pd/com/android/gallery3d/filtershow/editors/EditorManager.java b/src_pd/com/android/gallery3d/filtershow/editors/EditorManager.java
index bee9560..d150537 100644
--- a/src_pd/com/android/gallery3d/filtershow/editors/EditorManager.java
+++ b/src_pd/com/android/gallery3d/filtershow/editors/EditorManager.java
@@ -21,13 +21,10 @@
public class EditorManager {
public static void addEditors(EditorPlaceHolder editorPlaceHolder) {
- editorPlaceHolder.addEditor(new EditorGrad());
- editorPlaceHolder.addEditor(new EditorChanSat());
editorPlaceHolder.addEditor(new EditorZoom());
editorPlaceHolder.addEditor(new EditorCurves());
editorPlaceHolder.addEditor(new EditorTinyPlanet());
editorPlaceHolder.addEditor(new EditorDraw());
- editorPlaceHolder.addEditor(new EditorVignette());
editorPlaceHolder.addEditor(new EditorColorBorder());
editorPlaceHolder.addEditor(new EditorMirror());
editorPlaceHolder.addEditor(new EditorRotate());