package Utilities;
import com.wistron.WiGallery.StatusInfo;
import com.wistron.WiGallery.WiGalleryOpenGLRenderer;
import com.wistron.swpc.wicamera3dii.R;
import android.R.integer;
import android.opengl.GLU;
import android.os.Environment;
/**
* Copyright (c) 2012 Wistron SWPC
* All rights reserved.
* @author Cocoonshu
* @date 2012-02-20 12:00:00
* @comment
* @purpose Record basic configuration
* @detail
*/
public class CSStaticData {
public static final String APP_TAG = "WiCamera3DII"; //全局调试TAG
public static final String TMP_SUF = ".tmp"; //全局临时文件后缀
public static final String TMP_DIR = Environment.getExternalStorageDirectory().getAbsolutePath().toString()
+ "/"; //APP_HOME目录 &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
public static final String TMP_EXT_DIR = Environment.getExternalStorageDirectory().getAbsolutePath().toString()
+ "/3DPhoto/"; //APP_HOME外部目录
public static final String TMP_INT_DIR = Environment.getExternalStorageDirectory().getAbsolutePath().toString()
+ "/DCIM/"; //APP_HOME内部目录
public static final String[]MEDIA_SCAN_DIR = new String[]{Environment.getExternalStorageDirectory().getAbsolutePath().toString() + "/DCIM/",
Environment.getExternalStorageDirectory().getAbsolutePath().toString() + "/3DPhotoes/"};
public static final boolean DEBUG = false; //是否为DEBUG状态
public static final boolean DEMO = true; //是否为DEMO状态
public static final boolean AUTO_FLUSH_DATABASE = true; //是否自动刷新数据库
public static boolean EARTH_AUTO_ROTATE = false; //地球是否自动旋转
public static final int THUMB_SIZE = 256; //缩略图的默认大小
public static boolean LOAD_STARTED = false; //初始数据是否开始加装
public static boolean LOAD_COMPLETED = false; //初始数据是否加装完毕
public static final int GEO_REQUEST_SLEEP = 1180; //GoogleAPI 请求等待,值太小时GoogleAPI可能会返回OVER_QUERY_LIMIT
public static final String GEO_KEY = "0vIOHclF7BNpPYikMTpJ9lY3HhySTlnARGcS_1w";
public static final String RENAME_SUFFIX = "_copy"; //重命名文件时,添加的后缀
public static final String DBNAME_GEOINFO = "geoCache"; //GEO信息数据库名
public static final String DBNAME_FAVORITE = "favoriteCache"; //喜好数据库名
public static final int CWJ_HEAP_SIZE = 40*1024*1024; //最小堆用量
public static final float CWJ_RAM_UTILIZATION = 0.78f; //堆执行效率
public static boolean THUMB_FROM_MEDIA_DB = false; //是否从媒体数据库获取缩图
public static boolean ENABLE_THUMB_ROTATE = true; //启动缩图旋转
public static StatusInfo gStatusInfo = null; //状态保存
public static boolean g_is_3D_mode = false; //3D模式
public static int g_screen_width = 800; //屏幕宽度
public static int g_screen_height = 480; //屏幕高度
public static int g_long_press_timeout = 450; //长按超时
public static float g_fling_velocity = 1000; //滑动速度
public static int g_load_limit = 50; //加载缩略图数量限制
public static int g_thumbnailSize = 128; //贴图缩略图大小
public static boolean g_gallery_runing = false; //标识WiGallery3DActivity是否在运行
public static int g_label_length = 10; //专辑左下角文本,请赋偶数
public static boolean g_flag_load_completed = false; //文件加载已完成
public static int g_fling_speed_threshold = 2700; //触发滑动事件的速度阀值
public static boolean g_is_surface_alive = false; //GLSurface是否存在
public static float g_debug_varient = 0.155f; //调试变量
public static boolean g_sort_order_mode = false; //排序模式:true = 升序 false = 降序
public static boolean g_surface_changed_called = false;
public static boolean g_surface_invalidate = false;
// 800*480分辨率对应的3D窗口宽高(手动调试)
public static float screen_3d_width_h = 4.5f;
public static float screen_3d_height_h = 2.6f;
// 480*800分辨率对应的3D窗口宽高(手动调试)
public static float screen_3d_width_v = 1.58f;
public static float screen_3d_height_v = 2.6f;
public static enum SORT_TYPE
{
SORT_ASCENDING,
SORT_DESCENGING
}
public static enum SHARE_MULTI_SELECT_TYPE
{
NONE_LIMITE,
SINGLE_SELECTION,
MULTI_SELECTION
}
public static enum LIST_ELEMENT_TYPE
{
LIST_ELEMENT_ALL,
LIST_ELEMENT_3D,
LIST_ELEMENT_2D
}
public static enum ALIGN_TYPE
{
ALIGN_LEFT,
ALIGN_CENTRE,
ALIGN_RIGHT
}
public static enum ANIMATION_TYPE
{
NONE,
RIGHT_SHIFT,
LEFT_SHIFT,
GENTLE_SHIFT,
NONEGROUP_OPENING,
NONEGROUP_CLOSING,
DATE_OPENING,
DATE_CLOSING,
DATE_AFTERCLICK,
DATE_AFTERCLICK_INVERISON,
LOCATION_OPENING,
LOCATION_AFERCLICK,
LOCATION_AFERCLICK_INVERISON
}
public static enum LIST_TYPE
{
LIST_NONE,
LIST_DATE,
LIST_LOCATION_1, //国家
LIST_LOCATION_2, // 省
LIST_LOCATION_3, // 市
LIST_LOCATION_4, // 区,街道
LIST_INVALID
}
public static enum MEDIA_TYPE
{
NORMAL_IMAGE,
STOERE_IMAGE,
NORMAL_VIDEO,
STOERE_VIDEO
}
public static enum MEDIA_META_TYPE
{
ALL_MEDIA_TYPE,
VIDEO_MEDIA_TYPE,
IMAGE_MEDIA_TYPE,
SET_FAVORITE_TYPE,
REMOVE_FAVORITE_TYPE,
NO_FILTER
}
public static enum FAVORITE_TYPE
{
FAVORITE_FILE,
NONFAVORITE_FILE
}
public static enum STORAGE_TYPE
{
NONE,
INTERNAL_DIR,
EXTERNAL_DIR
}
public static int choosedTextureID = 0; //选中图标贴图ID
public static int notChoosedTextureID = 0; //待选图标贴图ID
public static int defaultTextureID = 0; //默认图标贴图ID
public static int INVALID_TEXTURE_ID = 0; //无效贴图ID
public static final String[] SUPPORT_SUF = { //支持的文件后缀
".png", //0
".jpg", //1
".jpe", //2
".jpeg", //3
".jps", //4
".png", //5
".mpo", //6
".gif", //7
".bmp", //8
".wbmp", //9
".3gp", //10
".3g2", //11
".mp4", //12
".ts", //13
".webm", //14
".m4v", //15
".divx", //16
".wmv", //17
".asf", //18
".xvid", //19
".mkv", //20
".avi", //21
".srt", //22
".smi", //23
};
public static float[] eye_position_none = {0,0,5};
public static float[] eye_center_none = {0, 0, 0};
public static float[] eye_position_date = {0,0,3};
public static float[] eye_center_date = {0, -1.5f, 0};
public static float[] eye_position_location = {0,0,3};
public static float[] eye_center_location = {0, 0, 0};
public static int group_none_row_num = 2;
// group_none模式元素的位置设置
public static float x_list_pos_offset = 0.8f;
public static float y_list_pos_offset = 1.2f;
public static float z_list_pos_offset = 2.0f;
public static float x_list_pos_start = -1.5f;
public static float y_list_pos_start = -0.6f;
public static float z_list_pos_start = 0;
public static float screen_2d_width = 480;
public static float screen_2d_height = 800;
//x0, y0, z0为屏幕坐标
//z1, y1, z1为物体中心点坐标
public static boolean isInRect(float[] eye_position, float[] eye_center, float x0, float y0, float z0, float x1, float y1, float z1, float r)
{
float xn, yn, zn;
float[] ep = {0,0,0};
xn = x1;
yn = y1;
zn = z1;
float m = (float) Math.sqrt(eye_position[2] * eye_position[2] + eye_center[1] * eye_center[1]);
float cosa = Math.abs(eye_position[2] / m);
float sina = Math.abs(eye_center[1] / m);
float yo = eye_position[1] - eye_position[2] * sina;
float zo = eye_position[2] * (1-cosa);
float _zn = z1 - zo;
float _yn = y1 - yo;
zn = _zn*cosa + _yn*sina;
yn = _yn*cosa - _zn*sina;
ep[0] = eye_position[0];
float ep1 = eye_position[1] - yo;
float ep2 = eye_position[2] - zo;
ep[2] = ep2*cosa + ep1*sina;
ep[1] = ep1*cosa - ep2*sina;
float R = r * ep[2] / (ep[2] - zn);
float k = (ep[2] - 0) / (0-zn);
float x = (ep[0] + k * xn) / (k+1);
float y = (ep[1] + k * yn) / (k+1);
/////////////////////////////////////////////
/*
float[] rect = {0,0,
0,0,
0,0,
0,0};
rect[0] = x - R; rect[1] = y - R;
rect[2] = x + R; rect[3] = y - R;
rect[4] = x + R; rect[5] = y + R;
rect[6] = x - R; rect[7] = y + R;
float xRatio = 0;
float yRatio = 0;
if (WiGalleryOpenGLRenderer.m_b_horizontal_screen)
{
xRatio = CSStaticData.screen_3d_width_h /CSStaticData.screen_2d_width;
yRatio = CSStaticData.screen_3d_height_h /CSStaticData.screen_2d_height;
}
else
{
xRatio = CSStaticData.screen_3d_width_v /CSStaticData.screen_2d_width;
yRatio = CSStaticData.screen_3d_height_v /CSStaticData.screen_2d_height;
}
rect[0] /= xRatio; rect[1] /= yRatio;
rect[2] /= xRatio; rect[3] /= yRatio;
rect[4] /= xRatio; rect[5] /= yRatio;
rect[6] /= xRatio; rect[7] /= yRatio;
rect[0] += CSStaticData.screen_2d_width/2; rect[1] = CSStaticData.screen_2d_height/2 - rect[1];
rect[2] += CSStaticData.screen_2d_width/2; rect[3] = CSStaticData.screen_2d_height/2 - rect[3];
rect[4] += CSStaticData.screen_2d_width/2; rect[5] = CSStaticData.screen_2d_height/2 - rect[5];
rect[6] += CSStaticData.screen_2d_width/2; rect[7] = CSStaticData.screen_2d_height/2 - rect[7];
Rect cRect = new Rect();
cRect.set((int)rect[0], (int)rect[5], (int)rect[4], (int)rect[1]);
SystemDebug.drawRect(cRect);
*/
/////////////////////////////////////////////////////////////////////
if (x0 > x+R || x0 < x-R)
{
return false;
}
else if (y0 > y+R || y0 < y-R)
{
return false;
}
else
{
return true;
}
}
public static boolean isInRect(float x_3d, float y_3d, float z_3d, float x_2d, float y_2d, float r)
{
if (Double.isNaN(x_3d) || Double.isNaN(y_3d) || Double.isNaN(z_3d))
return false;
float[] coord2d = get2DCoord(x_3d, y_3d, z_3d);
float[] coord2d1 = get2DCoord(x_3d+r, y_3d, z_3d);
r = (coord2d1[0] - coord2d[0])/2;
coord2d[1] = CSStaticData.screen_2d_height - coord2d[1];
if (x_2d > coord2d[0]+r || x_2d < coord2d[0]-r)
{
return false;
}
else if (y_2d > coord2d[1]+r || y_2d < coord2d[1]-r)
{
return false;
}
else
{
return true;
}
}
private static float[] get2DCoord(float x, float y, float z)
{
float[] ret = new float[4];
//GLU.gluUnProject((float)x, (float)y, 0f, model, 0, proj, 0, view, 0, ret, 0);
GLU.gluProject(x, y, z, WiGalleryOpenGLRenderer.g_model, 0, WiGalleryOpenGLRenderer.g_proj, 0, WiGalleryOpenGLRenderer.g_viewArray, 0, ret, 0);
return ret;
}
public static int[][] gGroupNoneResid = {
{ R.drawable.gallery_more_share, R.string.gallery_menu_item_share}, //share item
{ R.drawable.gallery_more_delete, R.string.gallery_menu_item_delete}, //delete item
{ R.drawable.gallery_more_move, R.string.gallery_menu_item_move}, //moveTo item
{ R.drawable.gallery_more_set_as_favorite, R.string.gallery_menu_item_setfavorite}, //favorite item
{ R.drawable.gallery_more_remove_favorite, R.string.gallery_menu_item_removefavorite}, //remove favorite item
{ R.drawable.gallery_group_settings, R.string.gallery_menu_item_group}, //group item
{ R.drawable.gallery_sort_order, R.string.gallery_menu_item_sortOrder}, //sortOrder item
// { R.drawable.gallery_viewing_with_all_files, R.string.gallery_menu_item_contentSwitch} //contentSwitch item
};
public static int[][] gGroupNoneMultiResid = {
{ R.drawable.gallery_more_share, R.string.gallery_menu_item_share}, //share item
{ R.drawable.gallery_more_delete, R.string.gallery_menu_item_delete}, //delete item
{ R.drawable.gallery_more_move, R.string.gallery_menu_item_move}, //moveTo item
{ R.drawable.gallery_more_set_as_favorite, R.string.gallery_menu_item_setfavorite}, //favorite item
{ R.drawable.gallery_more_remove_favorite, R.string.gallery_menu_item_removefavorite}, //remove favorite item
};
public static int[][] gGroupDateResid = {
{ R.drawable.gallery_more_share, R.string.gallery_menu_item_share}, //share item
{ R.drawable.gallery_more_delete, R.string.gallery_menu_item_delete}, //delete item
{ R.drawable.gallery_more_move, R.string.gallery_menu_item_move}, //moveTo item
{ R.drawable.gallery_more_set_as_favorite, R.string.gallery_menu_item_setfavorite}, //favorite item
{ R.drawable.gallery_more_remove_favorite, R.string.gallery_menu_item_removefavorite}, //remove favorite item
{ R.drawable.gallery_group_settings, R.string.gallery_menu_item_group}, //group item
// { R.drawable.gallery_viewing_with_all_files, R.string.gallery_menu_item_contentSwitch} //contentSwitch item
};
public static int[][] gGroupDateMultiResid = gGroupNoneMultiResid;
public static int[][] gGroupDateSubResid = gGroupDateResid;
public static int[][] gGroupDateSubMultiResid = gGroupNoneMultiResid;
public static int[][] gGroupLocationResid = gGroupDateResid;
public static int[][] gGroupLocationMultiResid = gGroupNoneMultiResid;
public static int[][] gGroupLocationSubResid = gGroupNoneResid;
public static int[][] gGroupLocationSubMultiResid = gGroupNoneMultiResid;
}