1 /* 2 * Copyright (C) 2010 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17 package com.android.videoeditor.service; 18 19 import com.android.videoeditor.R; 20 21 import android.content.Context; 22 import android.media.videoeditor.Transition; 23 import android.media.videoeditor.TransitionAlpha; 24 import android.media.videoeditor.TransitionCrossfade; 25 import android.media.videoeditor.TransitionFadeBlack; 26 import android.media.videoeditor.TransitionSliding; 27 28 /** 29 * Movie theme description 30 */ 31 public class MovieTheme { 32 // Defined themes 33 public static final String THEME_TRAVEL = "travel"; 34 public static final String THEME_SURFING = "surfing"; 35 public static final String THEME_FILM = "film"; 36 public static final String THEME_ROCKANDROLL = "rockandroll"; 37 38 /** 39 * Get theme by name 40 * 41 * @param context The context 42 * @param theme The theme id 43 * @return The theme 44 */ getTheme(Context context, String theme)45 public static MovieTheme getTheme(Context context, String theme) { 46 if (THEME_TRAVEL.equals(theme)) { 47 return new MovieTheme(THEME_TRAVEL, R.string.theme_name_travel, 48 R.drawable.theme_preview_travel, 0, 49 new MovieTransition(TransitionFadeBlack.class, null, 1500, 50 Transition.BEHAVIOR_SPEED_UP), 51 new MovieTransition(TransitionCrossfade.class, null, 1000, 52 Transition.BEHAVIOR_LINEAR), 53 new MovieTransition(TransitionFadeBlack.class, null, 1500, 54 Transition.BEHAVIOR_SPEED_DOWN), 55 new MovieOverlay(null, 0, 1000, context.getString(R.string.theme_travel_title), 56 context.getString(R.string.theme_travel_subtitle), 57 MovieOverlay.OVERLAY_TYPE_CENTER_1), 58 new MovieAudioTrack(R.raw.theme_travel_audio_track)); 59 } else if (THEME_SURFING.equals(theme)) { 60 return new MovieTheme(THEME_SURFING, R.string.theme_name_surfing, 61 R.drawable.theme_preview_surfing, 0, 62 new MovieTransition(TransitionFadeBlack.class, null, 1500, 63 Transition.BEHAVIOR_SPEED_UP), 64 new MovieTransition(TransitionAlpha.class, null, 1000, 65 Transition.BEHAVIOR_LINEAR, R.raw.mask_diagonal, 50, false), 66 new MovieTransition(TransitionFadeBlack.class, null, 1500, 67 Transition.BEHAVIOR_SPEED_DOWN), 68 new MovieOverlay(null, 0, 1000, 69 context.getString(R.string.theme_surfing_title), 70 context.getString(R.string.theme_surfing_subtitle), 71 MovieOverlay.OVERLAY_TYPE_BOTTOM_1), 72 new MovieAudioTrack(R.raw.theme_surfing_audio_track)); 73 } else if (THEME_FILM.equals(theme)) { 74 return new MovieTheme(THEME_FILM, R.string.theme_name_film, 75 R.drawable.theme_preview_film, 0, 76 new MovieTransition(TransitionFadeBlack.class, null, 1500, 77 Transition.BEHAVIOR_SPEED_UP), 78 new MovieTransition(TransitionCrossfade.class, null, 1000, 79 Transition.BEHAVIOR_LINEAR), 80 new MovieTransition(TransitionFadeBlack.class, null, 1500, 81 Transition.BEHAVIOR_SPEED_DOWN), 82 new MovieOverlay(null, 0, 1000, context.getString(R.string.theme_film_title), 83 context.getString(R.string.theme_film_subtitle), 84 MovieOverlay.OVERLAY_TYPE_BOTTOM_1), 85 new MovieAudioTrack(R.raw.theme_film_audio_track)); 86 } else if (THEME_ROCKANDROLL.equals(theme)) { 87 return new MovieTheme(THEME_ROCKANDROLL, R.string.theme_name_rock_and_roll, 88 R.drawable.theme_preview_rock_and_roll, 0, 89 new MovieTransition(TransitionFadeBlack.class, null, 1500, 90 Transition.BEHAVIOR_SPEED_UP), 91 new MovieTransition(TransitionSliding.class, null, 1000, 92 Transition.BEHAVIOR_LINEAR, 93 TransitionSliding.DIRECTION_LEFT_OUT_RIGHT_IN), 94 new MovieTransition(TransitionFadeBlack.class, null, 1500, 95 Transition.BEHAVIOR_SPEED_DOWN), 96 new MovieOverlay(null, 0, 1000, context.getString( 97 R.string.theme_rock_and_roll_title), 98 context.getString(R.string.theme_rock_and_roll_subtitle), 99 MovieOverlay.OVERLAY_TYPE_BOTTOM_1), 100 new MovieAudioTrack(R.raw.theme_rockandroll_audio_track)); 101 } else { 102 return null; 103 } 104 } 105 106 // Instance variables 107 private final String mId; 108 private final int mNameResId; 109 private final int mPreviewImageResId; 110 private final int mPreviewMovieResId; 111 private final MovieTransition mBeginTransition; 112 private final MovieTransition mMidTransition; 113 private final MovieTransition mEndTransition; 114 private final MovieOverlay mOverlay; 115 private final MovieAudioTrack mAudioTrack; 116 117 /** 118 * Constructor 119 * 120 * @param id The theme id 121 * @param nameResId The string resource id of the theme name 122 * @param previewImageResId The preview image 123 * @param previewMovieResId The preview movie 124 * @param beginTransition The movie begin transition 125 * @param midTransition Transitions between media items 126 * @param endTransition The movie end transition 127 * @param overlay The title (applied only to the first media item) 128 * @param audioTrack The audio track 129 */ MovieTheme(String id, int nameResId, int previewImageResId, int previewMovieResId, MovieTransition beginTransition, MovieTransition midTransition, MovieTransition endTransition, MovieOverlay overlay, MovieAudioTrack audioTrack)130 private MovieTheme(String id, int nameResId, int previewImageResId, int previewMovieResId, 131 MovieTransition beginTransition, MovieTransition midTransition, 132 MovieTransition endTransition, MovieOverlay overlay, MovieAudioTrack audioTrack) { 133 mId = id; 134 135 mNameResId = nameResId; 136 mPreviewImageResId = previewImageResId; 137 mPreviewMovieResId = previewMovieResId; 138 139 mBeginTransition = beginTransition; 140 mMidTransition = midTransition; 141 mEndTransition = endTransition; 142 143 mOverlay = overlay; 144 145 mAudioTrack = audioTrack; 146 } 147 148 /** 149 * @return The id 150 */ getId()151 public String getId() { 152 return mId; 153 } 154 155 /** 156 * @return The name resource id 157 */ getNameResId()158 public int getNameResId() { 159 return mNameResId; 160 } 161 162 /** 163 * @return The preview image resource id 164 */ getPreviewImageResId()165 public int getPreviewImageResId() { 166 return mPreviewImageResId; 167 } 168 169 /** 170 * @return The preview movie resource id 171 */ getPreviewMovieResId()172 public int getPreviewMovieResId() { 173 return mPreviewMovieResId; 174 } 175 176 /** 177 * @return The begin transition 178 */ getBeginTransition()179 public MovieTransition getBeginTransition() { 180 return mBeginTransition; 181 } 182 183 /** 184 * @return The mid transition 185 */ getMidTransition()186 public MovieTransition getMidTransition() { 187 return mMidTransition; 188 } 189 190 /** 191 * @return The end transition 192 */ getEndTransition()193 public MovieTransition getEndTransition() { 194 return mEndTransition; 195 } 196 197 /** 198 * @return The overlay 199 */ getOverlay()200 public MovieOverlay getOverlay() { 201 return mOverlay; 202 } 203 204 /** 205 * @return The audio track 206 */ getAudioTrack()207 public MovieAudioTrack getAudioTrack() { 208 return mAudioTrack; 209 } 210 } 211