aboutsummaryrefslogtreecommitdiffstats
path: root/lib/gs/examples/line_demo.erl
diff options
context:
space:
mode:
authorErlang/OTP <[email protected]>2009-11-20 14:54:40 +0000
committerErlang/OTP <[email protected]>2009-11-20 14:54:40 +0000
commit84adefa331c4159d432d22840663c38f155cd4c1 (patch)
treebff9a9c66adda4df2106dfd0e5c053ab182a12bd /lib/gs/examples/line_demo.erl
downloadotp-84adefa331c4159d432d22840663c38f155cd4c1.tar.gz
otp-84adefa331c4159d432d22840663c38f155cd4c1.tar.bz2
otp-84adefa331c4159d432d22840663c38f155cd4c1.zip
The R13B03 release.OTP_R13B03
Diffstat (limited to 'lib/gs/examples/line_demo.erl')
-rw-r--r--lib/gs/examples/line_demo.erl75
1 files changed, 75 insertions, 0 deletions
diff --git a/lib/gs/examples/line_demo.erl b/lib/gs/examples/line_demo.erl
new file mode 100644
index 0000000000..c8a6a69e2e
--- /dev/null
+++ b/lib/gs/examples/line_demo.erl
@@ -0,0 +1,75 @@
+%%
+%% %CopyrightBegin%
+%%
+%% Copyright Ericsson AB 1996-2009. All Rights Reserved.
+%%
+%% The contents of this file are subject to the Erlang Public License,
+%% Version 1.1, (the "License"); you may not use this file except in
+%% compliance with the License. You should have received a copy of the
+%% Erlang Public License along with this software. If not, it can be
+%% retrieved online at http://www.erlang.org/.
+%%
+%% Software distributed under the License is distributed on an "AS IS"
+%% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
+%% the License for the specific language governing rights and limitations
+%% under the License.
+%%
+%% %CopyrightEnd%
+%%
+
+%%
+%% ------------------------------------------------------------
+%% A simple demo showing a line
+%% bouncing within a window.
+%% ------------------------------------------------------------
+
+-module(line_demo).
+
+-export([start/0,init/0,line/3]).
+
+start() ->
+ spawn(line_demo,init,[]).
+
+init() ->
+ I= gs:start(),
+ W= gs:window(I,[{title,"Line Demo"},{width,300},{height,300},{map,true}]),
+ C= gs:canvas(W,[{width,300},{height,300},{bg,blue}]),
+ gs:button(W,[{label,{text,"Quit"}},{width,40},{bg,yellow}]),
+ Line2 = gs:line(C,[{coords,[{0,0},{50,50}]},{fg,white},{width,3}]),
+ line(Line2,{100,100,9.5,5},{0,0,-6,-8.4}).
+
+
+
+line(Line,{X1,Y1,DX1,DY1},{X2,Y2,DX2,DY2}) ->
+ {NX1,NDX1} = cc(X1,DX1),
+ {NY1,NDY1} = cc(Y1,DY1),
+ {NX2,NDX2} = cc(X2,DX2),
+ {NY2,NDY2} = cc(Y2,DY2),
+ gs:config(Line,{coords,[{NX1,NY1},{NX2,NY2}]}),
+ receive
+ {gs,_,click,_,_} -> exit(normal);
+ {gs,_,destroy,_,_} -> exit(normal)
+ after 50 ->
+ true
+ end,
+ line(Line,{NX1,NY1,NDX1,NDY1},{NX2,NY2,NDX2,NDY2}).
+
+cc(X,DX) ->
+ if
+ DX>0 ->
+ if
+ X<300 ->
+ {X+DX,DX};
+ x>=300 ->
+ {X-DX,-DX}
+ end;
+ DX<0 ->
+ if
+ X>0 ->
+ {X+DX,DX};
+ X=<0 ->
+ {X-DX,-DX}
+ end
+ end.
+
+%% ------------------------------------------------------------