backports/cura: add missing backports #361
17 changed files with 878 additions and 1 deletions
|
@ -8,7 +8,7 @@ set -eu -o pipefail
|
|||
|
||||
readonly APORTSDIR=$CI_PROJECT_DIR
|
||||
readonly REPOS="cross backports user testing community"
|
||||
readonly ALPINE_REPOS="main community testing"
|
||||
readonly ALPINE_REPOS="main community"
|
||||
readonly ARCH=$(apk --print-arch)
|
||||
# gitlab variables
|
||||
readonly BASEBRANCH=$CI_MERGE_REQUEST_TARGET_BRANCH_NAME
|
||||
|
|
40
backports/libnest2d/APKBUILD
Normal file
40
backports/libnest2d/APKBUILD
Normal file
|
@ -0,0 +1,40 @@
|
|||
# Contributor: Anjandev Momi <anjan@momi.ca>
|
||||
# Maintainer: Anjandev Momi <anjan@momi.ca>
|
||||
pkgname=libnest2d
|
||||
pkgver=0.4
|
||||
pkgrel=5
|
||||
pkgdesc="2D irregular bin packaging and nesting library written in modern C++"
|
||||
url="https://github.com/tamasmeszaros/libnest2d"
|
||||
arch="noarch"
|
||||
license="LGPL-3.0-only"
|
||||
makedepends="samurai cmake clipper-dev boost-dev nlopt-dev"
|
||||
subpackages="$pkgname-dev"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/tamasmeszaros/libnest2d/archive/refs/tags/$pkgver.tar.gz
|
||||
allow-disallowed-area.patch"
|
||||
|
||||
build() {
|
||||
if [ "$CBUILD" != "$CHOST" ]; then
|
||||
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
|
||||
fi
|
||||
cmake -B build -G Ninja \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DCMAKE_INSTALL_LIBDIR=lib \
|
||||
-DBUILD_SHARED_LIBS=True \
|
||||
-DCMAKE_BUILD_TYPE=minsizerel \
|
||||
$CMAKE_CROSSOPTS .
|
||||
cmake --build build
|
||||
}
|
||||
|
||||
check() {
|
||||
cd build
|
||||
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
|
||||
}
|
||||
|
||||
package() {
|
||||
DESTDIR="$pkgdir" cmake --install build
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
fadce18986b844eed13a581f84055df909a17407a0980deb6c7c24248a969a537a8840650bcfc673e61973810ce9a008acb599e3b8e00c9bff6b566ca41cd62c libnest2d-0.4.tar.gz
|
||||
2e8cd3343c72c576ecb54960d7ad9f4f2322f822b19ac41850b3b28da95e97c2cefe7c67de6c97627df08cd5cdc1660ce4dfa95fe51f88e0ff5c066c8d785458 allow-disallowed-area.patch
|
||||
"
|
124
backports/libnest2d/allow-disallowed-area.patch
Normal file
124
backports/libnest2d/allow-disallowed-area.patch
Normal file
|
@ -0,0 +1,124 @@
|
|||
From 2e91be2679b5efa0773292d9d0a2ae72255bb271 Mon Sep 17 00:00:00 2001
|
||||
From: Ghostkeeper <rubend@tutanota.com>
|
||||
Date: Tue, 6 Oct 2020 16:13:15 +0200
|
||||
Subject: [PATCH 1/3] Allow for an item to be a disallowed area
|
||||
|
||||
url: https://github.com/tamasmeszaros/libnest2d/pull/18
|
||||
|
||||
Disallowed areas have slightly different behaviour from fixed items: Other items won't get packed closely around them. Implementation of that pending.
|
||||
|
||||
Contributes to issue CURA-7754.
|
||||
---
|
||||
include/libnest2d/nester.hpp | 16 ++++++++++++++++
|
||||
1 file changed, 16 insertions(+)
|
||||
|
||||
diff --git a/include/libnest2d/nester.hpp b/include/libnest2d/nester.hpp
|
||||
index 2f207d5..932a060 100644
|
||||
--- a/include/libnest2d/nester.hpp
|
||||
+++ b/include/libnest2d/nester.hpp
|
||||
@@ -71,6 +71,15 @@ class _Item {
|
||||
int binid_{BIN_ID_UNSET}, priority_{0};
|
||||
bool fixed_{false};
|
||||
|
||||
+ /**
|
||||
+ * \brief If this is a fixed area, indicates whether it is a disallowed area
|
||||
+ * or a previously placed item.
|
||||
+ *
|
||||
+ * If this is a disallowed area, other objects will not get packed close
|
||||
+ * together with this item. It only blocks other items in its area.
|
||||
+ */
|
||||
+ bool disallowed_{false};
|
||||
+
|
||||
public:
|
||||
|
||||
/// The type of the shape which was handed over as the template argument.
|
||||
@@ -129,11 +138,18 @@ class _Item {
|
||||
sh_(sl::create<RawShape>(std::move(contour), std::move(holes))) {}
|
||||
|
||||
inline bool isFixed() const noexcept { return fixed_; }
|
||||
+ inline bool isDisallowedArea() const noexcept { return disallowed_; }
|
||||
inline void markAsFixedInBin(int binid)
|
||||
{
|
||||
fixed_ = binid >= 0;
|
||||
binid_ = binid;
|
||||
}
|
||||
+ inline void markAsDisallowedAreaInBin(int binid)
|
||||
+ {
|
||||
+ fixed_ = binid >= 0;
|
||||
+ binid_ = binid;
|
||||
+ disallowed_ = true;
|
||||
+ }
|
||||
|
||||
inline void binId(int idx) { binid_ = idx; }
|
||||
inline int binId() const noexcept { return binid_; }
|
||||
|
||||
From ff61049e59d3151462bca7ff2e2268c2b32731e7 Mon Sep 17 00:00:00 2001
|
||||
From: Ghostkeeper <rubend@tutanota.com>
|
||||
Date: Tue, 6 Oct 2020 16:14:36 +0200
|
||||
Subject: [PATCH 2/3] Allow unsetting of being a disallowed area
|
||||
|
||||
If you set the bin to -1 or set the item to be a simple fixed item afterwards, it'll no longer be a disallowed area.
|
||||
|
||||
Contributes to issue CURA-7754.
|
||||
---
|
||||
include/libnest2d/nester.hpp | 3 ++-
|
||||
1 file changed, 2 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/include/libnest2d/nester.hpp b/include/libnest2d/nester.hpp
|
||||
index 932a060..54761a6 100644
|
||||
--- a/include/libnest2d/nester.hpp
|
||||
+++ b/include/libnest2d/nester.hpp
|
||||
@@ -143,12 +143,13 @@ class _Item {
|
||||
{
|
||||
fixed_ = binid >= 0;
|
||||
binid_ = binid;
|
||||
+ disallowed_ = false;
|
||||
}
|
||||
inline void markAsDisallowedAreaInBin(int binid)
|
||||
{
|
||||
fixed_ = binid >= 0;
|
||||
binid_ = binid;
|
||||
- disallowed_ = true;
|
||||
+ disallowed_ = fixed_;
|
||||
}
|
||||
|
||||
inline void binId(int idx) { binid_ = idx; }
|
||||
|
||||
From 31391fd173249ad9b906390058e13b09238fadc8 Mon Sep 17 00:00:00 2001
|
||||
From: Ghostkeeper <rubend@tutanota.com>
|
||||
Date: Thu, 8 Oct 2020 11:06:58 +0200
|
||||
Subject: [PATCH 3/3] Align items to their starting position if all placed
|
||||
items are disallowed
|
||||
|
||||
We shouldn't align items to disallowed areas. So place them in the starting position according to the alignment property.
|
||||
|
||||
Lot of work to investigate. But very little code changes!
|
||||
|
||||
Contributes to issue CURA-7754.
|
||||
---
|
||||
include/libnest2d/placers/nfpplacer.hpp | 5 +++--
|
||||
1 file changed, 3 insertions(+), 2 deletions(-)
|
||||
|
||||
diff --git a/include/libnest2d/placers/nfpplacer.hpp b/include/libnest2d/placers/nfpplacer.hpp
|
||||
index 96a8cff..b0ebb15 100644
|
||||
--- a/include/libnest2d/placers/nfpplacer.hpp
|
||||
+++ b/include/libnest2d/placers/nfpplacer.hpp
|
||||
@@ -101,7 +101,7 @@ struct NfpPConfig {
|
||||
* alignment with the candidate item or do anything else.
|
||||
*
|
||||
* \param remaining A container with the remaining items waiting to be
|
||||
- * placed. You can use some features about the remaining items to alter to
|
||||
+ * placed. You can use some features about the remaining items to alter the
|
||||
* score of the current placement. If you know that you have to leave place
|
||||
* for other items as well, that might influence your decision about where
|
||||
* the current candidate should be placed. E.g. imagine three big circles
|
||||
@@ -735,7 +735,8 @@ class _NofitPolyPlacer: public PlacerBoilerplate<_NofitPolyPlacer<RawShape, TBin
|
||||
remlist.insert(remlist.end(), remaining.from, remaining.to);
|
||||
}
|
||||
|
||||
- if(items_.empty()) {
|
||||
+ if(std::all_of(items_.begin(), items_.end(),
|
||||
+ [](const Item& item) { return item.isDisallowedArea(); })) {
|
||||
setInitialPosition(item);
|
||||
best_overfit = overfit(item.transformedShape(), bin_);
|
||||
can_pack = best_overfit <= 0;
|
33
backports/libspatialindex/APKBUILD
Normal file
33
backports/libspatialindex/APKBUILD
Normal file
|
@ -0,0 +1,33 @@
|
|||
# Contributor: Alex Yam <alex@alexyam.com>
|
||||
# Maintainer: Alex Yam <alex@alexyam.com>
|
||||
pkgname=libspatialindex
|
||||
pkgver=0_git20210205
|
||||
_commit=8ee223632f95c81f49f5eb2d547ad973475c4601
|
||||
pkgrel=1
|
||||
pkgdesc="extensible framework for robust spatial indexing methods"
|
||||
url="https://libspatialindex.org/"
|
||||
arch="all"
|
||||
license="MIT"
|
||||
makedepends="cmake"
|
||||
subpackages="$pkgname-dev"
|
||||
source="$pkgname-$_commit.tar.gz::https://github.com/libspatialindex/libspatialindex/archive/$_commit.tar.gz"
|
||||
builddir="$srcdir/$pkgname-$_commit"
|
||||
|
||||
build() {
|
||||
cmake -B build \
|
||||
-DCMAKE_BUILD_TYPE=MinSizeRel \
|
||||
-DCMAKE_PREFIX_PATH=/usr \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DBUILD_TESTING=ON
|
||||
cmake --build build
|
||||
}
|
||||
|
||||
check() {
|
||||
cd build && ctest
|
||||
}
|
||||
|
||||
package() {
|
||||
DESTDIR="$pkgdir" cmake --build build --target install
|
||||
}
|
||||
|
||||
sha512sums="caf91aac77b75445e4fc4d0baedcd10c619b2097dfd841b00339d9ddd4b73db05b99de1d84be88f1083f4713a936cf110d5851523491f5a74c6f96e1d5795dbb libspatialindex-8ee223632f95c81f49f5eb2d547ad973475c4601.tar.gz"
|
38
backports/nlopt/APKBUILD
Normal file
38
backports/nlopt/APKBUILD
Normal file
|
@ -0,0 +1,38 @@
|
|||
# Contributor: Anjandev Momi <anjan@momi.ca>
|
||||
# Maintainer: Anjandev Momi <anjan@momi.ca>
|
||||
pkgname=nlopt
|
||||
pkgver=2.7.1
|
||||
pkgrel=0
|
||||
pkgdesc="library for nonlinear optimization, wrapping many algorithms for global and local, constrained or unconstrained, optimization"
|
||||
url="https://github.com/stevengj/nlopt/"
|
||||
arch="all"
|
||||
license="LGPL-2.1-or-later"
|
||||
makedepends="samurai cmake"
|
||||
subpackages="$pkgname-dev $pkgname-doc"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/stevengj/nlopt/archive/refs/tags/v$pkgver.tar.gz"
|
||||
|
||||
build() {
|
||||
if [ "$CBUILD" != "$CHOST" ]; then
|
||||
CMAKE_CROSSOPTS="-DCMAKE_SYSTEM_NAME=Linux -DCMAKE_HOST_SYSTEM_NAME=Linux"
|
||||
fi
|
||||
cmake -B build -G Ninja \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DCMAKE_INSTALL_LIBDIR=lib \
|
||||
-DBUILD_SHARED_LIBS=True \
|
||||
-DCMAKE_BUILD_TYPE=minsizerel \
|
||||
$CMAKE_CROSSOPTS .
|
||||
cmake --build build
|
||||
}
|
||||
|
||||
check() {
|
||||
cd build
|
||||
CTEST_OUTPUT_ON_FAILURE=TRUE ctest
|
||||
}
|
||||
|
||||
package() {
|
||||
DESTDIR="$pkgdir" cmake --install build
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
e23cb522fc696010574c14b72be85acc0f8ccf0bf208bf2b8789c57d6c5a6e6d419ee10330581518b1c1567018ae909b626ce7761d4fbd5bf112916871e420e2 nlopt-2.7.1.tar.gz
|
||||
"
|
32
backports/py3-mapbox-earcut/APKBUILD
Normal file
32
backports/py3-mapbox-earcut/APKBUILD
Normal file
|
@ -0,0 +1,32 @@
|
|||
# Contributor: Aiden Grossman <agrossman154@yahoo.com>
|
||||
# Maintainer: Aiden Grossman <agrossman154@yahoo.com>
|
||||
pkgname=py3-mapbox-earcut
|
||||
pkgver=1.0.1
|
||||
pkgrel=0
|
||||
pkgdesc="Python bindings for the mapbox earcut c++ library"
|
||||
url="https://github.com/skogler/mapbox_earcut_python"
|
||||
arch="all"
|
||||
license="ISC"
|
||||
depends="py3-numpy"
|
||||
makedepends="py3-setuptools py3-pybind11-dev python3-dev"
|
||||
checkdepends="pytest"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/skogler/mapbox_earcut_python/archive/refs/tags/v$pkgver.tar.gz"
|
||||
builddir="$srcdir/mapbox_earcut_python-$pkgver"
|
||||
|
||||
build() {
|
||||
python3 setup.py build
|
||||
}
|
||||
|
||||
check() {
|
||||
python3 -m venv --clear --without-pip --system-site-packages test-env
|
||||
test-env/bin/python3 setup.py install
|
||||
test-env/bin/python3 -m pytest
|
||||
}
|
||||
|
||||
package() {
|
||||
python3 setup.py install --skip-build --root="$pkgdir"
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
cdb32585cbaf74c15e59af0ae70d983dd2f9bc9cfe1b59b3eadc4d442f7d962241854b589a035deae67cacd9334833b911d0981f0d417fe587348fc7d24f0c0a py3-mapbox-earcut-1.0.1.tar.gz
|
||||
"
|
34
backports/py3-numpy-stl/APKBUILD
Normal file
34
backports/py3-numpy-stl/APKBUILD
Normal file
|
@ -0,0 +1,34 @@
|
|||
# Contributor: Aiden Grossman <agrossman154@yahoo.com>
|
||||
# Maintainer: Aiden Grossman <agrossman154@yahoo.com>
|
||||
pkgname=py3-numpy-stl
|
||||
pkgver=3.0.1
|
||||
pkgrel=1
|
||||
pkgdesc="Library for working with STLs"
|
||||
url="https://github.com/WoLpH/numpy-stl"
|
||||
# s390x: no py3-utils
|
||||
arch="noarch !s390x"
|
||||
license="BSD-3-Clause"
|
||||
depends="python3 py3-utils py3-numpy"
|
||||
makedepends="py3-setuptools"
|
||||
checkdepends="py3-pytest"
|
||||
subpackages="$pkgname-pyc"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/wolph/numpy-stl/releases/download/v$pkgver/numpy-stl-$pkgver.tar.gz"
|
||||
builddir="$srcdir/numpy-stl-$pkgver"
|
||||
|
||||
build() {
|
||||
python3 setup.py build
|
||||
}
|
||||
|
||||
check() {
|
||||
# deselected test needs xvfb-run and fails
|
||||
pytest \
|
||||
--deselect tests/test_ascii.py::test_use_with_qt_with_custom_locale_decimal_delimeter
|
||||
}
|
||||
|
||||
package() {
|
||||
python3 setup.py install --skip-build --root="$pkgdir"
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
d01abb8f54738600ce36c8c44e1392957061030e7accbbfa0352aea4a904323a96712099146b311ce9518f243317c25c47cfb30930469602c0ad439de9f43c5f py3-numpy-stl-3.0.1.tar.gz
|
||||
"
|
35
backports/py3-pyinstrument/APKBUILD
Normal file
35
backports/py3-pyinstrument/APKBUILD
Normal file
|
@ -0,0 +1,35 @@
|
|||
# Contributor: Aiden Grossman <agrossman154@yahoo.com>
|
||||
# Maintainer: Aiden Grossman <agrossman154@yahoo.com>
|
||||
pkgname=py3-pyinstrument
|
||||
pkgver=4.6.1
|
||||
pkgrel=0
|
||||
pkgdesc="Call stack profiler for Python"
|
||||
url="https://github.com/joerick/pyinstrument"
|
||||
arch="all"
|
||||
license="BSD-3-Clause"
|
||||
makedepends="py3-gpep517 py3-setuptools py3-wheel python3-dev"
|
||||
checkdepends="py3-pytest py3-flaky py3-trio py3-greenlet"
|
||||
subpackages="$pkgname-pyc"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/joerick/pyinstrument/archive/refs/tags/v$pkgver.tar.gz"
|
||||
builddir="$srcdir/pyinstrument-$pkgver"
|
||||
options="!check" # currently not working
|
||||
|
||||
build() {
|
||||
gpep517 build-wheel \
|
||||
--wheel-dir .dist \
|
||||
--output-fd 3 3>&1 >&2
|
||||
}
|
||||
|
||||
check() {
|
||||
python3 -m venv --clear --without-pip --system-site-packages .testenv
|
||||
.testenv/bin/python3 -m installer .dist/*.whl
|
||||
.testenv/bin/python3 -m pytest
|
||||
}
|
||||
|
||||
package() {
|
||||
python3 -m installer -d "$pkgdir" .dist/*.whl
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
7eb24fb27bfb145b5a06976bdaac1d06de87549f3ae9505d4d56608af0776ff18f5ec9fccf5d3f3df797f1b91281d15bbd825fa42d268baf91524fc2f4efd59a py3-pyinstrument-4.6.1.tar.gz
|
||||
"
|
34
backports/py3-rtree/APKBUILD
Normal file
34
backports/py3-rtree/APKBUILD
Normal file
|
@ -0,0 +1,34 @@
|
|||
# Contributor: Alex Yam <alex@alexyam.com>
|
||||
# Maintainer: Alex Yam <alex@alexyam.com>
|
||||
pkgname=py3-rtree
|
||||
_pkgname=rtree
|
||||
pkgver=1.1.0
|
||||
pkgrel=0
|
||||
pkgdesc="Python3 library for r-tree spatial index (wrapper for libspatialindex)"
|
||||
url="https://pypi.org/project/Rtree/"
|
||||
# s390x: Test failed: IndexSerialization::test_interleaving - AssertionError
|
||||
# s390x: Test failed: IndexStream::test_stream_input - AssertionError
|
||||
arch="noarch !s390x"
|
||||
license="MIT"
|
||||
depends="python3 libspatialindex-dev"
|
||||
makedepends="py3-setuptools py3-wheel"
|
||||
checkdepends="py3-pytest py3-numpy"
|
||||
subpackages="$pkgname-pyc"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/Toblerity/rtree/archive/$pkgver.tar.gz"
|
||||
builddir="$srcdir"/$_pkgname-$pkgver
|
||||
|
||||
build() {
|
||||
python3 setup.py build
|
||||
}
|
||||
|
||||
check() {
|
||||
python3 -m pytest -v --doctest-modules rtree tests
|
||||
}
|
||||
|
||||
package() {
|
||||
python3 setup.py install --skip-build --root="$pkgdir"
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
97a87027e49520f12cb86444ee8a9795fabeec6d8f0e3e869f2714df8f7c649ced1374385852af0ce7d7eb91e5a2cb464a4330807be15d538dc0a4d8de7b7ca2 py3-rtree-1.1.0.tar.gz
|
||||
"
|
300
backports/py3-svgpath/105_use-better-than-nothing-font.patch
Normal file
300
backports/py3-svgpath/105_use-better-than-nothing-font.patch
Normal file
|
@ -0,0 +1,300 @@
|
|||
From a17ed35e490a99a7dfab9833f6f3be86f004f699 Mon Sep 17 00:00:00 2001
|
||||
From: Benjamin Drung <benjamin.drung@canonical.com>
|
||||
Date: Fri, 15 Dec 2023 15:32:16 +0100
|
||||
Subject: [PATCH] tests: Use better than nothing font
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
Pillow 10.1.0 uses a version of Aileron Regular instead of the previous
|
||||
“better than nothing” default font (in case FreeType support is
|
||||
available). This font change changes the resulting bitmap.
|
||||
|
||||
Use the "better than nothing" font to keep the expected result
|
||||
identical. The proper solution is either to use one specific font in
|
||||
svg.path or make pillow support loading the “better than nothing”
|
||||
default font.
|
||||
|
||||
Bug-Debian: https://bugs.debian.org/1055159
|
||||
---
|
||||
tests/font.py | 145 ++++++++++++++++++++++++++++++++
|
||||
tests/test_boundingbox_image.py | 18 ++--
|
||||
tests/test_image.py | 18 +++-
|
||||
3 files changed, 170 insertions(+), 11 deletions(-)
|
||||
create mode 100644 tests/font.py
|
||||
|
||||
diff --git a/tests/font.py b/tests/font.py
|
||||
new file mode 100644
|
||||
index 0000000..d375f49
|
||||
--- /dev/null
|
||||
+++ b/tests/font.py
|
||||
@@ -0,0 +1,145 @@
|
||||
+# Code taken from https://github.com/python-pillow/Pillow/blob/main/src/PIL/ImageFont.py
|
||||
+#
|
||||
+# License: the open source HPND License
|
||||
+# Copyright (c) 1997-2003 by Secret Labs AB
|
||||
+# Copyright (c) 1996-2003 by Fredrik Lundh
|
||||
+
|
||||
+from PIL import Image, ImageFont
|
||||
+from io import BytesIO
|
||||
+import base64
|
||||
+
|
||||
+
|
||||
+def get_better_than_nothing_font():
|
||||
+ font = ImageFont.ImageFont()
|
||||
+ font._load_pilfont_data(
|
||||
+ # courB08
|
||||
+ BytesIO(
|
||||
+ base64.b64decode(
|
||||
+ b"""
|
||||
+UElMZm9udAo7Ozs7OzsxMDsKREFUQQoAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAA//8AAQAAAAAAAAABAAEA
|
||||
+BgAAAAH/+gADAAAAAQAAAAMABgAGAAAAAf/6AAT//QADAAAABgADAAYAAAAA//kABQABAAYAAAAL
|
||||
+AAgABgAAAAD/+AAFAAEACwAAABAACQAGAAAAAP/5AAUAAAAQAAAAFQAHAAYAAP////oABQAAABUA
|
||||
+AAAbAAYABgAAAAH/+QAE//wAGwAAAB4AAwAGAAAAAf/5AAQAAQAeAAAAIQAIAAYAAAAB//kABAAB
|
||||
+ACEAAAAkAAgABgAAAAD/+QAE//0AJAAAACgABAAGAAAAAP/6AAX//wAoAAAALQAFAAYAAAAB//8A
|
||||
+BAACAC0AAAAwAAMABgAAAAD//AAF//0AMAAAADUAAQAGAAAAAf//AAMAAAA1AAAANwABAAYAAAAB
|
||||
+//kABQABADcAAAA7AAgABgAAAAD/+QAFAAAAOwAAAEAABwAGAAAAAP/5AAYAAABAAAAARgAHAAYA
|
||||
+AAAA//kABQAAAEYAAABLAAcABgAAAAD/+QAFAAAASwAAAFAABwAGAAAAAP/5AAYAAABQAAAAVgAH
|
||||
+AAYAAAAA//kABQAAAFYAAABbAAcABgAAAAD/+QAFAAAAWwAAAGAABwAGAAAAAP/5AAUAAABgAAAA
|
||||
+ZQAHAAYAAAAA//kABQAAAGUAAABqAAcABgAAAAD/+QAFAAAAagAAAG8ABwAGAAAAAf/8AAMAAABv
|
||||
+AAAAcQAEAAYAAAAA//wAAwACAHEAAAB0AAYABgAAAAD/+gAE//8AdAAAAHgABQAGAAAAAP/7AAT/
|
||||
+/gB4AAAAfAADAAYAAAAB//oABf//AHwAAACAAAUABgAAAAD/+gAFAAAAgAAAAIUABgAGAAAAAP/5
|
||||
+AAYAAQCFAAAAiwAIAAYAAP////oABgAAAIsAAACSAAYABgAA////+gAFAAAAkgAAAJgABgAGAAAA
|
||||
+AP/6AAUAAACYAAAAnQAGAAYAAP////oABQAAAJ0AAACjAAYABgAA////+gAFAAAAowAAAKkABgAG
|
||||
+AAD////6AAUAAACpAAAArwAGAAYAAAAA//oABQAAAK8AAAC0AAYABgAA////+gAGAAAAtAAAALsA
|
||||
+BgAGAAAAAP/6AAQAAAC7AAAAvwAGAAYAAP////oABQAAAL8AAADFAAYABgAA////+gAGAAAAxQAA
|
||||
+AMwABgAGAAD////6AAUAAADMAAAA0gAGAAYAAP////oABQAAANIAAADYAAYABgAA////+gAGAAAA
|
||||
+2AAAAN8ABgAGAAAAAP/6AAUAAADfAAAA5AAGAAYAAP////oABQAAAOQAAADqAAYABgAAAAD/+gAF
|
||||
+AAEA6gAAAO8ABwAGAAD////6AAYAAADvAAAA9gAGAAYAAAAA//oABQAAAPYAAAD7AAYABgAA////
|
||||
++gAFAAAA+wAAAQEABgAGAAD////6AAYAAAEBAAABCAAGAAYAAP////oABgAAAQgAAAEPAAYABgAA
|
||||
+////+gAGAAABDwAAARYABgAGAAAAAP/6AAYAAAEWAAABHAAGAAYAAP////oABgAAARwAAAEjAAYA
|
||||
+BgAAAAD/+gAFAAABIwAAASgABgAGAAAAAf/5AAQAAQEoAAABKwAIAAYAAAAA//kABAABASsAAAEv
|
||||
+AAgABgAAAAH/+QAEAAEBLwAAATIACAAGAAAAAP/5AAX//AEyAAABNwADAAYAAAAAAAEABgACATcA
|
||||
+AAE9AAEABgAAAAH/+QAE//wBPQAAAUAAAwAGAAAAAP/7AAYAAAFAAAABRgAFAAYAAP////kABQAA
|
||||
+AUYAAAFMAAcABgAAAAD/+wAFAAABTAAAAVEABQAGAAAAAP/5AAYAAAFRAAABVwAHAAYAAAAA//sA
|
||||
+BQAAAVcAAAFcAAUABgAAAAD/+QAFAAABXAAAAWEABwAGAAAAAP/7AAYAAgFhAAABZwAHAAYAAP//
|
||||
+//kABQAAAWcAAAFtAAcABgAAAAD/+QAGAAABbQAAAXMABwAGAAAAAP/5AAQAAgFzAAABdwAJAAYA
|
||||
+AP////kABgAAAXcAAAF+AAcABgAAAAD/+QAGAAABfgAAAYQABwAGAAD////7AAUAAAGEAAABigAF
|
||||
+AAYAAP////sABQAAAYoAAAGQAAUABgAAAAD/+wAFAAABkAAAAZUABQAGAAD////7AAUAAgGVAAAB
|
||||
+mwAHAAYAAAAA//sABgACAZsAAAGhAAcABgAAAAD/+wAGAAABoQAAAacABQAGAAAAAP/7AAYAAAGn
|
||||
+AAABrQAFAAYAAAAA//kABgAAAa0AAAGzAAcABgAA////+wAGAAABswAAAboABQAGAAD////7AAUA
|
||||
+AAG6AAABwAAFAAYAAP////sABgAAAcAAAAHHAAUABgAAAAD/+wAGAAABxwAAAc0ABQAGAAD////7
|
||||
+AAYAAgHNAAAB1AAHAAYAAAAA//sABQAAAdQAAAHZAAUABgAAAAH/+QAFAAEB2QAAAd0ACAAGAAAA
|
||||
+Av/6AAMAAQHdAAAB3gAHAAYAAAAA//kABAABAd4AAAHiAAgABgAAAAD/+wAF//0B4gAAAecAAgAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
|
||||
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYAAAAB
|
||||
+//sAAwACAecAAAHpAAcABgAAAAD/+QAFAAEB6QAAAe4ACAAGAAAAAP/5AAYAAAHuAAAB9AAHAAYA
|
||||
+AAAA//oABf//AfQAAAH5AAUABgAAAAD/+QAGAAAB+QAAAf8ABwAGAAAAAv/5AAMAAgH/AAACAAAJ
|
||||
+AAYAAAAA//kABQABAgAAAAIFAAgABgAAAAH/+gAE//sCBQAAAggAAQAGAAAAAP/5AAYAAAIIAAAC
|
||||
+DgAHAAYAAAAB//kABf/+Ag4AAAISAAUABgAA////+wAGAAACEgAAAhkABQAGAAAAAP/7AAX//gIZ
|
||||
+AAACHgADAAYAAAAA//wABf/9Ah4AAAIjAAEABgAAAAD/+QAHAAACIwAAAioABwAGAAAAAP/6AAT/
|
||||
++wIqAAACLgABAAYAAAAA//kABP/8Ai4AAAIyAAMABgAAAAD/+gAFAAACMgAAAjcABgAGAAAAAf/5
|
||||
+AAT//QI3AAACOgAEAAYAAAAB//kABP/9AjoAAAI9AAQABgAAAAL/+QAE//sCPQAAAj8AAgAGAAD/
|
||||
+///7AAYAAgI/AAACRgAHAAYAAAAA//kABgABAkYAAAJMAAgABgAAAAH//AAD//0CTAAAAk4AAQAG
|
||||
+AAAAAf//AAQAAgJOAAACUQADAAYAAAAB//kABP/9AlEAAAJUAAQABgAAAAH/+QAF//4CVAAAAlgA
|
||||
+BQAGAAD////7AAYAAAJYAAACXwAFAAYAAP////kABgAAAl8AAAJmAAcABgAA////+QAGAAACZgAA
|
||||
+Am0ABwAGAAD////5AAYAAAJtAAACdAAHAAYAAAAA//sABQACAnQAAAJ5AAcABgAA////9wAGAAAC
|
||||
+eQAAAoAACQAGAAD////3AAYAAAKAAAAChwAJAAYAAP////cABgAAAocAAAKOAAkABgAA////9wAG
|
||||
+AAACjgAAApUACQAGAAD////4AAYAAAKVAAACnAAIAAYAAP////cABgAAApwAAAKjAAkABgAA////
|
||||
++gAGAAACowAAAqoABgAGAAAAAP/6AAUAAgKqAAACrwAIAAYAAP////cABQAAAq8AAAK1AAkABgAA
|
||||
+////9wAFAAACtQAAArsACQAGAAD////3AAUAAAK7AAACwQAJAAYAAP////gABQAAAsEAAALHAAgA
|
||||
+BgAAAAD/9wAEAAACxwAAAssACQAGAAAAAP/3AAQAAALLAAACzwAJAAYAAAAA//cABAAAAs8AAALT
|
||||
+AAkABgAAAAD/+AAEAAAC0wAAAtcACAAGAAD////6AAUAAALXAAAC3QAGAAYAAP////cABgAAAt0A
|
||||
+AALkAAkABgAAAAD/9wAFAAAC5AAAAukACQAGAAAAAP/3AAUAAALpAAAC7gAJAAYAAAAA//cABQAA
|
||||
+Au4AAALzAAkABgAAAAD/9wAFAAAC8wAAAvgACQAGAAAAAP/4AAUAAAL4AAAC/QAIAAYAAAAA//oA
|
||||
+Bf//Av0AAAMCAAUABgAA////+gAGAAADAgAAAwkABgAGAAD////3AAYAAAMJAAADEAAJAAYAAP//
|
||||
+//cABgAAAxAAAAMXAAkABgAA////9wAGAAADFwAAAx4ACQAGAAD////4AAYAAAAAAAoABwASAAYA
|
||||
+AP////cABgAAAAcACgAOABMABgAA////+gAFAAAADgAKABQAEAAGAAD////6AAYAAAAUAAoAGwAQ
|
||||
+AAYAAAAA//gABgAAABsACgAhABIABgAAAAD/+AAGAAAAIQAKACcAEgAGAAAAAP/4AAYAAAAnAAoA
|
||||
+LQASAAYAAAAA//gABgAAAC0ACgAzABIABgAAAAD/+QAGAAAAMwAKADkAEQAGAAAAAP/3AAYAAAA5
|
||||
+AAoAPwATAAYAAP////sABQAAAD8ACgBFAA8ABgAAAAD/+wAFAAIARQAKAEoAEQAGAAAAAP/4AAUA
|
||||
+AABKAAoATwASAAYAAAAA//gABQAAAE8ACgBUABIABgAAAAD/+AAFAAAAVAAKAFkAEgAGAAAAAP/5
|
||||
+AAUAAABZAAoAXgARAAYAAAAA//gABgAAAF4ACgBkABIABgAAAAD/+AAGAAAAZAAKAGoAEgAGAAAA
|
||||
+AP/4AAYAAABqAAoAcAASAAYAAAAA//kABgAAAHAACgB2ABEABgAAAAD/+AAFAAAAdgAKAHsAEgAG
|
||||
+AAD////4AAYAAAB7AAoAggASAAYAAAAA//gABQAAAIIACgCHABIABgAAAAD/+AAFAAAAhwAKAIwA
|
||||
+EgAGAAAAAP/4AAUAAACMAAoAkQASAAYAAAAA//gABQAAAJEACgCWABIABgAAAAD/+QAFAAAAlgAK
|
||||
+AJsAEQAGAAAAAP/6AAX//wCbAAoAoAAPAAYAAAAA//oABQABAKAACgClABEABgAA////+AAGAAAA
|
||||
+pQAKAKwAEgAGAAD////4AAYAAACsAAoAswASAAYAAP////gABgAAALMACgC6ABIABgAA////+QAG
|
||||
+AAAAugAKAMEAEQAGAAD////4AAYAAgDBAAoAyAAUAAYAAP////kABQACAMgACgDOABMABgAA////
|
||||
++QAGAAIAzgAKANUAEw==
|
||||
+"""
|
||||
+ )
|
||||
+ ),
|
||||
+ Image.open(
|
||||
+ BytesIO(
|
||||
+ base64.b64decode(
|
||||
+ b"""
|
||||
+iVBORw0KGgoAAAANSUhEUgAAAx4AAAAUAQAAAAArMtZoAAAEwElEQVR4nABlAJr/AHVE4czCI/4u
|
||||
+Mc4b7vuds/xzjz5/3/7u/n9vMe7vnfH/9++vPn/xyf5zhxzjt8GHw8+2d83u8x27199/nxuQ6Od9
|
||||
+M43/5z2I+9n9ZtmDBwMQECDRQw/eQIQohJXxpBCNVE6QCCAAAAD//wBlAJr/AgALyj1t/wINwq0g
|
||||
+LeNZUworuN1cjTPIzrTX6ofHWeo3v336qPzfEwRmBnHTtf95/fglZK5N0PDgfRTslpGBvz7LFc4F
|
||||
+IUXBWQGjQ5MGCx34EDFPwXiY4YbYxavpnhHFrk14CDAAAAD//wBlAJr/AgKqRooH2gAgPeggvUAA
|
||||
+Bu2WfgPoAwzRAABAAAAAAACQgLz/3Uv4Gv+gX7BJgDeeGP6AAAD1NMDzKHD7ANWr3loYbxsAD791
|
||||
+NAADfcoIDyP44K/jv4Y63/Z+t98Ovt+ub4T48LAAAAD//wBlAJr/AuplMlADJAAAAGuAphWpqhMx
|
||||
+in0A/fRvAYBABPgBwBUgABBQ/sYAyv9g0bCHgOLoGAAAAAAAREAAwI7nr0ArYpow7aX8//9LaP/9
|
||||
+SjdavWA8ePHeBIKB//81/83ndznOaXx379wAAAD//wBlAJr/AqDxW+D3AABAAbUh/QMnbQag/gAY
|
||||
+AYDAAACgtgD/gOqAAAB5IA/8AAAk+n9w0AAA8AAAmFRJuPo27ciC0cD5oeW4E7KA/wD3ECMAn2tt
|
||||
+y8PgwH8AfAxFzC0JzeAMtratAsC/ffwAAAD//wBlAJr/BGKAyCAA4AAAAvgeYTAwHd1kmQF5chkG
|
||||
+ABoMIHcL5xVpTfQbUqzlAAAErwAQBgAAEOClA5D9il08AEh/tUzdCBsXkbgACED+woQg8Si9VeqY
|
||||
+lODCn7lmF6NhnAEYgAAA/NMIAAAAAAD//2JgjLZgVGBg5Pv/Tvpc8hwGBjYGJADjHDrAwPzAjv/H
|
||||
+/Wf3PzCwtzcwHmBgYGcwbZz8wHaCAQMDOwMDQ8MCBgYOC3W7mp+f0w+wHOYxO3OG+e376hsMZjk3
|
||||
+AAAAAP//YmCMY2A4wMAIN5e5gQETPD6AZisDAwMDgzSDAAPjByiHcQMDAwMDg1nOze1lByRu5/47
|
||||
+c4859311AYNZzg0AAAAA//9iYGDBYihOIIMuwIjGL39/fwffA8b//xv/P2BPtzzHwCBjUQAAAAD/
|
||||
+/yLFBrIBAAAA//9i1HhcwdhizX7u8NZNzyLbvT97bfrMf/QHI8evOwcSqGUJAAAA//9iYBB81iSw
|
||||
+pEE170Qrg5MIYydHqwdDQRMrAwcVrQAAAAD//2J4x7j9AAMDn8Q/BgYLBoaiAwwMjPdvMDBYM1Tv
|
||||
+oJodAAAAAP//Yqo/83+dxePWlxl3npsel9lvLfPcqlE9725C+acfVLMEAAAA//9i+s9gwCoaaGMR
|
||||
+evta/58PTEWzr21hufPjA8N+qlnBwAAAAAD//2JiWLci5v1+HmFXDqcnULE/MxgYGBj+f6CaJQAA
|
||||
+AAD//2Ji2FrkY3iYpYC5qDeGgeEMAwPDvwQBBoYvcTwOVLMEAAAA//9isDBgkP///0EOg9z35v//
|
||||
+Gc/eeW7BwPj5+QGZhANUswMAAAD//2JgqGBgYGBgqEMXlvhMPUsAAAAA//8iYDd1AAAAAP//AwDR
|
||||
+w7IkEbzhVQAAAABJRU5ErkJggg==
|
||||
+"""
|
||||
+ )
|
||||
+ )
|
||||
+ ),
|
||||
+ )
|
||||
+ return font
|
||||
diff --git a/tests/test_boundingbox_image.py b/tests/test_boundingbox_image.py
|
||||
index 21f19a7..414f0b1 100644
|
||||
--- a/tests/test_boundingbox_image.py
|
||||
+++ b/tests/test_boundingbox_image.py
|
||||
@@ -5,6 +5,7 @@
|
||||
|
||||
from PIL import Image, ImageDraw, ImageColor, ImageChops
|
||||
from svg.path.path import CubicBezier, QuadraticBezier, Line, Arc
|
||||
+from .font import get_better_than_nothing_font
|
||||
|
||||
|
||||
RED = ImageColor.getcolor("red", mode="RGB")
|
||||
@@ -57,17 +58,15 @@ def draw_boundingbox(self, path):
|
||||
sys.platform != "linux", reason="Different platforms have different fonts"
|
||||
)
|
||||
def test_image(self):
|
||||
- self.draw.text((10, 10), "This is an SVG line:")
|
||||
- self.draw.text(
|
||||
- (10, 100),
|
||||
- "The red line is a bounding box.",
|
||||
- )
|
||||
+ font = get_better_than_nothing_font()
|
||||
+ self.draw.text((10, 10), "This is an SVG line:", font=font)
|
||||
+ self.draw.text((10, 100), "The red line is a bounding box.", font=font)
|
||||
|
||||
line1 = Line(40 + 60j, 200 + 80j)
|
||||
self.draw_path(line1)
|
||||
self.draw_boundingbox(line1)
|
||||
|
||||
- self.draw.text((10, 140), "These are Arc segments:")
|
||||
+ self.draw.text((10, 140), "These are Arc segments:", font=font)
|
||||
arc1 = Arc(260 + 320j, 100 + 100j, 0, 1, 1, 260 + 319j)
|
||||
self.draw_path(arc1)
|
||||
self.draw_boundingbox(arc1)
|
||||
@@ -83,6 +82,7 @@ def test_image(self):
|
||||
self.draw.text(
|
||||
(10, 500),
|
||||
"Next we have a quadratic bezier curve, with one tangent:",
|
||||
+ font=font,
|
||||
)
|
||||
start = 30 + 600j
|
||||
control = 400 + 540j
|
||||
@@ -95,12 +95,16 @@ def test_image(self):
|
||||
self.draw.text(
|
||||
(10, 670),
|
||||
"The white dot is the control point, and the cyan lines are ",
|
||||
+ font=font,
|
||||
+ )
|
||||
+ self.draw.text(
|
||||
+ (10, 690), "illustrating the how the control point works.", font=font
|
||||
)
|
||||
- self.draw.text((10, 690), "illustrating the how the control point works.")
|
||||
|
||||
self.draw.text(
|
||||
(10, 730),
|
||||
"Lastly is a cubic bezier, with 2 tangents, and 2 control points:",
|
||||
+ font=font,
|
||||
)
|
||||
|
||||
start = 200 + 800j
|
||||
diff --git a/tests/test_image.py b/tests/test_image.py
|
||||
index 49967ea..ae3a357 100644
|
||||
--- a/tests/test_image.py
|
||||
+++ b/tests/test_image.py
|
||||
@@ -4,6 +4,7 @@
|
||||
from math import sqrt
|
||||
|
||||
from svg.path.path import CubicBezier, QuadraticBezier, Line, Arc
|
||||
+from .font import get_better_than_nothing_font
|
||||
|
||||
|
||||
RED = ImageColor.getcolor("red", mode="RGB")
|
||||
@@ -57,25 +58,30 @@ def draw_tangents(self, path, count):
|
||||
self.draw.line([c2t(p), c2t(tt + p)], fill=YELLOW, width=1)
|
||||
|
||||
def test_image(self):
|
||||
- self.draw.text((10, 10), "This is an SVG line:")
|
||||
+ font = get_better_than_nothing_font()
|
||||
+ self.draw.text((10, 10), "This is an SVG line:", font=font)
|
||||
self.draw.text(
|
||||
(10, 100),
|
||||
"The red line is a tangent, and the yellow is 90 degrees from that.",
|
||||
+ font=font,
|
||||
)
|
||||
|
||||
line1 = Line(40 + 60j, 200 + 80j)
|
||||
self.draw_path(line1)
|
||||
self.draw_tangents(line1, 1)
|
||||
|
||||
- self.draw.text((10, 140), "This is an Arc segment, almost a whole circle:")
|
||||
+ self.draw.text(
|
||||
+ (10, 140), "This is an Arc segment, almost a whole circle:", font=font
|
||||
+ )
|
||||
arc1 = Arc(260 + 320j, 100 + 100j, 0, 1, 1, 260 + 319j)
|
||||
self.draw_path(arc1)
|
||||
self.draw_tangents(arc1, 5)
|
||||
- self.draw.text((10, 460), "With five tangents.")
|
||||
+ self.draw.text((10, 460), "With five tangents.", font=font)
|
||||
|
||||
self.draw.text(
|
||||
(10, 500),
|
||||
"Next we have a quadratic bezier curve, with one tangent:",
|
||||
+ font=font,
|
||||
)
|
||||
start = 30 + 600j
|
||||
control = 400 + 540j
|
||||
@@ -88,12 +94,16 @@ def test_image(self):
|
||||
self.draw.text(
|
||||
(10, 670),
|
||||
"The white dot is the control point, and the cyan lines are ",
|
||||
+ font=font,
|
||||
+ )
|
||||
+ self.draw.text(
|
||||
+ (10, 690), "illustrating the how the control point works.", font=font
|
||||
)
|
||||
- self.draw.text((10, 690), "illustrating the how the control point works.")
|
||||
|
||||
self.draw.text(
|
||||
(10, 730),
|
||||
"Lastly is a cubic bezier, with 2 tangents, and 2 control points:",
|
||||
+ font=font,
|
||||
)
|
||||
|
||||
start = 30 + 800j
|
35
backports/py3-svgpath/APKBUILD
Normal file
35
backports/py3-svgpath/APKBUILD
Normal file
|
@ -0,0 +1,35 @@
|
|||
# Contributor: Aiden Grossman <agrossman154@yahoo.com>
|
||||
# Maintainer: Aiden Grossman <agrossman154@yahoo.com>
|
||||
pkgname=py3-svgpath
|
||||
pkgver=6.3
|
||||
pkgrel=0
|
||||
pkgdesc="SVG path and object parser"
|
||||
url="https://github.com/regebro/svg.path"
|
||||
arch="noarch"
|
||||
license="MIT"
|
||||
depends="python3"
|
||||
makedepends="py3-setuptools"
|
||||
checkdepends="py3-pytest py3-pillow"
|
||||
subpackages="$pkgname-pyc"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/regebro/svg.path/archive/refs/tags/$pkgver.tar.gz
|
||||
105_use-better-than-nothing-font.patch
|
||||
no-install-tests.patch"
|
||||
builddir="$srcdir/svg.path-$pkgver"
|
||||
|
||||
build() {
|
||||
python3 setup.py build
|
||||
}
|
||||
|
||||
check() {
|
||||
PYTHONPATH=build/lib pytest
|
||||
}
|
||||
|
||||
package() {
|
||||
python3 setup.py install --skip-build --root="$pkgdir"
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
fd9dd9e1e603be5e212e3eb247c9f3778203f5285397a4cdde4c038c3f31f7bc2b8904491c208256996e2fbd39b4e5f7ea58d964bd5d22bc09c57e4bc2c70317 py3-svgpath-6.3.tar.gz
|
||||
d12d32b0f6b075ee8602a7eee5dd1ddaa8f097fe3d471f2941fac0bba335641111eb2c0e2819dffea822f895833ffafa35baac80085cf759ca1ed8f7a6b92773 105_use-better-than-nothing-font.patch
|
||||
62ab1e0980c7fb797f74b81c937a68b6af1112fff293e6ddec6389a8e490a08e181c37217408b58ce3a2ae2afda7813bb3bbe57d5414cfc18e4e53e6d2f2ea5a no-install-tests.patch
|
||||
"
|
15
backports/py3-svgpath/no-install-tests.patch
Normal file
15
backports/py3-svgpath/no-install-tests.patch
Normal file
|
@ -0,0 +1,15 @@
|
|||
--- ./setup.py.orig
|
||||
+++ ./setup.py
|
||||
@@ -1,3 +1,3 @@
|
||||
-from setuptools import setup
|
||||
+from setuptools import setup, find_packages
|
||||
|
||||
-setup()
|
||||
+setup(packages=find_packages("src", exclude=["*tests"]))
|
||||
--- ./MANIFEST.in.orig
|
||||
+++ ./MANIFEST.in
|
||||
@@ -3,3 +3,4 @@
|
||||
|
||||
recursive-include src *.png
|
||||
|
||||
+global-exclude tests/*
|
64
backports/py3-trimesh/APKBUILD
Normal file
64
backports/py3-trimesh/APKBUILD
Normal file
|
@ -0,0 +1,64 @@
|
|||
# Contributor: Aiden Grossman <agrossman154@yahoo.com>
|
||||
# Maintainer: Aiden Grossman <agrossman154@yahoo.com>
|
||||
pkgname=py3-trimesh
|
||||
pkgver=3.22.1
|
||||
pkgrel=0
|
||||
pkgdesc="Python library for working with triangular meshes"
|
||||
url="https://github.com/mikedh/trimesh"
|
||||
# x86, armhf, armv7 Tests fail on int64 to int32 casts on these arches
|
||||
# s390x, no py3-rtree
|
||||
# riscv64, no py3-shapely
|
||||
arch="noarch !x86 !armhf !armv7 !s390x !riscv64"
|
||||
license="MIT"
|
||||
depends="
|
||||
py3-colorlog
|
||||
py3-jsonschema
|
||||
py3-lxml
|
||||
py3-mapbox-earcut
|
||||
py3-msgpack
|
||||
py3-networkx
|
||||
py3-numpy
|
||||
py3-pillow
|
||||
py3-requests
|
||||
py3-rtree
|
||||
py3-scipy
|
||||
py3-shapely
|
||||
py3-svgpath
|
||||
python3
|
||||
"
|
||||
makedepends="
|
||||
py3-gpep517
|
||||
py3-setuptools
|
||||
py3-wheel
|
||||
"
|
||||
checkdepends="py3-pytest py3-pytest-xdist py3-pyinstrument"
|
||||
options="!check" # Failing test units
|
||||
subpackages="$pkgname-pyc"
|
||||
source="$pkgname-$pkgver.tar.gz::https://github.com/mikedh/trimesh/archive/refs/tags/$pkgver.tar.gz"
|
||||
builddir="$srcdir/trimesh-$pkgver"
|
||||
|
||||
build() {
|
||||
gpep517 build-wheel \
|
||||
--wheel-dir .dist \
|
||||
--output-fd 3 3>&1 >&2
|
||||
}
|
||||
|
||||
check() {
|
||||
# test_obj.py: no format zae, probably needs more investigation
|
||||
python3 -m venv --clear --without-pip --system-site-packages .testenv
|
||||
.testenv/bin/python3 -m installer .dist/*.whl
|
||||
.testenv/bin/python3 -m pytest -n auto \
|
||||
--deselect tests/test_dae.py::DAETest::test_material_round \
|
||||
--deselect tests/test_dae.py::DAETest::test_obj_roundtrip \
|
||||
--deselect tests/test_light.py::LightTests::test_scene \
|
||||
--deselect tests/test_obj.py::OBJTest::test_multi_nodupe
|
||||
}
|
||||
|
||||
package() {
|
||||
python3 -m installer -d "$pkgdir" \
|
||||
.dist/*.whl
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
27952e0d29ccd110d4087b4144e0923706bed3cd0734e7a17d7f55738c6322849c5dad04ab4ecfe0638bc16d65d1e647d08905a396dd6ebd1f78c833a8b95636 py3-trimesh-3.22.1.tar.gz
|
||||
"
|
46
backports/py3-utils/APKBUILD
Normal file
46
backports/py3-utils/APKBUILD
Normal file
|
@ -0,0 +1,46 @@
|
|||
# Contributor: Marian Buschsieweke <marian.buschsieweke@ovgu.de>
|
||||
# Maintainer: Marian Buschsieweke <marian.buschsieweke@ovgu.de>
|
||||
pkgname=py3-utils
|
||||
_pkgname=python-utils
|
||||
pkgver=3.8.1
|
||||
pkgrel=0
|
||||
pkgdesc="Convenient utilities not included with the standard Python install"
|
||||
url="https://github.com/WoLpH/python-utils"
|
||||
arch="noarch"
|
||||
license="BSD-3-Clause"
|
||||
makedepends="py3-gpep517 py3-setuptools py3-wheel"
|
||||
checkdepends="py3-pytest py3-pytest-asyncio py3-loguru"
|
||||
subpackages="$pkgname-pyc"
|
||||
source="
|
||||
https://files.pythonhosted.org/packages/source/${_pkgname:0:1}/$_pkgname/$_pkgname-$pkgver.tar.gz
|
||||
|
||||
fix-setuptools-deprecation.patch
|
||||
pytest.patch
|
||||
typing-ext.patch
|
||||
"
|
||||
|
||||
builddir="$srcdir/$_pkgname-$pkgver"
|
||||
|
||||
build() {
|
||||
gpep517 build-wheel \
|
||||
--wheel-dir .dist \
|
||||
--output-fd 3 3>&1 >&2
|
||||
}
|
||||
|
||||
check() {
|
||||
python3 -m venv --clear --without-pip --system-site-packages .testenv
|
||||
.testenv/bin/python3 -m installer .dist/*.whl
|
||||
.testenv/bin/python3 -m pytest
|
||||
}
|
||||
|
||||
package() {
|
||||
python3 -m installer -d "$pkgdir" \
|
||||
.dist/*.whl
|
||||
}
|
||||
|
||||
sha512sums="
|
||||
ccba9651cc99a8f4e3f13e7ff66a43a40d2e85bc735b6246524269495ff321225a0dcad9abd03ca9cb61b4b1b35a27009fac3fe87e3f748ffc5c87a956acd335 python-utils-3.8.1.tar.gz
|
||||
c001453b958b8231806ef6a04fcd21e1d252eeec36d4e6cbfce35f0662bae76c3f7484e0e8ff06d68a3e9cc7d19c9cdbf792c13e0101c580bb5e8de9d837fde7 fix-setuptools-deprecation.patch
|
||||
99cc91ad155f8140aedc9420659c0e560a4d816ac1f85468ddb3a9fdc87526d591da916441d63b601146a86fb2c26f61c9dfbe37e31b86ee605f732e24e7b465 pytest.patch
|
||||
d68943e3301eaafe2a9ea27f382a2eba1ce98149d8cbbe91aa9222cf76a8f7bebba3d9dbfced54bd88c90688a6e18373f011fbb83cd36cbf2ecd3e36b034aa22 typing-ext.patch
|
||||
"
|
11
backports/py3-utils/fix-setuptools-deprecation.patch
Normal file
11
backports/py3-utils/fix-setuptools-deprecation.patch
Normal file
|
@ -0,0 +1,11 @@
|
|||
--- a/setup.cfg
|
||||
+++ b/setup.cfg
|
||||
@@ -2,7 +2,7 @@
|
||||
test = pytest
|
||||
|
||||
[metadata]
|
||||
-description-file = README.rst
|
||||
+description_file = README.rst
|
||||
|
||||
[nosetests]
|
||||
verbosity = 3
|
14
backports/py3-utils/pytest.patch
Normal file
14
backports/py3-utils/pytest.patch
Normal file
|
@ -0,0 +1,14 @@
|
|||
diff --git a/pytest.ini b/pytest.ini
|
||||
index a8e632a..e28ed7d 100644
|
||||
--- a/pytest.ini
|
||||
+++ b/pytest.ini
|
||||
@@ -5,9 +5,6 @@ python_files =
|
||||
|
||||
addopts =
|
||||
--doctest-modules
|
||||
- --cov python_utils
|
||||
- --cov-report term-missing
|
||||
-; --mypy
|
||||
|
||||
doctest_optionflags =
|
||||
ALLOW_UNICODE
|
22
backports/py3-utils/typing-ext.patch
Normal file
22
backports/py3-utils/typing-ext.patch
Normal file
|
@ -0,0 +1,22 @@
|
|||
diff --git a/python_utils/types.py b/python_utils/types.py
|
||||
index 01c319a..79ef950 100644
|
||||
--- a/python_utils/types.py
|
||||
+++ b/python_utils/types.py
|
||||
@@ -1,7 +1,6 @@
|
||||
# pyright: reportWildcardImportFromLibrary=false
|
||||
import datetime
|
||||
import decimal
|
||||
-from typing_extensions import * # type: ignore # noqa: F403
|
||||
from typing import * # type: ignore # pragma: no cover # noqa: F403
|
||||
from types import * # type: ignore # pragma: no cover # noqa: F403
|
||||
|
||||
--- a/setup.py
|
||||
+++ b/setup.py
|
||||
@@ -29,7 +29,6 @@
|
||||
),
|
||||
package_data={'python_utils': ['py.typed']},
|
||||
long_description=long_description,
|
||||
- install_requires=['typing_extensions>3.10.0.2'],
|
||||
tests_require=['pytest'],
|
||||
extras_require={
|
||||
'loguru': [
|
Loading…
Reference in a new issue