Browse Source

Merge 1f201569a5 into f3be5aee08

pull/491/merge
David Robillard GitHub 6 days ago
parent
commit
2cc1bc130e
No known key found for this signature in database GPG Key ID: B5690EEEBB952194
4 changed files with 30 additions and 31 deletions
  1. +23
    -24
      dgl/src/Window.cpp
  2. +5
    -5
      dgl/src/WindowPrivateData.cpp
  3. +1
    -1
      dgl/src/pugl-upstream
  4. +1
    -1
      dgl/src/pugl.cpp

+ 23
- 24
dgl/src/Window.cpp View File

@@ -180,22 +180,22 @@ int Window::getOffsetX() const noexcept
{
DISTRHO_SAFE_ASSERT_RETURN(pData->view != nullptr, 0);

return puglGetFrame(pData->view).x;
return puglGetPositionHint(pData->view, PUGL_CURRENT_POSITION).x;
}

int Window::getOffsetY() const noexcept
{
DISTRHO_SAFE_ASSERT_RETURN(pData->view != nullptr, 0);

return puglGetFrame(pData->view).y;
return puglGetPositionHint(pData->view, PUGL_CURRENT_POSITION).y;
}

Point<int> Window::getOffset() const noexcept
{
DISTRHO_SAFE_ASSERT_RETURN(pData->view != nullptr, Point<int>());

const PuglRect rect = puglGetFrame(pData->view);
return Point<int>(rect.x, rect.y);
const PuglPoint point = puglGetPositionHint(pData->view, PUGL_CURRENT_POSITION);
return Point<int>(point.x, point.y);
}

void Window::setOffsetX(const int x)
@@ -214,7 +214,7 @@ void Window::setOffset(const int x, const int y)
DISTRHO_SAFE_ASSERT_RETURN(!pData->isEmbed,);

if (pData->view != nullptr)
puglSetPosition(pData->view, x, y);
puglSetPositionHint(pData->view, PUGL_CURRENT_POSITION, x, y);
}

void Window::setOffset(const Point<int>& offset)
@@ -226,7 +226,7 @@ uint Window::getWidth() const noexcept
{
DISTRHO_SAFE_ASSERT_RETURN(pData->view != nullptr, 0);

const double width = puglGetFrame(pData->view).width;
const double width = puglGetSizeHint(pData->view, PUGL_CURRENT_SIZE).width;
DISTRHO_SAFE_ASSERT_RETURN(width > 0.0, 0);
return static_cast<uint>(width + 0.5);
}
@@ -235,7 +235,7 @@ uint Window::getHeight() const noexcept
{
DISTRHO_SAFE_ASSERT_RETURN(pData->view != nullptr, 0);

const double height = puglGetFrame(pData->view).height;
const double height = puglGetSizeHint(pData->view, PUGL_CURRENT_SIZE).height;
DISTRHO_SAFE_ASSERT_RETURN(height > 0.0, 0);
return static_cast<uint>(height + 0.5);
}
@@ -244,11 +244,11 @@ Size<uint> Window::getSize() const noexcept
{
DISTRHO_SAFE_ASSERT_RETURN(pData->view != nullptr, Size<uint>());

const PuglRect rect = puglGetFrame(pData->view);
DISTRHO_SAFE_ASSERT_RETURN(rect.width > 0.0, Size<uint>());
DISTRHO_SAFE_ASSERT_RETURN(rect.height > 0.0, Size<uint>());
return Size<uint>(static_cast<uint>(rect.width + 0.5),
static_cast<uint>(rect.height + 0.5));
const PuglArea size = puglGetSizeHint(pData->view, PUGL_CURRENT_SIZE);
DISTRHO_SAFE_ASSERT_RETURN(size.width > 0.0, Size<uint>());
DISTRHO_SAFE_ASSERT_RETURN(size.height > 0.0, Size<uint>());
return Size<uint>(static_cast<uint>(size.width + 0.5),
static_cast<uint>(size.height + 0.5));
}

void Window::setWidth(const uint width)
@@ -443,7 +443,7 @@ void Window::repaint() noexcept
if (pData->usesScheduledRepaints)
pData->appData->needsRepaint = true;

puglPostRedisplay(pData->view);
puglObscureView(pData->view);
}

void Window::repaint(const Rectangle<uint>& rect) noexcept
@@ -454,22 +454,21 @@ void Window::repaint(const Rectangle<uint>& rect) noexcept
if (pData->usesScheduledRepaints)
pData->appData->needsRepaint = true;

PuglRect prect = {
static_cast<PuglCoord>(rect.getX()),
static_cast<PuglCoord>(rect.getY()),
static_cast<PuglSpan>(rect.getWidth()),
static_cast<PuglSpan>(rect.getHeight()),
};
PuglCoord x = static_cast<PuglCoord>(rect.getX());
PuglCoord y = static_cast<PuglCoord>(rect.getY());
PuglSpan w = static_cast<PuglSpan>(rect.getWidth());
PuglSpan h = static_cast<PuglSpan>(rect.getHeight());

if (pData->autoScaling)
{
const double autoScaleFactor = pData->autoScaleFactor;

prect.x = static_cast<PuglCoord>(prect.x * autoScaleFactor);
prect.y = static_cast<PuglCoord>(prect.y * autoScaleFactor);
prect.width = static_cast<PuglSpan>(prect.width * autoScaleFactor + 0.5);
prect.height = static_cast<PuglSpan>(prect.height * autoScaleFactor + 0.5);
x = static_cast<PuglCoord>(x * autoScaleFactor);
y = static_cast<PuglCoord>(y * autoScaleFactor);
w = static_cast<PuglSpan>(w * autoScaleFactor + 0.5);
h = static_cast<PuglSpan>(h * autoScaleFactor + 0.5);
}
puglPostRedisplayRect(pData->view, prect);
puglObscureRegion(pData->view, x, y, w, h);
}

void Window::renderToPicture(const char* const filename)


+ 5
- 5
dgl/src/WindowPrivateData.cpp View File

@@ -91,10 +91,10 @@ static PuglView* puglNewViewWithParentWindow(PuglWorld* const world, const uintp

if (PuglView* const view = puglNewView(world))
{
puglSetParentWindow(view, parentWindowHandle);
puglSetParent(view, parentWindowHandle);

if (parentWindowHandle != 0)
puglSetPosition(view, 0, 0);
puglSetPositionHint(view, PUGL_CURRENT_POSITION, 0, 0);

return view;
}
@@ -682,7 +682,7 @@ void Window::PrivateData::onPuglConfigure(const uint width, const uint height)
#endif

// always repaint after a resize
puglPostRedisplay(view);
puglObscureView(view);
}

void Window::PrivateData::onPuglExpose()
@@ -702,9 +702,9 @@ void Window::PrivateData::onPuglExpose()

if (char* const filename = filenameToRenderInto)
{
const PuglRect rect = puglGetFrame(view);
const PuglArea size = puglGetSizeHint(view, PUGL_CURRENT_SIZE);
filenameToRenderInto = nullptr;
renderToPicture(filename, getGraphicsContext(), static_cast<uint>(rect.width), static_cast<uint>(rect.height));
renderToPicture(filename, getGraphicsContext(), static_cast<uint>(size.width), static_cast<uint>(size.height));
std::free(filename);
}
#endif


+ 1
- 1
dgl/src/pugl-upstream

@@ -1 +1 @@
Subproject commit d4d964f129b4bf999c53ba40381bd1095fafb649
Subproject commit 66afe808e8c17f41cf6122158df96361cb42cccb

+ 1
- 1
dgl/src/pugl.cpp View File

@@ -415,7 +415,7 @@ PuglStatus puglSetSizeAndDefault(PuglView* view, uint width, uint height)
// matches upstream pugl, adds flush at the end
if (view->impl->win)
{
if (const PuglStatus status = puglSetSize(view, width, height))
if (const PuglStatus status = puglSetSizeHint(view, PUGL_CURRENT_SIZE, width, height))
return status;

// updateSizeHints will use last known size, which is not yet updated


Loading…
Cancel
Save