load ('def.lefty'); definit (); # # initialize window data # canvas = defcanvas; wrect = [0 = ['x' = 0; 'y' = 0;]; 1 = ['x' = 800; 'y' = 1000;];]; lmargin = 100; width = 800; height = 1000; setwidgetattr (canvas, ['window' = wrect;]); fonts = [ 'timr' = [ 14 = 'timr14'; 18 = 'timr18'; 24 = 'timr24'; ]; 'courr' = [ 14 = 'courr14'; 18 = 'courr18'; 24 = 'courr24'; ]; ]; x2ps = [ 'timr24' = 'Times-Roman'; 'timr18' = 'Times-Roman'; 'timr14' = 'Times-Roman'; 'courr24' = 'Courier'; 'courr18' = 'Courier'; 'courr14' = 'Courier'; ]; calc = function () { local i, j, cpos, tsiz, dist, slidep; tsiz = ['x' = 0; 'y' = 0;]; for (i = 0; slides[i]; i = i + 1) { slidep = slides[i]; if (slidep.skip) { tsiz.y = tsiz.y + slidep.skip; } else { for (j = 0; slidep.text[j]; j = j + 1) { if (j > 0) tsiz.y = tsiz.y + 5; if (~slidep.font) slidep.font = slides.font; if (~slidep.size) slidep.size = slides.size; if (~slidep.just) slidep.just = slides.just; slidep.tsiz[j] = textsize (canvas, slidep.text[j], fonts[slidep.font][slidep.size], 0); tsiz.y = tsiz.y + slidep.tsiz[j].y; } } } dist = (height - tsiz.y) / (i + 1); cpos = ['x' = lmargin; 'y' = height - dist;]; for (i = 0; slides[i]; i = i + 1) { slidep = slides[i]; if (slidep.skip) { cpos.y = cpos.y - slidep.skip - dist; } else { for (j = 0; slidep.text[j]; j = j + 1) { if (j > 0) cpos.y = cpos.y - 5; if (slidep.just == 0) slidep.tpos[j].x = cpos.x; else slidep.tpos[j].x = width / 2; cpos.y = cpos.y - slidep.tsiz[j].y; slidep.tpos[j].y = cpos.y; } cpos.y = cpos.y - dist; } } }; redraw = function () { local i, j, slidep; for (i = 0; slides[i]; i = i + 1) { slidep = slides[i]; if (~slidep.skip) for (j = 0; slidep.text[j]; j = j + 1) text (canvas, slidep, slidep.tpos[j], slidep.text[j], fonts[slidep.font][slidep.size], 0, slidep.just); } }; dops = function () { local i, j, slidep, r; r = [0 = ['x' = 0; 'y' = 0;]; 1 = ['x' = 8 * 300; 'y' = 10.5 * 300;];]; canvas = createwidget (-1, ['type' = 'ps'; 'origin' = r[0]; 'size' = r[1] ;]); setwidgetattr (canvas, ['window' = wrect;]); for (i = 0; slides[i]; i = i + 1) { slidep = slides[i]; if (~slidep.skip) for (j = 0; slidep.text[j]; j = j + 1) text (canvas, slidep, slidep.tpos[j], slidep.text[j], x2ps[fonts[slidep.font][slidep.size]], slidep.tsiz[j].y, slidep.just, 1); } destroywidget (canvas); canvas=defcanvas; }; doit = function () { calc (); redraw (); dops (); };