Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | Related Pages | Examples

gradient.cpp

#include <fastgl/fastgl.h>
#include <fastgl/widgets.h>
#include <fastgl/fggradient.h>

static fgl::FGWindow *Example_for_FGUpDown_classPtr;
static fgl::FGPoint start(0,0);
static fgl::FGPoint end(400,300);
static fgl::FGRect rect(0,0,800,600);
static fgl::FGGradient* gradient;
static fgl::FGColor color0("black");
static fgl::FGColor color1(fgl::FGColor::blue);
static fgl::FGColor color2(fgl::FGColor::white);
static bool tristate = true;
int function = '1';

static void Function(int f)
{
    switch(f)
    {
                case '1':
                    gradient->SetFunction(FGGradient::Linear);
                    break;
                case '2':
                    gradient->SetFunction(FGGradient::LinearXY);
                    break;
                case '3':
                    gradient->SetFunction(FGGradient::Radial);
                    break;
                case '4':
                    gradient->SetFunction(FGGradient::Sqrt);
                    break;
                case '5':
                    gradient->SetFunction(FGGradient::Conic);
                    break;
                case '6':
                    gradient->SetFunction(FGGradient::Diamond);
                    break;
    }
}

static void Wrapping(int f)
{
    switch(f)
    {
                case F01:
                    gradient->SetMode(FGGradient::Wrap);
                    break;
                case F02:
                    gradient->SetMode(FGGradient::Repeat);
                    break;
                case F03:
                    gradient->SetMode(FGGradient::Reflect);
                    break;
    }
}

static void Example_for_FGUpDown_classProc(fgl::FGEvent *p)
{
    fgl::FGColorPicker* cp;

    switch(p->GetType())
    {
        case fgl::INITEVENT:
        case fgl::REPAINTEVENT:
            gradient->Draw(*p->wnd, start, end, &rect);
            p->wnd->fcircle(start.x, start.y, 8, CYELLOW);
            p->wnd->circle(start.x, start.y, 8, CBLUE);
            p->wnd->fcircle(end.x, end.y, 8, CYELLOW);
            p->wnd->circle(end.x, end.y, 8, CBLUE);
            p->wnd->printf(600,10," 1 - Linear gradient   ");
            p->wnd->printf(600,30," 2 - LinearXY gradient ");
            p->wnd->printf(600,50," 3 - Radial gradient   ");
            p->wnd->printf(600,70," 4 - Sqrt gradient     ");
            p->wnd->printf(600,90," 5 - Conic gradient    ");
            p->wnd->printf(600,110," 6 - Diamond gradient  ");
            p->wnd->printf(600,130," 0 - switch 2/3 colors ");
            p->wnd->printf(600,150," A - change color 0    ");
            p->wnd->printf(600,170," B - change color 1    ");
            p->wnd->printf(600,190," C - change color 2    ");
            p->wnd->printf(600,210," F1 - WRAP             ");
            p->wnd->printf(600,230," F2 - REPEAT           ");
            p->wnd->printf(600,250," F3 - REFLECT          ");

            p->wnd->printf(600,270," LEFT button start pt. ");
            p->wnd->printf(600,290," RIGHT button end pt.  ");
            p->wnd->WindowRepaint(0,0,800,600);
            break;
        case fgl::TERMINATEEVENT:
            fgl::FGApp::AppDone();
            break;
        case fgl::CLICKLEFTEVENT:
            start = fgl::FGPoint(p->GetX(), p->GetY());
            p->wnd->SendEvent(fgl::REPAINTEVENT);
            break;
        case fgl::CLICKRIGHTEVENT:
            end = fgl::FGPoint(p->GetX(), p->GetY());
            p->wnd->SendEvent(fgl::REPAINTEVENT);
            break;
        case fgl::KEYEVENT:
            switch(p->GetKey())
            {
                case '1':
                case '2':
                case '3':
                case '4':
                case '5':
                case '6':
                    function = p->GetKey();
                    Function(function);
                    break;

                case F01:
                case F02:
                case F03:
                    function = p->GetKey();
                    Wrapping(function);
                    break;

                case '0':
                    tristate = !tristate;
newgr:
                    delete gradient;
                    if (tristate)
                        gradient = new fgl::FGGradient(color0,color1,color2);
                    else
                        gradient = new fgl::FGGradient(color0, color2);
                    Function(function);
                    break;
                case 'a':
                case 'A':
                    cp = new fgl::FGColorPicker(&color0);
                    delete cp;
                    goto newgr;
                case 'b':
                case 'B':
                    cp = new fgl::FGColorPicker(&color1);
                    delete cp;
                    goto newgr;
                case 'c':
                case 'C':
                    cp = new fgl::FGColorPicker(&color2);
                    delete cp;
                    goto newgr;
            }
            p->wnd->SendEvent(fgl::REPAINTEVENT);
            break;
    }
}

int main(int argc, char **argv)
{
    fgl::FGApp MyApp(fgl::G800x600, argc, argv, fgl::CBLACK, fgl::APP_ENABLEALTX + fgl::APP_CFG);

    gradient = new fgl::FGGradient(color0,color1,color2);
    Function(function);
    gradient->SetMode(FGGradient::Repeat);

    Example_for_FGUpDown_classPtr = new fgl::FGWindow(&Example_for_FGUpDown_classPtr, 0, 0, 800, 600, "Example of color gradient", Example_for_FGUpDown_classProc,
         fgl::CWHITED, fgl::CBLACK, fgl::WCENTRED);

    MyApp.Run();
    if (Example_for_FGUpDown_classPtr) delete Example_for_FGUpDown_classPtr;
    return 0;
}



Generated on Wed Feb 9 11:31:32 2005 for OpenGUI by  doxygen 1.4.0