Screen Saver: An Example Screen Saver

Screen Saver Table of Contents | Screen Saver Index

# An Example Screen Saver

Here>s sample code that implements a screen saver that blanks the screen. This is pretty boring, so you>ll probably want to change the `Draw()` function to do something cute.

       /* Minimal screen saver example. */

       #include <add-ons/screen_saver/ScreenSaver.h>
       #include <interface/StringView.h>
       #include <BeBuild.h>

       extern "C" {
       _EXPORT
       BScreenSaver *instantiate_screen_saver( BMessage *msg, image_id id );
       }

       class MinimalSaver : public BScreenSaver
       {
       public:
           MinimalSaver( BMessage *archive, image_id image );
           virtual ~MinimalSaver( void );

           virtual void StartConfig( BView *view );
           virtual status_t StartSaver( BView *view, bool preview );
           virtual void Draw( BView *view, int32 frame );
       };

       BScreenSaver *instantiate_screen_saver( BMessage *msg, image_id id )
       {
           return new MinimalSaver( msg, id );
       }

       MinimalSaver::MinimalSaver( BMessage *archive, image_id image )
           : BScreenSaver( archive, image )
       {
           /* Nothing else to do here... */
       }

       MinimalSaver::~MinimalSaver( void )
       {
           /* Nothing else to do here... */
       }

       void MinimalSaver::StartConfig( BView *view )
       {
           view->AddChild( new BStringView( BRect( 10, 10, 200, 35 ),
                                            B_EMPTY_STRING,
                                            "Minimal Saver" ) );
       }

       status_t MinimalSaver::StartSaver( BView *view, bool preview )
       {
           /* We>re so minimal, we don>t have a preview. */
           if( preview ) return B_ERROR;

           return B_OK;
       }

       void MinimalSaver::Draw( BView *view, int32 frame )
       {
           if( frame == 0 ) {
               /* Fill the screen with black on the first frame: */
               view->SetLowColor( 0, 0, 0 );
               view->FillRect( view->Bounds(), B_SOLID_LOW );
           }
       }

Screen Saver Table of Contents | Screen Saver Index

The Be Book,
...in lovely HTML...
for BeOS Release 5.

Copyright © 2000 Be, Inc. All rights reserved..