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
564eb7a983427e3bff17f9b3492d33e6983588fb0fBasavapatna Dattaguru        if ( (startRect.width() <= 0) || (startRect.height() <= 0) ) {
574eb7a983427e3bff17f9b3492d33e6983588fb0fBasavapatna Dattaguru            throw new IllegalArgumentException("Invalid Start rectangle");
584eb7a983427e3bff17f9b3492d33e6983588fb0fBasavapatna Dattaguru        }
594eb7a983427e3bff17f9b3492d33e6983588fb0fBasavapatna Dattaguru        if ( (endRect.width() <= 0) || (endRect.height() <= 0) ) {
604eb7a983427e3bff17f9b3492d33e6983588fb0fBasavapatna Dattaguru            throw new IllegalArgumentException("Invalid End rectangle");
614eb7a983427e3bff17f9b3492d33e6983588fb0fBasavapatna Dattaguru        }
624eb7a983427e3bff17f9b3492d33e6983588fb0fBasavapatna Dattaguru
639bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        mStartRect = startRect;
649bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        mEndRect = endRect;
659bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
669bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
679bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
689bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
699bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Get the start rectangle.
709bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *
719bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @return The start rectangle
729bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
739bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public Rect getStartRect() {
749bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        return mStartRect;
759bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
769bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
779bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
789bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
799bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Get the end rectangle.
809bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *
819bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @return The end rectangle
829bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
839bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    public Rect getEndRect() {
849bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        return mEndRect;
859bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
869bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava
879bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    /**
889bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * Get the KenBurn effect start and end rectangle coordinates
899bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @param start The rect object to be populated with start
909bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * rectangle coordinates
919bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     *
929bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * @param end The rect object to be populated with end
939bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     * rectangle coordinates
949bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava     */
959bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    void getKenBurnsSettings(Rect start, Rect end) {
969bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        start.left = getStartRect().left;
979bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        start.top = getStartRect().top;
989bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        start.right = getStartRect().right;
999bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        start.bottom = getStartRect().bottom;
1009bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        end.left = getEndRect().left;
1019bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        end.top = getEndRect().top;
1029bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        end.right = getEndRect().right;
1039bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava        end.bottom = getEndRect().bottom;
1049bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava    }
1059bcedf7cf3e9c981837f2d8ec98cd118efad3f01Santosh Madhava}
106