First of all thank you for this great application!
It is almost perfect for me. However, there is one thing that I really would like to see added:
Can you include an option to turn the screen completely white between two images when turning to the next or previous image?
I found out that the ghosting discussed in post 279 to 282 is completely eliminated on the pocketbook inkpad 1 when this is done. The page update setting is already set to "full update for every page" but this is not enough. Only when I put a white image between every manga page there was no more ghosting. The ghosting is sometimes really annoying and I would not mind if the page update takes longer when I can get rid of it.
I peeked into the code and I suppose this is the place that would need to be modified:
Code:
void show_image(ibitmap *img) {
if (img) {
/* Auto-rotate new images if desired. */
if (autorot_idx && v.CheckForNewImage(img) &&
(layout_mode != LAYOUT_DOUBLE) &&
!(QueryGSensor() && GetGlobalOrientation() == -1))
// If the default orientation is set to 180, use it for portrait
// on devices that are rotated for left/right-handed use
rotate_screen((img->width > img->height) ? autorot_idx :
(caps.lr_rotate && (default_or == 3)) ? 3: 0);
v.SetImage(img);
draw();
if (!mng.IsBuffered()) {
mng.Buffering();
if (do_draw_panel) {
draw_panel(pagemap);
PartialUpdate(0, cliprect_height(), ScreenWidth(), PanelHeight());
}
}
}
}
Could you do something like this?
Code:
void show_image(ibitmap *img) {
if (img) {
/* Auto-rotate new images if desired. */
if (autorot_idx && v.CheckForNewImage(img) &&
(layout_mode != LAYOUT_DOUBLE) &&
!(QueryGSensor() && GetGlobalOrientation() == -1))
// If the default orientation is set to 180, use it for portrait
// on devices that are rotated for left/right-handed use
rotate_screen((img->width > img->height) ? autorot_idx :
(caps.lr_rotate && (default_or == 3)) ? 3: 0);
if(page_update_workaround){ // new config_option
v.SetImage(white_img); // white_img = completely white ibitmap as a constant
draw();
}
v.SetImage(img);
draw();
if (!mng.IsBuffered()) {
mng.Buffering();
if (do_draw_panel) {
draw_panel(pagemap);
PartialUpdate(0, cliprect_height(), ScreenWidth(), PanelHeight());
}
}
}
}