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