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