Skip to content

Instantly share code, notes, and snippets.

@guaracy
Last active October 4, 2018 17:42
Show Gist options
  • Save guaracy/58dd4afaafffe55ab4afef5db267dcb8 to your computer and use it in GitHub Desktop.
Save guaracy/58dd4afaafffe55ab4afef5db267dcb8 to your computer and use it in GitHub Desktop.
demo.red
Red [
Title: "Red Android bridge demo"
Author: "Nenad Rakocevic"
File: %eval2.red
;Config: [type: 'dll libRed?: no libRedRT?: yes export-ABI: 'cdecl]
Tabs: 4
Needs: 'View
Rights: "Copyright (C) 2013-2017 Nenad Rakocevic. All rights reserved."
License: {
Distributed under the Boost Software License, Version 1.0.
See https://github.com/red/red/blob/master/BSL-License.txt
}
]
;#include %../../bridges/java/bridge.red
;system/view/debug?: yes
t0: t1: now/time/precise
;tiger: #include %tiger.red
rot: 0
z: 0.01
zoom: 0.2
;insert tiger compose [translate 100x100 rotate (rot) scale (zoom) (zoom) translate -21x-40]
font-label: make font! [
name: "Arial"
size: 11
color: white
anti-alias?: no
]
font-A: make font! [
name: "Times New Roman"
size: 15
color: red
style: [bold italic underline]
anti-alias?: yes
]
img1: make image! [10x10 1.2.3]
n: 1
loop 10 [
poke img1 1x1 * n 254.0.0
n: n + 1
]
pattern: make image! 30x30
draw pattern [fill-pen red pen off box 0x0 30x30 pen black circle 15x15 10]
fstk-logo: load/as 64#{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
wAAAABJRU5ErkJggg==
} 'png
view [
title "Red on Android"
tab-panel [
"Basic" [
backdrop white
space 5x5
style base: base
on-click [print "click!"]
on-down [print "down!"]
on-up [print "up"]
button "Alô" [
b/offset: b/offset - 0x5
s/text: random/only ["Wifi" "GPS" "GSM" "Data"] ; first random
p/data: random 100%
sl/data: random 100%
r/data: random true
c/data: random true
s/data: random true
but/color: random 255.255.255
b/color: random 255.255.255
g/visible?: not g/visible?
dl/selected: random length? dl/data
]
but: button "Stop" #FF8080 [
b/size: b/size + random 10x10
bb/rate: all [none? bb/rate 20]
] return
text-list cyan data ["itemA" "itemB" "itemC" "itemD"]
panel [
origin 0x0 below
dl: drop-list #FFEFD5 80 data ["itemA" "itemB" "itemC" "itemD"]
drop-down #98FB98 data ["itemA" "itemB" "itemC" "itemD"]
] return
below
info: text "This is a text label"
bb: base 20x20 black extra 1 rate 20 on-time [
if any [face/offset/x < 10 face/offset/x > 200][
face/extra: negate face/extra
]
face/offset/x: face/offset/x + (face/extra * 6)
]
field "world"
panel yellow 2 [
r: radio "option 1"
radio "option 2"
c: check "check 1"
check "check 2"
]
s: check "Wifi"
;s: switch "Wifi"
;p: progress
;sl: slider
across
base red on-down [b/offset: b/offset - 0x10]
g: base green on-down [b/offset: b/offset + 10x0]
b: base blue
base orange rate 1 on-time [
face/color: random white
;t1: now/time/precise
;print t1 - t0
;t0: t1
]
return
below
area "This is^/a multi-line^/sentence."
text "-- Scroll below for more --" 200
text "Hello"
field "input field"
radio "option 1"
radio "option 2"
check "check 1"
check "check 2"
]
"Camera" [
backdrop yellow
across
cam: camera 120x160 on-created [
cam-list/data: cam/data
cam-list/selected: 1
]
panel [
below
button "start" [cam/selected: cam-list/selected]
button "stop" [cam/selected: none]
cam-list: drop-list data [] [cam/selected: cam-list/selected]
]
]
"Draw 1" [
base 240x940 draw [
pen red
line 10x10 30x30
line 30x10 50x50 70x120 120x55 100x100 50x89
fill-pen blue
triangle 100x54 180x154 20x154
line-width 3
fill-pen linear red blue green
box 10x200 50x250
fill-pen green
box 80x200 160x280 5
line-width 2
polygon 20x10 100x10 140x30 80x20 60x40
line-width 1
fill-pen off
spline 10x260 50x330 140x290 200x400 100x300 10x280
pen blue
fill-pen radial red blue green 180x90 30
circle 180x90 30
fill-pen bitmap pattern
ellipse 10x158 80x36
text 150x10 "Hello Red"
fill-pen orange
arc 100x25 80x80 0 90 closed
pen red
fill-pen off
arc 100x25 50x80 30 90
curve 10x55 45x55 45x90
curve 10x60 40x60 10x90 40x90
pen yellow
shape [
move 0x199
line 21x177
arc 42x157 25 20 -45 sweep
line 63x137
arc 84x115 25 40 -45 sweep
line 105x95
arc 126x73 25 60 -45 sweep
line 147x53
arc 168x31 25 80 -45 sweep
line 199x0
move 0x0
]
image img1 190x150
image fstk-logo 10x20 30x40
]
]
"Draw 2" [
base 50x60 100.70.70 draw [
line-width 2
fill-pen 170.20.20.128
line 10x10 40x30 10x30
line 10x40 40x40
font font-label
text 5x45 "line"
]
base 50x60 100.70.70 draw [
line-width 2
fill-pen 170.20.20.128
triangle 10x10 40x10 25x40
font font-label
text 5x45 "triangle"
]
base 50x60 100.70.70 draw [
line-width 2
fill-pen 170.20.20.128
box 10x10 40x20
box 20x30 30x40
font font-label
text 5x45 "box"
]
base 50x60 100.70.70 draw [
line-width 2
fill-pen 170.20.20.128
polygon 10x10 40x10 40x40 20x30
font font-label
text 5x45 "polygon"
]
return
base 50x60 100.70.70 draw [
line-width 2
fill-pen 170.20.20.128
circle 25x25 15
circle 25x25 10 5
font font-label
text 5x45 "circle"
]
base 50x60 100.70.70 draw [
line-width 2
fill-pen 170.20.20.128
ellipse 10x10 5x10
ellipse 35x10 5x10
ellipse 20x20 10x20
font font-label
text 5x45 "ellipse"
]
base 50x60 100.70.70 draw [
line-width 2
fill-pen 170.20.20.128
;arc <center> <radius> <begin> <sweep> closed
arc 25x25 15x15 0 180 closed
fill-pen off
arc 25x25 5x10 90 270
font font-label
text 5x45 "arc"
]
base 50x60 100.70.70 draw [
line-width 2
fill-pen 170.20.20.128
curve 10x5 45x5 45x40
curve 10x10 40x10 10x40 40x40
font font-label
text 5x45 "curve"
]
return
base 50x60 100.70.70 draw [
line-width 2
fill-pen 170.20.20.128
spline 10x10 40x10 40x40 10x40 10x20 30x20 30x30 20x30
font font-label
text 5x45 "spline"
]
base 50x60 100.70.70 draw [
line-width 2
fill-pen 170.20.20.128
image fstk-logo 10x10 40x40
font font-label
text 5x45 "image"
]
base 50x60 100.70.70 draw [
font font-label
text 5x45 "text"
text 10x10 "Red"
pen red ; test if pen color
font font-A
text 10x20 "Red"
]
base 50x60 100.70.70 draw [
font font-label
text 5x45 "pen flat"
line 10x10 10x40
box 15x10 20x40
pen off
fill-pen 20.20.170.128
box 25x10 30x40
pen 255.255.255.100
line-width 1
triangle 35x10 40x40 35x40
fill-pen off
triangle 35x10 40x10 40x40
]
return
base 50x60 100.70.70 draw [
font font-label
text 5x45 "pen gradient"
pen linear red green blue
line-width 5
fill-pen off
box 10x10 40x40
]
base 50x60 100.70.70 draw [
font font-label
text 5x45 "fill gradient"
fill-pen linear red green blue
box 10x10 40x40
]
base 50x60 100.70.70 draw [
font font-label
text 5x45 "line join"
line-width 5
line-join miter
line 10x40 15x20 20x40
line-join round
line 20x40 25x20 30x40
line-join bevel
line 30x40 35x20 40x40
]
base 50x60 100.70.70 draw [
font font-label
text 5x45 "line cap"
line-width 7
line-cap flat
line 15x15 15x35
line-cap square
line 25x15 25x35
line-cap round
line 35x15 35x35
]
return
base 230x2 0.0.0
return
base 50x60 70.70.100 draw [
font font-label
text 5x45 "rotate"
line-width 2
fill-pen 170.20.20.128
box 15x15 35x35
rotate 45 25x25
box 15x15 35x35
]
base 50x60 70.70.100 draw [
font font-label
text 5x45 "scale"
line-width 2
fill-pen 170.20.20.128
box 10x10 40x40
scale 0.5 0.5
box 10x10 40x40
]
base 50x60 70.70.100 draw [
font font-label
text 5x45 "translate"
line-width 2
fill-pen 170.20.20.128
box 10x10 30x30
translate 10x10
box 10x10 30x30
]
]
"Tiger" [
base 200x200 options [accelerated: #[false]] rate 50 on-time [
rot: rot + 1
zoom: zoom + z
if any [zoom < 0.1 zoom > 0.7][z: negate z]
tiger/4: rot
tiger/6: zoom
tiger/7: zoom
face/draw: tiger
]
]
]
]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment