
/*
\\    Brush.c - Zeichnen mit dem Teil eines RastPorts
*/
#include "TOOL.h"
#define RP_C (cli->RPort)
#define RP_W (win->RPort)
#define XPos (win->MouseX)
#define YPos (win->MouseY)

struct Window *win,*cli;

VOID error(meldung)
    STRPTR meldung;
{
    if(meldung)  printf("Kann %s nicht öffnen!",meldung);
    if(win)      CloseWindow(win);
    CloseLib();
    exit(0);
}

VOID main()
{
    ULONG idcmp=CLOSEWINDOW|MOUSEMOVE|MOUSEBUTTONS,
          flags=REPORTMOUSE|RMBTRAP|WINDOWCLOSE|ACTIVATE,
          class=0;
    USHORT code;
    UBYTE minterm;

    if(OpenLib()) error("Lib's");
    cli=ACTIVE_WINDOW;
    if(!(win=GetWindow(NULL,0,40,640,216,idcmp,flags,"Brush",NULL)))
                  error("Window");
    while(class!=CLOSEWINDOW){          /* Programmende über CloseGadget */
        Wait(1<<win->UserPort->mp_SigBit);
        class=GetMessage(win,&code,0,0);
        if((class==MOUSEBUTTONS)&&((code==SELECTDOWN)||(code==MENUDOWN))){
            if(code==SELECTDOWN)    minterm=0xC0; /* Original übernehmen */
            else                    minterm=0x30;/* Original invertieren */
            while((code!=SELECTUP)&&(code!=MENUUP)){/* Knopf losgelassen */
                Wait(1<<win->UserPort->mp_SigBit);
                class=GetMessage(win,&code,0,0);
                if(class==MOUSEMOVE){
                    if(YPos>10)  /* Titelleiste mit CloseGadget schützen */
                        ClipBlit(RP_C,0,0,RP_W,XPos,YPos,80,40,minterm);
                    while((class=GetMessage(win,&code,0,0))==MOUSEMOVE);
                }
            }
        }
    }
    error(0);
}

