@@ -42,28 +42,46 @@ var Element = function() {
42 addTo(div, e);
42 addTo(div, e);
43 return div;
43 return div;
46+ var rectangle = function(w) { return function(h) {
47+ var e = newElement('div');
49+ e.style.width = w + "px";
50+ e.style.height = h + "px";
45 var makeText = function(w) { return function(pos) { return function(txt) {
55 var makeText = function(w) { return function(pos) { return function(txt) {
46 var e = newElement('div');
56 var e = newElement('div');
47 e.isElmText = true;
58 e.isElmText = true;
48 e.innerHTML = txt;
59 e.innerHTML = txt;
49 e.style.textAlign = pos;
60 e.style.textAlign = pos;
50 if (w > 0) e.style.width = w + "px";
61 if (w > 0) e.style.width = w + "px";
52− e.style.visibility = "hidden";
53− e.style.styleFloat = "left";
54− e.style.cssFloat = "left";
55− document.body.appendChild(e);
56− var cStyle = window.getComputedStyle(e);
57− if (w <= 0) e.style.width = cStyle.getPropertyValue("width");
58− e.style.height = cStyle.getPropertyValue("height");
59− document.body.removeChild(e);
60− e.style.visibility = "visible"
61− e.style.styleFloat = "none";
62− e.style.cssFloat = "none";
66+ var correctTextSize = function(e) {
67+ var w = e.style.width ? e.style.width.slice(0,-2) : 0;
69+ var t = newElement('div');
70+ t.innerHTML = " " + e.innerHTML;
71+ t.style.textAlign = e.style.textAlign;
72+ if (w > 0) { t.style.width = w + "px"; }
74+ t.style.visibility = "hidden";
75+ t.style.styleFloat = "left";
76+ t.style.cssFloat = "left";
78+ document.body.appendChild(t);
79+ var cStyle = window.getComputedStyle(t);
80+ if (w <= 0) e.style.width = cStyle.getPropertyValue("width");
81+ e.style.height = cStyle.getPropertyValue("height");
82+ document.body.removeChild(t);
67 var link = function (href) { return function (e) {
85 var link = function (href) { return function (e) {
68 var a = newElement('a');
86 var a = newElement('a');
69 a.href = Text.fromString(href);
87 a.href = Text.fromString(href);
@@ -77,6 +95,7 @@ var Element = function() {
77 return makeText(0)("left")(Data.String.toText(str)); };
95 return makeText(0)("left")(Data.String.toText(str)); };
78 var justifiedText = makeText(0)('justify');
96 var justifiedText = makeText(0)('justify');
79 var centeredText = makeText(0)('center');
97 var centeredText = makeText(0)('center');
98+ var rightedText = makeText(0)('right');
80 var asText = function(v) { return makeText(0)("left")(Value.show(v)); };
99 var asText = function(v) { return makeText(0)("left")(Value.show(v)); };
82 var image = function(src) {
101 var image = function(src) {
@@ -275,6 +294,7 @@ var Element = function() {
275 collage : collage,
294 collage : collage,
276 flow : flow,
295 flow : flow,
277 layers : flow(2),
296 layers : flow(2),
297+ rectangle : rectangle,
279 beside : beside,
299 beside : beside,
280 above : above,
300 above : above,
@@ -292,6 +312,7 @@ var Element = function() {
292 plainText : plainText,
312 plainText : plainText,
293 justifiedText : justifiedText,
313 justifiedText : justifiedText,
294 centeredText : centeredText,
314 centeredText : centeredText,
315+ rightedText : rightedText,
296 // directions
317 // directions
@@ -299,7 +320,9 @@ var Element = function() {
299 inward : 2,
320 inward : 2,
300 down : 3,
321 down : 3,
301 right : 4,
322 right : 4,
302− outward : 5
323+ outward : 5,
325+ correctTextSize : correctTextSize