load slide image on-demand
previously an image file would be opened but only ffread when advancing to the slide, but when the slide was not used it gave an error: /usr/local/bin/2ff: failed to convert image/png this changes it to load the image on-demand once and "cache" it.
This commit is contained in:
parent
27a904c1dd
commit
44a50ad948
8
sent.c
8
sent.c
@ -55,6 +55,7 @@ typedef struct {
|
|||||||
unsigned int linecount;
|
unsigned int linecount;
|
||||||
char **lines;
|
char **lines;
|
||||||
Image *img;
|
Image *img;
|
||||||
|
char *embed;
|
||||||
} Slide;
|
} Slide;
|
||||||
|
|
||||||
/* Purely graphic info */
|
/* Purely graphic info */
|
||||||
@ -436,7 +437,7 @@ load(FILE *fp)
|
|||||||
/* only make image slide if first line of a slide starts with @ */
|
/* only make image slide if first line of a slide starts with @ */
|
||||||
if (s->linecount == 0 && s->lines[0][0] == '@') {
|
if (s->linecount == 0 && s->lines[0][0] == '@') {
|
||||||
memmove(s->lines[0], &s->lines[0][1], blen);
|
memmove(s->lines[0], &s->lines[0][1], blen);
|
||||||
s->img = ffopen(s->lines[0]);
|
s->embed = s->lines[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (s->lines[s->linecount][0] == '\\')
|
if (s->lines[s->linecount][0] == '\\')
|
||||||
@ -447,6 +448,9 @@ load(FILE *fp)
|
|||||||
if (!p)
|
if (!p)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (slidecount && slides[0].embed && slides[0].embed[0])
|
||||||
|
slides[0].img = ffopen(slides[0].embed);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
@ -458,6 +462,8 @@ advance(const Arg *arg)
|
|||||||
if (slides[idx].img)
|
if (slides[idx].img)
|
||||||
slides[idx].img->state &= ~(DRAWN | SCALED);
|
slides[idx].img->state &= ~(DRAWN | SCALED);
|
||||||
idx = new_idx;
|
idx = new_idx;
|
||||||
|
if (!slides[idx].img && slides[idx].embed && slides[idx].embed[0])
|
||||||
|
slides[idx].img = ffopen(slides[idx].embed);
|
||||||
xdraw();
|
xdraw();
|
||||||
if (slidecount > idx + 1 && slides[idx + 1].img)
|
if (slidecount > idx + 1 && slides[idx + 1].img)
|
||||||
ffread(slides[idx + 1].img);
|
ffread(slides[idx + 1].img);
|
||||||
|
Loading…
Reference in New Issue
Block a user