aalib1.bac

'-----------------------------------------------------------------------------------------------------------------------

CONST file$ = "bacon.png"                                  : ' File to convert to ASCII

PROTO stbi_image_free aa_recommendhi aa_putpixel aa_fastrender aa_flush aa_close

'-----------------------------------------------------------------------------------------------------------------------

PRAGMA INCLUDE canvas/stb-master/stb_image.h               : ' Include the stb_image header file
PRAGMA OPTIONS -DSTB_IMAGE_IMPLEMENTATION                  : ' Enable graphical functions

DECLARE Width, Height, n TYPE int
DECLARE data TYPE unsigned char*

data = stbi_load(file$, &Width, &Height, &n, 1)            : ' Load the actual image in greyscale

'-----------------------------------------------------------------------------------------------------------------------

PRAGMA INCLUDE <aalib.h>                                   : ' Include the Ascii Art library header file
PRAGMA LDFLAGS -laa                                        : ' Link with libaa

DECLARE context TYPE aa_context*                           : ' This is the AALib memory pointer

aa_defparams.font = &aa_fontcourier                        : ' Font we're using for our image 
aa_defparams.supported = AA_NORMAL_MASK                    : ' Supported rendering types AA_NORMAL_MASK,AA_DIM_MASK,AA_BOLD_MASK,AA_BOLDFONT_MASK,AA_REVERSE_MASK
aa_defparams.width = Width/2                               : ' Width and height of resulting ASCII Art picture.
aa_defparams.height = Height/2                             : '         -> The aalib output sizes are 1/2 image input (2x2 pixels -> 1 char)

aa_recommendhi(&aa_displayrecommended, "stdout")           : ' Use 'stdout' to display our ASCII art
context = aa_autoinit(&aa_defparams)                       : ' Initialize Ascii Art library

FOR y = 0 TO Height-1
    FOR x = 0 TO Width-1
        aa_putpixel(context, x, y, 255-PEEK(data+y*Width+x))   : ' Put the pixels from STB loaded image into AA memory - inverted
    NEXT
NEXT

aa_fastrender(context, 0, 0, Width/2, Height/2)            : ' Now let AAlib render the picture
              
aa_flush(context)                                          : ' Flush the result to stdout
aa_close(context)                                          : ' Free memory from AAlib

'-----------------------------------------------------------------------------------------------------------------------

stbi_image_free(data)                                      : ' Free memory from STB

'-----------------------------------------------------------------------------------------------------------------------
/*
                                                                                                                                
                              .1Q@@@@@@@@@@@@@@@@@@@@@@@QL___,                                                                  
                             _Q@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QQQ_                                                                
                           .gQ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@QQ_,                                                             
                          gQ@@@$XggggggggggggggggggggggggQQQQ@@@@@Qi                                                            
                        _g@@@@QgggggggggggggggggggggggggggggggQ@@@@QL_                                                          
                       .Q@@@$XgggggggggggzzzzzzzzgggggggggggggggQ@@@@Q\                                                         
                      .Q@@@Qggggggzzzau2j"""""""""j22uazzgggggggggQ@@@Qg,                                                       
                     .Q@@@Xgggggaj""--`             `---"jjuazgggggg@@@@Qi                                                      
                    {Q@@@Xgggzaj-`                          -"jagggggQ@@@QL,                                                    
                   .Q@@@xgggar-`                               -uggggggQ@@@z,                                                   
                   1Q@$Xggz2"`      .:jj22j222\:..              -ugggggzg@@@L                                                   
                   Q@@Qggzr-       :jzgggggggggzz2\:::::.        :agggggzg@@Q                                                   
                  [Q@@Qga"`      :jzgggggggggggggggzzzzza\:.,     {zggggggZ@@L                                                  
                  g@@Qggr`      :zggggggggggggggggggggggggzz\:,    jzggggggQ@Q}                                                 
                  @@@xgz;      :zggggggggggggggggggggggggggggz\,   'jzgggggQ@@L                                                 
                  @@$ggz;     :zggggggza22jjjuazggggggggggggggz\,   -jzgggggQ@Q\                                                
                  @@$ggz;    .1gggggz2"-      --"jazzzzgggggggga;    -uggggggQ@Q,                                               
                  @@$ggz;    :zgggga"`            --""""jaaggggga,    :agggggQ@@g                                               
                  @@$ggz;    {gggga"`                    -"uggggz\,    {zgggggQ@Q_                                              
                  @@$ggz;    jggggr`                       :zggggz\:   -uggggggQ@Qa                                             
                  @@$ggz;    jggggr                         jgggggga:,  {zggggggQ@Q                                             
                  @@$gga;    jggggr      :jj2\j:::.,        :aggggggz\,  jzggggggQQi                                            
                  @@$ggz;    jggggr     jzgggggggzz222\:.,   :uzgggggz\, 'jggggggZ@Q]                                           
                  @@$ggg}    jggggr    :zgggggggggggggggz\,   -jzgggggz\, :aggggggQ@]                                           
                  @@$gggr    jggggr   .2ggggggQQQQQggggggz\,    "agggggz;  jggggggg@p,                                          
                 [@@$gggr    jggggr   :zgggggQ@@@@@QQQggggz\;    -uggggg2, :zggggggQ@]                                          
                 [@@Qgggr    jggggr   jgggQQ@@@@@@@@@@Qggggz2;    -ugggga;  jggggggQ@L                                          
                 [@@Qgggr    jggggr   jgggQ@@@$X$XQ@@@@Qggggz\,    :zgggg}  :zgggggQ@p}                                         
                 [@@Qgggr    jggggr   jggQ@@$Xa' :o2z@@@Qgggga;    .uggggr, 'ugggggQ@@]                                         
                 [@@Qgggr    jggggr   jggQ@@X:___ :zQ@@@Qggggz;     jgggga;  jggggzQ@@]                                         
                 [@@Qgggr    jggggr   jgg@@$r1QQQQQQ@@@$xgggga;     :zgggz;  :zgggzg@@]                                         
                 [@@Qgggr   .zggggr   jgQ@@Q}g@@@@@@@@$Xggggzr`     :zgggz;  :zgggzQ@@]                                         
                 [@@Qgggr   :zgggz;   jgQ@@@:g@@@@@@$Qgggggga'      :zgggz;  :zgggg@@$]                                         
                 [@@Qgggr   :zgggz;   jgQ@@@zQ@@@QQXgggggggz"       :zgggz;  .zgggg@@@                                          
                 [@@Qgggr   :zgggz;   jgQ@@@Q@@Qggggggggggar`       :zgggz;   jgggQ@@Q                                          
                 [@@Qgggr   {gggga;   jgQ@@@@@@Qggggza2jjj:`        :zgggz;   :zggQ@@y                                          
                 [@@Qgggr   jgggga`   jgQ@@@@@@pa2j"--`             :zgggz;   :zggQ@@]                                          
                 [@@Qgggr   jggggr    jgQ@@$Q@@n-`                 .{zgggg;   :zggQ@@]                                          
                 [@@Qgggr  .uggggr    jgQ@@pQ@$}          .::\j22j22zggggz;   :zggQ@@]                                          
                 [@@Qgggr  :zgggg;    1gQ@@@@@p;.::::::::jzzggggggggggggga'   :zggQ@@]                                          
                 [@@Qgggr  :zgggz;   :zgQ@@@@@$zzzzzzzzzzggggggggggggggga"    :zggQ@@]                                          
                 [@@Qgggr  :zgggz;   :zgQ@@@@@$ggggggggggggggggggggggggz"`    {gggQ@@]                                          
                 [@@Qgggr  :zgggz;   :zgQ@@@@@$ggggggggggggggggggggggz2"`    .2gggQ@@]                                          
                 [@@Qgggr  :zgggz;   :zgQ@@@@@$ggggggggggggzaa222j22j"`     .jzgggQ@@]                                          
                 [@@Qgggr  :zgggz;   :zgQ@@@@@$ggzzzzzzzzza"-``            .jzggggQ@$]                                          
                 [@@Qgggr  :zgggz;   {ggQ@@@@@$aj""""""""-'               :zggggggQ@$]                                          
                 -@@$gggr  :zgggz;   jggQ@@Q@@p;                       .:jzggggggQQ@p}                                          
                  @@@gggr  :zgggz;   jggQ@@Q@@p,                   ..::2zgggggQQ@@@@y                                           
                  Q@@gggr  :zgggz;   jggQ@@Q@@p,               .:\j2zzggggggQQ@@@@@Q!                                           
                  4@@Qggr  :zgggz;   jggQ@@@@@p, .::::\jj2\2222zzggggggggggQ@@@@Qg=                                             
                  [@@Qggr  :zgggz;   jggQ@@@@@p\jzzzzgggggggggggggggggggQQ@@@@@x`                                               
                  (@@$ggr  :zgggz;  .1ggQ@@@@@@QQQggQQQQQQQQQQQQQQQgggQQ@@@@$F!                                                 
                   @@$ggr  :zgggz;  :zggQ@@@@@@@@@@@@@@@@@@@@@@@@@@@@Q@@@@@A^                                                   
                   @@$ggr  :zgggz;  :gggQ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Q="                                                    
                   @@$ggr  :zgggg}  jgggQ@@@@@@@@QQ@@@@@@@@@@@@@@@@@@@@@@@Q_                                                    
                   @@$ggr  .ugggg2, jgggQ@@@@@@@gggggggggggggggggggZQ@@@@@@Q@Q]                                                 
                   @@$ggr   jgggga; jgggQ@@@@@@QgggggggggggggggggggggggZQ@@@@@QL                                                
                   @@$ggr   :zgggz; jgggQ@@@@@$aazggzzzgzzzgzzgggggggggggZQ@@@@@g,                                              
                   @@$ggr   'zgggg\ jgggQ@@@@@p;-"jj"-"""""""""""""""uaggggggQ@@@Q_                                             
                   @@$ggr    jggggr'jgggQ@@@@@p,                      "uzgggggQ@@@Qi                                            
                   @@$ggr,   jggggr'jgggQ@@Q@@p,                       -jzgggggg@@@Q\                                           
                   @@$gga;   jggggr'jgggQ@@$@@p;::::::::::::..          -jzggggggQ@@Q,                                          
                   @@$ggz;   jggggr {gggQ@@Q@@$zzzzzzzzzzzzzz222222\:,    jaggggggQ@@Q,                                         
                   @@$ggz;   jggggr :zggQ@@Q@@$gggggggggggggggggggggz\,    jzggggggQ@@g                                         
                   @@$ggz;   jggggr :zggg@@@@@$ggggggggggggggggggggggz\:    jzggggggQ@@L                                        
                   @@$ggz;   jggggr  jggg@@$Q@@Qggggggggggggggggggggggga;    jzgggggQ@@Q]                                       
                   @@$ggz;   jggggr  jgggQ@@Q@@pzzzzzzzzzzzzgggggggggggg2,    jzgggggQ@@Q                                       
                   @@$ggz;   jggggr  {gggQ@@QQ@$r"-""-""-""""jj22jugggggz\,    jzggggg@@@i                                      
                   @@$ggz;   jggggr  :zggQ@@QQ@@r                 -uzggggz\;   'jzggggQ@@Q}                                     
                  [@@$ggz;   jggggr  :zggQ@@QQ@@z:::::::::.,       -jzggggg2:   :ugggggQ@@Q                                     
                  [@@Qggz;   jggggr  :zggg@@@Q@@Qzzzzzzzzzz222j:.   -jzggggga;   :agggggQ@@L                                    
                  [@@Qggz;   jggggr  .uggg@@@g@@@ggggggggggggggza;   -jzggggga;   {zggggQ@@Q]                                   
                  [@@Qggz;   jggggr,  jggg@@$x@@@Qggggggggggggggga;   -jzggggga;  'jgggggQ@@Q                                   
                  [@@Qggz;   jgggga,  :zggQ@@x@@@@Qggggggggggggggga:,  -jzggggga;  :zggggQ@@@i                                  
                  [@@Qggz;   {gggga;  'zggQ@@Qg@@@@@QQQQQQQQggggggga;   -"agggggr,  jggggg@@@Q,                                 
                  [@@Qggz;   :zgggz;   jgggQ@@x9Z@@@@@@@@@@@@Qgggggga,    {zgggga'  :zgggg@@@@]                                 
                  [@@Qggz;   :zgggz;   jgggQ@@Q}-zQ@@@@@@@@@@@ggggggz;    :zgggga;   jggggQ@@@Q                                 
                  [@@Qggz;   :zgggz;   :zggg@@@] (^==OZ@@QQ@@@Qgggggg\    :zgggga;   :zgggQ@@@Q                                 
                  [@@Qggz;   :zgggz;   :zggg@@@]           CQ@@gagggga,   :zggggz}   :ugggQ@@@@                                 
                  [@@Qggz;   :zgggz;   :zggg@@@]            Q@@Qzgggga;   :zgggggr    jzgggQ@@@                                 
                  [@@Qggz;   :zgggz;   :zggg@@@@Qz\_.     .zQ@@@Qggggz;   :zgggggr,   :zgggg@@@,                                
                  [@@Qggz;   :zgggz;   :zgggQ@@@@Q@QQQQ@QQQQ@@@@$ggggz;   jgggggga'    jggggQ@@g                                
                  [@@Qggz;   :zgggz;   :zgggQ@@@@@@@@@@@@@@@@@@@Qgggga;   jggggggz;    jggggg@@p,                               
                  Q@@xggz;   :zgggz;   :zggggQQQQ@@@@@@@@@@@$QXgggggzr`  :zggggggg\    {gggggQ@Q]                               
                  Q@$gggz;   :zgggz;   :zggggggggggZQQQQQQQQgggggggga'   {ggggggggr    :zggggQ@@]                               
                  @@$gggz;   :zgggz;    jgggggggggggggggggggggggggga:    jggggggggr    .uggggQ@@]                               
                  @@$gggz;   :zgggz;    -uzgggggggggggggggggggggga2-    .zggggggggr     1ggggQ@@]                               
                  @@$gggg;   :zgggz;     -"jj22222j22j222222222j"-`     jzgzggggggr    :zggggQ@@]                               
                  @@$gggg;   :zgggz;                                   :zgggggggggr    :zggggQ@@]                               
                  @@$gggg;   :zgggz;                                 .:zgggggggggg;    jgggggQ@@]                               
                  @@$gggz;   :zgggz\:.,                          .::j2zggggggggggz;   :zgggggQ@@]                               
                  @@$ggga;   :zggggzzz222j\::..               .:jzzzgggggggggggggr`   {ggggggQ@@]                               
                  @@$gggr`   jgggggggggggggzzz2j::::::::::::jjzzggggggggggggggggz}   .zggggggQ@@]                               
                  @@$gggr    jgggggggggggggggggggzzzzzzzzzzzgggggggggggggggggggga'   :zggggggQ@@]                               
                  @@$gggr    :zgggggggggggggggggggggggggggggggggggggggggggggggza;    jgggggggQ@$]                               
                  @@$gggr     jaggzzggggggggggggggggggggggggggggggzaau2j22j22j"-    {zggggggg@@Q`                               
                  @@$gggr      -"""""jj22uazgggggggggggggggggggga2"--`            .jzgggggggQ@@x                                
                  @@$gggr                --"""juazzzzzzzzzzza2j"-`               .jzgggggggQ@@@!                                
                  @@$gggr                      `---""-""-""--`                   jzgggggggQ@@@x                                 
                  @@$gggr                                                ..:::::jzgggggggQ@@@X`                                 
                  @@$gggr                                           .:\j2zzzzzzzggggggggQQ@@D`                                  
                  @@$gggr,                            ..:::::::::\j2zzggggggggggggggggggQ@@p!                                   
                  @@@ggga2\22\22j22j2\22\22j22j2\22\222zzzzzzzzzzgggggggggggggggggggggQQ@@$?                                    
                  Q@@QgggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggQ@@@$]                                     
                  C@@QggggggggggggggggggggggggggggggggggggggggggggggggggggggggggQQQQQ@@@@x`                                     
                   Q@@QQQQQQQQQQgggggggggggggggggggggggggggggggggggggggzzzgggzgQ@@@@@@@X=-                                      
                   C@@@@@@@@@@@@@QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQ@@@@@@@Qv                                         
                   [Q@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Qy^                                             
                   -===========4Q@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Qy                                                
*/

Generated by GNU Enscript 1.6.5.90.