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