summaryrefslogtreecommitdiffstats
path: root/src/com/android/gallery3d/ui/IconDrawer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/gallery3d/ui/IconDrawer.java')
-rw-r--r--src/com/android/gallery3d/ui/IconDrawer.java112
1 files changed, 112 insertions, 0 deletions
diff --git a/src/com/android/gallery3d/ui/IconDrawer.java b/src/com/android/gallery3d/ui/IconDrawer.java
new file mode 100644
index 000000000..91732d338
--- /dev/null
+++ b/src/com/android/gallery3d/ui/IconDrawer.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2010 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.gallery3d.ui;
+
+import com.android.gallery3d.R;
+import com.android.gallery3d.data.MediaObject;
+
+import android.content.Context;
+
+public abstract class IconDrawer extends SelectionDrawer {
+ private final String TAG = "IconDrawer";
+ private final ResourceTexture mLocalSetIcon;
+ private final ResourceTexture mCameraIcon;
+ private final ResourceTexture mPicasaIcon;
+ private final ResourceTexture mMtpIcon;
+ private final Texture mVideoOverlay;
+ private final Texture mVideoPlayIcon;
+
+ public static class IconDimension {
+ int x;
+ int y;
+ int width;
+ int height;
+ }
+
+ public IconDrawer(Context context) {
+ mLocalSetIcon = new ResourceTexture(context, R.drawable.ic_album_overlay_folder_holo);
+ mCameraIcon = new ResourceTexture(context, R.drawable.ic_album_overlay_camera_holo);
+ mPicasaIcon = new ResourceTexture(context, R.drawable.ic_album_overlay_picassa_holo);
+ mMtpIcon = new ResourceTexture(context, R.drawable.ic_album_overlay_ptp_holo);
+ mVideoOverlay = new ResourceTexture(context,
+ R.drawable.thumbnail_album_video_overlay_holo);
+ mVideoPlayIcon = new ResourceTexture(context,
+ R.drawable.videooverlay);
+ }
+
+ @Override
+ public void prepareDrawing() {
+ }
+
+ protected IconDimension drawIcon(GLCanvas canvas, int width, int height,
+ int dataSourceType) {
+ ResourceTexture icon = getIcon(dataSourceType);
+
+ if (icon != null) {
+ IconDimension id = getIconDimension(icon, width, height);
+ icon.draw(canvas, id.x, id.y, id.width, id.height);
+ return id;
+ }
+ return null;
+ }
+
+ protected ResourceTexture getIcon(int dataSourceType) {
+ ResourceTexture icon = null;
+ switch (dataSourceType) {
+ case DATASOURCE_TYPE_LOCAL:
+ icon = mLocalSetIcon;
+ break;
+ case DATASOURCE_TYPE_PICASA:
+ icon = mPicasaIcon;
+ break;
+ case DATASOURCE_TYPE_CAMERA:
+ icon = mCameraIcon;
+ break;
+ case DATASOURCE_TYPE_MTP:
+ icon = mMtpIcon;
+ break;
+ default:
+ break;
+ }
+
+ return icon;
+ }
+
+ protected IconDimension getIconDimension(ResourceTexture icon, int width,
+ int height) {
+ IconDimension id = new IconDimension();
+ float scale = 0.25f * width / icon.getWidth();
+ id.width = (int) (scale * icon.getWidth());
+ id.height = (int) (scale * icon.getHeight());
+ id.x = -width / 2;
+ id.y = height / 2 - id.height;
+ return id;
+ }
+
+ protected void drawVideoOverlay(GLCanvas canvas, int mediaType,
+ int x, int y, int width, int height, int topIndex) {
+ if (mediaType != MediaObject.MEDIA_TYPE_VIDEO) return;
+ mVideoOverlay.draw(canvas, x, y, width, height);
+ if (topIndex == 0) {
+ int side = Math.min(width, height) / 6;
+ mVideoPlayIcon.draw(canvas, -side / 2, -side / 2, side, side);
+ }
+ }
+
+ @Override
+ public void drawFocus(GLCanvas canvas, int width, int height) {
+ }
+}