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

regress.cpp

//
//  source generated by 'FastGL sourcer'
//

#include <fastgl/fastgl.h>

enum SHAPE {
    _RECT, _FILLRECT, _CIRCLE, _FILLCIRCLE, _ELLIPSE, _FILLELLIPSE, _LINE, _SPLINE, _POINT, _POLY, _FILLPOLY, _ARC,
    _RECTW, _FILLRECTW, _CIRCLEW, _FILLCIRCLEW, _ELLIPSEW, _FILLELLIPSEW, _LINEW, _SPLINEW, _POINTW, _POLYW, _FILLPOLYW, _ARCW
};

struct PARAM
{
    int ppop;
    fgl::FGPixel ink, paper;
    FGPoint points[8];
    fgl::FGWindow *w;
    fgl::FGRect rect;
    int vertex[7][2];
};

void shape(SHAPE sh, PARAM& param)
{
    switch(sh)
    {
        case _RECT:
            fgl::draw_box(param.rect.x, param.rect.y, param.rect.w, param.rect.h, param.ink, param.ppop);
            break;
        case _FILLRECT:
            fgl::fill_box(param.rect.x, param.rect.y, param.rect.w, param.rect.h, param.ink, param.ppop);
            break;
        case _CIRCLE:
            fgl::draw_circle(param.rect.x, param.rect.y, param.rect.w/2, param.ink, param.ppop);
            break;
        case _FILLCIRCLE:
            fgl::fill_circle(param.rect.x, param.rect.y, param.rect.w/2, param.ink, param.ppop);
            break;
        case _ELLIPSE:
            fgl::draw_ellipse(param.rect.x, param.rect.y, param.rect.w/2, param.rect.h/4, param.ink, param.ppop);
            break;
        case _FILLELLIPSE:
            fgl::fill_ellipse(param.rect.x, param.rect.y, param.rect.w/2, param.rect.h/4, param.ink, param.ppop);
            break;
        case _LINE:
            fgl::draw_line(param.rect.x, param.rect.y, param.rect.x+100, param.rect.y+100, param.ink, param.ppop);
            break;
        case _SPLINE:
            fgl::draw_spline(param.points, param.ink, param.ppop);
            break;
        case _POINT:
            fgl::draw_point(param.rect.x, param.rect.y, param.ink, param.ppop);
            break;
        case _POLY:
            fgl::draw_convex(7, param.vertex, param.ink, param.ppop);
            break;
        case _FILLPOLY:
            fgl::fill_convex(7, param.vertex, param.ink, param.ppop);
            break;
        case _ARC:
            fgl::draw_arc(param.rect.x, param.rect.y, 0, 1, 50, param.ink, param.ppop);
            break;


        case _RECTW:
            param.w->WindowRect(param.rect.x, param.rect.y, param.rect.w, param.rect.h, param.ink);
            break;
        case _FILLRECTW:
            param.w->WindowBox(param.rect.x, param.rect.y, param.rect.w, param.rect.h, param.ink);
            break;
        case _CIRCLEW:
            param.w->WindowDrawCircle(param.rect.x, param.rect.y, param.rect.w/2, param.ink);
            break;
        case _FILLCIRCLEW:
            param.w->WindowFillCircle(param.rect.x, param.rect.y, param.rect.w/2, param.ink);
            break;
        case _LINEW:
            param.w->WindowLine(param.rect.x, param.rect.y, param.rect.x+30, param.rect.y+30, param.ink);
            break;
    }
}

void primitiv(PARAM p)
{
    shape(_FILLRECT, p);
    p.ink = fgl::CRED;
    shape(_RECT, p);

    p.rect.x += 170;
    p.rect.y += 50;
    p.ink = fgl::CWHITE;
    shape(_FILLCIRCLE, p);
    p.ink = fgl::CRED;
    shape(_CIRCLE, p);

    p.rect.x += 120;
    p.ink = fgl::CWHITE;
    shape(_FILLELLIPSE, p);
    p.ink = fgl::CRED;
    shape(_ELLIPSE, p);

    p.rect.x += 100;
    p.rect.y -= 50;
    p.ink = fgl::CWHITE;
    shape(_LINE, p);

    p.rect.x += 100;
    p.ink = fgl::CWHITE;
    p.points[0] = FGPoint(p.rect.x, p.rect.y);
    p.points[1] = FGPoint(p.rect.x+65, p.rect.y+20);
    p.points[2] = FGPoint(p.rect.x+25, p.rect.y+40);
    p.points[3] = FGPoint(p.rect.x+87, p.rect.y+100);
    shape(_SPLINE, p);

    p.rect.x += 100;
    p.ink = fgl::CWHITE;
    shape(_POINT, p);

    int mz[7][2] = {{62,186},{135,150},{221,197},{377,125},{231,25},{150,85},{10,18}};
    memcpy(p.vertex, mz, 7*2*4);
    p.ink = fgl::CWHITE;
    shape(_FILLPOLY, p);
    p.ink = fgl::CRED;
    shape(_POLY, p);
    p.ink = fgl::CWHITE;
    shape(_ARC, p);
}

void window_test(PARAM p)
{
    p.w->set_ppop(fgl::_GXOR);
    shape(_FILLRECTW, p);
    p.ink = fgl::CRED;
    shape(_RECTW, p);

    p.rect.x += 40;
    p.ink = fgl::CWHITE;
    shape(_FILLCIRCLEW, p);
    p.ink = fgl::CRED;
    shape(_CIRCLEW, p);

    p.rect.x += 30;
    p.rect.y -= 20;
    p.ink = fgl::CWHITE;
    shape(_LINEW, p);

}

int main(int argc, char **argv)
{
    fgl::FGApp MyApp(fgl::G800x600, argc, argv, fgl::CGRAYED);
    fgl::FGWindow *w;
    PARAM p;
    p.ppop = fgl::_GSET;
    p.ink = fgl::CWHITE;
    p.rect.x = 100;
    p.rect.y = 300;
    p.rect.w = 100;
    p.rect.h = 100;
    primitiv(p);

    p.ppop = fgl::_GXOR;
    p.ink = fgl::CWHITE;
    p.rect.x = 100;
    p.rect.y = 300;
    p.rect.w = 100;
    p.rect.h = 100;
    primitiv(p);

    new fgl::FGWindow(&w, 200,200,400,300, "Test Window");

    p.ppop = fgl::_GSET;
    p.ink = fgl::CWHITE;
    p.rect.x = 10;
    p.rect.y = 30;
    p.rect.w = 20;
    p.rect.h = 20;
    p.w = w;
    window_test(p);

    MyApp.Run();
    return 0;
}

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