1f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin/*
2f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Copyright (C) 2010 The Android Open Source Project
3f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin *
4f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Licensed under the Apache License, Version 2.0 (the "License");
5f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * you may not use this file except in compliance with the License.
6f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * You may obtain a copy of the License at
7f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin *
8f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin *      http://www.apache.org/licenses/LICENSE-2.0
9f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin *
10f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * Unless required by applicable law or agreed to in writing, software
11f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * distributed under the License is distributed on an "AS IS" BASIS,
12f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * See the License for the specific language governing permissions and
14f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin * limitations under the License.
15f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin */
16f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
17f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linpackage com.android.gallery3d.data;
18f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
19f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linimport android.net.Uri;
20f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
21f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Linpublic abstract class MediaObject {
22f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    @SuppressWarnings("unused")
23f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    private static final String TAG = "MediaObject";
24f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final long INVALID_DATA_VERSION = -1;
25f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
26f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    // These are the bits returned from getSupportedOperations():
27f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int SUPPORT_DELETE = 1 << 0;
28f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int SUPPORT_ROTATE = 1 << 1;
29f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int SUPPORT_SHARE = 1 << 2;
30f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int SUPPORT_CROP = 1 << 3;
31f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int SUPPORT_SHOW_ON_MAP = 1 << 4;
32f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int SUPPORT_SETAS = 1 << 5;
33f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int SUPPORT_FULL_IMAGE = 1 << 6;
34f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int SUPPORT_PLAY = 1 << 7;
35f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int SUPPORT_CACHE = 1 << 8;
36f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int SUPPORT_EDIT = 1 << 9;
37f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int SUPPORT_INFO = 1 << 10;
38f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int SUPPORT_IMPORT = 1 << 11;
39f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int SUPPORT_ALL = 0xffffffff;
40f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
41f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    // These are the bits returned from getMediaType():
42f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int MEDIA_TYPE_UNKNOWN = 1;
43f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int MEDIA_TYPE_IMAGE = 2;
44f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int MEDIA_TYPE_VIDEO = 4;
45f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int MEDIA_TYPE_ALL = MEDIA_TYPE_IMAGE | MEDIA_TYPE_VIDEO;
46f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
47f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    // These are flags for cache() and return values for getCacheFlag():
48f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int CACHE_FLAG_NO = 0;
49f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int CACHE_FLAG_SCREENNAIL = 1;
50f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int CACHE_FLAG_FULL = 2;
51f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
52f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    // These are return values for getCacheStatus():
53f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int CACHE_STATUS_NOT_CACHED = 0;
54f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int CACHE_STATUS_CACHING = 1;
55f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int CACHE_STATUS_CACHED_SCREENNAIL = 2;
56f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static final int CACHE_STATUS_CACHED_FULL = 3;
57f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
58f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    private static long sVersionSerial = 0;
59f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
60f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    protected long mDataVersion;
61f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
62f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    protected final Path mPath;
63f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
64f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public MediaObject(Path path, long version) {
65f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        path.setObject(this);
66f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        mPath = path;
67f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        mDataVersion = version;
68f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    }
69f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
70f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public Path getPath() {
71f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        return mPath;
72f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    }
73f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
74f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public int getSupportedOperations() {
75f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        return 0;
76f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    }
77f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
78f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public void delete() {
79f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        throw new UnsupportedOperationException();
80f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    }
81f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
82f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public void rotate(int degrees) {
83f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        throw new UnsupportedOperationException();
84f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    }
85f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
86f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public Uri getContentUri() {
87f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        throw new UnsupportedOperationException();
88f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    }
89f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
90f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public Uri getPlayUri() {
91f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        throw new UnsupportedOperationException();
92f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    }
93f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
94f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public int getMediaType() {
95f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        return MEDIA_TYPE_UNKNOWN;
96f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    }
97f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
98f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public boolean Import() {
99f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        throw new UnsupportedOperationException();
100f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    }
101f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
102f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public MediaDetails getDetails() {
103f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        MediaDetails details = new MediaDetails();
104f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        return details;
105f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    }
106f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
107f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public long getDataVersion() {
108f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        return mDataVersion;
109f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    }
110f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
111f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public int getCacheFlag() {
112f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        return CACHE_FLAG_NO;
113f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    }
114f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
115f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public int getCacheStatus() {
116f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        throw new UnsupportedOperationException();
117f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    }
118f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
119f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public long getCacheSize() {
120f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        throw new UnsupportedOperationException();
121f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    }
122f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
123f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public void cache(int flag) {
124f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        throw new UnsupportedOperationException();
125f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    }
126f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin
127f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    public static synchronized long nextVersionNumber() {
128f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin        return ++MediaObject.sVersionSerial;
129f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin    }
130f9a0a4306d589b4a4e20554fed512a603426bfa1Owen Lin}
131