<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Basics :: CS2 course</title><link>https://robark.gitlab.io/basics/index.html</link><description>Chapter 2 Basics</description><generator>Hugo</generator><language>en-us</language><lastBuildDate>Mon, 24 Jan 2022 20:22:43 +0000</lastBuildDate><atom:link href="https://robark.gitlab.io/basics/index.xml" rel="self" type="application/rss+xml"/><item><title>Window</title><link>https://robark.gitlab.io/basics/window/index.html</link><pubDate>Thu, 19 Nov 2020 23:27:53 +0000</pubDate><guid>https://robark.gitlab.io/basics/window/index.html</guid><description>Lesson 2: Creating a window Example code:
from fltk import * # x y w h title win = Fl_Window(300,300,400,250,'This is my program' ) win.begin() but = Fl_Button(100,100,170,40,'click') win.end() but.align(FL_ALIGN_TOP | FL_ALIGN_LEFT) mycolor=fl_rgb_color(59,214,50) but.color(mycolor, FL_RED) #second color is when selected but.labelsize(40) but.labelfont(FL_COURIER) but.labelcolor(FL_GREEN) but.box(FL_OVAL_BOX) but.clear_visible_focus() win.show() Fl.run()</description></item><item><title>Images+Callbacks</title><link>https://robark.gitlab.io/basics/callback/index.html</link><pubDate>Fri, 20 Nov 2020 23:23:39 +0000</pubDate><guid>https://robark.gitlab.io/basics/callback/index.html</guid><description>Lesson 3: Images and Callbacks Example code:
from fltk import * pic = Fl_PNG_Image('cat.png') ar = pic.w()/pic.h() #aspect ratio bh = int(300/ar) #correct box height for width of 300 win = Fl_Window(300, bh, 'Cat Image') win.begin() box = Fl_Box(0, 0, 300, bh) #box has same aspect ratio as image win.end() pic = pic.copy(box.w(), box.h()) #resize image box.image(pic) win.show() Fl.run() Output:</description></item><item><title>Slot Machine</title><link>https://robark.gitlab.io/basics/slotmachine/index.html</link><pubDate>Mon, 23 Nov 2020 20:40:44 +0000</pubDate><guid>https://robark.gitlab.io/basics/slotmachine/index.html</guid><description>Lesson 4: Slot Machine Project using Fl_Pack Source code to slot machine from video. Notice, the use of Fl_Pack for widget layout.
Correction: pack.type(FL_HORIZONTAL) is wrong. That’s only for Fl_Valuators. Fl_Pack type should be Fl_Pack.VERTICAL or Fl_Pack.HORIZONTAL
from fltk import * import random def pull_cb(wid): shown=[] for x in range(3): i=random.randrange(len(I)) B[x].image(I[i]) shown.append(i) #checking indices not images win.redraw() #usually B[x].redraw() but images are transparent if len(set(shown)) == 1: #remember sets are unique fl_message('You win!') fnames=['cherry.png','lemon.png','watermelon.png','bell.png','seven.png','grapes.png'] I=[] for name in fnames: I.append(Fl_PNG_Image(name).copy(200,300)) win=Fl_Window(650,300) B=[] win.begin() pack = Fl_Pack(0,0,win.w(),win.h()) pack.begin() for x in range(3): B.append(Fl_Box(0, 0, 200,0)) B[-1].box(FL_SHADOW_BOX) B[-1].color(207) pull = Fl_Return_Button(0,0,50,0,'Pull') pull.tooltip('Hit enter to play again') pull.callback(pull_cb) pack.end() pack.type(Fl_Pack.HORIZONTAL) win.end() Fl.scheme('plastic') win.show() Fl.run() Output:</description></item><item><title>Packs_scroll_resize</title><link>https://robark.gitlab.io/basics/packs_scroll_resize/index.html</link><pubDate>Tue, 21 Sep 2021 17:17:56 +0000</pubDate><guid>https://robark.gitlab.io/basics/packs_scroll_resize/index.html</guid><description>Lesson 4.5: Fl_Pack, resizable widgets, Fl_Scroll Fl_Pack example code:
from fltk import * #packs def but_cb(wid): wid.color(FL_GREEN) win = Fl_Window(0,0,400, 400, "Fl_Pack") win.begin() p=Fl_Pack(0,0, 400, 300) p.type(Fl_Pack.HORIZONTAL) p.begin() bl=[] for x in range(3): bl.append(Fl_Button(0, 0, p.w()//3 , 0, str(x+1))) bl[-1].callback(but_cb) p.end() p.resizable(bl[0]) # set resizable arg as either 1)widget 2)Group itself 3)None p2= Fl_Pack(0, 300,400, 100) p2.type(Fl_Pack.VERTICAL) p2.begin() b1=Fl_Button(0,0, 0, p2.h()//2,'A') b2=Fl_Button(0,0, 0, p2.h()//2,'B') p2.end() p2.resizable(b1) win.end() win.resizable(p) win.show() Fl.run() Fl_Scroll example code:</description></item><item><title>Shortcuts</title><link>https://robark.gitlab.io/basics/shortcuts/index.html</link><pubDate>Tue, 24 Nov 2020 20:59:38 +0000</pubDate><guid>https://robark.gitlab.io/basics/shortcuts/index.html</guid><description>Lesson #5: Handling mouse events, keyboard shortcuts, label alt shortcuts, input widgets, directory chooser, listing directories and Image viewer assignment Note: setting a keyboard shortcut overrides the &amp; in the label
Callback behavior based on mouse button events:
def but_cb(wid, x): if Fl.event_button() == FL_RIGHT_MOUSE: wid.color(FL_RED) elif Fl.event_button() == FL_LEFT_MOUSE: wid.color(FL_GREEN) wid.label(str(x)) Celcius to Farenheit converter. Example code for Fl_Input and Fl_Output widgets and input pop up dialog. The color integers are chosen from
https://www.fltk.org/doc-1.3/drawing.html#drawing_colors</description></item><item><title>Image Viewer</title><link>https://robark.gitlab.io/basics/viewer/index.html</link><pubDate>Thu, 26 Nov 2020 23:22:36 +0000</pubDate><guid>https://robark.gitlab.io/basics/viewer/index.html</guid><description>Lesson 6: Image Viewer Solution Code:
from fltk import * import os def next_cb(wid,n): global x if Fl.event_button() == FL_MIDDLE_MOUSE: files.clear() #files=[] creates local variable files.extend(get_filenames()) x=x+n # n is +1 for right -1 for left if len(files)==0: fl_alert('No photos in directory') return fname=files[x%len(files)] if fname[-4:]=='.png': img=Fl_PNG_Image(fname) else: img=Fl_JPEG_Image(fname) ar=img.w()/img.h() h=int(pw/ar) win.resize(win.x(),win.y(),ww,h) picbox.image(img.copy(pw,h)) picbox.redraw() def get_filenames(): d=fl_dir_chooser('Pick a directory to view photos','') if d==None: # Cancel clicked return [] fnames=os.listdir(d) picnames=[] for name in fnames: if name[-4:] in ('.png','.jpg','jpeg'): picnames.append(os.path.join(d,name)) return picnames x=-1 files=get_filenames() pw=700 #pic width bw=50 #button width ww=pw+(2*bw) #window width wh=300 #arbitrary value win=Fl_Window(0,0,ww,wh,'pyFltk Imageviewer') win.begin() lbut=Fl_Button(0,0,bw,wh,'@&lt;') lbut.callback(next_cb,-1) lbut.tooltip('Middle click to select new directory') lbut.shortcut(FL_ALT|FL_Left) picbox=Fl_Box(bw,0,pw,wh) rbut=Fl_Button(bw+pw,0,bw,wh,'@&gt;') rbut.callback(next_cb,1) rbut.tooltip('Middle click to select new directory') rbut.shortcut(FL_ALT|FL_Right) win.end() win.resizable(picbox) Fl.scheme('plastic') win.show() Fl.run()</description></item><item><title>Menubar</title><link>https://robark.gitlab.io/basics/menubar/index.html</link><pubDate>Wed, 02 Dec 2020 04:46:17 +0000</pubDate><guid>https://robark.gitlab.io/basics/menubar/index.html</guid><description>Lesson 7: Menubar and Window callbacks How to make a menubar and create a callback when closing a window.
from fltk import * def closewin(widget): print("shutting down") w.hide() def filecb(widget): fl_message("this is the filecb") def editcb(widget): fl_message("this is the editcb") def helpcb(widget): fl_message("this is the helpcb") def opencb(widget): fl_message("this is the opencb") w = Fl_Window(600, 50, 300, 300, "my gui") w.begin() menu=Fl_Menu_Bar(0,0, w.w(),25) menu.add("File/Open",0,opencb) menu.add("File/Exit",FL_F+5,closewin) menu.add("Edit/Undo ",FL_F+2,editcb) menu.add("Edit/Redo ",FL_F+2,editcb) menu.add("Edit/Preferences ",FL_F+2,editcb) menu.add("Hel&amp;p/A&amp;bout",ord('h'),helpcb) menu.add("Hel&amp;p/Software/History",0,helpcb) menu.add("Hel&amp;p/Software/License",0,helpcb) w.end() w.callback(closewin) Fl.scheme("gtk+") w.show() Fl.run()</description></item><item><title>Browser</title><link>https://robark.gitlab.io/basics/browser/index.html</link><pubDate>Wed, 02 Dec 2020 04:46:47 +0000</pubDate><guid>https://robark.gitlab.io/basics/browser/index.html</guid><description>Lesson 8: Hold_Browser widget (aka Listbox) from fltk import * def brow_cb(wid): pos=brow.value() name=brow.text(pos) # starts at 1 out.value(name) def but_cb(wid): fname= fl_file_chooser('Open File','*.txt',None) f=open(fname,'r') for name in f: brow.add(name[:-1])#[:-1] omit newline char from file f.close() def inp_cb(wid): name=wid.value() brow.add(name) wid.value('') wid.take_focus() win=Fl_Window(100,100,400,500,'FL_Browser Example') win.begin() brow=Fl_Hold_Browser(50,50,300,300,'Names') out=Fl_Output(50,10,300,30) but=Fl_Button(50,360,70,25,'Open') inp=Fl_Input(50,400,300,30,'Name:') win.end() brow.callback(brow_cb) but.callback(but_cb) inp.callback(inp_cb) inp.take_focus() win.show() Fl.run()</description></item><item><title>Pixmaps</title><link>https://robark.gitlab.io/basics/pixmaps/index.html</link><pubDate>Mon, 24 Jan 2022 20:22:43 +0000</pubDate><guid>https://robark.gitlab.io/basics/pixmaps/index.html</guid><description>Inserting pixmap image data into python source code Imagemagick software link
or if using Linux install with
sudo apt install imagemagick Example code with instructions:
from fltk import * #xbm is monochrome but xpm has color :) #use imagemagick software to convert png to xpm # convert -resize 60x43 smilycat.png smilycat.xpm #then copy/paste the xpm data to your python source code as a list #edit the image data as shown below ''' Required edits of xpm data in python source code file. 1) Remove the following 3 lines from the top of the data /* XPM */ static char *smilycat[] = { /* columns rows colors chars-per-pixel */ 2) Remove the following line from the middle of the data /* pixels */ 3) Replace the following line from the end of the data }; with a list close bracket ] 4) Insert a list variable line at top of data for example: smilycat_bits=[ ''' smilycat_bits=[ "60 43 229 2 ", " c #0B0C0B", ". c #1B140E", "X c #19140F", "o c #0D1012", "O c #131413", "+ c #191611", "@ c #1B1A14", "# c #1B1C1B", "$ c #15191A", "% c #120F0E", "&amp; c #23170D", "* c #251A0E", "= c #2C1B0D", "- c #281E14", "; c #361E10", ": c #37230D", "&gt; c #24221D", ", c #2A2419", "&lt; c #362D1E", "1 c #392712", "2 c #2E200F", "3 c #1F2120", "4 c #272928", "5 c #3B3527", "6 c #343535", "7 c #393B3A", "8 c #363837", "9 c #2F3130", "0 c #4C2C0C", "q c #44240B", "w c #532E0B", "e c #5C260D", "r c #54310D", "t c #5C370B", "y c #462D11", "u c #4A3214", "i c #66380B", "p c #733D09", "a c #69250C", "s c #453A29", "d c #583F22", "f c #682F29", "g c #5D431B", "h c #74440D", "j c #7B470B", "k c #654618", "l c #764C14", "z c #5A462B", "x c #5F5035", "c c #4B412C", "v c #674B29", "b c #6D5126", "n c #654D34", "m c #635236", "M c #695739", "N c #745831", "B c #7D653F", "V c #494948", "C c #5C5446", "Z c #585A59", "A c #594E43", "S c #625B4E", "D c #5F605F", "F c #796B4A", "G c #616454", "H c #686A5B", "J c #6D664E", "K c #666A69", "L c #6C7166", "P c #6B7A74", "I c #6A7673", "U c #757776", "Y c #71716A", "T c #B32E08", "R c #C93308", "E c #C83D37", "W c #884C0A", "Q c #984E0A", "! c #92520C", "~ c #9B560B", "^ c #995D19", "/ c #855015", "( c #A55D0A", ") c #A85C08", "_ c #B75D08", "` c #9D6117", "' c #A8620A", "] c #BD6B0A", "[ c #B76608", "{ c #A6681A", "} c #B26C15", "| c #BE7011", " . c #945C20", ".. c #8E632A", "X. c #996627", "o. c #8C6835", "O. c #97723D", "+. c #BA792B", "@. c #A67632", "#. c #C26C06", "$. c #C36E09", "%. c #C86E06", "&amp;. c #D56C06", "*. c #CE7205", "=. c #CB7209", "-. c #DD7A06", ";. c #D87505", ":. c #D77E16", "&gt;. c #E47303", ",. c #EB7602", "&lt;. c #E47D04", "1. c #EA7B06", "2. c #F27901", "3. c #F17D09", "4. c #E07F1A", "5. c #D14039", "6. c #866E44", "7. c #8A744B", "8. c #93774A", "9. c #8E7A53", "0. c #927D55", "q. c #997F55", "w. c #D2524D", "e. c #75817E", "r. c #B4853E", "t. c #CC8109", "y. c #D08309", "u. c #EB8204", "i. c #E5810A", "p. c #F38503", "a. c #F98701", "s. c #FE8B01", "d. c #F78908", "f. c #FD9509", "g. c #F18E12", "h. c #FB9516", "j. c #ED8112", "k. c #FEA30A", "l. c #FFAA17", "z. c #DA9537", "x. c #CB8C35", "c. c #F29722", "v. c #FEA429", "b. c #F9A738", "n. c #FAB032", "m. c #9C8355", "M. c #968057", "N. c #A6864E", "B. c #B78E47", "V. c #A58A57", "C. c #B28D51", "Z. c #B1945C", "A. c #B99759", "S. c #B69352", "D. c #BC9C62", "F. c #B49765", "G. c #AF9367", "H. c #BDA273", "J. c #C49954", "K. c #D3A554", "L. c #F0AF4B", "P. c #C09F62", "I. c #C5A365", "U. c #CCA868", "Y. c #D6AC66", "T. c #D7B16D", "R. c #DCB671", "E. c #C9AD7A", "W. c #E1B169", "Q. c #ECBC6A", "!. c #E6B665", "~. c #F4BF6F", "^. c #FBBF61", "/. c #E5BC74", "(. c #E8BE75", "). c #F5BF70", "_. c #F5C06F", "`. c #FBC56D", "'. c #ECC37A", "]. c #E9C076", "[. c #F6C372", "{. c #F8C575", "}. c #F5CA7D", "|. c #FACC7D", " X c #F5C778", ".X c #FFD07F", "XX c #7B8986", "oX c #7E9290", "OX c #858988", "+X c #839493", "@X c #899796", "#X c #919292", "$X c #999C9C", "%X c #889090", "&amp;X c #96A4A3", "*X c #8DA2A1", "=X c #A1A2A2", "-X c #AAABAA", ";X c #A4ABAB", ":X c #ADAFB1", "&gt;X c #AEB7B7", ",X c #B9BABA", "&lt;X c #DABC86", "1X c #BFC0BF", "2X c #E8C68A", "3X c #FCCE80", "4X c #F1CD89", "5X c #FED182", "6X c #FBD38A", "7X c #FAD693", "8X c #F6D294", "9X c #F2CF93", "0X c #ADC6C7", "qX c #B7C5C6", "wX c #BDD0D1", "eX c #C6C7C7", "rX c #C5D7D9", "tX c #DBDCDC", "yX c #D3D7D7", "uX c #D8E5E6", "iX c #E2E3E3", "pX c #EAEBEB", "aX c #E6EFEF", "sX c #EDF2F3", "dX c #F3F4F4", "fX c #F4FCFC", "gX c #FFFFFF", "hX c #EDEFF0", "jX c None", "jXjXjXjXjXjXjXjXjXjX&gt; 5 , jXjXjXjXjXjXjXjXjXjXO + # @ @ O jXjXjXjXjXjXjXjXjXjX&gt; 5 &gt; jXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXjXjXjXjXjXb K.B.7.x 5 4 jXjXjX@ s M 9.V.Z.F.V.9.M s # jXjXjX&gt; s M 8.S.K.k jXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXjXjXjXjXjXh k.k.l.n.L.C.5 # M S.!.L.n.v.v.v.v.b.L.L.V.M @ 5 S.L.n.l.k.k.k jXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXjXjXjXjXjX1 y.' ' y.t.g v r.n.h.s.s.s.s.s.s.s.s.s.f.h.b.r.x k t.t.( ' t.1 jXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXjXjXjXjXjX2 h T R a 1 ..c.f.s.s.s.s.s.s.s.s.s.s.s.s.s.s.f.c...: a R T h * jXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXjXjXjXjXjXjXu T T q } i.' l / ' i.s.s.s.s.s.s.s.s.&lt;.' l l ' i.} 0 T T u jXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXjXjXjXjXjXjXy e q $.] x oX0X0XoXx ] s.s.s.s.s.s.[ x oX0X0XoXx #.] q e 1 jXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXjXjXjXjXjXjX. : $.] C wXgXgXgXgXwXC | s.s.s.s.[ G rXgXgXgXgXrXC %.[ 2 * jXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXjXjXjXjXjXjX+ ( u.x rXgXgXgXgXgXgXwXv u.s.s.i.x rXgXgXgXgXgXgXwXv u.~ X jXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXjXjXjXjXjXO j f.~ @XgXgXgXgXgXgXgXgX+X' s.s.~ *XgXgXgXgXgXgXgXgX+X( d.h O jXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXjXjXjXjX# 0 u.p.v uXgXgXgXgXgXgXgXgXyXN a.p.M uXgXgXgXgXgXgXgXgXrXb a.&lt;.1 # jXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXjXjXjXjX+ [ s.*.L fXgXgXgXgXgXgXgXgXfXH -.*.L gXgXgXgXgXgXgXgXgXfXH -.s.' + jXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXjXjXjXjX: -.s.' %XgXgXgXgXgXgXgXfX1XyXOX| } +XeXeXgXgXgXgXgXgXgXgXM.[ s.*.2 jXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXjXjXjX2 ! ' s.' &amp;XgXgXgXgXgXgXgX1X+ 6 e.N.m.e.4 &gt; yXgXgXgXgXgXgXgX*X' s.' ! 2 jXjXjXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXjXjXO r i.! h.X.;XgXgXgXgXgXgXgX;X # P V.m.K O ,XgXgXgXgXgXgXgX&amp;XX.g.! i.y $ jXjXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXjXjX* h { @.Y.V.&amp;XgXgXgXgXgXgXgXtXZ Y oXZ.V.%XK Z pXgXgXgXgXgXgXgX@XZ.K.@.{ h . jXjXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXjX$ y z.A.R.}.A.XXgXgXgXgXgXgXgXgXdXfXU I.D.%XfXdXgXgXgXgXgXgXgXgXe.I.}.R.A.z.: @ jXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXjXO z A.T.R..X/.L sXgXgXgXgXgXgXgXgXsXH (./.L sXgXgXgXgXgXgXgXgXaXG ].|.R.T.A.z @ jXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXjX2 z.U., 7.}.}.F qXgXgXgXgXgXgXgXgX0XF |.|.F qXgXgXgXgXgXgXgXgX&gt;XF .X XF &lt; U.x.* jXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXjXt h.N.z T.5X5XD.L fXgXgXgXgXgXgXsXL I.5X5XD.P fXgXgXgXgXgXgXsXK I.6X.XT.c r.g.0 jXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXO W s.g.+.A.5X.X}.F *XfXgXgXgXgXfX@XF }.}.}. XF &amp;XgXgXgXgXgXfXoX7.|.3X.XZ.+.g.s.j jXjXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXo h p.s.i.O.|.|..X/.J @XuXfXfXuXoXJ M n M M m M S +XuXfXfXuXXXF '.5X3X}.o.i.s.s.j o jXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjX% : -.s.d.` U..X|.5X].9.G P P G M.'.6.f w.w.f M.].9.G P P G M.'.3X3X5XI.` s.s.u.y % jXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXX = ' s.s.i.o.2X5X|.3X5X].U.P.K.5X_.T.n 5.E v R.].|.K.I.I.(.5X3X3X3X'.o.-.s.s.[ * % jXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXjXt ( ! d.s.s.] q.4X5X3X|.5X5X}.!.Q.Q.[.F.f f A.[.~.!.!.}.5X5X|.3X5X4X8.$.s.s.s.~ ~ r jXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXo t d.u.s.s.s.s.[ 8.2X7X6X5X.X5X[.Q.|.|.3XN F 3X|.|.Q. X3X3X5X6X7X&lt;X8.| s.s.s.s.p.d.r jXjXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXO * %.s.s.s.s.s.s.=...G.2X8X7X6X6X6X6X6X3XG.F.5X5X6X5X6X6X7X7X2XG.X.*.s.s.s.s.s.s.#.&amp; O jXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjX% . h d.s.s.s.s.s.s.u.} ..m.H.&lt;X2X9X8X8X7XE.E.7X8X8X9X2X&lt;XH.m.X.$.d.s.s.s.s.s.s.a.h % O jXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjXX r r *.s.s.s.s.s.s.s.s.p.:.C.m.9.0.M.0.0.9.9.M.M.M.0.0.m.S.:.a.s.s.s.s.s.s.s.s.=.r r + jXjXjXjXjXjXjXjXjXjXjXjX", "jXjXjXjX* =.-.&lt;.s.s.s.s.s.s.s.s.s.L..X|.}.]./././.].]././.(.].4X|..Xb.s.s.s.s.s.s.s.s.s.-.-.$.+ jXjXjXjXjXjXjXjXjXjXjXjX", "jXjX&gt; z 1 *.s.s.s.s.s.s.s.s.s.s.h.`.|.5X3X3X3XT.V.6.6.m.T.|.|.5X.X5X`.h.s.s.s.s.s.s.s.s.s.s.$.1 v - jXjXjXjXjXjXjXjXjXjX", "jX, .:.0 =.d.s.s.s.s.s.s.s.s.s.b.5X3X|.3X3XD.V.F.U.U.D.m.D.|.|.|.|.|.b.s.s.s.s.s.s.s.s.a.a.] r :. ., jXjXjXjXjXjXjXjXjX", "jX/ 3.&gt;.0 %.a.a.a.a.s.s.s.s.s.f.^.3X3X3X3X|. X3X3X3X3X5X3X X3X3X3X3X3X^.s.s.s.s.s.s.s.a.a.a.#.w ,.3./ jXjXjXjXjXjXjXjXjX", "1 &amp;.2.&gt;.w #.a.a.a.a.a.s.s.s.s.h.{.3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X3X[.h.s.s.s.s.s.a.a.a.a.[ w ,.2.&amp;.1 jXjXjXjXjXjXjXjX", "w &gt;.2.,.w [ a.a.a.1.;.;.1.a.s.v.|.|.3X3X3X3X3X3X3X3X3X3X3X3X3X3X|.|.3X|.c.s.p.1.;.;.1.a.a.a.) i ,.2.,.r jXjX4 , 3 - jXjX", "y &gt;.2.,.i ) a.#.j z x A v h _ L.|.|.|.3X3X3X3X3X3X3X3X3X3X3X3X3X|.|.|.{.b._ k z A C v j %.a.~ i 2.2.&gt;.r b X.+.+.N d &lt; jX", "- _ 2.2.p W W A =XtXhXhXtX:XS N W.).).).[.{.{.{.|.|.{.[.|.{.{.).[.).).W.N Z :XtXsXhXtX=XA ! j W 2.2._ p 3.3.3.Q ; ; &lt; @ ", "jXr Q p q &amp; U iXgXgXiXiXgXgXhXOXM Q.).).).).).~.~.~.~.~.~.~.~.~.).).Y.n OXhXgXgXiXtXgXgXiXY . q p Q i _ 3.3.&gt;.Q ; &amp; &amp; X ", "jXO V #XV Z iXgXgXgX=X,XgXgXiXdXU 6.).).).~.).~.~.~.~.~.~.~.~.~.).[.6.OXdXdXgXgX-X-XgXgXgXtXZ V #X7 a ,.2.,._ 0 = &amp; &amp; X ", "jX9 eXiXZ 1X#XfXgXgX%X-XgXgX%XiXiXA K.).~.~.).).~.~.~.~.~.~.~.~._.J.C pXtX$XgXgX=X$XgXgXdX#X,XZ pX1Xs &gt;.2.2.&gt;.Q ; &amp; &amp; $ ", "jXV dX-XU iXY dXgXgXOX-XgXgXY yXgXOX8.[.).).).).).).).).).).).).{.6.#XgXeXU gXgX=X$XgXgXpXK pXK :XhXc W _ _ ) w &amp; . X jX", "jXZ iXU #XyXD tXpXpXOX$XpXiXK eXpX;Xn W.W.W.W.W.W.W.W.W.W.W.W.W.W.n :XpX,XK pXpX#X#XpXpXyXD tXOXOXtXZ O - - * O O O jXjX", "jX3 8 3 4 8 # 8 8 8 4 4 7 8 # 9 7 9 &amp; &lt; &lt; &lt; &lt; &lt; &lt; &lt; &lt; &lt; &lt; &lt; &lt; &lt; &lt; + 9 7 9 # 7 7 4 4 8 8 8 &amp; 6 4 4 6 # jXjXjXjXjXjXjXjXjX" ] catpix=Fl_Pixmap(smilycat_bits) win=Fl_Window(100,100) win.begin() but=Fl_Button(10,10, 80,60) but.image(catpix) win.end() win.show() Fl.run() Output:</description></item></channel></rss>