A-M baby
This commit is contained in:
parent
764da6cbbb
commit
db842d013d
19005 changed files with 197040 additions and 7 deletions
30
Task/Animation/Factor/animation.factor
Normal file
30
Task/Animation/Factor/animation.factor
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
USING: accessors timers calendar kernel models sequences ui
|
||||
ui.gadgets ui.gadgets.labels ui.gestures ;
|
||||
FROM: models => change-model ;
|
||||
IN: rosetta.animation
|
||||
|
||||
CONSTANT: sentence "Hello World! "
|
||||
|
||||
TUPLE: animated-label < label-control reversed alarm ;
|
||||
: <animated-label> ( model -- <animated-model> )
|
||||
sentence animated-label new-label swap >>model
|
||||
monospace-font >>font ;
|
||||
: update-string ( str reverse -- str )
|
||||
[ unclip-last prefix ] [ unclip suffix ] if ;
|
||||
: update-model ( model reversed? -- )
|
||||
[ update-string ] curry change-model ;
|
||||
|
||||
animated-label
|
||||
H{
|
||||
{ T{ button-down } [ [ not ] change-reversed drop ] }
|
||||
} set-gestures
|
||||
|
||||
M: animated-label graft*
|
||||
[ [ [ model>> ] [ reversed>> ] bi update-model ] curry 400 milliseconds every ] keep
|
||||
alarm<< ;
|
||||
M: animated-label ungraft*
|
||||
alarm>> stop-timer ;
|
||||
: main ( -- )
|
||||
[ sentence <model> <animated-label> "Rosetta" open-window ] with-ui ;
|
||||
|
||||
MAIN: main
|
||||
75
Task/Animation/Fantom/animation.fantom
Normal file
75
Task/Animation/Fantom/animation.fantom
Normal file
|
|
@ -0,0 +1,75 @@
|
|||
using concurrent
|
||||
using fwt
|
||||
using gfx
|
||||
|
||||
const class RotateString : Actor
|
||||
{
|
||||
new make (Label label) : super (ActorPool ())
|
||||
{
|
||||
Actor.locals["rotate-label"] = label
|
||||
Actor.locals["rotate-string"] = label.text
|
||||
Actor.locals["direction"] = "forward"
|
||||
sendLater (1sec, "update")
|
||||
}
|
||||
|
||||
// responsible for calling appropriate methods to process each message
|
||||
override Obj? receive (Obj? msg)
|
||||
{
|
||||
switch (msg)
|
||||
{
|
||||
case "update":
|
||||
Desktop.callAsync |->| { update } // make sure we update GUI in event thread
|
||||
sendLater (1sec, "update")
|
||||
case "reverse":
|
||||
Desktop.callAsync |->| { reverse }
|
||||
}
|
||||
|
||||
return null
|
||||
}
|
||||
|
||||
// change the stored string indicating the direction to rotate
|
||||
Void reverse ()
|
||||
{
|
||||
Actor.locals["direction"] =
|
||||
(Actor.locals["direction"] == "forward" ? "backward" : "forward")
|
||||
}
|
||||
|
||||
// update the text on the label according to the stored direction
|
||||
Void update ()
|
||||
{
|
||||
label := Actor.locals["rotate-label"] as Label
|
||||
str := Actor.locals["rotate-string"] as Str
|
||||
if (label != null)
|
||||
{
|
||||
newStr := ""
|
||||
if (Actor.locals["direction"] == "forward")
|
||||
newStr = str[1..-1] + str[0].toChar
|
||||
else
|
||||
newStr = str[-1].toChar + str[0..<-1]
|
||||
label.text = newStr
|
||||
Actor.locals["rotate-string"] = newStr
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class Animate
|
||||
{
|
||||
public static Void main ()
|
||||
{
|
||||
label := Label
|
||||
{
|
||||
text = "Hello world! "
|
||||
halign = Halign.center
|
||||
}
|
||||
ticker := RotateString (label)
|
||||
label.onMouseDown.add |Event e|
|
||||
{
|
||||
ticker.send ("reverse")
|
||||
}
|
||||
Window
|
||||
{
|
||||
title = "Animate"
|
||||
label,
|
||||
}.open
|
||||
}
|
||||
}
|
||||
18
Task/Animation/HicEst/animation-1.hicest
Normal file
18
Task/Animation/HicEst/animation-1.hicest
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
CHARACTER string="Hello World! "
|
||||
|
||||
WINDOW(WINdowhandle=wh, Height=1, X=1, TItle="left/right click to rotate left/right, Y-click-position sets milliseconds period")
|
||||
AXIS(WINdowhandle=wh, PoinT=20, X=2048, Y, Title='ms', MiN=0, MaX=400, MouSeY=msec, MouSeCall=Mouse_callback, MouSeButton=button_type)
|
||||
direction = 4
|
||||
msec = 100 ! initial milliseconds
|
||||
DO tic = 1, 1E20
|
||||
WRITE(WIN=wh, Align='Center Vertical') string
|
||||
IF(direction == 4) string = string(LEN(string)) // string ! rotate left
|
||||
IF(direction == 8) string = string(2:) // string(1) ! rotate right
|
||||
WRITE(StatusBar, Name) tic, direction, msec
|
||||
SYSTEM(WAIT=msec)
|
||||
ENDDO
|
||||
END
|
||||
|
||||
SUBROUTINE Mouse_callback()
|
||||
direction = button_type ! 4 == left button up, 8 == right button up
|
||||
END
|
||||
44
Task/Animation/HicEst/animation-2.hicest
Normal file
44
Task/Animation/HicEst/animation-2.hicest
Normal file
|
|
@ -0,0 +1,44 @@
|
|||
import gui
|
||||
$include "guih.icn"
|
||||
|
||||
class WindowApp : Dialog (label, direction)
|
||||
|
||||
method rotate_left (msg)
|
||||
return msg[2:0] || msg[1]
|
||||
end
|
||||
|
||||
method rotate_right (msg)
|
||||
return msg[-1:0] || msg[1:-1]
|
||||
end
|
||||
|
||||
method reverse_direction ()
|
||||
direction := 1-direction
|
||||
end
|
||||
|
||||
# this method gets called by the ticker, and updates the label
|
||||
method tick ()
|
||||
static msg := "Hello World! "
|
||||
if direction = 0
|
||||
then msg := rotate_left (msg)
|
||||
else msg := rotate_right (msg)
|
||||
label.set_label(msg)
|
||||
end
|
||||
|
||||
method component_setup ()
|
||||
direction := 1 # start off rotating to the right
|
||||
label := Label("label=Hello World! ", "pos=0,0")
|
||||
# respond to a mouse click on the label
|
||||
label.connect (self, "reverse_direction", MOUSE_RELEASE_EVENT)
|
||||
add (label)
|
||||
|
||||
connect (self, "dispose", CLOSE_BUTTON_EVENT)
|
||||
# tick every 100ms
|
||||
self.set_ticker (100)
|
||||
end
|
||||
end
|
||||
|
||||
# create and show the window
|
||||
procedure main ()
|
||||
w := WindowApp ()
|
||||
w.show_modal ()
|
||||
end
|
||||
26
Task/Animation/J/animation.j
Normal file
26
Task/Animation/J/animation.j
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
coinsert'jgl2' [ require'gl2'
|
||||
|
||||
MESSAGE =: 'Hello World! '
|
||||
TIMER_INTERVAL =: 0.5 * 1000 NB. Milliseconds
|
||||
DIRECTION =: -1 NB. Initial direction is right -->
|
||||
|
||||
ANIM =: noun define
|
||||
pc anim nomax nosize;pn "Basic Animation in J";
|
||||
xywh 1 1 174 24;cc isi isigraph rightmove bottommove;
|
||||
pas 0 0;pcenter;pshow;
|
||||
)
|
||||
|
||||
anim_run =: verb def ' wd ANIM,''; timer '',":TIMER_INTERVAL '
|
||||
sys_timer_z_ =: verb def ' isiMsg MESSAGE=: DIRECTION |. MESSAGE ' NB. Rotate MESSAGE according to DIRECTION
|
||||
anim_isi_mbldown =: verb def ' DIRECTION=: - DIRECTION ' NB. Reverse direction when user clicks
|
||||
anim_close =: verb def ' wd ''timer 0; pclose; reset;'' ' NB. Shut down timer
|
||||
|
||||
isiMsg =: verb define
|
||||
wd'psel anim'
|
||||
glclear '' NB. Clear out old drawing
|
||||
glfont '"courier new" 36'
|
||||
gltext y
|
||||
glpaint '' NB. Copy to screen
|
||||
)
|
||||
|
||||
anim_run ''
|
||||
34
Task/Animation/Liberty-BASIC/animation.liberty
Normal file
34
Task/Animation/Liberty-BASIC/animation.liberty
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
txt$ = "Hello World! "
|
||||
txtLength = len(txt$)
|
||||
direction=1
|
||||
|
||||
NoMainWin
|
||||
|
||||
open "Rosetta Task: Animation" for graphics_nsb as #demo
|
||||
#demo "Trapclose [quit]"
|
||||
#demo "down"
|
||||
#demo "Font Verdana 20 Bold"
|
||||
#demo "When leftButtonUp [changedirection]"
|
||||
|
||||
timer 150 , [draw]
|
||||
wait
|
||||
|
||||
[draw]
|
||||
if direction then
|
||||
txt$ = right$(txt$, 1);left$(txt$, txtLength - 1)
|
||||
else
|
||||
txt$ = right$(txt$, txtLength - 1);left$(txt$, 1)
|
||||
end if
|
||||
#demo "discard"
|
||||
#demo "place 50 100"
|
||||
#demo "\";txt$
|
||||
wait
|
||||
|
||||
[changedirection]
|
||||
direction = not(direction)
|
||||
wait
|
||||
|
||||
[quit]
|
||||
timer 0
|
||||
close #demo
|
||||
end
|
||||
20
Task/Animation/Logo/animation.logo
Normal file
20
Task/Animation/Logo/animation.logo
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
to rotate.left :thing
|
||||
output lput first :thing butfirst :thing
|
||||
end
|
||||
to rotate.right :thing
|
||||
output fput last :thing butlast :thing
|
||||
end
|
||||
|
||||
make "text "|Hello World! |
|
||||
make "right? "true
|
||||
|
||||
to step.animation
|
||||
label :text ; graphical
|
||||
; type char 13 type :text ; textual
|
||||
wait 6 ; 1/10 second
|
||||
if button <> 0 [make "right? not :right?]
|
||||
make "text ifelse :right? [rotate.right :text] [rotate.left :text]
|
||||
end
|
||||
|
||||
hideturtle
|
||||
until [key?] [step.animation]
|
||||
10
Task/Animation/Mathematica/animation.mathematica
Normal file
10
Task/Animation/Mathematica/animation.mathematica
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
mystring = "Hello World! ";
|
||||
Scroll[str_, dir_] := StringJoin @@ RotateLeft[str // Characters, dir];
|
||||
GiveString[dir_] := (mystring = Scroll[mystring, dir]);
|
||||
CreateDialog[{
|
||||
DynamicModule[{direction = -1},
|
||||
EventHandler[
|
||||
Dynamic[TextCell[
|
||||
Refresh[GiveString[direction], UpdateInterval -> 1/8]],
|
||||
TrackedSymbols -> {}], {"MouseClicked" :> (direction *= -1)}]]
|
||||
}];
|
||||
Loading…
Add table
Add a link
Reference in a new issue