• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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.widgets;
18 
19 import com.android.videoeditor.R;
20 
21 import android.content.Context;
22 import android.content.res.Resources;
23 import android.graphics.Bitmap;
24 import android.graphics.BitmapFactory;
25 import android.graphics.Canvas;
26 import android.graphics.Rect;
27 
28 /**
29  * Draw a progress bar for media items, transitions and the audio track
30  */
31 class ProgressBar {
32     // The one
33     private static ProgressBar mProgressBar;
34 
35     // Instance variables
36     private final Bitmap mProgressLeftBitmap;
37     private final Bitmap mProgressRightBitmap;
38     private final Rect mProgressSrcRect;
39 
40     /**
41      * Get the progress bar singleton
42      *
43      * @param context The context
44      *
45      * @return The progress bar
46      */
getProgressBar(Context context)47     public static ProgressBar getProgressBar(Context context) {
48         if (mProgressBar == null) {
49             mProgressBar = new ProgressBar(context);
50         }
51 
52         return mProgressBar;
53     }
54 
55     /**
56      * Constructor
57      *
58      * @param context The context
59      */
ProgressBar(Context context)60     private ProgressBar(Context context) {
61         final Resources resources = context.getResources();
62 
63         // Prepare the progress bitmap
64         mProgressLeftBitmap = BitmapFactory.decodeResource(resources,
65                 R.drawable.item_progress_left);
66         mProgressRightBitmap = BitmapFactory.decodeResource(resources,
67                 R.drawable.item_progress_right);
68 
69         mProgressSrcRect = new Rect(0, 0, mProgressLeftBitmap.getWidth(),
70                 mProgressLeftBitmap.getHeight());
71     }
72 
73     /**
74      * @return The height
75      */
getHeight()76     public int getHeight() {
77         return mProgressLeftBitmap.getHeight();
78     }
79 
80     /**
81      * Draw the progress bar
82      *
83      * @param canvas The canvas
84      * @param progress The progress (between 0 and 100)
85      * @param dest The destination rectangle
86      * @param left The left offset
87      * @param width The width
88      */
draw(Canvas canvas, int progress, Rect dest, int left, int width)89     public void draw(Canvas canvas, int progress, Rect dest, int left, int width) {
90         switch (progress) {
91             case 0: {
92                 dest.left = left;
93                 dest.right = width;
94                 canvas.drawBitmap(mProgressRightBitmap, mProgressSrcRect, dest, null);
95                 break;
96             }
97 
98             case 100: {
99                 dest.left = left;
100                 dest.right = width;
101                 canvas.drawBitmap(mProgressLeftBitmap, mProgressSrcRect, dest, null);
102                 break;
103             }
104 
105             default: {
106                 dest.right = ((width - left) * progress) / 100;
107 
108                 // Draw progress
109                 if (progress > 0) {
110                     dest.left = left;
111                     canvas.drawBitmap(mProgressLeftBitmap, mProgressSrcRect, dest, null);
112                 }
113 
114                 if (progress < 100) {
115                     dest.left = dest.right;
116                     dest.right = width;
117                     canvas.drawBitmap(mProgressRightBitmap, mProgressSrcRect, dest, null);
118                 }
119 
120                 break;
121             }
122         }
123     }
124 }
125