logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

asview - demonstrates loading and displaying of images libAfterImage/tutorials/ASView

Description

       The simplest way to display image in the  window  is  to  convert  it  into  Pixmap,  then  set  Window's
       background to this Pixmap, and, at last, clear the window, so that background shows up.

Example

        p = asimage2pixmap( asv, DefaultRootWindow(dpy), im, NULL, False );
        destroy_asimage( &im );

Name

asview - demonstrates loading and displaying of images libAfterImage/tutorials/ASView

Nameasview

Notes

       We  no  longer  need ASImage after we transferred it onto the Pixmap, so we better destroy it to conserve
       resources.

See Also

       asimage2pixmap(), destroy_asimage(), set_window_background_and_free()

3rd Berkeley Distribution                      AfterStep v.2.2.12                                     asview(3x)

Source

           #define DO_CLOCKING

           #include "../afterbase.h" #include "../afterimage.h" #include "common.h"

           #ifdef DO_CLOCKING #if TIME_WITH_SYS_TIME # include  <sys/time.h>  #  include  <time.h>  #else  #  if
           HAVE_SYS_TIME_H #  include <sys/time.h> # else #  include <time.h> # endif #endif #endif

           void usage() {
               printf( "Usage: asview [-h]|[image]\n");
               printf( "Where: image - filename of the image to display.\n"); }

           int main(int argc, char* argv[]) {
               char *image_file = "rose512.jpg" ;
               ASImage *im ;
               ASVisual *asv ;
               int screen = 0, depth = 24;
               Display *dpy = NULL;

               /* see ASView.1 : */
               set_application_name( argv[0] ); #if (HAVE_AFTERBASE_FLAG==1)
               set_output_threshold(OUTPUT_LEVEL_DEBUG); #ifdef DEBUG_ALLOCS
               fprintf( stderr, "have DEBUG_ALLOCS\n"); #endif #ifdef AFTERBASE_DEBUG_ALLOCS
               fprintf( stderr, "have AFTERBASE_DEBUG_ALLOCS\n"); #endif #endif

               if( argc > 1 )
               {
                   if( strcmp( argv[1], "-h" ) == 0 )
                   {
                       usage();
                       return 0;
                   }
                   image_file = argv[1] ;
               }else
               {
                   show_warning(   "Image filename was not specified. "
                                   "Using default: \"%s\"", image_file );
                   usage();
               } #ifndef X_DISPLAY_MISSING
               dpy = XOpenDisplay(NULL);
               XSynchronize (dpy, True);
               _XA_WM_DELETE_WINDOW = XInternAtom( dpy, "WM_DELETE_WINDOW",
                                                   False);
               screen = DefaultScreen(dpy);
               depth = DefaultDepth( dpy, screen ); #endif
               /* see ASView.3 : */
               asv = create_asvisual( dpy, screen, depth, NULL );
               /* asv = create_asvisual_for_id( dpy, screen, depth, 0x28, None, NULL ); */

               /* see ASView.2 : */
               im = file2ASImage( image_file, 0xFFFFFFFF, SCREEN_GAMMA, 0, getenv("IMAGE_PATH"), NULL );

               /* The following could be used to dump JPEG version of the image into
                * stdout : */
               /*  ASImage2file( im, NULL, NULL, ASIT_Jpeg, NULL );
                   ASImage2file( im, NULL, "asview.png", ASIT_Png, NULL );
                   ASImage2file( im, NULL, "asview.gif", ASIT_Gif, NULL );
               */

               if( im != NULL )
               { #ifndef X_DISPLAY_MISSING
                   Window w ; #if 0
                   /* test example for get_asimage_channel_rects() : */
                   XRectangle *rects ; unsigned int rects_count =0; int i ;
                   rects = get_asimage_channel_rects( im, IC_ALPHA, 10,
                                                       &rects_count );
                   fprintf( stderr, " %d rectangles generated : \n", rects_count );
                   for( i = 0 ; i < rects_count ; ++i )
                       fprintf( stderr, "\trect[%d]=%dx%d%+d%+d;\n",
                                i, rects[i].width, rects[i].height,
                                rects[i].x, rects[i].y ); #endif

           #if 0
                   /* test example for fill_asimage : */
                   fill_asimage(asv, im, 0, 0, 50, 50, 0xFFFF0000);
                   fill_asimage(asv, im, 50, 50, 100, 50, 0xFFFF0000);
                   fill_asimage(asv, im, 0, 100, 200, 50, 0xFFFF0000);
                   fill_asimage(asv, im, 150, 0, 50, 50, 0xFFFF0000); #endif #if 0
                   /* test example for conversion to argb32 :*/
                   {
                       ASImage *tmp = tile_asimage( asv, im, 0, 0, im->width, im->height, TINT_NONE, ASA_ARGB32,
                                                     0, ASIMAGE_QUALITY_DEFAULT );
                       destroy_asimage( &im );
                       set_flags( tmp->flags, ASIM_DATA_NOT_USEFUL|ASIM_XIMAGE_NOT_USEFUL );
                       im = tmp ;
                   } #endif
                   /* see ASView.4 : */
                   w = create_top_level_window( asv, DefaultRootWindow(dpy), 32, 32,
                                                im->width, im->height, 1, 0, NULL,
                                                "ASView", image_file );
                   if( w != None )
                   {
                       Pixmap p ;

                       XMapRaised   (dpy, w);
                       XSync(dpy,False);
                       /* see ASView.5 : */
                       p = create_visual_pixmap( asv, DefaultRootWindow(dpy), im->width, im->height, 0 );

                       {
                           START_TIME(started);
                           /* for( int i = 0 ; i < 100 ; ++i )  To test performance! */
                           asimage2drawable( asv, p, im, NULL, 0, 0, 0, 0, im->width, im->height, False);
                           SHOW_TIME("", started);
                       }
                       /* print_storage(NULL); */
                       destroy_asimage( &im );
                       /* see common.c:set_window_background_and_free(): */
                       p = set_window_background_and_free( w, p );
                   }
                   /* see common.c: wait_closedown() : */
                   wait_closedown(w);
                   dpy = NULL;

                   /* no longer need this - lets clean it up :*/
                   destroy_asvisual( asv, False );
                   asv = NULL ;

           #else
                   /* writing result into the file */
                   ASImage2file( im, NULL, "asview.png", ASIT_Png, NULL ); #endif
               }

           #ifdef DEBUG_ALLOCS
               /* different cleanups of static memory pools : */
               flush_ashash_memory_pool();
               asxml_var_cleanup();
               custom_color_cleanup();
               build_xpm_colormap( NULL );
               flush_default_asstorage();
               /* requires libAfterBase */
               print_unfreed_mem(); #endif

               return 0 ; }

       libAfterImage/tutorials/ASView.1 [1.1]

Synopsis

       Step 5. Displaying the image.

See Also