1
0
Fork 0
mirror of https://github.com/shlomif/PySolFC.git synced 2025-04-05 00:02:29 -04:00

progress with the svg.

This commit is contained in:
Shlomi Fish 2019-04-28 19:03:16 +03:00
parent 5a02d487d2
commit cfc2b047b4
5 changed files with 89 additions and 29 deletions

View file

@ -3,7 +3,34 @@ cmake_minimum_required(VERSION 3.12)
cmake_policy(VERSION 3.12)
find_package(ECM 5 REQUIRED CONFIG)
find_package(Qt5 COMPONENTS Core Gui REQUIRED)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${ECM_MODULE_PATH} ${ECM_KDE_MODULE_DIR})
find_package(Qt5 COMPONENTS Core Gui Svg REQUIRED)
find_package(KF5 "5.0.0" REQUIRED COMPONENTS
Completion
Config
ConfigWidgets
CoreAddons
Crash
DBusAddons
DocTools
GuiAddons
I18n
KIO
NewStuff
WidgetsAddons
XmlGui
)
find_package(Shiboken2 "2.0.0" REQUIRED)
find_package(PySide2 "2.0.0" REQUIRED)
find_package(KF5KDEGames 4.9.0 REQUIRED)
include(FeatureSummary)
include(ECMAddAppIcon)
include(ECMInstallIcons)
include(KDEInstallDirs)
include(KDECompilerSettings NO_POLICY_SCOPE)
include(KDECMakeSettings)
include(ECMQtDeclareLoggingCategory)
include(GenerateExportHeader)
get_target_property(QtCore_location Qt5::Core LOCATION)
get_filename_component(QtCore_libdir ${QtCore_location} DIRECTORY)
@ -18,7 +45,7 @@ set(bindings_library "Shiboken2QtExample")
set(wrapped_header ${CMAKE_SOURCE_DIR}/bindings.h)
set(typesystem_file ${CMAKE_SOURCE_DIR}/bindings.xml)
set(generated_sources
${CMAKE_CURRENT_BINARY_DIR}/${bindings_library}/kcarddeck_wrapper_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/${bindings_library}/mykcarddeck_wrapper.cpp
${CMAKE_CURRENT_BINARY_DIR}/${bindings_library}/shiboken2qtexample_module_wrapper.cpp)
find_package(Python3 REQUIRED COMPONENTS Interpreter Development)
@ -70,9 +97,27 @@ set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
set(CMAKE_INSTALL_RPATH ${shiboken2_module_path} ${CMAKE_CURRENT_SOURCE_DIR} ${QtCore_libdir})
set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
set(${sample_library}_sources qobjectwithenum.cpp)
set(${sample_library}_sources kcardgame.cpp
"${CMAKE_CURRENT_SOURCE_DIR}/../kpat/libkcardgame/kabstractcarddeck.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/../kpat/libkcardgame/kcard.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/../build-kpat/libkcardgame/libkcardgame_debug.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/../kpat/libkcardgame/kcarddeck.cpp"
"${CMAKE_CURRENT_SOURCE_DIR}/../kpat/libkcardgame/kcardtheme.cpp"
)
add_library(${sample_library} SHARED ${${sample_library}_sources})
target_link_libraries(${sample_library} Qt5::Core Qt5::Gui)
target_link_libraries(${sample_library}
KF5::Crash
KF5::DBusAddons
KF5::I18n
KF5::KIOCore
KF5KDEGames
)
target_link_libraries( ${sample_library} KF5::NewStuff KF5::GuiAddons Qt5::Svg KF5::Completion KF5::I18n)
target_link_libraries(${sample_library} Shiboken2::libshiboken)
target_link_libraries(${sample_library} PySide2::pyside2)
set_property(TARGET ${sample_library} PROPERTY PREFIX "")
get_target_property(qtgui_lib_includes Qt5::Gui INTERFACE_INCLUDE_DIRECTORIES)
@ -116,6 +161,7 @@ add_library(${bindings_library} MODULE ${${bindings_library}_sources})
target_include_directories(${bindings_library} PRIVATE ${python_include_dir})
target_include_directories(${bindings_library} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../kpat/libkcardgame")
target_include_directories(${bindings_library} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../build-kpat/")
target_include_directories(${bindings_library} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../build-kpat/libkcardgame")
target_include_directories(${bindings_library} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../kpat/libkcardgame/include")
target_include_directories(${bindings_library} PRIVATE ${PYSIDE2_DIR}/include/)
@ -125,6 +171,18 @@ target_include_directories(${bindings_library} PRIVATE "/usr/include/PySide2/QtG
target_include_directories(${bindings_library} PRIVATE ${PYSIDE2_DIR}/include/QtCore)
target_include_directories(${bindings_library} PRIVATE ${shiboken_include_dir})
target_include_directories(${bindings_library} PRIVATE ${CMAKE_SOURCE_DIR})
target_include_directories(${sample_library} PRIVATE ${python_include_dir})
target_include_directories(${sample_library} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../kpat/libkcardgame")
target_include_directories(${sample_library} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../build-kpat/")
target_include_directories(${sample_library} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../build-kpat/libkcardgame")
target_include_directories(${sample_library} PRIVATE "${CMAKE_CURRENT_SOURCE_DIR}/../kpat/libkcardgame/include")
target_include_directories(${sample_library} PRIVATE ${PYSIDE2_DIR}/include/)
target_include_directories(${sample_library} PRIVATE "/usr/include/PySide2")
target_include_directories(${sample_library} PRIVATE "/usr/include/PySide2/QtCore/")
target_include_directories(${sample_library} PRIVATE "/usr/include/PySide2/QtGui/")
target_include_directories(${sample_library} PRIVATE ${PYSIDE2_DIR}/include/QtCore)
target_include_directories(${sample_library} PRIVATE ${shiboken_include_dir})
target_include_directories(${sample_library} PRIVATE ${CMAKE_SOURCE_DIR})
target_link_libraries(${bindings_library} PRIVATE ${shiboken_shared_libraries})
target_link_libraries(${bindings_library} PRIVATE ${sample_library})
@ -134,6 +192,7 @@ set_property(TARGET ${bindings_library} PROPERTY PREFIX "")
set_property(TARGET ${bindings_library} PROPERTY OUTPUT_NAME
"${bindings_library}${PYTHON_EXTENSION_SUFFIX}")
generate_export_header(${sample_library} BASE_NAME libkcardgame)
install(TARGETS ${bindings_library} ${sample_library}
LIBRARY DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}
RUNTIME DESTINATION ${CMAKE_CURRENT_SOURCE_DIR}

View file

@ -1,6 +1,9 @@
<?xml version="1.0"?>
<typesystem package="Shiboken2QtExample">
<load-typesystem name="typesystem_core.xml" generate="no"/>
<object-type name="KCardDeck_wrapper">
<load-typesystem name="typesystem_gui.xml" generate="no"/>
<object-type name="MyKCardDeck">
<modify-function signature="get_card_pixmap(int)">
</modify-function>
</object-type>
</typesystem>

View file

@ -1,20 +1,15 @@
/* A file to test imorting C modules for handling arrays to Python */
#include "kcardgame.hpp"
#include <QPixmap>
#include "KCardDeck"
#include "KCardTheme"
class KCardDeck_wrapper
{
public:
KCardDeck * d;
KCardDeck_wrapper()
MyKCardDeck::MyKCardDeck()
{
int argc = 1;
char * argv[2]={"pysol",NULL};
app = new QGuiApplication(argc, argv);
d = new KCardDeck( KCardTheme(), nullptr);
}
QPixmap *get_card_pixmap(int i)
QPixmap *MyKCardDeck::get_card_pixmap(int i)
{
auto ret = new QPixmap(d->cardPixmap(i, true));
return ret;
}
};

View file

@ -1,18 +1,16 @@
#pragma once
#include <QPixmap>
#include <QObject>
#include <QGuiApplication>
#include "KCardDeck"
#include "KCardTheme"
class KCardDeck_wrapper
class Q_DECL_EXPORT MyKCardDeck: public QObject
{
Q_OBJECT
public:
QGuiApplication* app;
KCardDeck * d;
KCardDeck_wrapper()
{
d = new KCardDeck( KCardTheme(), nullptr);
}
QPixmap *get_card_pixmap(int i)
{
auto ret = new QPixmap(d->cardPixmap(i, true));
return ret;
}
explicit MyKCardDeck();
public slots:
Q_DECL_EXPORT QPixmap *get_card_pixmap(int i);
};

View file

@ -5,11 +5,14 @@
# https://stackoverflow.com/questions/22583035
# Thanks!
import cairo
from PySide2.QtGui import QPixmap # noqa: F401
from gi import require_version
require_version('Rsvg', '2.0')
from gi.repository import Rsvg # noqa: E402
from Shiboken2QtExample import MyKCardDeck
import cairo
# from gi import require_version
# require_version('Rsvg', '2.0')
# from gi.repository import Rsvg # noqa: E402
import pysnooper # noqa: E402
@ -21,7 +24,8 @@ class SVGManager:
"""docstring for SVGManager"""
def __init__(self, filename):
self.filename = filename
self.svg = Rsvg.Handle().new_from_file(filename)
# self.svg = Rsvg.Handle().new_from_file(filename)
self.d = MyKCardDeck()
# Taken from https://stackoverflow.com/questions/44471795
# Under MIT License - thanks.
@ -39,6 +43,7 @@ class SVGManager:
return img
def render_fragment(self, id_, width, height):
return Image.fromqpixmap(self.d.get_card_pixmap(6))
id__ = '#' + id_
"""docstring for render_"""
dims = self.svg.get_dimensions_sub(id__)[1]