View in color | License | Download script | History |
30-Apr 15:49 UTC
[0.063] 13.121k
[0.063] 13.121k
progress-c.rREBOL [
Title: "'Progress bar capsule' styles"
Date: 7-Oct-2001/13:36:21+2:00
Version: 1.0.0
File: %progress-c.r
Author: "Oldes"
Purpose: {This style allows you to create progress bar as a 'capsule' with a grid in your layouts very simply. See the example script: http://sweb.cz/r-mud/examples/progress-c.r}
Comment: {
^-^-Make sure you have loaded the 'capsule' style as well!
^-^-(http://www.sweb.cz/r-mud/styles/capsules.r)}
Email: %oliva--david--seznam--cz
library: [
level: 'advanced
platform: none
type: 'module
domain: [GUI VID]
tested-under: none
support: none
license: none
see-also: none
]
]
progress-ss: stylize [
progress-capsule: box 200x1 feel [
redraw: func [f a p][
f/data: max 0 min 1 f/data
if f/data <> f/state [
either f/size/x > f/size/y [
f/c2/size/x: max 0 f/data * f/c1/size/x
] [
f/c2/size/y: max 0 (1 - f/data) * f/c1/size/y
]
f/state: f/data
show f/c2
]
]
] with [
data: 0
color: none
site: http://www.sweb.cz/r-mud/
caps-image: site/imgz/capsules/bryce3.gif
sock-source: site/imgz/sockets/bryce3.bin
sock-color: 170.185.165
sock-edge: 3x3
effects: [
[effect [multiply 170.60.0 tint -20 contrast 15 sharpen 2] 'image caps-image]
[effect [multiply 220.120.0 tint -30 contrast 15] 'image caps-image]
]
c1: c2: sock: none
grids: 17
get-pane: func[/local tmp get-capsule gs grid][
get-capsule: func[ef /local lay][
lay: make block! compose [
styles capsules
backdrop 0.0.0 origin 0x0
capsule (size)
]
layout append lay ef
]
gs: [0x0 0x0]
either size/x > size/y [
c1: get-capsule effects/1
c2: get-capsule effects/2
size/y: c1/size/y
gs/1/x: size/x / grids
gs/2/x: gs/1/x / 2
][
c1: get-capsule effects/2
c2: get-capsule effects/1
size/x: c1/size/x
gs/1/y: size/y / grids
gs/2/y: gs/1/y / 2
]
grid: make face compose/deep [
size: (size)
color: 0.0.0
edge: none
effect: [grid (gs/1) (gs/2) 30.30.30]
]
tmp: layout compose/deep [
styles capsules
origin 0x0
sock: socket (size + (2 * sock-edge)) 'depth 3 'source (sock-source) (sock-color)
at (sock-edge)
c1: image (to-image c1) effect [difference ( to-image grid) key 0.0.0]
at (sock-edge)
c2: image (to-image c2) effect [difference ( to-image grid) key 0.0.0]
]
reduce [sock c1 c2]
]
init: [
pane: get-pane
size: sock/size
either size/x > size/y [
c2/size/x: data * c2/size/x
][ c2/size/y: (1 - data) * c2/size/y]
]
]
] Notes
|