/* * Function : libaroma_stream_zip * Return Value: LIBAROMA_STREAMP * Descriptions: new stream from zip file */ LIBAROMA_STREAMP libaroma_stream_zip( char * zip_path, char * zpath) { if ((!zip_path) || (!zpath)) { ALOGW("libaroma_stream_zip zip_path/zpath is invalid"); return 0; } /* Init Zip */ LIBAROMA_ZIP zip = libaroma_zip(zip_path); if (!zip) { return 0; } /* Allocating Adapter */ bytep mem; int mem_sz = libaroma_zip_read(zip, &mem, zpath, 1); /* Release ZIP */ libaroma_zip_release(zip); /* not valid */ if (mem_sz == 0) { return 0; } LIBAROMA_STREAMP ret = (LIBAROMA_STREAMP) malloc(sizeof(LIBAROMA_STREAM)); ret->data = mem; ret->size = mem_sz; ret->ismmap = 0; snprintf(ret->uri, LIBAROMA_STREAM_URI_LENGTH, "zip://%s#%s", zip_path, zpath); return ret; } /* End of libaroma_stream_zip */
/* init recovery */ byte recovery_init(){ /* snprintf(libaroma_config()->fb_shm_name,64,"recovery-mainfb"); libaroma_config()->runtime_monitor = LIBAROMA_START_UNSAFE; */ /* disable shared fb */ libaroma_config()->runtime_monitor = LIBAROMA_START_UNSAFE; libaroma_config()->fb_shm_name[0]=0; /* start libaroma */ if (!libaroma_start()){ RLOG("recovery_init: libaroma_start failed"); return 0; } /* LIBAROMA_CANVASP svg1=libaroma_image( libaroma_stream( "file:///sdcard/23.svg" ), 1 ); if (svg1){ libaroma_draw(libaroma_fb()->canvas,svg1,0,0,1); libaroma_sync(); sleep(4); } else{ printf("\n\nSVG RENDER ERROR\n\n\n"); } */ /* set workspace size */ libaroma_wm_set_workspace( 0, libaroma_dp(24), libaroma_fb()->w, libaroma_fb()->h-libaroma_dp(24) ); /* clean display */ libaroma_canvas_blank(libaroma_fb()->canvas); /* create statusbar canvas area */ _recovery.status_canvas=libaroma_canvas_area( libaroma_fb()->canvas, 0, 0, libaroma_fb()->w, libaroma_dp(24) ); if (!_recovery.status_canvas){ RLOG("recovery_init: _recovery.status_canvas failed"); libaroma_end(); return 0; } /* set wm ui thread */ libaroma_wm_set_ui_thread(recovery_statusbar_ui_thread); recovery_statusbar_setcolor(0); /* load zip resource */ _recovery.zip = libaroma_zip("/sdcard/recovery.zip"); if (!_recovery.zip){ RLOG("recovery_init: libaroma_zip resource failed"); libaroma_canvas_free(_recovery.status_canvas); libaroma_end(); return 0; } /* init stream callback */ libaroma_stream_set_uri_callback(recovery_stream_uri_cb); /* load font id=0 */ libaroma_font(0, libaroma_stream( "res:///fonts/Roboto-Regular.ttf" ) ); if (!recovery_init_ui()){ recovery_release(); return 0; } /* cleanup display */ libaroma_sync(); return 1; }