Full thumbnails for open_ui
This commit is contained in:
parent
95e51bc7f4
commit
4c4b457cab
@ -2851,7 +2851,7 @@ int search_ui(pixel *vid_buf)
|
|||||||
if (search_dates[pos]) {
|
if (search_dates[pos]) {
|
||||||
char *id_d_temp = malloc(strlen(search_ids[pos])+strlen(search_dates[pos])+1);
|
char *id_d_temp = malloc(strlen(search_ids[pos])+strlen(search_dates[pos])+1);
|
||||||
uri = malloc(strlen(search_ids[pos])*3+strlen(search_dates[pos])*3+strlen(SERVER)+71);
|
uri = malloc(strlen(search_ids[pos])*3+strlen(search_dates[pos])*3+strlen(SERVER)+71);
|
||||||
strcpy(uri, "http://" SERVER "/Get.api?Op=thumbbm&ID=");
|
strcpy(uri, "http://" SERVER "/Get.api?Op=thumbsmall&ID=");
|
||||||
strcaturl(uri, search_ids[pos]);
|
strcaturl(uri, search_ids[pos]);
|
||||||
strappend(uri, "&Date=");
|
strappend(uri, "&Date=");
|
||||||
strcaturl(uri, search_dates[pos]);
|
strcaturl(uri, search_dates[pos]);
|
||||||
@ -2862,7 +2862,7 @@ int search_ui(pixel *vid_buf)
|
|||||||
img_id[i] = mystrdup(id_d_temp);
|
img_id[i] = mystrdup(id_d_temp);
|
||||||
} else {
|
} else {
|
||||||
uri = malloc(strlen(search_ids[pos])*3+strlen(SERVER)+64);
|
uri = malloc(strlen(search_ids[pos])*3+strlen(SERVER)+64);
|
||||||
strcpy(uri, "http://" SERVER "/Get.api?Op=thumbbm&ID=");
|
strcpy(uri, "http://" SERVER "/Get.api?Op=thumbsmall&ID=");
|
||||||
strcaturl(uri, search_ids[pos]);
|
strcaturl(uri, search_ids[pos]);
|
||||||
img_id[i] = mystrdup(search_ids[pos]);
|
img_id[i] = mystrdup(search_ids[pos]);
|
||||||
}
|
}
|
||||||
@ -2963,18 +2963,21 @@ int report_ui(pixel* vid_buf, char *save_id)
|
|||||||
|
|
||||||
int open_ui(pixel *vid_buf, char *save_id, char *save_date)
|
int open_ui(pixel *vid_buf, char *save_id, char *save_date)
|
||||||
{
|
{
|
||||||
int b=1,bq,mx,my,ca=0,thumb_w,thumb_h,active=0,active_2=0,cc=0,ccy=0,cix=0,hasdrawninfo=0,hasdrawnthumb=0,authoritah=0,myown=0,queue_open=0,data_size=0,retval=0,bc=255,openable=1;
|
int b=1,bq,mx,my,ca=0,thumb_w,thumb_h,active=0,active_2=0,active_3=0,cc=0,ccy=0,cix=0,hasdrawninfo=0,hasdrawncthumb=0,hasdrawnthumb=0,authoritah=0,myown=0,queue_open=0,data_size=0,full_thumb_data_size=0,retval=0,bc=255,openable=1;
|
||||||
int nyd,nyu,ry,lv;
|
int nyd,nyu,ry,lv;
|
||||||
float ryf;
|
float ryf;
|
||||||
|
|
||||||
char *uri, *uri_2, *o_uri;
|
char *uri, *uri_2, *o_uri, *uri_3;
|
||||||
void *data, *info_data;
|
void *data, *info_data, *thumb_data_full;
|
||||||
save_info *info = malloc(sizeof(save_info));
|
save_info *info = malloc(sizeof(save_info));
|
||||||
void *http = NULL, *http_2 = NULL;
|
void *http = NULL, *http_2 = NULL, *http_3 = NULL;
|
||||||
int lasttime = TIMEOUT;
|
int lasttime = TIMEOUT;
|
||||||
int status, status_2, info_ready = 0, data_ready = 0;
|
int status, status_2, info_ready = 0, data_ready = 0, thumb_data_ready = 0;
|
||||||
time_t http_last_use = HTTP_TIMEOUT, http_last_use_2 = HTTP_TIMEOUT;
|
time_t http_last_use = HTTP_TIMEOUT, http_last_use_2 = HTTP_TIMEOUT, http_last_use_3 = HTTP_TIMEOUT;
|
||||||
pixel *save_pic;// = malloc((XRES/2)*(YRES/2));
|
pixel *save_pic;// = malloc((XRES/2)*(YRES/2));
|
||||||
|
pixel *save_pic_thumb = NULL;
|
||||||
|
char *thumb_data = NULL;
|
||||||
|
int thumb_data_size = 0;
|
||||||
ui_edit ed;
|
ui_edit ed;
|
||||||
ui_copytext ctb;
|
ui_copytext ctb;
|
||||||
|
|
||||||
@ -3016,6 +3019,21 @@ int open_ui(pixel *vid_buf, char *save_id, char *save_date)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//Try to load the thumbnail from the cache
|
||||||
|
if(!thumb_cache_find(save_id, &thumb_data, &thumb_data_size)){
|
||||||
|
thumb_data = NULL;
|
||||||
|
} else {
|
||||||
|
//We found a thumbnail in the cache, we'll draw this one while we wait for the full image to load.
|
||||||
|
int finw, finh;
|
||||||
|
pixel *thumb_imgdata = ptif_unpack(thumb_data, thumb_data_size, &finw, &finh);
|
||||||
|
if(thumb_imgdata!=NULL){
|
||||||
|
save_pic_thumb = resample_img(thumb_imgdata, finw, finh, XRES/2, YRES/2);
|
||||||
|
//draw_image(vid_buf, save_pic_thumb, 51, 51, XRES/2, YRES/2, 255);
|
||||||
|
}
|
||||||
|
free(thumb_imgdata);
|
||||||
|
//rescale_img(full_save, imgw, imgh, &thumb_w, &thumb_h, 2);
|
||||||
|
}
|
||||||
|
|
||||||
//Begin Async loading of data
|
//Begin Async loading of data
|
||||||
if (save_date) {
|
if (save_date) {
|
||||||
// We're loading an historical save
|
// We're loading an historical save
|
||||||
@ -3030,6 +3048,12 @@ int open_ui(pixel *vid_buf, char *save_id, char *save_date)
|
|||||||
strcaturl(uri_2, save_id);
|
strcaturl(uri_2, save_id);
|
||||||
strappend(uri_2, "&Date=");
|
strappend(uri_2, "&Date=");
|
||||||
strcaturl(uri_2, save_date);
|
strcaturl(uri_2, save_date);
|
||||||
|
|
||||||
|
uri_3 = malloc(strlen(save_id)*3+strlen(save_date)*3+strlen(SERVER)+71);
|
||||||
|
strcpy(uri_3, "http://" SERVER "/Get.api?Op=thumblarge&ID=");
|
||||||
|
strcaturl(uri_3, save_id);
|
||||||
|
strappend(uri_3, "&Date=");
|
||||||
|
strcaturl(uri_3, save_date);
|
||||||
} else {
|
} else {
|
||||||
//We're loading a normal save
|
//We're loading a normal save
|
||||||
uri = malloc(strlen(save_id)*3+strlen(SERVER)+64);
|
uri = malloc(strlen(save_id)*3+strlen(SERVER)+64);
|
||||||
@ -3039,9 +3063,14 @@ int open_ui(pixel *vid_buf, char *save_id, char *save_date)
|
|||||||
uri_2 = malloc(strlen(save_id)*3+strlen(SERVER)+64);
|
uri_2 = malloc(strlen(save_id)*3+strlen(SERVER)+64);
|
||||||
strcpy(uri_2, "http://" SERVER "/Info.api?ID=");
|
strcpy(uri_2, "http://" SERVER "/Info.api?ID=");
|
||||||
strcaturl(uri_2, save_id);
|
strcaturl(uri_2, save_id);
|
||||||
|
|
||||||
|
uri_3 = malloc(strlen(save_id)*3+strlen(SERVER)+64);
|
||||||
|
strcpy(uri_3, "http://" SERVER "/Get.api?Op=thumblarge&ID=");
|
||||||
|
strcaturl(uri_3, save_id);
|
||||||
}
|
}
|
||||||
http = http_async_req_start(http, uri, NULL, 0, 1);
|
http = http_async_req_start(http, uri, NULL, 0, 1);
|
||||||
http_2 = http_async_req_start(http_2, uri_2, NULL, 0, 1);
|
http_2 = http_async_req_start(http_2, uri_2, NULL, 0, 1);
|
||||||
|
http_3 = http_async_req_start(http_3, uri_3, NULL, 0, 1);
|
||||||
if (svf_login)
|
if (svf_login)
|
||||||
{
|
{
|
||||||
http_auth_headers(http, svf_user_id, NULL, svf_session_id);
|
http_auth_headers(http, svf_user_id, NULL, svf_session_id);
|
||||||
@ -3049,10 +3078,13 @@ int open_ui(pixel *vid_buf, char *save_id, char *save_date)
|
|||||||
}
|
}
|
||||||
http_last_use = time(NULL);
|
http_last_use = time(NULL);
|
||||||
http_last_use_2 = time(NULL);
|
http_last_use_2 = time(NULL);
|
||||||
|
http_last_use_3 = time(NULL);
|
||||||
free(uri);
|
free(uri);
|
||||||
free(uri_2);
|
free(uri_2);
|
||||||
|
free(uri_3);
|
||||||
active = 1;
|
active = 1;
|
||||||
active_2 = 1;
|
active_2 = 1;
|
||||||
|
active_3 = 1;
|
||||||
while (!sdl_poll())
|
while (!sdl_poll())
|
||||||
{
|
{
|
||||||
bq = b;
|
bq = b;
|
||||||
@ -3074,7 +3106,7 @@ int open_ui(pixel *vid_buf, char *save_id, char *save_date)
|
|||||||
}
|
}
|
||||||
full_save = prerender_save(data, data_size, &imgw, &imgh);
|
full_save = prerender_save(data, data_size, &imgw, &imgh);
|
||||||
if (full_save!=NULL) {
|
if (full_save!=NULL) {
|
||||||
save_pic = rescale_img(full_save, imgw, imgh, &thumb_w, &thumb_h, 2);
|
//save_pic = rescale_img(full_save, imgw, imgh, &thumb_w, &thumb_h, 2);
|
||||||
data_ready = 1;
|
data_ready = 1;
|
||||||
free(full_save);
|
free(full_save);
|
||||||
} else {
|
} else {
|
||||||
@ -3104,9 +3136,43 @@ int open_ui(pixel *vid_buf, char *save_id, char *save_date)
|
|||||||
free(http_2);
|
free(http_2);
|
||||||
http_2 = NULL;
|
http_2 = NULL;
|
||||||
}
|
}
|
||||||
|
if (active_3 && http_async_req_status(http_3))
|
||||||
if (data_ready && !hasdrawnthumb) {
|
{
|
||||||
draw_image(vid_buf, save_pic, 51, 51, thumb_w, thumb_h, 255);
|
int imgh, imgw, nimgh, nimgw;
|
||||||
|
http_last_use_3 = time(NULL);
|
||||||
|
thumb_data_full = http_async_req_stop(http_3, &status, &full_thumb_data_size);
|
||||||
|
if (status == 200)
|
||||||
|
{
|
||||||
|
pixel *full_thumb;
|
||||||
|
if (!thumb_data_full||!full_thumb_data_size) {
|
||||||
|
//error_ui(vid_buf, 0, "Save data is empty (may be corrupt)");
|
||||||
|
//break;
|
||||||
|
} else {
|
||||||
|
full_thumb = ptif_unpack(thumb_data_full, full_thumb_data_size, &imgw, &imgh);//prerender_save(data, data_size, &imgw, &imgh);
|
||||||
|
if (full_thumb!=NULL) {
|
||||||
|
save_pic = resample_img(full_thumb, imgw, imgh, XRES/2, YRES/2);
|
||||||
|
thumb_data_ready = 1;
|
||||||
|
free(full_thumb);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(thumb_data_full)
|
||||||
|
free(thumb_data_full);
|
||||||
|
active_3 = 0;
|
||||||
|
free(http_3);
|
||||||
|
http_3 = NULL;
|
||||||
|
}
|
||||||
|
if (save_pic_thumb!=NULL && !hasdrawncthumb) {
|
||||||
|
draw_image(vid_buf, save_pic_thumb, 51, 51, XRES/2, YRES/2, 255);
|
||||||
|
free(save_pic_thumb);
|
||||||
|
save_pic_thumb = NULL;
|
||||||
|
hasdrawncthumb = 1;
|
||||||
|
memcpy(old_vid, vid_buf, ((XRES+BARSIZE)*(YRES+MENUSIZE))*PIXELSIZE);
|
||||||
|
}
|
||||||
|
if (thumb_data_ready && !hasdrawnthumb) {
|
||||||
|
draw_image(vid_buf, save_pic, 51, 51, XRES/2, YRES/2, 255);
|
||||||
|
free(save_pic);
|
||||||
|
save_pic = NULL;
|
||||||
hasdrawnthumb = 1;
|
hasdrawnthumb = 1;
|
||||||
memcpy(old_vid, vid_buf, ((XRES+BARSIZE)*(YRES+MENUSIZE))*PIXELSIZE);
|
memcpy(old_vid, vid_buf, ((XRES+BARSIZE)*(YRES+MENUSIZE))*PIXELSIZE);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user