EffectKenBurns.java revision 9bcedf7cf3e9c981837f2d8ec98cd118efad3f01
19bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava/*
29bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Copyright (C) 2010 The Android Open Source Project
39bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava *
49bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Licensed under the Apache License, Version 2.0 (the "License");
59bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * you may not use this file except in compliance with the License.
69bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * You may obtain a copy of the License at
79bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava *
89bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava *      http://www.apache.org/licenses/LICENSE-2.0
99bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava *
109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * Unless required by applicable law or agreed to in writing, software
119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * distributed under the License is distributed on an "AS IS" BASIS,
129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * See the License for the specific language governing permissions and
149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * limitations under the License.
159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */
169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavapackage android.media.videoeditor;
199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavaimport android.graphics.Rect;
219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava/**
239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * This class represents a Ken Burns effect.
249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava * {@hide}
259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava */
269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhavapublic class EffectKenBurns extends Effect {
279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *  Instance variables
299bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
309bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    private Rect mStartRect;
319bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    private Rect mEndRect;
329bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
339bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
349bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Objects of this type cannot be instantiated by using the default
359bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * constructor
369bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
379bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    @SuppressWarnings("unused")
389bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    private EffectKenBurns() {
399bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        this(null, null, null, null, 0, 0);
409bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
419bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
429bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
439bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Constructor
449bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *
459bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @param mediaItem The media item owner
469bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @param effectId The effect id
479bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @param startRect The start rectangle
489bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @param endRect The end rectangle
499bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @param startTimeMs The start time
509bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @param durationMs The duration of the Ken Burns effect in milliseconds
519bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
529bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public EffectKenBurns(MediaItem mediaItem, String effectId, Rect startRect,
539bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava                         Rect endRect, long startTimeMs, long durationMs) {
549bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        super(mediaItem, effectId, startTimeMs, durationMs);
559bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
569bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        mStartRect = startRect;
579bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        mEndRect = endRect;
589bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
599bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
609bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
619bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Set the start rectangle.
629bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *
639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @param startRect The start rectangle
649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *
659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @throws IllegalArgumentException if start rectangle is incorrectly set.
669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public void setStartRect(Rect startRect) {
689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        if ( (startRect.left == 0) && (startRect.right == 0)
699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            && (startRect.bottom == 0) && (startRect.top == 0) ) {
709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            throw new IllegalArgumentException("Invalid Rectangle");
719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        }
729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        mStartRect = startRect;
749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Get the start rectangle.
789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *
799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @return The start rectangle
809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public Rect getStartRect() {
829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        return mStartRect;
839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Set the end rectangle.
879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *
889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @param endRect The end rectangle
899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *
909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @throws IllegalArgumentException if end rectangle is incorrectly set.
919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public void setEndRect(Rect endRect) {
939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        if ( (endRect.left == 0) && (endRect.right == 0)
949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava           && (endRect.bottom == 0) && (endRect.top == 0) ) {
959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava            throw new IllegalArgumentException("Invalid Rectangle");
969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        }
979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        mEndRect = endRect;
999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
1009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
1019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
1029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Get the end rectangle.
1039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *
1049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @return The end rectangle
1059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
1069bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public Rect getEndRect() {
1079bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        return mEndRect;
1089bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
1099bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
1109bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
1119bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Get the KenBurn effect start and end rectangle coordinates
1129bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @param start The rect object to be populated with start
1139bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * rectangle coordinates
1149bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *
1159bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @param end The rect object to be populated with end
1169bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * rectangle coordinates
1179bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
1189bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    void getKenBurnsSettings(Rect start, Rect end) {
1199bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        start.left = getStartRect().left;
1209bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        start.top = getStartRect().top;
1219bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        start.right = getStartRect().right;
1229bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        start.bottom = getStartRect().bottom;
1239bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        end.left = getEndRect().left;
1249bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        end.top = getEndRect().top;
1259bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        end.right = getEndRect().right;
1269bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        end.bottom = getEndRect().bottom;
1279bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
1289bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava}
129