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