unofficial mirror of guile-user@gnu.org 
 help / color / mirror / Atom feed
* Re: guile-user Digest, Vol 216, Issue 15
       [not found] <mailman.89.1605891658.3478.guile-user@gnu.org>
@ 2020-11-24  1:54 ` Tim Meehan
  2020-11-24  8:19   ` Aleix Conchillo Flaqué
  2020-11-24 15:13   ` [EXT] " Thompson, David
  0 siblings, 2 replies; 3+ messages in thread
From: Tim Meehan @ 2020-11-24  1:54 UTC (permalink / raw)
  To: guile-user

Ok - I'm very new to Guile, and had run across "Sly" (game framework) by
dthomson? (My assumption, based on checking out a couple of links:
https://github.com/guildhall/guile-sly, http://www.draketo.de/proj/py2guile/
at bottom of page) ...

I'm interested in learning how to do games (Guile is a hobby, games are
fun).
Based on the recent announcement of Chickadee 0.6.0, I'm assuming I should
check that out instead of Sly?

On Fri, Nov 20, 2020 at 11:02 AM <guile-user-request@gnu.org> wrote:

> Send guile-user mailing list submissions to
>         guile-user@gnu.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         https://lists.gnu.org/mailman/listinfo/guile-user
> or, via email, send a message with subject or body 'help' to
>         guile-user-request@gnu.org
>
> You can reach the person managing the list at
>         guile-user-owner@gnu.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of guile-user digest..."
>
>
> Today's Topics:
>
>    1. Chickadee 0.6.0 released (Thompson, David)
>    2. getting to know the FFI ... (Tim Meehan)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Thu, 19 Nov 2020 21:11:09 -0500
> From: "Thompson, David" <dthompson2@worcester.edu>
> To: Guile User <guile-user@gnu.org>
> Subject: Chickadee 0.6.0 released
> Message-ID:
>         <CAJ=RwfbC2UmafXr=
> TrzaBkhhZ2ov+EfEmqOPZdBfjFn68tYucA@mail.gmail.com>
> Content-Type: text/plain; charset="UTF-8"
>
> Hey everyone,
>
> I just released Chickadee 0.6.0.  Chickadee is a game programming
> library for Guile. It handles window management,
> keyboard/mouse/controller input, hardware-accelerated rendering,
> audio, scripting, and more.
>
> Most notably it now supports OpenGL 2 (rejoice, old thinkpad users!),
> can render TrueType/OpenType fonts, and has preliminary support for 2D
> vector graphics.
>
> See the link below for full release details and download links:
>     https://dthompson.us/chickadee-060-released.html
>
> - Dave
>
>
>
> ------------------------------
>
> Message: 2
> Date: Thu, 19 Nov 2020 21:02:51 -0600
> From: Tim Meehan <btmeehan@gmail.com>
> To: guile-user@gnu.org
> Subject: getting to know the FFI ...
> Message-ID:
>         <CACgrOxJZKxE4eL9keY5HBmqnT9yA22VOrq3Hn2RLd=
> BsE2PJgQ@mail.gmail.com>
> Content-Type: text/plain; charset="UTF-8"
>
> I figured that I would try and do something simple-ish to see how well I
> understood the FFI. I found this GTK tutorial, written in Chez Scheme:
> https://github.com/jhidding/lyonesse/blob/master/gtk-tutorial/window.scm
> I just tried to replace the Chez FFI calls with Guile FFI calls.
>
> I'm not sure how to tell GTK about a callback that is written in Guile.
> I'm not sure how to pass a string to GTK ...
>
> Cheers,
> My bug-ridden source follows:
>
> ; The original code was in Chez Scheme, link below:
> ; https://github.com/jhidding/lyonesse/blob/master/gtk-tutorial/window.scm
>
> ; I gather that it just pops up a window?
> ; He didn't connect the "X" to the destroy action,
> ; so the window might be hard to get rid of.
>
> (use-modules (system foreign))
>
> (define libgtk (dynamic-link "libgtk-3"))
> (define libgdk (dynamic-link "libgdk-3"))
> (define libgio (dynamic-link "libgio-2.0"))
> (define libgobject (dynamic-link "libgobject-2.0"))
>
> ;; GtkApplication* -> GtkWidget*
> (define gtk-application-window-new
>     (pointer->procedure
>         '*
>         (dynamic-func "gtk_application_window_new" libgtk)
>         (list '*)))
>
>
> ;; GtkWindow*, gchar* -> void
> (define gtk-window-set-title
>     (pointer->procedure
>         void
>         (dynamic-func "gtk_window_set_title" libgtk)
>         (list '* '*)))
>
>
> (define gtk-window-set-default-size
>     (pointer->procedure
>         void
>         (dynamic-func "gtk_window_set_default_size" libgtk)
>         (list '*)))
>
>
> ;; GtkWidget* -> void
> (define gtk-widget-show-all
>     (pointer->procedure
>         void
>         (dynamic-func "gtk_widget_show_all" libgtk)
>         (list '*)))
>
>
> ;; gchar*, GApplicationFlags -> GtkApplication*
> (define gtk-application-new
>     (pointer->procedure
>         '*
>         (dynamic-func "gtk_application_new" libgtk)
>         (list '* int))) ; FIXME guess
>
>
> ;; GApplication*, int, char ** -> int
> (define g-application-run
>     (pointer->procedure
>         int
>         (dynamic-func "g_application_run" libgio)
>         (list '* int '*)))
>
>
> ;; gpointer, gchar*, GCallback, gpointer, GConnectFlags -> gulong
> (define g-signal-connect-object
>     (pointer->procedure
>         unsigned-long
>         (dynamic-func "g_signal_connect_object" libgobject)
>         (list '* '* '* '* int)))
>
>
> ;; gpointer -> void
> (define g-object-unref
>     (pointer->procedure
>         void
>         (dynamic-func "g_object_unref" libgobject)
>         (list '*)))
>
>
> (define (activate gtk-app user-data)
>     (let ([window (gtk-application-window-new gtk-app)])
>         (gtk-window-set-title window "Example Window")
>         (gtk-window-set-default-size window 200 200)
>         (gtk-widget-show-all window)))
>
>
> ;; HELP: This obviously won't work.
> ;; How would I give GTK a Guile callback?
> (define (callback p)
>     (let ([code (foreign-callable p (iptr iptr) void)])
>         (lock-object code)
>         (foreign-callable-entry-point code)))
>
>
> ;; HELP: how do you pass a string from Guile to a C function?
> (define (main)
>     (let ([argc (length (command-line))]
>           [argv (command-line)]
>           [app (gtk-application-new (scm->pointer "what needs this
> anyway?") 0)])
>         (g-signal-connect-object app "activate" (callback activate) 0 0)
>         (g-application-run app 0 0)
>         (g-object-unref app)))
>
> (main)
>
>
> ------------------------------
>
> Subject: Digest Footer
>
> _______________________________________________
> guile-user mailing list
> guile-user@gnu.org
> https://lists.gnu.org/mailman/listinfo/guile-user
>
>
> ------------------------------
>
> End of guile-user Digest, Vol 216, Issue 15
> *******************************************
>


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: guile-user Digest, Vol 216, Issue 15
  2020-11-24  1:54 ` guile-user Digest, Vol 216, Issue 15 Tim Meehan
@ 2020-11-24  8:19   ` Aleix Conchillo Flaqué
  2020-11-24 15:13   ` [EXT] " Thompson, David
  1 sibling, 0 replies; 3+ messages in thread
From: Aleix Conchillo Flaqué @ 2020-11-24  8:19 UTC (permalink / raw)
  To: Tim Meehan; +Cc: guile-user

Hi Tim,

yes, you should definitely checkout Chickadee. There are some cool demos in
the examples directory.

Best,

Aleix

On Mon, Nov 23, 2020, 5:55 PM Tim Meehan <btmeehan@gmail.com> wrote:

> Ok - I'm very new to Guile, and had run across "Sly" (game framework) by
> dthomson? (My assumption, based on checking out a couple of links:
> https://github.com/guildhall/guile-sly,
> http://www.draketo.de/proj/py2guile/
> at bottom of page) ...
>
> I'm interested in learning how to do games (Guile is a hobby, games are
> fun).
> Based on the recent announcement of Chickadee 0.6.0, I'm assuming I should
> check that out instead of Sly?
>
> On Fri, Nov 20, 2020 at 11:02 AM <guile-user-request@gnu.org> wrote:
>
> > Send guile-user mailing list submissions to
> >         guile-user@gnu.org
> >
> > To subscribe or unsubscribe via the World Wide Web, visit
> >         https://lists.gnu.org/mailman/listinfo/guile-user
> > or, via email, send a message with subject or body 'help' to
> >         guile-user-request@gnu.org
> >
> > You can reach the person managing the list at
> >         guile-user-owner@gnu.org
> >
> > When replying, please edit your Subject line so it is more specific
> > than "Re: Contents of guile-user digest..."
> >
> >
> > Today's Topics:
> >
> >    1. Chickadee 0.6.0 released (Thompson, David)
> >    2. getting to know the FFI ... (Tim Meehan)
> >
> >
> > ----------------------------------------------------------------------
> >
> > Message: 1
> > Date: Thu, 19 Nov 2020 21:11:09 -0500
> > From: "Thompson, David" <dthompson2@worcester.edu>
> > To: Guile User <guile-user@gnu.org>
> > Subject: Chickadee 0.6.0 released
> > Message-ID:
> >         <CAJ=RwfbC2UmafXr=
> > TrzaBkhhZ2ov+EfEmqOPZdBfjFn68tYucA@mail.gmail.com>
> > Content-Type: text/plain; charset="UTF-8"
> >
> > Hey everyone,
> >
> > I just released Chickadee 0.6.0.  Chickadee is a game programming
> > library for Guile. It handles window management,
> > keyboard/mouse/controller input, hardware-accelerated rendering,
> > audio, scripting, and more.
> >
> > Most notably it now supports OpenGL 2 (rejoice, old thinkpad users!),
> > can render TrueType/OpenType fonts, and has preliminary support for 2D
> > vector graphics.
> >
> > See the link below for full release details and download links:
> >     https://dthompson.us/chickadee-060-released.html
> >
> > - Dave
> >
> >
> >
> > ------------------------------
> >
> > Message: 2
> > Date: Thu, 19 Nov 2020 21:02:51 -0600
> > From: Tim Meehan <btmeehan@gmail.com>
> > To: guile-user@gnu.org
> > Subject: getting to know the FFI ...
> > Message-ID:
> >         <CACgrOxJZKxE4eL9keY5HBmqnT9yA22VOrq3Hn2RLd=
> > BsE2PJgQ@mail.gmail.com>
> > Content-Type: text/plain; charset="UTF-8"
> >
> > I figured that I would try and do something simple-ish to see how well I
> > understood the FFI. I found this GTK tutorial, written in Chez Scheme:
> > https://github.com/jhidding/lyonesse/blob/master/gtk-tutorial/window.scm
> > I just tried to replace the Chez FFI calls with Guile FFI calls.
> >
> > I'm not sure how to tell GTK about a callback that is written in Guile.
> > I'm not sure how to pass a string to GTK ...
> >
> > Cheers,
> > My bug-ridden source follows:
> >
> > ; The original code was in Chez Scheme, link below:
> > ;
> https://github.com/jhidding/lyonesse/blob/master/gtk-tutorial/window.scm
> >
> > ; I gather that it just pops up a window?
> > ; He didn't connect the "X" to the destroy action,
> > ; so the window might be hard to get rid of.
> >
> > (use-modules (system foreign))
> >
> > (define libgtk (dynamic-link "libgtk-3"))
> > (define libgdk (dynamic-link "libgdk-3"))
> > (define libgio (dynamic-link "libgio-2.0"))
> > (define libgobject (dynamic-link "libgobject-2.0"))
> >
> > ;; GtkApplication* -> GtkWidget*
> > (define gtk-application-window-new
> >     (pointer->procedure
> >         '*
> >         (dynamic-func "gtk_application_window_new" libgtk)
> >         (list '*)))
> >
> >
> > ;; GtkWindow*, gchar* -> void
> > (define gtk-window-set-title
> >     (pointer->procedure
> >         void
> >         (dynamic-func "gtk_window_set_title" libgtk)
> >         (list '* '*)))
> >
> >
> > (define gtk-window-set-default-size
> >     (pointer->procedure
> >         void
> >         (dynamic-func "gtk_window_set_default_size" libgtk)
> >         (list '*)))
> >
> >
> > ;; GtkWidget* -> void
> > (define gtk-widget-show-all
> >     (pointer->procedure
> >         void
> >         (dynamic-func "gtk_widget_show_all" libgtk)
> >         (list '*)))
> >
> >
> > ;; gchar*, GApplicationFlags -> GtkApplication*
> > (define gtk-application-new
> >     (pointer->procedure
> >         '*
> >         (dynamic-func "gtk_application_new" libgtk)
> >         (list '* int))) ; FIXME guess
> >
> >
> > ;; GApplication*, int, char ** -> int
> > (define g-application-run
> >     (pointer->procedure
> >         int
> >         (dynamic-func "g_application_run" libgio)
> >         (list '* int '*)))
> >
> >
> > ;; gpointer, gchar*, GCallback, gpointer, GConnectFlags -> gulong
> > (define g-signal-connect-object
> >     (pointer->procedure
> >         unsigned-long
> >         (dynamic-func "g_signal_connect_object" libgobject)
> >         (list '* '* '* '* int)))
> >
> >
> > ;; gpointer -> void
> > (define g-object-unref
> >     (pointer->procedure
> >         void
> >         (dynamic-func "g_object_unref" libgobject)
> >         (list '*)))
> >
> >
> > (define (activate gtk-app user-data)
> >     (let ([window (gtk-application-window-new gtk-app)])
> >         (gtk-window-set-title window "Example Window")
> >         (gtk-window-set-default-size window 200 200)
> >         (gtk-widget-show-all window)))
> >
> >
> > ;; HELP: This obviously won't work.
> > ;; How would I give GTK a Guile callback?
> > (define (callback p)
> >     (let ([code (foreign-callable p (iptr iptr) void)])
> >         (lock-object code)
> >         (foreign-callable-entry-point code)))
> >
> >
> > ;; HELP: how do you pass a string from Guile to a C function?
> > (define (main)
> >     (let ([argc (length (command-line))]
> >           [argv (command-line)]
> >           [app (gtk-application-new (scm->pointer "what needs this
> > anyway?") 0)])
> >         (g-signal-connect-object app "activate" (callback activate) 0 0)
> >         (g-application-run app 0 0)
> >         (g-object-unref app)))
> >
> > (main)
> >
> >
> > ------------------------------
> >
> > Subject: Digest Footer
> >
> > _______________________________________________
> > guile-user mailing list
> > guile-user@gnu.org
> > https://lists.gnu.org/mailman/listinfo/guile-user
> >
> >
> > ------------------------------
> >
> > End of guile-user Digest, Vol 216, Issue 15
> > *******************************************
> >
>


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: [EXT] Re: guile-user Digest, Vol 216, Issue 15
  2020-11-24  1:54 ` guile-user Digest, Vol 216, Issue 15 Tim Meehan
  2020-11-24  8:19   ` Aleix Conchillo Flaqué
@ 2020-11-24 15:13   ` Thompson, David
  1 sibling, 0 replies; 3+ messages in thread
From: Thompson, David @ 2020-11-24 15:13 UTC (permalink / raw)
  To: Tim Meehan; +Cc: Guile User

Hello Tim,

On Mon, Nov 23, 2020 at 8:56 PM Tim Meehan <btmeehan@gmail.com> wrote:
>
> Ok - I'm very new to Guile, and had run across "Sly" (game framework) by
> dthomson? (My assumption, based on checking out a couple of links:
> https://github.com/guildhall/guile-sly, http://www.draketo.de/proj/py2guile/
> at bottom of page) ...
>
> I'm interested in learning how to do games (Guile is a hobby, games are
> fun).
> Based on the recent announcement of Chickadee 0.6.0, I'm assuming I should
> check that out instead of Sly?

Yes, you should. Sly was an old experiment that I've since abandoned.
Chickadee is actively maintained and can do much more than Sly ever
could. Just keep in mind that it's alpha software so it is a little
rough around the edges.

Enjoy!

- Dave



^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-11-24 15:13 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <mailman.89.1605891658.3478.guile-user@gnu.org>
2020-11-24  1:54 ` guile-user Digest, Vol 216, Issue 15 Tim Meehan
2020-11-24  8:19   ` Aleix Conchillo Flaqué
2020-11-24 15:13   ` [EXT] " Thompson, David

unofficial mirror of guile-user@gnu.org 

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://yhetil.org/guile-user/0 guile-user/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 guile-user guile-user/ https://yhetil.org/guile-user \
		guile-user@gnu.org
	public-inbox-index guile-user

Example config snippet for mirrors.
Newsgroups are available over NNTP:
	nntp://news.yhetil.org/yhetil.lisp.guile.user
	nntp://news.gmane.io/gmane.lisp.guile.user


AGPL code for this site: git clone http://ou63pmih66umazou.onion/public-inbox.git