320 lines
7.9 KiB
Scheme
320 lines
7.9 KiB
Scheme
;; properties.ss
|
|
|
|
(module properties mzscheme
|
|
(require mzlib/list)
|
|
|
|
(provide
|
|
*css-units*
|
|
*background-attachments*
|
|
*background-repeats*
|
|
*text-transforms*
|
|
*text-aligns*
|
|
*border-widths*
|
|
*border-styles*
|
|
*displays*
|
|
*font-styles*
|
|
*font-variants*
|
|
*font-sizes*
|
|
*style-floats*
|
|
*clears*
|
|
*horizontals*
|
|
*verticals*
|
|
*decorations*
|
|
*visibilities*
|
|
*list-style-types*
|
|
*list-style-positions*
|
|
*positions*
|
|
*overflows*
|
|
*page-breaks*
|
|
*cursors*
|
|
*html-colors*
|
|
*filters-and-official-names*
|
|
*official-names-and-filters*
|
|
*filters*
|
|
*filter-official-names*
|
|
*filter-re*
|
|
*alpha-filter-styles*
|
|
*trans-filter-statuses*
|
|
*filter-directions*
|
|
*reveal-transitions*
|
|
*vertical-aligns*
|
|
decoration?
|
|
horizontal?
|
|
vertical?
|
|
font-size?
|
|
style-float?
|
|
clear?
|
|
display?
|
|
visibility?
|
|
list-style-type?
|
|
list-style-position?
|
|
position?
|
|
overflow?
|
|
pagebreak?
|
|
cursor?
|
|
filter?
|
|
alpha-filter-style?
|
|
trans-filter-status?
|
|
filter-direction?
|
|
reveal-transition?
|
|
vertical-align?
|
|
css-unit?
|
|
border-style?)
|
|
|
|
(define *css-units* '(em ex cm mm in pt pc px))
|
|
(define *background-attachments* '(fixed scroll))
|
|
(define *background-repeats* '(no-repeat repeat repeat-x repeat-y))
|
|
(define *text-transforms* '(none capitalize uppercase lowercase))
|
|
(define *text-aligns* '(left right center justify))
|
|
(define *border-widths* '(medium thin thick))
|
|
(define *border-styles* '(none dotted dashed solid double groove
|
|
ridge inset outset))
|
|
(define *displays* '(block none inline list-item
|
|
table-header-group table-footer-group))
|
|
(define *generic-font-families* '(serif sans-serif cursive
|
|
fantasy monospace))
|
|
(define *font-styles* '(normal italic oblique))
|
|
(define *font-variants* '(normal small-caps))
|
|
(define *font-sizes* '(xx-small x-small small medium large
|
|
x-large xx-large
|
|
larger smaller))
|
|
(define *style-floats* '(none left right))
|
|
(define *clears* '(none left right both))
|
|
(define *horizontals* '(left center right))
|
|
(define *verticals* '(top center bottom))
|
|
(define *decorations* '(none underline overline line-through blink))
|
|
(define *visibilities* '(inherit visible hidden))
|
|
(define *list-style-types* '(disc circle square decimal lower-roman
|
|
upper-roman lower-alpha upper-alpha none))
|
|
(define *list-style-positions* '(outside inside))
|
|
(define *positions* '(static absolute relative))
|
|
(define *overflows* '(visible scroll hidden auto))
|
|
(define *page-breaks* '(always auto none))
|
|
(define *cursors* '(auto crosshair default hand move
|
|
n-resize ne-resize nw-resize s-resize
|
|
se-resize sw-resize e-resize w-resize
|
|
text wait help))
|
|
(define *html-colors*
|
|
'(aliceblue
|
|
antiquewhite
|
|
aqua
|
|
aquamarine
|
|
azure
|
|
beige
|
|
bisque
|
|
black
|
|
blanchedalmond
|
|
blue
|
|
blueviolet
|
|
brown
|
|
burlywood
|
|
cadetblue
|
|
chartreuse
|
|
chocolate
|
|
coral
|
|
cornflower
|
|
cornsilk
|
|
crimson
|
|
cyan
|
|
darkblue
|
|
darkcyan
|
|
darkgoldenrod
|
|
darkgray
|
|
darkgreen
|
|
darkkhaki
|
|
darkmagenta
|
|
darkolivegreen
|
|
darkorange
|
|
darkorchid
|
|
darkred
|
|
darksalmon
|
|
darkseagreen
|
|
darkslateblue
|
|
darkslategray
|
|
darkturquoise
|
|
darkviolet
|
|
deeppink
|
|
deepskyblue
|
|
dimgray
|
|
dodgerblue
|
|
firebrick
|
|
floralwhite
|
|
forestgreen
|
|
fuchsia
|
|
gainsboro
|
|
ghostwhite
|
|
gold
|
|
goldenrod
|
|
gray
|
|
green
|
|
greenyellow
|
|
honeydew
|
|
hotpink
|
|
indianred
|
|
indigo
|
|
ivory
|
|
khaki
|
|
lavender
|
|
lavenderblush
|
|
lawngreen
|
|
lemonchiffon
|
|
lightblue
|
|
lightcoral
|
|
lightcyan
|
|
lightgoldenrodyellow
|
|
lightgreen
|
|
lightgray
|
|
lightpink
|
|
lightsalmon
|
|
lightseagreen
|
|
lightskyblue
|
|
lightslategray
|
|
lightsteelblue
|
|
lightyellow
|
|
lime
|
|
limegreen
|
|
linen
|
|
magenta
|
|
maroon
|
|
mediumaquamarine
|
|
mediumblue
|
|
mediumorchid
|
|
mediumpurple
|
|
mediumseagreen
|
|
mediumslateblue
|
|
mediumspringgreen
|
|
mediumturquoise
|
|
mediumvioletred
|
|
midnightblue
|
|
mintcream
|
|
mistyrose
|
|
moccasin
|
|
navajowhite
|
|
navy
|
|
oldlace
|
|
olive
|
|
olivedrab
|
|
orange
|
|
orangered
|
|
orchid
|
|
palegoldenrod
|
|
palegreen
|
|
paleturquoise
|
|
palevioletred
|
|
papayawhip
|
|
peachpuff
|
|
peru
|
|
pink
|
|
plum
|
|
powderblue
|
|
purple
|
|
red
|
|
rosybrown
|
|
royalblue
|
|
saddlebrown
|
|
salmon
|
|
sandybrown
|
|
seagreen
|
|
seashell
|
|
sienna
|
|
silver
|
|
skyblue
|
|
slateblue
|
|
slategray
|
|
snow
|
|
springgreen
|
|
steelblue
|
|
tan
|
|
teal
|
|
thistle
|
|
tomato
|
|
turquoise
|
|
violet
|
|
wheat
|
|
white
|
|
whitesmoke
|
|
yellow
|
|
yellowgreen))
|
|
(define *filters-and-official-names*
|
|
'((alpha alpha)
|
|
(blend-trans blendTrans)
|
|
(blur blur)
|
|
(chroma chroma)
|
|
(drop-shadow dropShadow)
|
|
(flip-horizontal flipH)
|
|
(flip-vertical flipV)
|
|
(glow glow)
|
|
(gray gray)
|
|
(invert invert)
|
|
(light light)
|
|
(mask mask)
|
|
(redirect redirect)
|
|
(reveal-trans revealTrans)
|
|
(shadow shadow)
|
|
(wave wave)
|
|
(x-ray xray)))
|
|
(define *official-names-and-filters*
|
|
(map (lambda (flt) (list (cadr flt)
|
|
(car flt)))
|
|
*filters-and-official-names*))
|
|
(define *filters* (map car *filters-and-official-names*))
|
|
(define *filter-official-names* (map cadr *filters-and-official-names*))
|
|
(define *filter-re*
|
|
(regexp (foldr (lambda (s t)
|
|
(if (> (string-length t) 0)
|
|
(string-append s "|" t)
|
|
s)) ""
|
|
(map symbol->string *filter-official-names*))))
|
|
(define *alpha-filter-styles*
|
|
'(uniform linear radial rectangular))
|
|
(define *trans-filter-statuses*
|
|
'(stopped applied playing))
|
|
(define *filter-directions*
|
|
'(0 45 90 135 180 225 270 315))
|
|
(define *reveal-transitions*
|
|
'(box-in box-out circle-in circle-out
|
|
wipe-up wipe-down wipe-right wipe-left
|
|
vertical-blinds horizontal-blinds checkerboard-across
|
|
checkerboard-down random-dissolve split-vertical-in
|
|
split-vertical-out split-horizontal-in split-horizontal-out
|
|
strips-left-down strips-left-up strips-right-down
|
|
strips-right-up random-bars-horizontal random-bars-vertical
|
|
random))
|
|
(define *vertical-aligns*
|
|
'(baseline sub super top middle bottom text-top text-bottom ))
|
|
|
|
; predicates based on membership in symbol lists
|
|
|
|
(define (make-sym-pred lst)
|
|
(lambda (s)
|
|
(memq s lst)))
|
|
|
|
(define decoration? (make-sym-pred *decorations*))
|
|
(define horizontal? (make-sym-pred *horizontals*))
|
|
(define vertical? (make-sym-pred *verticals*))
|
|
(define generic-font-family? (make-sym-pred *generic-font-families*))
|
|
(define font-size? (make-sym-pred *font-sizes*))
|
|
(define style-float? (make-sym-pred *style-floats*))
|
|
(define clear? (make-sym-pred *clears*))
|
|
(define display? (make-sym-pred *displays*))
|
|
(define visibility? (make-sym-pred *visibilities*))
|
|
(define list-style-type? (make-sym-pred *list-style-types*))
|
|
(define list-style-position? (make-sym-pred *list-style-positions*))
|
|
(define position? (make-sym-pred *positions*))
|
|
(define overflow? (make-sym-pred *overflows*))
|
|
(define pagebreak? (make-sym-pred *page-breaks*))
|
|
(define cursor? (make-sym-pred *cursors*))
|
|
(define filter? (make-sym-pred *filters*))
|
|
(define alpha-filter-style? (make-sym-pred *alpha-filter-styles*))
|
|
(define trans-filter-status?
|
|
(make-sym-pred *trans-filter-statuses*))
|
|
(define filter-direction? (make-sym-pred *filter-directions*))
|
|
(define reveal-transition? (make-sym-pred *reveal-transitions*))
|
|
(define vertical-align? (make-sym-pred *vertical-aligns*))
|
|
(define css-unit? (make-sym-pred *css-units*))
|
|
(define border-style? (make-sym-pred *border-styles*)))
|
|
|
|
|
|
|
|
|