Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 13105e73 authored by Yuli Huang's avatar Yuli Huang Committed by Android (Google) Code Review
Browse files

Merge "Add face tanning effect to gallery" into ics-mr1

parents 826c44f2 08e2b473
Loading
Loading
Loading
Loading
+2.8 KiB
Loading image diff...
+10 −0
Original line number Diff line number Diff line
@@ -50,6 +50,16 @@
            android:text="@string/facelift"
            style="@style/EffectLabel"/>
    </com.android.gallery3d.photoeditor.actions.FaceliftAction>
    <com.android.gallery3d.photoeditor.actions.FaceTanAction style="@style/Effect">
        <ImageButton
            android:id="@+id/effect_button"
            style="@style/EffectIcon"
            android:src="@drawable/photoeditor_effect_facetan"/>
        <TextView
            android:id="@+id/effect_label"
            android:text="@string/facetan"
            style="@style/EffectLabel"/>
    </com.android.gallery3d.photoeditor.actions.FaceTanAction>
    <com.android.gallery3d.photoeditor.actions.StraightenAction style="@style/Effect"
        android:tag="@string/straighten_tooltip">
        <ImageButton
+62 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2010 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.photoeditor.actions;

import android.content.Context;
import android.util.AttributeSet;

import com.android.gallery3d.photoeditor.filters.FaceTanFilter;

/**
 * An action handling face tanning effect.
 */
public class FaceTanAction extends EffectAction {

    private static final float DEFAULT_SCALE = 0.5f;

    private ScaleSeekBar scalePicker;

    public FaceTanAction(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    @Override
    public void doBegin() {
        final FaceTanFilter filter = new FaceTanFilter();

        scalePicker = factory.createScalePicker(EffectToolFactory.ScalePickerType.GENERIC);
        scalePicker.setOnScaleChangeListener(new ScaleSeekBar.OnScaleChangeListener() {

            @Override
            public void onProgressChanged(float progress, boolean fromUser) {
                if (fromUser) {
                    filter.setScale(progress);
                    notifyFilterChanged(filter, true);
                }
            }
        });
        scalePicker.setProgress(DEFAULT_SCALE);

        filter.setScale(DEFAULT_SCALE);
        notifyFilterChanged(filter, true);
    }

    @Override
    public void doEnd() {
        scalePicker.setOnScaleChangeListener(null);
    }
}
+46 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2010 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.photoeditor.filters;

import android.media.effect.Effect;

import com.android.gallery3d.photoeditor.Photo;

/**
 * Face tanning filter applied to the image.
 */
public class FaceTanFilter extends Filter {

    private float scale;

    /**
     * Sets the face tanning level.
     *
     * @param scale ranges from 0 to 1.
     */
    public void setScale(float scale) {
        this.scale = scale;
        validate();
    }

    @Override
    public void process(Photo src, Photo dst) {
        Effect effect = getEffect("com.google.android.media.effect.effects.FaceTanningEffect");
        effect.setParameter("blend", scale);
        effect.apply(src.texture(), src.width(), src.height(), dst.texture());
    }
}