Home My Page Projects Code Snippets Project Openings SML/NJ
Summary Activity Forums Tracker Lists Tasks Docs Surveys News SCM Files

SCM Repository

[smlnj] Annotation of /sml/trunk/src/eXene/examples/add/splash.sml
ViewVC logotype

Annotation of /sml/trunk/src/eXene/examples/add/splash.sml

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1502 - (view) (download)

1 : monnier 2 (* splash.sml
2 :     *
3 :     * COPYRIGHT (c) 1996 AT&T Research.
4 :     *)
5 :    
6 :     structure Splash =
7 :     struct
8 :     local
9 :     open Geometry EXeneBase Drawing Widget
10 :    
11 : jhr 1502 val min = Int.min
12 :     val max = Int.max
13 :    
14 : monnier 2 fun bbox [] = RECT{x=0,y=0,wid=0,ht=0}
15 :     | bbox (PT{x,y}::pts) = let
16 :     fun bb (minx,miny,maxx,maxy,[]) =
17 :     RECT{x=minx,y=miny,wid=maxx-minx+1,ht=maxy-miny+1}
18 :     | bb (minx,miny,maxx,maxy,PT{x,y}::pts) =
19 :     bb(min(minx,x),min(miny,y),max(maxx,x),max(maxy,y),pts)
20 :     in
21 :     bb(x,y,x,y,pts)
22 :     end
23 :    
24 :     fun mkSplash (root, waterTile) = let
25 :     val scr = screenOf root
26 :     val waterPen = newPen [
27 :     PV_FillStyle_Stippled,
28 :     PV_Stipple waterTile,
29 :     PV_Foreground color1]
30 :    
31 :     fun mks pts = let
32 :     val RECT{x,y,wid,ht} = bbox pts
33 :     val delPt = PT{x=x,y=y}
34 :     val pts' = map (fn p => subPt(p,delPt)) pts
35 :     val pixmap = createPixmap scr (SIZE{wid=wid,ht=ht},1)
36 :     val draww = drawableOfPM pixmap
37 :     val _ = clearDrawable draww
38 :     val _ = fillPolygon draww waterPen {shape=NonconvexShape, verts=pts'}
39 :     val tile = createTileFromPixmap pixmap
40 :     in
41 :     destroyPixmap pixmap;
42 :     ({origin = hd pts', data = tile} : Images.image)
43 :     end
44 :     in
45 :     mks
46 :     end
47 :    
48 :     fun mkPt (x,y) = PT{x=x,y= ~y}
49 :    
50 :     val littleData = [
51 :     (0,0), (10,18), (6,15), (4,20), (0,12), (~4,18), (~7,15), (~15,20)
52 :     ]
53 :     val mediumData = [
54 :     (0,0), (20,30), (14,25), (10,20), (8,24), (5,21), (3,27), (0,22),
55 :     (~3,18), (~5,23), (~7,25), (~11,20), (~14,24), (~18,21), (~20,25)
56 :     ]
57 :     val bigData = [
58 :     (0,0), (30,35), (28,38), (25,36), (23,32), (20,36), (18,34),
59 :     (15,31), (13,37), (10,32), (8,34), (5,31), (3,37), (0,32),
60 :     (~3,28), (~5,33), (~7,35), (~11,30), (~14,34), (~18,31), (~20,35),
61 :     (~21,30), (~24,34), (~29,31), (~32,37)
62 :     ]
63 :     val splashList = map (fn pts => map mkPt pts)
64 :     [littleData, mediumData, bigData]
65 :     in
66 :    
67 :     fun mkSplashes arg = map (mkSplash arg) splashList
68 :    
69 :     end (* local *)
70 :     end

root@smlnj-gforge.cs.uchicago.edu
ViewVC Help
Powered by ViewVC 1.0.0