gboolean gtk_mng_view_load_mng_from_memory_remaining (GtkMngView * mng_view, guchar * data_to_eat, guint data_size) { mng_read_pushdata (mng_view->MNG_handle, data_to_eat, data_size, MNG_FALSE); //printf("Calling read\n"); mng_read(mng_view->MNG_handle); //printf("mng_get_totalframes %d\n", mng_get_totalframes (mng_view->MNG_handle)); //printf("mng_get_totallayers %d\n", mng_get_totallayers (mng_view->MNG_handle)); //printf("mng_get_totalplaytime %d\n", mng_get_totalplaytime (mng_view->MNG_handle)); //printf("Iterate chunks\n"); int i = 0; mng_iterate_chunks (mng_view->MNG_handle, 0, myiterchunk); for (i = 0; i < 1000; i++) { //printf("calling iterate i %d\n", i); //printf("out of iterate\n"); } printf("Calling display\n"); //mng_display(mng_view->MNG_handle); //printf("Display over\n"); printf("mng_get_framecount %d\n", mng_get_framecount(mng_view->MNG_handle)); printf("mng_get_layercount %d\n", mng_get_layercount(mng_view->MNG_handle)); printf("mng_get_playtime %d\n", mng_get_playtime(mng_view->MNG_handle)); printf("mng_get_ticks %d\n", mng_get_ticks(mng_view->MNG_handle)); printf("mng_get_starttime %d\n", mng_get_starttime (mng_view->MNG_handle)); printf("mng_get_runtime %d\n", mng_get_runtime (mng_view->MNG_handle)); printf("mng_get_currentframe %d\n", mng_get_currentframe (mng_view->MNG_handle)); printf("mng_get_currentlayer %d\n", mng_get_currentlayer (mng_view->MNG_handle)); printf("mng_get_currentplaytime %d\n", mng_get_currentplaytime (mng_view->MNG_handle)); printf("mng_get_totalframes %d\n", mng_get_totalframes (mng_view->MNG_handle)); printf("mng_get_totallayers %d\n", mng_get_totallayers (mng_view->MNG_handle)); printf("mng_get_totalplaytime %d\n", mng_get_totalplaytime (mng_view->MNG_handle)); return TRUE; }
mng_retcode mng_render_proportional(mng_handle mngh, int progress) { mng_anim *mng = mng_get_userdata(mngh); mng_retcode ret = MNG_NOERROR; int frame_num, current_frame; frame_num = ((progress * mng->num_frames) / FBSPL_PROGRESS_MAX) + 1; if (!mng->displayed_first) { ret = mng_display(mngh); mng->displayed_first = 1; } if (mng->num_frames == 0 && mng->displayed_first) return MNG_NOERROR; if (frame_num > mng->num_frames) frame_num = mng->num_frames; current_frame = mng_get_currentframe(mngh); if (current_frame == frame_num) return ret; /* Don't bother freezing if the next frame is just n+1. mng_display_resume * will do this case by default, and it saves us from the horrid hack * below. */ if (frame_num != current_frame + 1) { mng_display_freeze(mngh); /* XXX: hack! workaround what seems to be a bug in libmng - it won't * actually repaint the canvas if you wind an animation "forwards" * using goframe, only backwards, so go to the end of the animation first. */ mng_display_goframe(mngh, mng->num_frames); if (frame_num != mng->num_frames) mng_display_goframe(mngh, frame_num); } ret = mng_display_resume(mngh); if (ret == MNG_NEEDTIMERWAIT || ret == MNG_NOERROR) return ret; print_mng_error(mngh, "mng_display failed"); return ret; }
static mng_bool mng_refresh_callback (mng_handle mng_h, mng_uint32 x, mng_uint32 y, mng_uint32 width, mng_uint32 height) { FUNCTION_ENTRY(); GtkMngView * mng_view; mng_view = GTK_MNG_VIEW (mng_get_userdata (mng_h)); mng_display_resume (mng_h); gtk_widget_queue_draw_area (GTK_WIDGET (mng_get_userdata (mng_h)), x, y, width, height); return MNG_TRUE; if (GTK_WIDGET_REALIZED (mng_view)) { GdkRectangle rectangle; rectangle.x = x; rectangle.y = y; rectangle.width = width; rectangle.height = height; gtk_mng_view_paint (mng_view, &rectangle); } static int bs_count = 0; bs_count++; printf("bs_paint count %d\n", bs_count); printf("mng_get_starttime %d\n", mng_get_starttime (mng_h)); printf("mng_get_runtime %d\n", mng_get_runtime (mng_h)); printf("mng_get_currentframe %d\n", mng_get_currentframe (mng_h)); printf("mng_get_currentlayer %d\n", mng_get_currentlayer (mng_h)); printf("mng_get_currentplaytime %d\n", mng_get_currentplaytime (mng_h)); printf("mng_get_totalframes %d\n", mng_get_totalframes (mng_h)); printf("mng_get_totallayers %d\n", mng_get_totallayers (mng_h)); printf("mng_get_totalplaytime %d\n", mng_get_totalplaytime (mng_h)); FUNCTION_EXIT(); return MNG_TRUE; }