#include <sys/ipc.h>
#include <sys/shm.h>
-CanonImage *page_images[MAX_PAGES];
-int npages;
-
const char *ocean, *pirate;
static XWindowAttributes attr;
" last_input=%f previously=%p `%s'\n",
last_input, previously, doing);
- double min_interval= 0.025; /*us*/
+ double min_interval= 0.025;
for (;;) {
progress_spinner("%s",doing);
debugf("PAGING raise_and_set_focus done.\n");
}
-static CanonImage *convert_page(const Snapshot *sn) {
+static CanonImage *convert_page(const Snapshot *sn, RgbImage **rgb_r) {
CanonImage *im;
+ RgbImage *rgb;
fwrite_ppmraw(screenshot_file, sn);
const unsigned char *pixel= sn->data;
- CANONICALISE_IMAGE(im, sn->w, sn->h, {
+ CANONICALISE_IMAGE(im, sn->w, sn->h, rgb, {
r= *pixel++;
g= *pixel++;
b= *pixel++;
});
-
+
sysassert(!ferror(screenshot_file));
sysassert(!fflush(screenshot_file));
+ if (rgb_r) *rgb_r= rgb;
+ else free(rgb);
+
return im;
}
raise_and_get_details();
wait_for_stability(¤t,0,0, "checking current YPP client screen...");
- test= convert_page(current);
- find_structure(test, &max_relevant_y,
+ test= convert_page(current,0);
+ find_structure(test,0, &max_relevant_y,
&commod_focus_point,
&commod_page_point,
&commod_focuslast_point);
free_snapshot(&status);
}
+static void convert_store_page(Snapshot *current) {
+ RgbImage *rgb;
+ CanonImage *ci;
+ PageStruct *pstruct;
+
+ ci= convert_page(current,&rgb);
+ find_structure(ci,&pstruct, 0,0,0,0);
+ store_current_page(ci,pstruct,rgb);
+}
+
void take_screenshots(void) {
Snapshot *current=0, *last=0;
/* now to actually page down */
for (;;) {
- debugf("paging page %d\n",npages);
+ debugf("page %d paging\n",npages);
if (!(npages < MAX_PAGES))
fatal("Paging down seems to generate too many pages - max is %d.",
MAX_PAGES);
-
- page_images[npages]= convert_page(current);
+
+ convert_store_page(current);
free_snapshot(&last); last=current; current=0;
debugf("PAGING page %d converted\n",npages);
wait_for_stability(¤t,last, 0,
- "collecting screenshot of page %d...",
+ "page %d collecting...",
npages+1);
if (npages && /* first pagedown doesn't do much */
prepare_ypp_client();
wait_for_stability(¤t,0,0, "taking screenshot...");
- page_images[0]= convert_page(current);
+ convert_store_page(current);
npages= 1;
progress_log("collected single screenshot.");
}