Ejemplo n.º 1
0
static void
MouseButtonUp(AG_Event *event)
{
	AG_Titlebar *tbar = AG_SELF();
	AG_DriverSw *dsw = (AG_DriverSw *)WIDGET(tbar)->drv;
	
	tbar->pressed = 0;
	
	if (AGDRIVER_SINGLE(dsw)) {
		dsw->winop = AG_WINOP_NONE;
		dsw->winSelected = NULL;
	}
}
Ejemplo n.º 2
0
static void
MouseButtonDown(AG_Event *event)
{
	AG_Titlebar *tbar = AG_SELF();
	
	tbar->pressed = 1;

	if (AGDRIVER_SINGLE(WIDGET(tbar)->drv)) {
		AG_DriverSw *dsw = (AG_DriverSw *)WIDGET(tbar)->drv;
		agWindowToFocus = tbar->win;
		dsw->winSelected = tbar->win;
		if (!(tbar->win->flags & AG_WINDOW_NOMOVE))
			dsw->winop = AG_WINOP_MOVE;
	}
}
Ejemplo n.º 3
0
static void
Expand(AG_Event *event)
{
    AG_FileSelector *fs = AG_PTR(1);
    AG_Driver *drv = WIDGET(fs)->drv;
    int expand = AG_INT(2);
    AG_SizeReq rFileDlg;
    int x, y, w, h;
    Uint wView, hView;

    if (expand) {						/* Expand */
        fs->panel = AG_WindowNew(AG_WINDOW_MODAL|AG_WINDOW_NOTITLE);
        AG_WindowSetPadding(fs->panel, 0, 0, 0, 0);
        AG_ObjectAttach(fs->panel, fs->filedlg);

        if (fs->wSaved > 0) {
            w = fs->wSaved;
            h = fs->hSaved;
        } else {
            AG_WidgetSizeReq(fs->filedlg, &rFileDlg);
            w = rFileDlg.w + fs->panel->wBorderSide*2;
            h = rFileDlg.h + fs->panel->wBorderBot;
        }
        x = WIDGET(fs)->rView.x2 - w;
        y = WIDGET(fs)->rView.y1;

        if (AGDRIVER_SINGLE(drv) &&
                AG_GetDisplaySize(drv, &wView, &hView) == 0) {
            if (x+w > wView) {
                w = wView - x;
            }
            if (y+h > hView) {
                h = hView - y;
            }
        }
        if (w < 4 || h < 4) {
            Collapse(fs);
            return;
        }
        AG_SetEvent(fs->panel, "window-modal-close",
                    ModalClose, "%p", fs);
        AG_WindowSetGeometry(fs->panel, x, y, w, h);
        AG_WindowShow(fs->panel);
    } else {
        Collapse(fs);
    }
}
Ejemplo n.º 4
0
Archivo: glview.c Proyecto: adsr/agar
void
AG_GLViewDraw(void *obj)
{
    AG_GLView *glv = obj;
    AG_Driver *drv = WIDGET(glv)->drv;
    GLint vpSave[4];
    Uint hView;

    glGetIntegerv(GL_VIEWPORT, vpSave);

    if (glv->flags & AG_GLVIEW_INIT_MATRICES) {
        glv->flags &= ~(AG_GLVIEW_INIT_MATRICES);
        SetIdentity(glv->mProjection, GL_PROJECTION);
        SetIdentity(glv->mModelview, GL_MODELVIEW);
        SetIdentity(glv->mTexture, GL_TEXTURE);
    }
    if (glv->flags & AG_GLVIEW_RESHAPE) {
        glv->flags &= ~(AG_GLVIEW_RESHAPE);
        AG_GLViewReshape(glv);
    }

    if (AGDRIVER_SINGLE(drv)) {
        hView = AGDRIVER_SW(drv)->h;
    } else {
        hView = HEIGHT(WIDGET(glv)->window);
    }
    glViewport(WIDGET(glv)->rView.x1,
               hView - WIDGET(glv)->rView.y2,
               WIDTH(glv), HEIGHT(glv));

    glMatrixMode(GL_TEXTURE);
    glPushMatrix();
    glLoadMatrixf(glv->mTexture);

    glMatrixMode(GL_PROJECTION);
    glPushMatrix();
    glLoadMatrixf(glv->mProjection);

    glMatrixMode(GL_MODELVIEW);
    glPushMatrix();
    glLoadMatrixf(glv->mModelview);

    glPushAttrib(GL_TRANSFORM_BIT);
    glDisable(GL_CLIP_PLANE0);
    glDisable(GL_CLIP_PLANE1);
    glDisable(GL_CLIP_PLANE2);
    glDisable(GL_CLIP_PLANE3);

    if (glv->draw_ev != NULL)
        glv->draw_ev->handler(glv->draw_ev);

    glPopAttrib();

    glMatrixMode(GL_MODELVIEW);
    glPopMatrix();
    glMatrixMode(GL_TEXTURE);
    glPopMatrix();
    glMatrixMode(GL_PROJECTION);
    glPopMatrix();

    glViewport(vpSave[0], vpSave[1], vpSave[2], vpSave[3]);

    if (glv->overlay_ev != NULL)
        glv->overlay_ev->handler(glv->overlay_ev);
}
Ejemplo n.º 5
0
void
AG_GLViewDraw(void *obj)
{
	AG_GLView *glv = obj;
	AG_Driver *drv = WIDGET(glv)->drv;
	Uint hView;
	
	if (glv->flags & AG_GLVIEW_BGFILL) {
		AG_DrawRect(glv,
		    AG_RECT(0,0, WIDTH(glv), HEIGHT(glv)),
		    glv->bgColor);
	}
	if (glv->underlay_ev != NULL)
		glv->underlay_ev->handler(glv->underlay_ev);

	glPushAttrib(GL_TRANSFORM_BIT | GL_VIEWPORT_BIT);

	if (glv->flags & AG_GLVIEW_INIT_MATRICES) {
		glv->flags &= ~(AG_GLVIEW_INIT_MATRICES);
		SetIdentity(glv->mProjection, GL_PROJECTION);
		SetIdentity(glv->mModelview, GL_MODELVIEW);
		SetIdentity(glv->mTexture, GL_TEXTURE);
	}
	if (glv->flags & AG_GLVIEW_RESHAPE) {
		glv->flags &= ~(AG_GLVIEW_RESHAPE);
		AG_GLViewReshape(glv);
	}

	if (AGDRIVER_SINGLE(drv)) {
		hView = AGDRIVER_SW(drv)->h;
	} else {
		hView = HEIGHT(WIDGET(glv)->window);
	}
	glViewport(WIDGET(glv)->rView.x1,
	           hView - WIDGET(glv)->rView.y2,
	           WIDTH(glv), HEIGHT(glv));
	
	glMatrixMode(GL_TEXTURE);
	glPushMatrix();
	glLoadMatrixf(glv->mTexture);

	glMatrixMode(GL_PROJECTION);
	glPushMatrix();
	glLoadMatrixf(glv->mProjection);
	
	glMatrixMode(GL_MODELVIEW);
	glPushMatrix();
	glLoadMatrixf(glv->mModelview);

	glDisable(GL_CLIP_PLANE0);
	glDisable(GL_CLIP_PLANE1);
	glDisable(GL_CLIP_PLANE2);
	glDisable(GL_CLIP_PLANE3);
	
	if (glv->draw_ev != NULL)
		glv->draw_ev->handler(glv->draw_ev);
	
	glMatrixMode(GL_MODELVIEW);
	glPopMatrix();
	glMatrixMode(GL_PROJECTION);
	glPopMatrix();
	glMatrixMode(GL_TEXTURE);
	glPopMatrix();

	/* restore transform and viewport */
	glPopAttrib();

	if (glv->overlay_ev != NULL) {
		glPushAttrib(GL_TRANSFORM_BIT);
		glv->overlay_ev->handler(glv->overlay_ev);
		glPopAttrib();
	}
}