Newsgroups: perl.perl6.internals Path: archiver1.google.com!news1.google.com!newsfeed.stanford.edu!nntp.perl.org Return-Path: Mailing-List: contact perl6-internals-h...@perl.org; run by ezmlm Delivered-To: mailing list perl6-intern...@perl.org Received: (qmail 11638 invoked by uid 76); 6 Apr 2004 04:38:06 -0000 Received: from x1.develooper.com (HELO x1.develooper.com) (63.251.223.170) by onion.perl.org (qpsmtpd/0.27.1) with SMTP; Mon, 05 Apr 2004 21:38:06 -0700 Received: (qmail 14809 invoked by uid 225); 6 Apr 2004 04:38:04 -0000 Delivered-To: perl6-intern...@perl.org Received: (qmail 14800 invoked by alias); 6 Apr 2004 04:38:03 -0000 X-Spam-Status: No, hits=0.0 required=7.0 tests= X-Spam-Check-By: la.mx.develooper.com Received: from sub27-240.member.dsl-only.net (HELO snafu.wgz.com) (63.105.27.240) by la.mx.develooper.com (qpsmtpd/0.27.1) with ESMTP; Mon, 05 Apr 2004 21:38:03 -0700 Received: from localhost (snafu [127.0.0.1]) by snafu.wgz.com (Postfix) with ESMTP id F349223347 for ; Mon, 5 Apr 2004 21:38:00 -0700 (PDT) Received: from snafu.wgz.com ([127.0.0.1]) by localhost (snafu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 15047-05 for ; Mon, 5 Apr 2004 21:38:00 -0700 (PDT) Received: from chat.yahoo.com (sub27-239.member.dsl-only.net [63.105.27.239]) (using TLSv1 with cipher RC4-MD5 (128/128 bits)) (No client certificate requested) by snafu.wgz.com (Postfix) with ESMTP id 3232923340 for ; Mon, 5 Apr 2004 21:38:00 -0700 (PDT) Subject: Re: New SDL Parrot Bindings Underway To: perl6-intern...@perl.org In-Reply-To: <1080632006.13206.69.camel@localhost> References: <1080632006.13206.69.camel@localhost> Content-Type: multipart/mixed; boundary="=-fofd76phuBRPpX0H0D9F" Message-ID: <1081225995.12079.27.camel@localhost> Mime-Version: 1.0 X-Mailer: Ximian Evolution 1.4.5 Date: Mon, 05 Apr 2004 21:33:15 -0700 X-Virus-Scanned: by amavisd-new at wgz.org Approved: n...@nntp.perl.org From: chroma...@wgz.org (Chromatic) --=-fofd76phuBRPpX0H0D9F Content-Type: text/plain Content-Transfer-Encoding: 7bit On Mon, 2004-03-29 at 23:33, chromatic wrote: > With the improved object system in place, I've been porting the existing > SDL Parrot bindings. Here's a quick status update. With helpful suggestions from Jens and Allison, I've just finished porting the existing files in examples/sdl to the new libraries. They're a lot nicer. I've still some documentation to write (as well as a long list of rough edges to smooth), but I'll fix that up shortly and check in some new code. To whet your appetites, here's the new version of examples/sdl/move_parrot_logo.imc. Suggestions always welcome. -- c --=-fofd76phuBRPpX0H0D9F Content-Disposition: attachment; filename=move_parrot_logo.imc Content-Type: text/plain; name=move_parrot_logo.imc; charset= Content-Transfer-Encoding: 7bit =head1 TITLE move_parrot_logo.imc - move a Parrot logo with the SDL Parrot bindings =head1 SYNOPSIS To run this file, be in the Parrot directory and run the following command: $ parrot examples/sdl/move_parrot_logo.imc $ =cut .sub _main @MAIN load_bytecode "library/SDL/App.imc" load_bytecode "library/SDL/Color.imc" load_bytecode "library/SDL/Rect.imc" load_bytecode "library/SDL/Image.imc" load_bytecode "library/SDL/Sprite.imc" load_bytecode "library/SDL/EventHandler.imc" load_bytecode "library/SDL/Event.imc" .local pmc app_args new app_args, .PerlHash set app_args[ 'width' ], 640 set app_args[ 'height' ], 480 set app_args[ 'bpp' ], 0 set app_args[ 'flags' ], 0 .local pmc app .local int app_type find_type app_type, 'SDL::App' app = new app_type .local pmc main_screen main_screen = app.'BUILD'( app_args ) .local pmc black .local int color_type find_type color_type, 'SDL::Color' black = new color_type .local pmc color_args color_args = new PerlHash color_args[ 'r' ] = 0 color_args[ 'g' ] = 0 color_args[ 'b' ] = 0 black.'_new'( color_args ) .local pmc image .local int image_type find_type image_type, 'SDL::Image' image = new image_type image.'_new'( 'examples/sdl/parrot_small.png' ) .local pmc sprite .local int sprite_type find_type sprite_type, 'SDL::Sprite' sprite = new sprite_type .local pmc sprite_args sprite_args = new PerlHash sprite_args[ 'surface' ] = image sprite_args[ 'source_x' ] = 0 sprite_args[ 'source_y' ] = 0 sprite_args[ 'dest_x' ] = 270 sprite_args[ 'dest_y' ] = 212 sprite_args[ 'width' ] = 100 sprite_args[ 'height' ] = 56 sprite_args[ 'bgcolor' ] = black sprite.'_new'( sprite_args ) .local pmc parent_class .local pmc class_type getclass parent_class, 'SDL::EventHandler' subclass class_type, parent_class, 'MoveLogo::EventHandler' .local pmc event_handler .local int handler_type find_type handler_type, 'MoveLogo::EventHandler' event_handler = new handler_type .local pmc event .local int event_type find_type event_type, 'SDL::Event' event = new event_type event.'_new'() .local pmc handler_args handler_args = new .PerlHash handler_args[ 'screen' ] = main_screen handler_args[ 'sprite' ] = sprite event_handler.draw_screen( main_screen, sprite ) event.wait_event( event_handler, handler_args ) .end .namespace [ 'MoveLogo::EventHandler' ] .sub draw_screen method .param pmc screen .param pmc sprite .local pmc prev_rect .local pmc rect (prev_rect, rect) = sprite.draw_undraw( screen ) screen.'update_rects'( prev_rect, rect ) .end .sub key_down_down method .param pmc event_args .local pmc screen .local pmc sprite screen = event_args[ 'screen' ] sprite = event_args[ 'sprite' ] .local int y y = sprite.'y'() if y == 480 goto _draw inc y sprite.'y'( y ) _draw: self.'draw_screen'( screen, sprite ) .end .sub key_down_up method .param pmc event_args .local pmc screen .local pmc sprite screen = event_args[ 'screen' ] sprite = event_args[ 'sprite' ] .local int y y = sprite.'y'() if y == 0 goto _draw dec y sprite.'y'( y ) _draw: self.'draw_screen'( screen, sprite ) .end .sub key_down_left method .param pmc event_args .local pmc screen .local pmc sprite screen = event_args[ 'screen' ] sprite = event_args[ 'sprite' ] .local int x x = sprite.'x'() if x == 0 goto _draw dec x sprite.'x'( x ) _draw: self.'draw_screen'( screen, sprite ) .end .sub key_down_right method .param pmc event_args .local pmc screen .local pmc sprite screen = event_args[ 'screen' ] sprite = event_args[ 'sprite' ] .local int x x = sprite.'x'() if x == 640 goto _draw inc x sprite.'x'( x ) _draw: self.'draw_screen'( screen, sprite ) .end =head1 AUTHOR chromatic, Echromatic at wgz dot orgE. =head1 COPYRIGHT Copyright (c) 2004, The Perl Foundation. =cut --=-fofd76phuBRPpX0H0D9F--