commit 8c818af8a89047df08988c4fda04251d214e325d
parent e456da8fbb0c82f7b18e45a0d9e49b07082aea97
Author: Nikolay Korotkiy <sikmir@gmail.com>
Date: Fri, 1 Jan 2021 03:41:58 +0300
Add polyvectorization
Diffstat:
4 files changed, 88 insertions(+), 1 deletion(-)
diff --git a/nix/sources.json b/nix/sources.json
@@ -843,6 +843,20 @@
"url": "https://github.com/wladich/ozi_map/archive/4d6bd3f234960ba90d82e6d58da9c1bf4677eb16.tar.gz",
"url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
},
+ "polyvectorization": {
+ "branch": "master",
+ "builtin": false,
+ "date": "2019-08-23T14:52:46Z",
+ "description": "Reference implementation of Vectorization of Line Drawings via PolyVector Fields",
+ "homepage": "https://github.com/bmpix/PolyVectorization",
+ "owner": "bmpix",
+ "repo": "PolyVectorization",
+ "rev": "bceb8e2a08cca29cef1df074eb1a1f6450cc163f",
+ "sha256": "0d8281q3rdxzrxr5y9bxjkq2s2sfl8fgkk9kqpmpp3z5hxg893jq",
+ "type": "tarball",
+ "url": "https://github.com/bmpix/PolyVectorization/archive/bceb8e2a08cca29cef1df074eb1a1f6450cc163f.tar.gz",
+ "url_template": "https://github.com/<owner>/<repo>/archive/<rev>.tar.gz"
+ },
"py-staticmaps": {
"branch": "master",
"builtin": false,
diff --git a/pkgs/default.nix b/pkgs/default.nix
@@ -189,9 +189,12 @@ lib.makeScope newScope (
inherit sources;
inherit (perlPackages) GeoOpenstreetmapParser MatchSimple MathPolygon MathPolygonTree TreeR;
};
- py-staticmaps = callPackage ./tools/geo/py-staticmaps { };
phyghtmap = callPackage ./tools/geo/phyghtmap { };
+ polyvectorization = libsForQt5.callPackage ./tools/graphics/polyvectorization {
+ inherit sources;
+ };
ptunnel = callPackage ./tools/networking/ptunnel { };
+ py-staticmaps = callPackage ./tools/geo/py-staticmaps { };
saait = callPackage ./tools/misc/saait { };
sendmap20 = callPackage ./tools/geo/sendmap20 { };
stagit = callPackage ./tools/misc/stagit { };
diff --git a/pkgs/tools/graphics/polyvectorization/default.nix b/pkgs/tools/graphics/polyvectorization/default.nix
@@ -0,0 +1,30 @@
+{ lib, mkDerivation, cmake, boost165, eigen, opencv2, sources }:
+
+mkDerivation {
+ pname = "polyvectorization";
+ version = lib.substring 0 10 sources.polyvectorization.date;
+
+ src = sources.polyvectorization;
+
+ patches = [ ./with-gui.patch ];
+
+ postPatch = ''
+ substituteInPlace src/main.cpp \
+ --replace "#define WITH_GUI 1" "//#define WITH_GUI 1"
+ '';
+
+ nativeBuildInputs = [ cmake ];
+
+ buildInputs = [ boost165 eigen opencv2 ];
+
+ NIX_CFLAGS_COMPILE = "-fpermissive";
+
+ installPhase = "install -Dm755 polyvector_thing -t $out/bin";
+
+ meta = with lib; {
+ inherit (sources.polyvectorization) description homepage;
+ license = licenses.mit;
+ maintainers = [ maintainers.sikmir ];
+ platforms = platforms.unix;
+ };
+}
+\ No newline at end of file
diff --git a/pkgs/tools/graphics/polyvectorization/with-gui.patch b/pkgs/tools/graphics/polyvectorization/with-gui.patch
@@ -0,0 +1,39 @@
+diff --git i/src/main.cpp w/src/main.cpp
+index 5ccdfa9..1d04516 100644
+--- i/src/main.cpp
++++ w/src/main.cpp
+@@ -1,6 +1,6 @@
+ #include "stdafx.h"
+ #define WITH_GUI 1
+-#ifdef _WIN32
++#if 1
+ #include <QtCore/QCoreApplication>
+ #include "mainwindow.h"
+ #include <QElapsedTimer>
+@@ -263,7 +263,7 @@ std::string type2str(int type) {
+
+ int main(int argc, char *argv[])
+ {
+-#ifdef _WIN32
++#if 1
+ QApplication a(argc, argv);
+ #endif
+ using namespace cv;
+@@ -292,7 +292,7 @@ int main(int argc, char *argv[])
+ bwImg = Scalar(255) - bwImg;
+ m = bwImg.rows; n = bwImg.cols; //m: height, n: width
+
+-#ifdef _WIN32
++#if 1
+ QElapsedTimer timer;
+ timer.start();
+ #else
+@@ -548,7 +548,7 @@ int main(int argc, char *argv[])
+ #ifdef WITH_GUI
+ mw.setVectorization("Final", newVectorization);
+ #endif
+-#ifdef _WIN32
++#if 1
+ std::cout << "Total time: " << timer.elapsed()/1000 << " s" << std::endl;
+ #endif
+ svg::Image bgImg(filename, n, m, -0.5, 0, 0.6);