functions to procedures; also working on image
This commit is contained in:
parent
c13d181361
commit
6d70e2f5f0
|
@ -1,19 +1,115 @@
|
||||||
|
|
||||||
|
var makePrimitiveProcedure = plt.baselib.functions.makePrimitiveProcedure;
|
||||||
|
var makeClosure = plt.baselib.functions.makeClosure;
|
||||||
|
var finalizeClosureCall = plt.baselib.functions.finalizeClosureCall;
|
||||||
|
var PAUSE = plt.runtime.PAUSE;
|
||||||
|
|
||||||
|
|
||||||
|
var isString = plt.baselib.strings.isString;
|
||||||
|
var isSymbol = plt.baselib.symbols.isSymbol;
|
||||||
|
|
||||||
|
|
||||||
|
var isFontFamily = function(x){
|
||||||
|
return ((isString(x) || isSymbol(x)) &&
|
||||||
|
(x.toString().toLowerCase() == "default" ||
|
||||||
|
x.toString().toLowerCase() == "decorative" ||
|
||||||
|
x.toString().toLowerCase() == "roman" ||
|
||||||
|
x.toString().toLowerCase() == "script" ||
|
||||||
|
x.toString().toLowerCase() == "swiss" ||
|
||||||
|
x.toString().toLowerCase() == "modern" ||
|
||||||
|
x.toString().toLowerCase() == "symbol" ||
|
||||||
|
x.toString().toLowerCase() == "system"))
|
||||||
|
|| (x === false); // false is also acceptable
|
||||||
|
};
|
||||||
|
var isFontStyle = function(x){
|
||||||
|
return ((isString(x) || isSymbol(x)) &&
|
||||||
|
(x.toString().toLowerCase() == "normal" ||
|
||||||
|
x.toString().toLowerCase() == "italic" ||
|
||||||
|
x.toString().toLowerCase() == "slant"))
|
||||||
|
|| (x === false); // false is also acceptable
|
||||||
|
};
|
||||||
|
var isFontWeight = function(x){
|
||||||
|
return ((isString(x) || isSymbol(x)) &&
|
||||||
|
(x.toString().toLowerCase() == "normal" ||
|
||||||
|
x.toString().toLowerCase() == "bold" ||
|
||||||
|
x.toString().toLowerCase() == "light"))
|
||||||
|
|| (x === false); // false is also acceptable
|
||||||
|
};
|
||||||
|
var isMode = function(x) {
|
||||||
|
return ((isString(x) || isSymbol(x)) &&
|
||||||
|
(x.toString().toLowerCase() == "solid" ||
|
||||||
|
x.toString().toLowerCase() == "outline"));
|
||||||
|
};
|
||||||
|
|
||||||
|
var isPlaceX = function(x) {
|
||||||
|
return ((isString(x) || isSymbol(x)) &&
|
||||||
|
(x.toString().toLowerCase() == "left" ||
|
||||||
|
x.toString().toLowerCase() == "right" ||
|
||||||
|
x.toString().toLowerCase() == "center" ||
|
||||||
|
x.toString().toLowerCase() == "middle"));
|
||||||
|
};
|
||||||
|
|
||||||
|
var isPlaceY = function(x) {
|
||||||
|
return ((isString(x) || isSymbol(x)) &&
|
||||||
|
(x.toString().toLowerCase() == "top" ||
|
||||||
|
x.toString().toLowerCase() == "bottom" ||
|
||||||
|
x.toString().toLowerCase() == "baseline" ||
|
||||||
|
x.toString().toLowerCase() == "center" ||
|
||||||
|
x.toString().toLowerCase() == "middle"));
|
||||||
|
};
|
||||||
|
|
||||||
|
var isStyle = function(x) {
|
||||||
|
return ((isString(x) || isSymbol(x)) &&
|
||||||
|
(x.toString().toLowerCase() == "solid" ||
|
||||||
|
x.toString().toLowerCase() == "outline"));
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var checkString = plt.baselib.check.checkString;
|
var checkString = plt.baselib.check.checkString;
|
||||||
var checkByte = plt.baselib.check.checkByte;
|
var checkByte = plt.baselib.check.checkByte;
|
||||||
var checkReal = plt.baselib.check.checkReal;
|
var checkReal = plt.baselib.check.checkReal;
|
||||||
|
var checkBoolean = plt.baselib.check.checkBoolean;
|
||||||
|
|
||||||
var checkColor = plt.baselib.check.makeCheckArgumentType(
|
var _checkColor = plt.baselib.check.makeCheckArgumentType(
|
||||||
isColorOrColorString,
|
isColorOrColorString,
|
||||||
'color');
|
'color');
|
||||||
|
|
||||||
|
var checkColor = function(MACHINE, functionName, position) {
|
||||||
|
var aColor = _checkColor(MACHINE, functionName, position);
|
||||||
|
if (colorDb.get(aColor)) {
|
||||||
|
aColor = colorDb.get(aColor);
|
||||||
|
}
|
||||||
|
return aColor;
|
||||||
|
};
|
||||||
|
|
||||||
var checkImage = plt.baselib.check.makeCheckArgumentType(
|
var checkImage = plt.baselib.check.makeCheckArgumentType(
|
||||||
isImage,
|
isImage,
|
||||||
'image');
|
'image');
|
||||||
|
|
||||||
|
|
||||||
var Closure = plt.baselib.functions.Closure;
|
var checkFontFamily = plt.baselib.check.makeCheckArgumentType(
|
||||||
var finalizeClosureCall = plt.baselib.functions.finalizeClosureCall;
|
isFontFamily,
|
||||||
var PAUSE = plt.runtime.PAUSE;
|
'font family');
|
||||||
|
|
||||||
|
var checkFontStyle = plt.baselib.check.makeCheckArgumentType(
|
||||||
|
isFontStyle,
|
||||||
|
'font style');
|
||||||
|
|
||||||
|
var checkFontWeight = plt.baselib.check.makeCheckArgumentType(
|
||||||
|
isFontWeight,
|
||||||
|
'font weight');
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -21,7 +117,7 @@ var PAUSE = plt.runtime.PAUSE;
|
||||||
|
|
||||||
|
|
||||||
EXPORTS['image-color?'] =
|
EXPORTS['image-color?'] =
|
||||||
plt.baselib.functions.makePrimitiveProcedure(
|
makePrimitiveProcedure(
|
||||||
'image-color?',
|
'image-color?',
|
||||||
1,
|
1,
|
||||||
function(MACHINE) {
|
function(MACHINE) {
|
||||||
|
@ -32,34 +128,52 @@ EXPORTS['image-color?'] =
|
||||||
|
|
||||||
|
|
||||||
EXPORTS['text'] =
|
EXPORTS['text'] =
|
||||||
plt.baselib.functions.makePrimitiveProcedure(
|
makePrimitiveProcedure(
|
||||||
'text',
|
'text',
|
||||||
3,
|
3,
|
||||||
function(MACHINE) {
|
function(MACHINE) {
|
||||||
var aString = checkString(MACHINE,'text', 0);
|
var aString = checkString(MACHINE,'text', 0);
|
||||||
var aSize = checkByte(MACHINE, 'text', 1);
|
var aSize = checkByte(MACHINE, 'text', 1);
|
||||||
var aColor = checkColor(MACHINE, 'text', 2);
|
var aColor = checkColor(MACHINE, 'text', 2);
|
||||||
if (colorDb.get(aColor)) {
|
|
||||||
aColor = colorDb.get(aColor);
|
|
||||||
}
|
|
||||||
return makeTextImage(aString.toString(),
|
return makeTextImage(aString.toString(),
|
||||||
jsnums.toFixnum(aSize),
|
jsnums.toFixnum(aSize),
|
||||||
aColor);
|
aColor,
|
||||||
|
"normal",
|
||||||
|
"Optimer",
|
||||||
|
"",
|
||||||
|
"",
|
||||||
|
false);
|
||||||
});
|
});
|
||||||
|
|
||||||
// FIXME
|
|
||||||
// EXPORTS['text/font'] =
|
EXPORTS['text/font'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
makePrimitiveProcedure(
|
||||||
// 'text/font',
|
'text/font',
|
||||||
// ???,
|
8,
|
||||||
// function(MACHINE) {
|
function(MACHINE) {
|
||||||
// ...
|
var aString = checkString(MACHINE, "text/font", 0);
|
||||||
// });
|
var aSize = checkByte(MACHINE, "text/font", 1);
|
||||||
|
var aColor = checkColor(MACHINE, "text/font", 2);
|
||||||
|
var aFace = checkStringOrFalse(MACHINE, "text/font", 3);
|
||||||
|
var aFamily = checkFontFamily(MACHINE, "text/font", 4);
|
||||||
|
var aStyle = checkFontStyle(MACHINE, "text/font", 5);
|
||||||
|
var aWeight = checkFontWeight(MACHINE, "text/font", 6);
|
||||||
|
var aUnderline = checkBoolean(MACHINE, "text/font", 7);
|
||||||
|
return makeTextImage(aString.toString(),
|
||||||
|
jsnums.toFixnum(aSize),
|
||||||
|
aColor,
|
||||||
|
aFace.toString(),
|
||||||
|
aFamily.toString(),
|
||||||
|
aStyle.toString(),
|
||||||
|
aWeight.toString(),
|
||||||
|
aUnderline);
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
// FIXME
|
|
||||||
EXPORTS['image-url'] =
|
EXPORTS['image-url'] =
|
||||||
new Closure(
|
makeClosure(
|
||||||
|
'image-url',
|
||||||
|
1,
|
||||||
function(MACHINE) {
|
function(MACHINE) {
|
||||||
var url = checkString(MACHINE, 'image-url', 0);
|
var url = checkString(MACHINE, 'image-url', 0);
|
||||||
PAUSE(
|
PAUSE(
|
||||||
|
@ -86,14 +200,12 @@ EXPORTS['image-url'] =
|
||||||
rawImage.src = url.toString();
|
rawImage.src = url.toString();
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
},
|
});
|
||||||
1,
|
|
||||||
[],
|
|
||||||
'image-url');
|
|
||||||
|
|
||||||
// // FIXME
|
// // FIXME
|
||||||
// EXPORTS['open-image-url'] =
|
// EXPORTS['open-image-url'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'open-image-url',
|
// 'open-image-url',
|
||||||
// 1,
|
// 1,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -101,7 +213,7 @@ EXPORTS['image-url'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
EXPORTS['overlay'] =
|
EXPORTS['overlay'] =
|
||||||
plt.baselib.functions.makePrimitiveProcedure(
|
makePrimitiveProcedure(
|
||||||
'overlay',
|
'overlay',
|
||||||
plt.baselib.arity.makeArityAtLeast(2),
|
plt.baselib.arity.makeArityAtLeast(2),
|
||||||
function(MACHINE) {
|
function(MACHINE) {
|
||||||
|
@ -121,7 +233,7 @@ EXPORTS['overlay'] =
|
||||||
});
|
});
|
||||||
|
|
||||||
EXPORTS['overlay/xy'] =
|
EXPORTS['overlay/xy'] =
|
||||||
plt.baselib.functions.makePrimitiveProcedure(
|
makePrimitiveProcedure(
|
||||||
'overlay/xy',
|
'overlay/xy',
|
||||||
4,
|
4,
|
||||||
function(MACHINE) {
|
function(MACHINE) {
|
||||||
|
@ -137,7 +249,7 @@ EXPORTS['overlay/xy'] =
|
||||||
|
|
||||||
// FIXME
|
// FIXME
|
||||||
// EXPORTS['overlay/align'] =
|
// EXPORTS['overlay/align'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'overlay/align',
|
// 'overlay/align',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -145,7 +257,7 @@ EXPORTS['overlay/xy'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
EXPORTS['underlay'] =
|
EXPORTS['underlay'] =
|
||||||
plt.baselib.functions.makePrimitiveProcedure(
|
makePrimitiveProcedure(
|
||||||
'underlay',
|
'underlay',
|
||||||
plt.baselib.arity.makeArityAtLeast(2),
|
plt.baselib.arity.makeArityAtLeast(2),
|
||||||
function(MACHINE) {
|
function(MACHINE) {
|
||||||
|
@ -164,7 +276,7 @@ EXPORTS['underlay'] =
|
||||||
});
|
});
|
||||||
|
|
||||||
EXPORTS['underlay/xy'] =
|
EXPORTS['underlay/xy'] =
|
||||||
plt.baselib.functions.makePrimitiveProcedure(
|
makePrimitiveProcedure(
|
||||||
'underlay/xy',
|
'underlay/xy',
|
||||||
4,
|
4,
|
||||||
function(MACHINE) {
|
function(MACHINE) {
|
||||||
|
@ -179,7 +291,7 @@ EXPORTS['underlay/xy'] =
|
||||||
});
|
});
|
||||||
|
|
||||||
// EXPORTS['underlay/align'] =
|
// EXPORTS['underlay/align'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'underlay/align',
|
// 'underlay/align',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -187,7 +299,7 @@ EXPORTS['underlay/xy'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['beside'] =
|
// EXPORTS['beside'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'beside',
|
// 'beside',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -195,7 +307,7 @@ EXPORTS['underlay/xy'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['beside/align'] =
|
// EXPORTS['beside/align'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'beside/align',
|
// 'beside/align',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -203,7 +315,7 @@ EXPORTS['underlay/xy'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['above'] =
|
// EXPORTS['above'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'above',
|
// 'above',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -211,7 +323,7 @@ EXPORTS['underlay/xy'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['above/align'] =
|
// EXPORTS['above/align'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'above/align',
|
// 'above/align',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -219,7 +331,7 @@ EXPORTS['underlay/xy'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['place-image/align'] =
|
// EXPORTS['place-image/align'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'place-image/align',
|
// 'place-image/align',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -227,7 +339,7 @@ EXPORTS['underlay/xy'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
EXPORTS['rotate'] =
|
EXPORTS['rotate'] =
|
||||||
plt.baselib.functions.makePrimitiveProcedure(
|
makePrimitiveProcedure(
|
||||||
'rotate',
|
'rotate',
|
||||||
2,
|
2,
|
||||||
function(MACHINE) {
|
function(MACHINE) {
|
||||||
|
@ -237,7 +349,7 @@ EXPORTS['rotate'] =
|
||||||
});
|
});
|
||||||
|
|
||||||
EXPORTS['scale'] =
|
EXPORTS['scale'] =
|
||||||
plt.baselib.functions.makePrimitiveProcedure(
|
makePrimitiveProcedure(
|
||||||
'scale',
|
'scale',
|
||||||
2,
|
2,
|
||||||
function(MACHINE) {
|
function(MACHINE) {
|
||||||
|
@ -249,7 +361,7 @@ EXPORTS['scale'] =
|
||||||
});
|
});
|
||||||
|
|
||||||
EXPORTS['scale/xy'] =
|
EXPORTS['scale/xy'] =
|
||||||
plt.baselib.functions.makePrimitiveProcedure(
|
makePrimitiveProcedure(
|
||||||
'scale/xy',
|
'scale/xy',
|
||||||
3,
|
3,
|
||||||
function(MACHINE) {
|
function(MACHINE) {
|
||||||
|
@ -263,7 +375,7 @@ EXPORTS['scale/xy'] =
|
||||||
});
|
});
|
||||||
|
|
||||||
// EXPORTS['flip-horizontal'] =
|
// EXPORTS['flip-horizontal'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'flip-horizontal',
|
// 'flip-horizontal',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -271,7 +383,7 @@ EXPORTS['scale/xy'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['flip-vertical'] =
|
// EXPORTS['flip-vertical'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'flip-vertical',
|
// 'flip-vertical',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -279,7 +391,7 @@ EXPORTS['scale/xy'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['frame'] =
|
// EXPORTS['frame'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'frame',
|
// 'frame',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -287,7 +399,7 @@ EXPORTS['scale/xy'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['crop'] =
|
// EXPORTS['crop'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'crop',
|
// 'crop',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -295,7 +407,7 @@ EXPORTS['scale/xy'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
EXPORTS['line'] =
|
EXPORTS['line'] =
|
||||||
plt.baselib.functions.makePrimitiveProcedure(
|
makePrimitiveProcedure(
|
||||||
'line',
|
'line',
|
||||||
3,
|
3,
|
||||||
function(MACHINE) {
|
function(MACHINE) {
|
||||||
|
@ -315,7 +427,7 @@ EXPORTS['line'] =
|
||||||
|
|
||||||
|
|
||||||
// EXPORTS['add-line'] =
|
// EXPORTS['add-line'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'add-line',
|
// 'add-line',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -323,7 +435,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['scene+line'] =
|
// EXPORTS['scene+line'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'scene+line',
|
// 'scene+line',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -331,7 +443,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['circle'] =
|
// EXPORTS['circle'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'circle',
|
// 'circle',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -339,7 +451,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['square'] =
|
// EXPORTS['square'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'square',
|
// 'square',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -347,7 +459,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['rectangle'] =
|
// EXPORTS['rectangle'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'rectangle',
|
// 'rectangle',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -355,7 +467,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['regular-polygon'] =
|
// EXPORTS['regular-polygon'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'regular-polygon',
|
// 'regular-polygon',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -363,7 +475,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['ellipse'] =
|
// EXPORTS['ellipse'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'ellipse',
|
// 'ellipse',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -371,7 +483,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['triangle'] =
|
// EXPORTS['triangle'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'triangle',
|
// 'triangle',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -379,7 +491,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['right-triangle'] =
|
// EXPORTS['right-triangle'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'right-triangle',
|
// 'right-triangle',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -387,7 +499,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['isosceles-triangle'] =
|
// EXPORTS['isosceles-triangle'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'isosceles-triangle',
|
// 'isosceles-triangle',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -395,7 +507,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['star'] =
|
// EXPORTS['star'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'star',
|
// 'star',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -403,7 +515,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['radial-star'] =
|
// EXPORTS['radial-star'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'radial-star',
|
// 'radial-star',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -411,7 +523,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['star-polygon'] =
|
// EXPORTS['star-polygon'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'star-polygon',
|
// 'star-polygon',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -419,7 +531,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['rhombus'] =
|
// EXPORTS['rhombus'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'rhombus',
|
// 'rhombus',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -427,7 +539,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['image->color-list'] =
|
// EXPORTS['image->color-list'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'image->color-list',
|
// 'image->color-list',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -435,7 +547,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['color-list->image'] =
|
// EXPORTS['color-list->image'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'color-list->image',
|
// 'color-list->image',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -443,7 +555,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['image-width'] =
|
// EXPORTS['image-width'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'image-width',
|
// 'image-width',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -451,7 +563,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['image-height'] =
|
// EXPORTS['image-height'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'image-height',
|
// 'image-height',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -459,7 +571,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['image-baseline'] =
|
// EXPORTS['image-baseline'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'image-baseline',
|
// 'image-baseline',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -467,7 +579,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['image-color?'] =
|
// EXPORTS['image-color?'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'image-color?',
|
// 'image-color?',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -475,7 +587,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['mode?'] =
|
// EXPORTS['mode?'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'mode?',
|
// 'mode?',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -483,7 +595,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['x-place?'] =
|
// EXPORTS['x-place?'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'x-place?',
|
// 'x-place?',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -491,7 +603,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['y-place?'] =
|
// EXPORTS['y-place?'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'y-place?',
|
// 'y-place?',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -499,7 +611,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['angle?'] =
|
// EXPORTS['angle?'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'angle?',
|
// 'angle?',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -507,7 +619,7 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['side-count?'] =
|
// EXPORTS['side-count?'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'side-count?',
|
// 'side-count?',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -515,21 +627,21 @@ EXPORTS['line'] =
|
||||||
// });
|
// });
|
||||||
|
|
||||||
// EXPORTS['image-url'] =
|
// EXPORTS['image-url'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'image-url',
|
// 'image-url',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
// ...
|
// ...
|
||||||
// });
|
// });
|
||||||
// EXPORTS['open-image-url'] =
|
// EXPORTS['open-image-url'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'open-image-url',
|
// 'open-image-url',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
// ...
|
// ...
|
||||||
// });
|
// });
|
||||||
// EXPORTS['color-list->image'] =
|
// EXPORTS['color-list->image'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'color-list->image',
|
// 'color-list->image',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
@ -538,7 +650,7 @@ EXPORTS['line'] =
|
||||||
|
|
||||||
|
|
||||||
// EXPORTS['step-count?'] =
|
// EXPORTS['step-count?'] =
|
||||||
// plt.baselib.functions.makePrimitiveProcedure(
|
// makePrimitiveProcedure(
|
||||||
// 'step-count?',
|
// 'step-count?',
|
||||||
// ???,
|
// ???,
|
||||||
// function(MACHINE) {
|
// function(MACHINE) {
|
||||||
|
|
|
@ -60,9 +60,9 @@
|
||||||
plt.baselib.strings.isString,
|
plt.baselib.strings.isString,
|
||||||
'string');
|
'string');
|
||||||
|
|
||||||
var checkFunction = makeCheckArgumentType(
|
var checkProcedure = makeCheckArgumentType(
|
||||||
plt.baselib.functions.isFunction,
|
plt.baselib.functions.isProcedure,
|
||||||
'function');
|
'procedure');
|
||||||
|
|
||||||
var checkNumber = makeCheckArgumentType(
|
var checkNumber = makeCheckArgumentType(
|
||||||
plt.baselib.numbers.isNumber,
|
plt.baselib.numbers.isNumber,
|
||||||
|
@ -100,6 +100,10 @@
|
||||||
plt.baselib.vectors.isVector,
|
plt.baselib.vectors.isVector,
|
||||||
'vector');
|
'vector');
|
||||||
|
|
||||||
|
var checkBoolean = makeCheckArgumentType(
|
||||||
|
function(x) { return x === true || x === false; },
|
||||||
|
'boolean');
|
||||||
|
|
||||||
var checkBox = makeCheckArgumentType(
|
var checkBox = makeCheckArgumentType(
|
||||||
plt.baselib.boxes.isBox,
|
plt.baselib.boxes.isBox,
|
||||||
'box');
|
'box');
|
||||||
|
@ -130,7 +134,7 @@
|
||||||
|
|
||||||
exports.checkOutputPort = checkOutputPort;
|
exports.checkOutputPort = checkOutputPort;
|
||||||
exports.checkString = checkString;
|
exports.checkString = checkString;
|
||||||
exports.checkFunction = checkFunction;
|
exports.checkProcedure = checkProcedure;
|
||||||
exports.checkNumber = checkNumber;
|
exports.checkNumber = checkNumber;
|
||||||
exports.checkReal = checkReal;
|
exports.checkReal = checkReal;
|
||||||
exports.checkNonNegativeReal = checkNonNegativeReal;
|
exports.checkNonNegativeReal = checkNonNegativeReal;
|
||||||
|
@ -144,6 +148,8 @@
|
||||||
exports.checkMutableBox = checkMutableBox;
|
exports.checkMutableBox = checkMutableBox;
|
||||||
exports.checkInspector = checkInspector;
|
exports.checkInspector = checkInspector;
|
||||||
exports.checkByte = checkByte;
|
exports.checkByte = checkByte;
|
||||||
|
exports.checkBoolean = checkBoolean;
|
||||||
|
|
||||||
|
|
||||||
})(this['plt'].baselib);
|
|
||||||
|
})(this['plt'].baselib);
|
||||||
|
|
|
@ -1,9 +1,13 @@
|
||||||
// Functions
|
// Procedures
|
||||||
|
|
||||||
|
// For historical reasons, this module is called 'functions' instead of 'procedures'.
|
||||||
|
// This may change soon.
|
||||||
|
|
||||||
(function(baselib) {
|
(function(baselib) {
|
||||||
var exports = {};
|
var exports = {};
|
||||||
baselib.functions = exports;
|
baselib.functions = exports;
|
||||||
|
|
||||||
// Function types: a function is either a Primitive or a Closure.
|
// Procedure types: a procedure is either a Primitive or a Closure.
|
||||||
|
|
||||||
// A Primitive is a function that's expected to return. It is not
|
// A Primitive is a function that's expected to return. It is not
|
||||||
// allowed to call into Closures. Its caller is expected to pop off
|
// allowed to call into Closures. Its caller is expected to pop off
|
||||||
|
@ -182,6 +186,16 @@
|
||||||
return f;
|
return f;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var makeClosure = function(name, arity, f, closureArgs) {
|
||||||
|
if (! closureArgs) { closureArgs = []; }
|
||||||
|
return new Closure(f,
|
||||||
|
arity,
|
||||||
|
closureArgs,
|
||||||
|
name);
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
var isPrimitiveProcedure = function(x) {
|
var isPrimitiveProcedure = function(x) {
|
||||||
return typeof(x) === 'function';
|
return typeof(x) === 'function';
|
||||||
|
@ -192,22 +206,49 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
var isFunction = function(x) {
|
var isProcedure = function(x) {
|
||||||
return (typeof(x) === 'function' ||
|
return (typeof(x) === 'function' ||
|
||||||
x instanceof Closure);
|
x instanceof Closure);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
var renameProcedure = function(f, name) {
|
||||||
|
if (isPrimitiveProcedure(f)) {
|
||||||
|
return makePrimitiveProcedure(
|
||||||
|
name,
|
||||||
|
f.arity,
|
||||||
|
function() {
|
||||||
|
return f.apply(null, arguments);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
return new Closure(
|
||||||
|
f.label,
|
||||||
|
f.arity,
|
||||||
|
f.closedVals,
|
||||||
|
name);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//////////////////////////////////////////////////////////////////////
|
//////////////////////////////////////////////////////////////////////
|
||||||
exports.Closure = Closure;
|
exports.Closure = Closure;
|
||||||
exports.finalizeClosureCall = finalizeClosureCall;
|
exports.finalizeClosureCall = finalizeClosureCall;
|
||||||
|
|
||||||
exports.makePrimitiveProcedure = makePrimitiveProcedure;
|
exports.makePrimitiveProcedure = makePrimitiveProcedure;
|
||||||
|
exports.makeClosure = makeClosure;
|
||||||
|
|
||||||
exports.isPrimitiveProcedure = isPrimitiveProcedure;
|
exports.isPrimitiveProcedure = isPrimitiveProcedure;
|
||||||
exports.isClosure = isClosure;
|
exports.isClosure = isClosure;
|
||||||
|
|
||||||
exports.isFunction = isFunction;
|
exports.isProcedure = isProcedure;
|
||||||
|
|
||||||
|
|
||||||
|
exports.renameProcedure = renameProcedure;
|
||||||
|
|
||||||
|
|
||||||
exports.asJavaScriptFunction = asJavaScriptFunction;
|
exports.asJavaScriptFunction = asJavaScriptFunction;
|
||||||
|
|
||||||
|
|
|
@ -106,7 +106,7 @@ if(this['plt'] === undefined) { this['plt'] = {}; }
|
||||||
|
|
||||||
var checkOutputPort = plt.baselib.check.checkOutputPort;
|
var checkOutputPort = plt.baselib.check.checkOutputPort;
|
||||||
var checkString = plt.baselib.check.checkString;
|
var checkString = plt.baselib.check.checkString;
|
||||||
var checkFunction = plt.baselib.check.checkFunction;
|
var checkProcedure = plt.baselib.check.checkProcedure;
|
||||||
var checkNumber = plt.baselib.check.checkNumber;
|
var checkNumber = plt.baselib.check.checkNumber;
|
||||||
var checkReal = plt.baselib.check.checkReal;
|
var checkReal = plt.baselib.check.checkReal;
|
||||||
var checkNonNegativeReal = plt.baselib.check.checkNonNegativeReal;
|
var checkNonNegativeReal = plt.baselib.check.checkNonNegativeReal;
|
||||||
|
@ -614,7 +614,7 @@ if(this['plt'] === undefined) { this['plt'] = {}; }
|
||||||
function(MACHINE) {
|
function(MACHINE) {
|
||||||
if (MACHINE.argcount === 1) {
|
if (MACHINE.argcount === 1) {
|
||||||
MACHINE.params['currentPrint'] =
|
MACHINE.params['currentPrint'] =
|
||||||
checkFunction(MACHINE, 'current-print', 0);
|
checkProcedure(MACHINE, 'current-print', 0);
|
||||||
return VOID;
|
return VOID;
|
||||||
} else {
|
} else {
|
||||||
return MACHINE.params['currentPrint'];
|
return MACHINE.params['currentPrint'];
|
||||||
|
|
Loading…
Reference in New Issue
Block a user