/* * Function : LINUXFBDP_set_dpi * Return Value: void * Descriptions: set dpi */ void LINUXFBDP_set_dpi(LIBAROMA_FBP me) { if (me==NULL) { return; } LINUXFBDR_INTERNALP mi = (LINUXFBDR_INTERNALP) me->internal; me->dpi = 0; int dpi_fallback = floor(MIN(mi->var.xres,mi->var.yres)/160) * 80; if ((mi->var.width<= 0)||(mi->var.height <= 0)) { /* phone dpi */ me->dpi = dpi_fallback; } else{ /* calculate dpi */ me->dpi = round(mi->var.xres / (mi->var.width * 0.039370) / 80) * 80; } if ((me->dpi<160)||(me->dpi>960)){ me->dpi = dpi_fallback; } #ifdef __ANDROID__ /* android dpi from default.prop/build.prop */ char * sf_lcd=libaroma_getprop("ro.sf.lcd_density", libaroma_stream_file("/default.prop"), 1); if (sf_lcd==NULL){ /* try /system/build.prop */ sf_lcd=libaroma_getprop("ro.sf.lcd_density", libaroma_stream_file("/system/build.prop"), 1); } if (sf_lcd!=NULL){ int new_dpi = atoi(sf_lcd); free(sf_lcd); if ((new_dpi>=160)&&(new_dpi<=980)){ ALOGI("android getprop ro.sf.lcd_density: %i - OK",new_dpi); me->dpi=new_dpi; } else{ ALOGI("android getprop ro.sf.lcd_density: %i - INVALID",new_dpi); } } else{ ALOGI("android getprop ro.sf.lcd_density not found"); } #endif } /* End of LINUXFBDP_set_dpi */
/* * Function : libaroma_stream * Return Value: LIBAROMA_STREAMP * Descriptions: new stream from uri */ LIBAROMA_STREAMP libaroma_stream( char * uri) { int n = strlen(uri); char kwd[11]; int i; for (i = 0; i < n && i < 10; i++) { kwd[i] = uri[i]; kwd[i + 1] = 0; if ((i > 1) && (uri[i] == '/') && (uri[i - 1] == '/')) { break; } } if (strcmp(kwd, "file://") == 0) { return libaroma_stream_file(uri + 7); } else if (strcmp(kwd, "shmem://") == 0) { return libaroma_stream_shmem(uri + 8); } else if (strcmp(kwd, "zip://") == 0) { char zip_path[256] = {0}; char zpath[256] = {0}; int cpos = 0; byte is_zpath = 0; for (i = 6; i < n && i < 255; i++) { if (is_zpath) { zpath[cpos++] = uri[i]; zpath[cpos] = 0; } else { if (uri[i] == '#') { cpos = 0; is_zpath = 1; } else { zip_path[cpos++] = uri[i]; zip_path[cpos] = 0; } } } return libaroma_stream_zip(zip_path, zpath); } else if (_libaroma_stream_uri_cb != NULL) { return _libaroma_stream_uri_cb(uri); } return NULL; } /* End of libaroma_stream */