diff options
Diffstat (limited to 'src/com/android/gallery3d/ui/IconDrawer.java')
-rw-r--r-- | src/com/android/gallery3d/ui/IconDrawer.java | 112 |
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) { + } +} |