/*
 *          Iconify the Flist window using Leo Schwab's iconify() routine.
 *
 */


#include <intuition/intuition.h>
#include "icon/iconify.h"

extern struct Screen *scrptr;

UWORD               flicon_data[] = {

     /* BitPlane #0 */

     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x7FFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC000, 
     0x7FFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC000, 
     0x7FFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC000, 
     0x7C00, 0x0000, 0x0000, 0x000F, 0xC000, 
     0x7C00, 0x0000, 0x0000, 0x000F, 0xC000, 
     0x7C1F, 0xE783, 0x8001, 0x800F, 0xC000, 
     0x7C0E, 0xE380, 0x0003, 0x800F, 0xC000, 
     0x7C0E, 0x0387, 0x87E7, 0xE00F, 0xC000, 
     0x7C0F, 0x8383, 0x8E03, 0x800F, 0xC000, 
     0x7C0E, 0x0383, 0x87C3, 0x800F, 0xC000, 
     0x7C0E, 0x0383, 0x80E3, 0xE00F, 0xC000, 
     0x7C1F, 0x07C7, 0xCFC1, 0xC00F, 0xC000, 
     0x7C00, 0x0000, 0x0000, 0x000F, 0xC000, 
     0x7C00, 0x0000, 0x0000, 0x000F, 0xC000, 
     0x7C00, 0x0000, 0x0000, 0x000F, 0xC000, 
     0x7C00, 0x0000, 0x1E00, 0x000F, 0xC000, 
     0x7C00, 0x0000, 0x0E00, 0x000F, 0xC000, 
     0x7C00, 0x07EE, 0x7FC0, 0x000F, 0xC000, 
     0x7C00, 0x0E0F, 0xFFE0, 0x000F, 0xC000, 
     0x7C00, 0x07CF, 0xFEE0, 0x000F, 0xC000, 
     0x7C00, 0x00E7, 0xEEE0, 0x000F, 0xC000, 
     0x7C00, 0x0FC7, 0xE7C0, 0x000F, 0xC000, 
     0x7C00, 0x0000, 0x0000, 0x000F, 0xC000, 
     0x7C00, 0x0000, 0x0000, 0x000F, 0xC000, 
     0x7C00, 0x0000, 0x0000, 0x000F, 0xC000, 
     0x7C00, 0x0000, 0x0000, 0x000F, 0xC000, 
     0x7C00, 0x0000, 0x0000, 0x000F, 0xC000, 
     0x7C00, 0x0000, 0x0000, 0x000F, 0xC000, 
     0x7C00, 0x0000, 0x0000, 0x000F, 0xC000, 
     0x7C00, 0x0000, 0x0000, 0x000F, 0xC000, 
     0x7FFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC000, 
     0x7FFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC000, 
     0x7FFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 

     /* BitPlane #1 */

     0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 
     0x7FFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC000, 
     0x4000, 0x0000, 0x0000, 0x0000, 0x4000, 
     0x4000, 0x0000, 0x0000, 0x0000, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xE1FF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xF1FF, 0xFFF0, 0x4000, 
     0x43FF, 0xF811, 0x803F, 0xFFF0, 0x4000, 
     0x43FF, 0xF1F0, 0x001F, 0xFFF0, 0x4000, 
     0x43FF, 0xF830, 0x011F, 0xFFF0, 0x4000, 
     0x43FF, 0xFF18, 0x111F, 0xFFF0, 0x4000, 
     0x43FF, 0xF038, 0x183F, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x43FF, 0xFFFF, 0xFFFF, 0xFFF0, 0x4000, 
     0x4000, 0x0000, 0x0000, 0x0000, 0x4000, 
     0x4000, 0x0000, 0x0000, 0x0000, 0x4000, 
     0x7FFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xC000, 
     0x0000, 0x0000, 0x0000, 0x0000, 0x0000
     };

UWORD   cursor_img[] = {
        0xff00,0xff00,
        0xff00,0xff00,
        0xff00,0xff00,
        0xff00,0xff00,
        0xff00
        };

struct Image               cursor_image = {
     0, 0, 8, 9, 1, cursor_img, 0x0, 0x4, NULL
     };

UWORD   cursor_empty[] = {
        0x0000,0x0000,
        0x0000,0x0000,
        0x0000,0x0000,
        0x0000,0x0000,
        0x0000
        };

struct Image               cursor_blank = {
     0, 0, 8, 9, 1, cursor_empty, 0x0, 0x0, NULL
     };

struct Image               flicon_image = {
     0, 0, 67, 35, 2, NULL, 0x3, 0x0, NULL
     };

extern struct Process *myproc;
extern struct Window *winptr;

int tticon()
{
    static UWORD iconX = 0, iconY = 0;

    if(scrptr->FirstWindow->NextWindow != NULL) {
        auto_req("Kill all other Applications first");
        return FALSE;
    }

    /* hide the window, display the icon, then redisplay the window */

    myproc->pr_WindowPtr = (APTR)-1; 
    tthide(FALSE);     /* not resizing */

    flicon_image.ImageData = &flicon_data[0];
    iconify(&iconX, &iconY, flicon_image.Width, flicon_image.Height, NULL,
         &flicon_image, (int) ICON_IMAGE); /* iconify     */

    ttshow(FALSE);     /* no resize */
    myproc->pr_WindowPtr = winptr; 
    return TRUE;
}
