#pragma once #include #include #include #include #include #include namespace entity_cutout { QPainterPath pathFromWorldPolygon(const QVector& poly); QPointF polygonCentroid(const QVector& poly); QRect clampRectToImage(const QRect& r, const QSize& size); QImage extractEntityImage(const QImage& bg, const QVector& polyWorld, QPointF& outTopLeftWorld); void applyBlackFillToBackground(QImage& bgCutout, const QVector& polyWorld); /// 子图左上角与 cropWorldRect.topLeft() 对齐(世界坐标);将 holePolysWorld 内像素置黑,供分割/吸附与画布一致。 void applyBlackHolesToImageRegion(QImage& regionPremul, const QRect& cropWorldRect, const QVector>& holePolysWorld); } // namespace entity_cutout