Browse Source

Cleanup, cut outer bounds of widgets

gh-pages
falkTX 9 years ago
parent
commit
0432f4de23
1 changed files with 13 additions and 13 deletions
  1. +13
    -13
      dgl/src/Window.cpp

+ 13
- 13
dgl/src/Window.cpp View File

@@ -562,6 +562,8 @@ struct Window::PrivateData {
{
fSelf->onDisplayBefore();

bool needsDisableScissor = false;

FOR_EACH_WIDGET(it)
{
Widget* const widget(*it);
@@ -575,32 +577,30 @@ struct Window::PrivateData {
{
// full viewport size
glViewport(0, 0, fView->width, fView->height);

// display widget
widget->onDisplay();
}
else if (! widget->fNeedsScaling)
{
// only set viewport pos
glViewport(widget->getAbsoluteX(), /*fView->height - widget->getHeight()*/ - widget->getAbsoluteY(), fView->width, fView->height);

// display widget
widget->onDisplay();
// then cut the outer bounds
glScissor(widget->getAbsoluteX(), fView->height - widget->getHeight() - widget->getAbsoluteY(), widget->getWidth(), widget->getHeight());
glEnable(GL_SCISSOR_TEST);
needsDisableScissor = true;
}
else
{
// limit viewport to widget bounds
glViewport(widget->getAbsoluteX(), fView->height - widget->getHeight() - widget->getAbsoluteY(), widget->getWidth(), widget->getHeight());
}

// scale contents to match viewport size
glPushMatrix();
glScalef(float(fView->width)/float(widget->getWidth()), float(fView->height)/float(widget->getHeight()), 1.0f);

// display widget
widget->onDisplay();
// display widget
widget->onDisplay();

// done
glPopMatrix();
if (needsDisableScissor)
{
glDisable(GL_SCISSOR_TEST);
needsDisableScissor = false;
}
}
}


Loading…
Cancel
Save