/******************************************************************** Constraint-based Graphical Programming in B-Prolog % draw fancy circles *********************************************************************/ go:- circles. go. circles:- N=31, functor(T,circles,N), T=..[_|Circles],Circles=[C0|_], cgCircle(Circles), C0^width #>500, % cgSame(Circles,centerY), constrainSize(T,1,N), constrainColor(Circles), % cgWindow(Win,"circles"), Win^topMargin #= 20, Win^width #> 600, Win^height #> 600, handleWindowClosing(Win), cgSame(Circles,window,Win), cgPack(Circles), cgStartRecord(circles), cgShow(Circles), cgStopRecord. constrainSize(T,N0,N):- 2*N0 C^color #= C1^color, (C^diameter #\= C1^diameter) #=> C^color #\= C1^color, constrainColor(C,Cs). handleWindowClosing(Win),{windowClosing(Win)} => cgClose(Win).