Compare commits
No commits in common. "1b1f742ae110685ba3c589a36accce4d61c77945" and "daf12a7d8c84c67ad2213bdc1baf74afd9f5d726" have entirely different histories.
1b1f742ae1
...
daf12a7d8c
@ -30,7 +30,6 @@ pkg_search_module(GLIB REQUIRED glib-2.0)
|
|||||||
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
|
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
|
||||||
pkg_check_modules(CAIRO REQUIRED cairo)
|
pkg_check_modules(CAIRO REQUIRED cairo)
|
||||||
|
|
||||||
include_directories(${GLIB_INCLUDE_DIRS} ${GTK3_INCLUDE_DIRS} ${CAIRO_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
|
||||||
add_subdirectory(plugins)
|
add_subdirectory(plugins)
|
||||||
|
|
||||||
add_compile_options(-Wall -Wextra -Wold-style-declaration -Wuninitialized -Wmaybe-uninitialized -Wunused-parameter)
|
add_compile_options(-Wall -Wextra -Wold-style-declaration -Wuninitialized -Wmaybe-uninitialized -Wunused-parameter)
|
||||||
@ -49,6 +48,7 @@ add_subdirectory(doxygen)
|
|||||||
add_subdirectory(translations)
|
add_subdirectory(translations)
|
||||||
add_subdirectory(version)
|
add_subdirectory(version)
|
||||||
|
|
||||||
|
include_directories(${GLIB_INCLUDE_DIRS} ${GTK3_INCLUDE_DIRS} ${CAIRO_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||||
link_directories(${GLIB_LINK_DIRS} ${GTK3_LINK_DIRS} ${CAIRO_LINK_DIRS})
|
link_directories(${GLIB_LINK_DIRS} ${GTK3_LINK_DIRS} ${CAIRO_LINK_DIRS})
|
||||||
add_definitions(${GLIB2_CFLAGS_OTHER})
|
add_definitions(${GLIB2_CFLAGS_OTHER})
|
||||||
|
|
||||||
@ -70,19 +70,15 @@ set(SOURCE
|
|||||||
${LAYER_SELECTOR_SOURCES}
|
${LAYER_SELECTOR_SOURCES}
|
||||||
)
|
)
|
||||||
|
|
||||||
set(SOURCE_GENERATED
|
add_executable(${PROJECT_NAME} ${SOURCE} ${CMAKE_CURRENT_BINARY_DIR}/resources/resources.c)
|
||||||
${CMAKE_CURRENT_BINARY_DIR}/resources/resources.c
|
|
||||||
)
|
|
||||||
|
|
||||||
SET_SOURCE_FILES_PROPERTIES(${SOURCE_GENERATED} PROPERTIES GENERATED 1)
|
|
||||||
|
|
||||||
add_executable(${PROJECT_NAME} ${SOURCE} ${SOURCE_GENERATED})
|
|
||||||
add_dependencies(${PROJECT_NAME} glib-resources)
|
add_dependencies(${PROJECT_NAME} glib-resources)
|
||||||
add_dependencies(${PROJECT_NAME} version)
|
add_dependencies(${PROJECT_NAME} version)
|
||||||
add_dependencies(${PROJECT_NAME} translations)
|
add_dependencies(${PROJECT_NAME} translations)
|
||||||
|
SET_SOURCE_FILES_PROPERTIES(${CMAKE_CURRENT_BINARY_DIR}/resources/resources.c PROPERTIES GENERATED 1)
|
||||||
target_link_libraries(${PROJECT_NAME} ${GLIB_LDFLAGS} ${GTK3_LDFLAGS} ${CAIRO_LDFLAGS} m version ${CMAKE_DL_LIBS})
|
target_link_libraries(${PROJECT_NAME} ${GLIB_LDFLAGS} ${GTK3_LDFLAGS} ${CAIRO_LDFLAGS} m version ${CMAKE_DL_LIBS})
|
||||||
install (TARGETS ${PROJECT_NAME}
|
install (TARGETS ${PROJECT_NAME}
|
||||||
RUNTIME
|
RUNTIME
|
||||||
DESTINATION bin
|
DESTINATION bin
|
||||||
)
|
)
|
||||||
|
|
||||||
|
add_custom_target(documentation DEPENDS doxygen)
|
||||||
|
@ -56,7 +56,7 @@ static int create_renderers(char **renderers,
|
|||||||
char **output_file_names,
|
char **output_file_names,
|
||||||
gboolean tex_layers,
|
gboolean tex_layers,
|
||||||
gboolean tex_standalone,
|
gboolean tex_standalone,
|
||||||
const struct external_renderer_params *ext_params,
|
const char *so_path,
|
||||||
GList **renderer_list,
|
GList **renderer_list,
|
||||||
LayerSettings *layer_settings)
|
LayerSettings *layer_settings)
|
||||||
{
|
{
|
||||||
@ -100,13 +100,11 @@ static int create_renderers(char **renderers,
|
|||||||
} else if (!strcmp(current_renderer, "svg")) {
|
} else if (!strcmp(current_renderer, "svg")) {
|
||||||
output_renderer = GDS_RENDER_OUTPUT_RENDERER(cairo_renderer_new_svg());
|
output_renderer = GDS_RENDER_OUTPUT_RENDERER(cairo_renderer_new_svg());
|
||||||
} else if (!strcmp(current_renderer, "ext")) {
|
} else if (!strcmp(current_renderer, "ext")) {
|
||||||
if (!ext_params->so_path) {
|
if (!so_path) {
|
||||||
fprintf(stderr, _("Please specify shared object for external renderer. Will ignore this renderer.\n"));
|
fprintf(stderr, _("Please specify shared object for external renderer. Will ignore this renderer.\n"));
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
output_renderer = GDS_RENDER_OUTPUT_RENDERER(
|
output_renderer = GDS_RENDER_OUTPUT_RENDERER(external_renderer_new_with_so(so_path));
|
||||||
external_renderer_new_with_so_and_param(ext_params->so_path,
|
|
||||||
ext_params->cli_params));
|
|
||||||
} else {
|
} else {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -140,7 +138,7 @@ int command_line_convert_gds(const char *gds_name,
|
|||||||
char **renderers,
|
char **renderers,
|
||||||
char **output_file_names,
|
char **output_file_names,
|
||||||
const char *layer_file,
|
const char *layer_file,
|
||||||
struct external_renderer_params *ext_param,
|
const char *so_path,
|
||||||
gboolean tex_standalone,
|
gboolean tex_standalone,
|
||||||
gboolean tex_layers,
|
gboolean tex_layers,
|
||||||
double scale)
|
double scale)
|
||||||
@ -167,7 +165,7 @@ int command_line_convert_gds(const char *gds_name,
|
|||||||
|
|
||||||
/* Create renderers */
|
/* Create renderers */
|
||||||
if (create_renderers(renderers, output_file_names, tex_layers, tex_standalone,
|
if (create_renderers(renderers, output_file_names, tex_layers, tex_standalone,
|
||||||
ext_param, &renderer_list, layer_sett))
|
so_path, &renderer_list, layer_sett))
|
||||||
goto ret_destroy_layer_mapping;
|
goto ret_destroy_layer_mapping;
|
||||||
|
|
||||||
|
|
||||||
|
@ -1,19 +1,10 @@
|
|||||||
find_package(Doxygen)
|
find_package(Doxygen)
|
||||||
|
|
||||||
if (DOXYGEN_FOUND)
|
if (DOXYGEN_FOUND)
|
||||||
add_custom_target(documentation DEPENDS doxygen doxygen-pdf)
|
add_custom_target(doxygen
|
||||||
|
|
||||||
add_custom_target(doxygen
|
|
||||||
COMMAND ./build-doxygen.sh "${PROJECT_BINARY_DIR}"
|
COMMAND ./build-doxygen.sh "${PROJECT_BINARY_DIR}"
|
||||||
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
|
||||||
COMMENT "Generating documentation with Doxygen")
|
COMMENT "Generating documentation with Doxygen")
|
||||||
|
|
||||||
add_custom_target(
|
|
||||||
doxygen-pdf
|
|
||||||
COMMAND make
|
|
||||||
WORKING_DIRECTORY "${PROJECT_BINARY_DIR}/latex"
|
|
||||||
DEPENDS doxygen
|
|
||||||
)
|
|
||||||
else (DOXYGEN_FOUND)
|
else (DOXYGEN_FOUND)
|
||||||
message("Doxygen needs to be installed to generate the doxygen documentation")
|
message("Doxygen needs to be installed to generate the doxygen documentation")
|
||||||
endif (DOXYGEN_FOUND)
|
endif (DOXYGEN_FOUND)
|
||||||
|
@ -9,18 +9,7 @@
|
|||||||
* Property Name | Description
|
* Property Name | Description
|
||||||
* -----------------|----------------------------------------------------------------
|
* -----------------|----------------------------------------------------------------
|
||||||
* shared-object-path | Path to the shared object used for rendering
|
* shared-object-path | Path to the shared object used for rendering
|
||||||
* param-string | Command line parameters passed to external renderer's init function
|
|
||||||
*
|
*
|
||||||
* All these properties have to be set for rendering.
|
* All these properties have to be set for rendering.
|
||||||
*
|
*
|
||||||
* @section ExternalRendererFuncs Necessary Functions
|
|
||||||
*
|
|
||||||
* The following functions and variables are necessary for an external renderer to implement:
|
|
||||||
*
|
|
||||||
* Code Define | Prototype | Description
|
|
||||||
* ---------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------
|
|
||||||
* @ref EXTERNAL_LIBRARY_RENDER_FUNCTION | int EXTERNAL_LIBRARY_RENDER_FUNCTION(struct gds_cell *toplevel, GList *layer_info_list, const char *output_file_name, double scale) | Render cell to output file
|
|
||||||
* @ref EXTERNAL_LIBRARY_INIT_FUNCTION | int EXTERNAL_LIBRARY_INIT_FUNCTION(const char *option_string, const char *version_string) | Init function. Executed before rendering. This is given the command line parameters specified for the external renderer and the version string of the currently running gds-render program.
|
|
||||||
* @ref EXTERNAL_LIBRARY_FORK_REQUEST | int EXTERNAL_LIBRARY_FORK_REQUEST; | The pure presence of this integer results in the execution inside a subprocess of hte whole shared object's code
|
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
|
@ -33,21 +33,6 @@
|
|||||||
|
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief External renderer paramameters to command line renderer
|
|
||||||
*/
|
|
||||||
struct external_renderer_params {
|
|
||||||
/**
|
|
||||||
* @brief Path to shared object
|
|
||||||
*/
|
|
||||||
char *so_path;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Command line parameters given
|
|
||||||
*/
|
|
||||||
char *cli_params;
|
|
||||||
};
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Convert GDS according to command line parameters
|
* @brief Convert GDS according to command line parameters
|
||||||
* @param gds_name Path to GDS File
|
* @param gds_name Path to GDS File
|
||||||
@ -55,7 +40,7 @@ struct external_renderer_params {
|
|||||||
* @param renderers Renderer ids
|
* @param renderers Renderer ids
|
||||||
* @param output_file_names Output file names
|
* @param output_file_names Output file names
|
||||||
* @param layer_file Layer mapping file
|
* @param layer_file Layer mapping file
|
||||||
* @param ext_param Settings for external library renderer
|
* @param so_path Shared object
|
||||||
* @param tex_standalone Standalone TeX
|
* @param tex_standalone Standalone TeX
|
||||||
* @param tex_layers TeX OCR layers
|
* @param tex_layers TeX OCR layers
|
||||||
* @param scale Scale value
|
* @param scale Scale value
|
||||||
@ -66,7 +51,7 @@ int command_line_convert_gds(const char *gds_name,
|
|||||||
char **renderers,
|
char **renderers,
|
||||||
char **output_file_names,
|
char **output_file_names,
|
||||||
const char *layer_file,
|
const char *layer_file,
|
||||||
struct external_renderer_params *ext_param,
|
const char *so_path,
|
||||||
gboolean tex_standalone,
|
gboolean tex_standalone,
|
||||||
gboolean tex_layers,
|
gboolean tex_layers,
|
||||||
double scale);
|
double scale);
|
||||||
|
@ -1,51 +0,0 @@
|
|||||||
#ifndef __EXTERNAL_RENDERER_INTERFACES_H__
|
|
||||||
#define __EXTERNAL_RENDERER_INTERFACES_H__
|
|
||||||
|
|
||||||
#ifndef xstr
|
|
||||||
|
|
||||||
#define xstr(a) str(a)
|
|
||||||
#define str(a) #a
|
|
||||||
|
|
||||||
#endif /* xstr */
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @addtogroup ExternalRenderer
|
|
||||||
* @{
|
|
||||||
*/
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Function name expected to be found in external library for rendering.
|
|
||||||
*
|
|
||||||
* The function has to be defined as follows:
|
|
||||||
* @code
|
|
||||||
* int EXTERNAL_LIBRARY_RENDER_FUNCTION(struct gds_cell *toplevel, GList *layer_info_list, const char *output_file_name, double scale);
|
|
||||||
* @endcode
|
|
||||||
*/
|
|
||||||
#define EXTERNAL_LIBRARY_RENDER_FUNCTION exported_render_cell_to_file
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Function name expected to be found in external library for initialization.
|
|
||||||
*
|
|
||||||
* @code
|
|
||||||
* int EXTERNAL_LIBRARY_INIT_FUNCTION(const char *option_string, const char *version_string);
|
|
||||||
* @endcode
|
|
||||||
*/
|
|
||||||
#define EXTERNAL_LIBRARY_INIT_FUNCTION exported_init
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Global integer specified by an external renderer to signal, that the init and render functions shall be executed in a subprocess
|
|
||||||
*
|
|
||||||
* The pure presence of this symbol name causes forking. The content of this variable is don't care.
|
|
||||||
* @note Use this if you mess with the internal structures of gds-render
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
#define EXTERNAL_LIBRARY_FORK_REQUEST exported_fork_request
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @brief Define for declaring the exported functions
|
|
||||||
*/
|
|
||||||
#define FUNC_DECL(FUNC) FUNC
|
|
||||||
|
|
||||||
/** @} */
|
|
||||||
|
|
||||||
#endif /* __EXTERNAL_RENDERER_INTERFACES_H__ */
|
|
@ -33,7 +33,6 @@
|
|||||||
|
|
||||||
#include <gds-render/output-renderers/gds-output-renderer.h>
|
#include <gds-render/output-renderers/gds-output-renderer.h>
|
||||||
#include <gds-render/gds-utils/gds-types.h>
|
#include <gds-render/gds-utils/gds-types.h>
|
||||||
#include <gds-render/output-renderers/external-renderer-interfaces.h>
|
|
||||||
|
|
||||||
G_BEGIN_DECLS
|
G_BEGIN_DECLS
|
||||||
|
|
||||||
@ -41,6 +40,16 @@ G_BEGIN_DECLS
|
|||||||
|
|
||||||
G_DECLARE_FINAL_TYPE(ExternalRenderer, external_renderer, GDS_RENDER, EXTERNAL_RENDERER, GdsOutputRenderer)
|
G_DECLARE_FINAL_TYPE(ExternalRenderer, external_renderer, GDS_RENDER, EXTERNAL_RENDERER, GdsOutputRenderer)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief function name expected to be found in external library.
|
||||||
|
*
|
||||||
|
* The function has to be defined as follows:
|
||||||
|
* @code
|
||||||
|
* int EXTERNAL_LIBRARY_FUNCTION(struct gds_cell *toplevel, GList *layer_info_list, const char *output_file_name, double scale)
|
||||||
|
* @endcode
|
||||||
|
*/
|
||||||
|
#define EXTERNAL_LIBRARY_FUNCTION "render_cell_to_file"
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Create new ExternalRenderer object
|
* @brief Create new ExternalRenderer object
|
||||||
* @return New object
|
* @return New object
|
||||||
@ -50,10 +59,9 @@ ExternalRenderer *external_renderer_new();
|
|||||||
/**
|
/**
|
||||||
* @brief Create new ExternalRenderer object with specified shared object path
|
* @brief Create new ExternalRenderer object with specified shared object path
|
||||||
* @param so_path Path to shared object, the rendering function is searched in
|
* @param so_path Path to shared object, the rendering function is searched in
|
||||||
* @param param_string Command line parameter string passed to external renderer
|
|
||||||
* @return New object.
|
* @return New object.
|
||||||
*/
|
*/
|
||||||
ExternalRenderer *external_renderer_new_with_so_and_param(const char *so_path, const char *param_string);
|
ExternalRenderer *external_renderer_new_with_so(const char *so_path);
|
||||||
|
|
||||||
G_END_DECLS
|
G_END_DECLS
|
||||||
|
|
||||||
|
30
main.c
30
main.c
@ -23,6 +23,8 @@
|
|||||||
* @author Mario Hüttel <mario.huettel@gmx.net>
|
* @author Mario Hüttel <mario.huettel@gmx.net>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
#include <glib.h>
|
#include <glib.h>
|
||||||
@ -263,12 +265,9 @@ int main(int argc, char **argv)
|
|||||||
gchar *cellname = NULL;
|
gchar *cellname = NULL;
|
||||||
gchar **renderer_args = NULL;
|
gchar **renderer_args = NULL;
|
||||||
gboolean version = FALSE, pdf_standalone = FALSE, pdf_layers = FALSE;
|
gboolean version = FALSE, pdf_standalone = FALSE, pdf_layers = FALSE;
|
||||||
|
gchar *custom_library_path = NULL;
|
||||||
int scale = 1000;
|
int scale = 1000;
|
||||||
int app_status = 0;
|
int app_status = 0;
|
||||||
struct external_renderer_params so_render_params;
|
|
||||||
|
|
||||||
so_render_params.so_path = NULL;
|
|
||||||
so_render_params.cli_params = NULL;
|
|
||||||
|
|
||||||
bindtextdomain(GETTEXT_PACKAGE, LOCALEDATADIR "/locale");
|
bindtextdomain(GETTEXT_PACKAGE, LOCALEDATADIR "/locale");
|
||||||
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
|
bind_textdomain_codeset(GETTEXT_PACKAGE, "UTF-8");
|
||||||
@ -285,11 +284,9 @@ int main(int argc, char **argv)
|
|||||||
{"cell", 'c', 0, G_OPTION_ARG_STRING, &cellname, _("Cell to render"), "NAME" },
|
{"cell", 'c', 0, G_OPTION_ARG_STRING, &cellname, _("Cell to render"), "NAME" },
|
||||||
{"tex-standalone", 'a', 0, G_OPTION_ARG_NONE, &pdf_standalone, _("Create standalone TeX"), NULL },
|
{"tex-standalone", 'a', 0, G_OPTION_ARG_NONE, &pdf_standalone, _("Create standalone TeX"), NULL },
|
||||||
{"tex-layers", 'l', 0, G_OPTION_ARG_NONE, &pdf_layers, _("Create PDF Layers (OCG)"), NULL },
|
{"tex-layers", 'l', 0, G_OPTION_ARG_NONE, &pdf_layers, _("Create PDF Layers (OCG)"), NULL },
|
||||||
{"custom-render-lib", 'P', 0, G_OPTION_ARG_FILENAME, &so_render_params.so_path,
|
{"custom-render-lib", 'P', 0, G_OPTION_ARG_FILENAME, &custom_library_path,
|
||||||
_("Path to a custom shared object, that implements the necessary rendering functions"), "PATH"},
|
"Path to a custom shared object, that implements the " EXTERNAL_LIBRARY_FUNCTION " function", "PATH"},
|
||||||
{"render-lib-params", 'W', 0, G_OPTION_ARG_STRING, &so_render_params.cli_params,
|
{NULL}
|
||||||
_("Argument string passed to render lib"), NULL},
|
|
||||||
{NULL, 0, 0, 0, NULL, NULL, NULL}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
context = g_option_context_new(_(" FILE - Convert GDS file <FILE> to graphic"));
|
context = g_option_context_new(_(" FILE - Convert GDS file <FILE> to graphic"));
|
||||||
@ -301,8 +298,6 @@ int main(int argc, char **argv)
|
|||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_option_context_free(context);
|
|
||||||
|
|
||||||
if (version) {
|
if (version) {
|
||||||
print_version();
|
print_version();
|
||||||
goto ret_status;
|
goto ret_status;
|
||||||
@ -323,17 +318,14 @@ int main(int argc, char **argv)
|
|||||||
|
|
||||||
app_status =
|
app_status =
|
||||||
command_line_convert_gds(gds_name, cellname, renderer_args, output_paths, mappingname,
|
command_line_convert_gds(gds_name, cellname, renderer_args, output_paths, mappingname,
|
||||||
&so_render_params, pdf_standalone, pdf_layers, scale);
|
custom_library_path, pdf_standalone, pdf_layers, scale);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
app_status = start_gui(argc, argv);
|
app_status = start_gui(argc, argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
ret_status:
|
ret_status:
|
||||||
/* If necessary, free command line parameters.
|
/* If necessary, free command line parameters */
|
||||||
* This is only really necessary for automated mem-leak testing.
|
|
||||||
* Omitting these frees would be perfectly fine.
|
|
||||||
*/
|
|
||||||
if (output_paths)
|
if (output_paths)
|
||||||
g_strfreev(output_paths);
|
g_strfreev(output_paths);
|
||||||
if (renderer_args)
|
if (renderer_args)
|
||||||
@ -342,10 +334,8 @@ ret_status:
|
|||||||
g_free(mappingname);
|
g_free(mappingname);
|
||||||
if (cellname)
|
if (cellname)
|
||||||
free(cellname);
|
free(cellname);
|
||||||
if (so_render_params.so_path)
|
if (custom_library_path)
|
||||||
free(so_render_params.so_path);
|
free(custom_library_path);
|
||||||
if (so_render_params.cli_params)
|
|
||||||
g_free(so_render_params.cli_params);
|
|
||||||
|
|
||||||
return app_status;
|
return app_status;
|
||||||
}
|
}
|
||||||
|
@ -30,22 +30,16 @@
|
|||||||
|
|
||||||
#include <dlfcn.h>
|
#include <dlfcn.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <sys/wait.h>
|
|
||||||
|
|
||||||
#include <gds-render/output-renderers/external-renderer.h>
|
#include <gds-render/output-renderers/external-renderer.h>
|
||||||
#include <gds-render/version.h>
|
|
||||||
|
|
||||||
#define FORCE_FORK 0U /**< @brief if != 0, then forking is forced regardless of the shared object's settings */
|
|
||||||
|
|
||||||
struct _ExternalRenderer {
|
struct _ExternalRenderer {
|
||||||
GdsOutputRenderer parent;
|
GdsOutputRenderer parent;
|
||||||
char *shared_object_path;
|
char *shared_object_path;
|
||||||
char *cli_param_string;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
enum {
|
enum {
|
||||||
PROP_SO_PATH = 1, /**< @brief Shared object path property */
|
PROP_SO_PATH = 1, /**< @brief Shared object path property */
|
||||||
PROP_PARAM_STRING, /** @brief Shared object renderer parameter string from CLI */
|
|
||||||
N_PROPERTIES /**< @brief Used to get property count */
|
N_PROPERTIES /**< @brief Used to get property count */
|
||||||
};
|
};
|
||||||
|
|
||||||
@ -58,20 +52,15 @@ G_DEFINE_TYPE(ExternalRenderer, external_renderer, GDS_RENDER_TYPE_OUTPUT_RENDER
|
|||||||
* @param output_file Destination file
|
* @param output_file Destination file
|
||||||
* @param scale the scaling value to scale the output cell down by.
|
* @param scale the scaling value to scale the output cell down by.
|
||||||
* @param so_path Path to shared object
|
* @param so_path Path to shared object
|
||||||
* @param params Parameters passed to EXTERNAL_LIBRARY_INIT_FUNCTION
|
|
||||||
* @return 0 if successful
|
* @return 0 if successful
|
||||||
*/
|
*/
|
||||||
static int external_renderer_render_cell(struct gds_cell *toplevel_cell, GList *layer_info_list,
|
static int external_renderer_render_cell(struct gds_cell *toplevel_cell, GList *layer_info_list,
|
||||||
const char *output_file, double scale, const char *so_path, const char *params)
|
const char *output_file, double scale, const char *so_path)
|
||||||
{
|
{
|
||||||
int (*so_render_func)(struct gds_cell *, GList *, const char *, double) = NULL;
|
int (*so_render_func)(struct gds_cell *, GList *, const char *, double) = NULL;
|
||||||
int (*so_init_func)(const char *, const char *) = NULL;
|
|
||||||
void *so_handle = NULL;
|
void *so_handle = NULL;
|
||||||
char *error_msg;
|
char *error_msg;
|
||||||
int forking_req;
|
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
pid_t fork_pid = 0;
|
|
||||||
int forked_status;
|
|
||||||
|
|
||||||
if (!so_path) {
|
if (!so_path) {
|
||||||
fprintf(stderr, "Path to shared object not set!\n");
|
fprintf(stderr, "Path to shared object not set!\n");
|
||||||
@ -89,57 +78,22 @@ static int external_renderer_render_cell(struct gds_cell *toplevel_cell, GList *
|
|||||||
return -2000;
|
return -2000;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load rendering symbol from library */
|
/* Load symbol from library */
|
||||||
so_render_func = (int (*)(struct gds_cell *, GList *, const char *, double))
|
so_render_func = (int (*)(struct gds_cell *, GList *, const char *, double))
|
||||||
dlsym(so_handle, xstr(EXTERNAL_LIBRARY_RENDER_FUNCTION));
|
dlsym(so_handle, EXTERNAL_LIBRARY_FUNCTION);
|
||||||
error_msg = dlerror();
|
error_msg = dlerror();
|
||||||
if (error_msg != NULL) {
|
if (error_msg != NULL) {
|
||||||
fprintf(stderr, "Rendering function not found in library:\n%s\n", error_msg);
|
fprintf(stderr, "Rendering function not found in library:\n%s\n", error_msg);
|
||||||
goto ret_close_so_handle;
|
goto ret_close_so_handle;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Load the init function */
|
|
||||||
so_init_func = (int (*)(const char *, const char *))dlsym(so_handle, xstr(EXTERNAL_LIBRARY_INIT_FUNCTION));
|
|
||||||
error_msg = dlerror();
|
|
||||||
if (error_msg != NULL) {
|
|
||||||
fprintf(stderr, "Rendering function not found in library:\n%s\n", error_msg);
|
|
||||||
goto ret_close_so_handle;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Check if forking is requested */
|
|
||||||
if (dlsym(so_handle, xstr(EXTERNAL_LIBRARY_FORK_REQUEST)))
|
|
||||||
forking_req = 1;
|
|
||||||
else if (FORCE_FORK)
|
|
||||||
forking_req = 1;
|
|
||||||
else
|
|
||||||
forking_req = 0;
|
|
||||||
|
|
||||||
/* Execute */
|
/* Execute */
|
||||||
|
if (so_render_func) {
|
||||||
g_message("Calling external renderer.");
|
g_message("Calling external renderer.");
|
||||||
|
|
||||||
if (forking_req)
|
|
||||||
fork_pid = fork();
|
|
||||||
if (fork_pid != 0)
|
|
||||||
goto end_forked;
|
|
||||||
|
|
||||||
ret = so_init_func(params, _app_version_string);
|
|
||||||
if (!ret)
|
|
||||||
ret = so_render_func(toplevel_cell, layer_info_list, output_file, scale);
|
ret = so_render_func(toplevel_cell, layer_info_list, output_file, scale);
|
||||||
|
g_message("External renderer finished.");
|
||||||
/* If we are in a separate process, terminate here */
|
|
||||||
if (forking_req)
|
|
||||||
exit(ret);
|
|
||||||
|
|
||||||
/* The forked paths end here */
|
|
||||||
end_forked:
|
|
||||||
if (forking_req) {
|
|
||||||
waitpid(fork_pid, &forked_status, 0);
|
|
||||||
ret = WEXITSTATUS(forked_status);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
g_message("External renderer finished.");
|
|
||||||
|
|
||||||
ret_close_so_handle:
|
ret_close_so_handle:
|
||||||
dlclose(so_handle);
|
dlclose(so_handle);
|
||||||
return ret;
|
return ret;
|
||||||
@ -162,8 +116,7 @@ static int external_renderer_render_output(GdsOutputRenderer *renderer,
|
|||||||
if (settings)
|
if (settings)
|
||||||
layer_infos = layer_settings_get_layer_info_list(settings);
|
layer_infos = layer_settings_get_layer_info_list(settings);
|
||||||
|
|
||||||
ret = external_renderer_render_cell(cell, layer_infos, output_file, scale, ext_renderer->shared_object_path,
|
ret = external_renderer_render_cell(cell, layer_infos, output_file, scale, ext_renderer->shared_object_path);
|
||||||
ext_renderer->cli_param_string);
|
|
||||||
if (settings)
|
if (settings)
|
||||||
g_object_unref(settings);
|
g_object_unref(settings);
|
||||||
|
|
||||||
@ -180,9 +133,6 @@ static void external_renderer_get_property(GObject *obj, guint property_id, GVal
|
|||||||
case PROP_SO_PATH:
|
case PROP_SO_PATH:
|
||||||
g_value_set_string(value, self->shared_object_path);
|
g_value_set_string(value, self->shared_object_path);
|
||||||
break;
|
break;
|
||||||
case PROP_PARAM_STRING:
|
|
||||||
g_value_set_string(value, self->cli_param_string);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, property_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -201,11 +151,6 @@ static void external_renderer_set_property(GObject *obj, guint property_id, cons
|
|||||||
g_free(self->shared_object_path);
|
g_free(self->shared_object_path);
|
||||||
self->shared_object_path = g_value_dup_string(value);
|
self->shared_object_path = g_value_dup_string(value);
|
||||||
break;
|
break;
|
||||||
case PROP_PARAM_STRING:
|
|
||||||
if (self->cli_param_string)
|
|
||||||
g_free(self->cli_param_string);
|
|
||||||
self->cli_param_string = g_value_dup_string(value);
|
|
||||||
break;
|
|
||||||
default:
|
default:
|
||||||
G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, property_id, pspec);
|
G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, property_id, pspec);
|
||||||
break;
|
break;
|
||||||
@ -214,9 +159,7 @@ static void external_renderer_set_property(GObject *obj, guint property_id, cons
|
|||||||
|
|
||||||
static void external_renderer_dispose(GObject *self_obj)
|
static void external_renderer_dispose(GObject *self_obj)
|
||||||
{
|
{
|
||||||
ExternalRenderer *self;
|
ExternalRenderer *self = GDS_RENDER_EXTERNAL_RENDERER(self_obj);
|
||||||
|
|
||||||
self = GDS_RENDER_EXTERNAL_RENDERER(self_obj);
|
|
||||||
|
|
||||||
if (self->shared_object_path) {
|
if (self->shared_object_path) {
|
||||||
g_free(self->shared_object_path);
|
g_free(self->shared_object_path);
|
||||||
@ -251,19 +194,12 @@ static void external_renderer_class_init(ExternalRendererClass *klass)
|
|||||||
"Path to the shared object to search rendering function in.",
|
"Path to the shared object to search rendering function in.",
|
||||||
NULL,
|
NULL,
|
||||||
G_PARAM_READWRITE);
|
G_PARAM_READWRITE);
|
||||||
external_renderer_properties[PROP_PARAM_STRING] =
|
|
||||||
g_param_spec_string("param-string",
|
|
||||||
"Shared object renderer parameter string",
|
|
||||||
"Command line arguments passed to the external shared object renderer",
|
|
||||||
NULL,
|
|
||||||
G_PARAM_READWRITE);
|
|
||||||
g_object_class_install_properties(oclass, N_PROPERTIES, external_renderer_properties);
|
g_object_class_install_properties(oclass, N_PROPERTIES, external_renderer_properties);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void external_renderer_init(ExternalRenderer *self)
|
static void external_renderer_init(ExternalRenderer *self)
|
||||||
{
|
{
|
||||||
self->shared_object_path = NULL;
|
self->shared_object_path = NULL;
|
||||||
self->cli_param_string = NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
ExternalRenderer *external_renderer_new()
|
ExternalRenderer *external_renderer_new()
|
||||||
@ -271,10 +207,9 @@ ExternalRenderer *external_renderer_new()
|
|||||||
return g_object_new(GDS_RENDER_TYPE_EXTERNAL_RENDERER, NULL);
|
return g_object_new(GDS_RENDER_TYPE_EXTERNAL_RENDERER, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
ExternalRenderer *external_renderer_new_with_so_and_param(const char *so_path, const char *param_string)
|
ExternalRenderer *external_renderer_new_with_so(const char *so_path)
|
||||||
{
|
{
|
||||||
return g_object_new(GDS_RENDER_TYPE_EXTERNAL_RENDERER, "shared-object-path", so_path,
|
return g_object_new(GDS_RENDER_TYPE_EXTERNAL_RENDERER, "shared-object-path", so_path, NULL);
|
||||||
"param-string", param_string,NULL);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @} */
|
/** @} */
|
||||||
|
@ -1,2 +1,2 @@
|
|||||||
add_subdirectory(plugin-example)
|
add_subdirectory(python-renderer)
|
||||||
add_custom_target(plugins DEPENDS pluginexample)
|
add_custom_target(plugins DEPENDS pythonrenderer)
|
||||||
|
@ -1,19 +0,0 @@
|
|||||||
#include <stdio.h>
|
|
||||||
#include <glib.h>
|
|
||||||
#include <gds-render/gds-utils/gds-types.h>
|
|
||||||
#include <gds-render/output-renderers/external-renderer-interfaces.h>
|
|
||||||
|
|
||||||
int FUNC_DECL(EXTERNAL_LIBRARY_RENDER_FUNCTION)(struct gds_cell *toplevel, GList *layer_info_list, const char *output_file_name, double scale)
|
|
||||||
{
|
|
||||||
if (!toplevel)
|
|
||||||
return -1000;
|
|
||||||
|
|
||||||
printf("Rendering %s\n", toplevel->name);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
int FUNC_DECL(EXTERNAL_LIBRARY_INIT_FUNCTION)(const char *params, const char *version)
|
|
||||||
{
|
|
||||||
printf("Init with params: %s\ngds-render version: %s\n", params, version);
|
|
||||||
return 0;
|
|
||||||
}
|
|
@ -1,4 +1,4 @@
|
|||||||
project(pluginexample)
|
project(pythonrenderer)
|
||||||
cmake_minimum_required(VERSION 2.8)
|
cmake_minimum_required(VERSION 2.8)
|
||||||
find_package(PkgConfig REQUIRED)
|
find_package(PkgConfig REQUIRED)
|
||||||
pkg_search_module(PYTHON REQUIRED python3)
|
pkg_search_module(PYTHON REQUIRED python3)
|
7
plugins/python-renderer/src/plugin-main.c
Normal file
7
plugins/python-renderer/src/plugin-main.c
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
#include <stdio.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
int a(void)
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-11-15 20:32+0100\n"
|
"POT-Creation-Date: 2019-10-25 20:27+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-11-15 20:32+0100\n"
|
"POT-Creation-Date: 2019-10-25 20:27+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@ -17,34 +17,34 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=CHARSET\n"
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
#: ../gds-render-gui.c:275
|
#: ../gds-render-gui.c:273
|
||||||
msgid "Acc. Date"
|
msgid "Acc. Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../gds-render-gui.c:318
|
#: ../gds-render-gui.c:314
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../gds-render-gui.c:268
|
#: ../gds-render-gui.c:266
|
||||||
msgid "Cell"
|
msgid "Cell"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../gds-render-gui.c:326
|
#: ../gds-render-gui.c:322
|
||||||
msgid "GDSII-Files"
|
msgid "GDSII-Files"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../gds-render-gui.c:265
|
#: ../gds-render-gui.c:263
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../gds-render-gui.c:272
|
#: ../gds-render-gui.c:270
|
||||||
msgid "Mod. Date"
|
msgid "Mod. Date"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../gds-render-gui.c:319
|
#: ../gds-render-gui.c:315
|
||||||
msgid "Open GDSII"
|
msgid "Open GDSII"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../gds-render-gui.c:316
|
#: ../gds-render-gui.c:312
|
||||||
msgid "Open GDSII File"
|
msgid "Open GDSII File"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-11-15 20:32+0100\n"
|
"POT-Creation-Date: 2019-10-25 20:27+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
@ -17,7 +17,7 @@ msgstr ""
|
|||||||
"Content-Type: text/plain; charset=CHARSET\n"
|
"Content-Type: text/plain; charset=CHARSET\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
|
|
||||||
#: ../main.c:97
|
#: ../main.c:99
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
@ -25,27 +25,23 @@ msgid ""
|
|||||||
"Full git commit: %s"
|
"Full git commit: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../main.c:293
|
#: ../main.c:289
|
||||||
msgid " FILE - Convert GDS file <FILE> to graphic"
|
msgid " FILE - Convert GDS file <FILE> to graphic"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../main.c:221
|
#: ../main.c:223
|
||||||
msgid "About"
|
msgid "About"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../main.c:289
|
#: ../main.c:282
|
||||||
msgid "Argument string passed to render lib"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../main.c:283
|
|
||||||
msgid "Cell to render"
|
msgid "Cell to render"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../main.c:285
|
#: ../main.c:284
|
||||||
msgid "Create PDF Layers (OCG)"
|
msgid "Create PDF Layers (OCG)"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../main.c:284
|
#: ../main.c:283
|
||||||
msgid "Create standalone TeX"
|
msgid "Create standalone TeX"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -53,40 +49,34 @@ msgstr ""
|
|||||||
msgid "Divide output coordinates by <SCALE>"
|
msgid "Divide output coordinates by <SCALE>"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../main.c:320
|
#: ../main.c:314
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Ignored argument: %s"
|
msgid "Ignored argument: %s"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../main.c:116
|
#: ../main.c:118
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Logo could not be displayed: %s\n"
|
msgid "Logo could not be displayed: %s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../main.c:298
|
#: ../main.c:294
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Option parsing failed: %s\n"
|
msgid "Option parsing failed: %s\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../main.c:281
|
#: ../main.c:280
|
||||||
msgid "Output file path. Can be used multiple times."
|
msgid "Output file path. Can be used multiple times."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../main.c:282
|
#: ../main.c:281
|
||||||
msgid "Path for Layer Mapping File"
|
msgid "Path for Layer Mapping File"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../main.c:287
|
#: ../main.c:277
|
||||||
msgid ""
|
|
||||||
"Path to a custom shared object, that implements the necessary rendering "
|
|
||||||
"functions"
|
|
||||||
msgstr ""
|
|
||||||
|
|
||||||
#: ../main.c:276
|
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../main.c:220
|
#: ../main.c:222
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
@ -94,19 +84,19 @@ msgstr ""
|
|||||||
msgid "Renderer to use. Can be used multiple times."
|
msgid "Renderer to use. Can be used multiple times."
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../main.c:311
|
#: ../main.c:305
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Scale < 1 not allowed. Setting to 1\n"
|
msgid "Scale < 1 not allowed. Setting to 1\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../main.c:213
|
#: ../main.c:215
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"There is already an open instance. Will open second window in that "
|
"There is already an open instance. Will open second window in that "
|
||||||
"instance.\n"
|
"instance.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../main.c:245
|
#: ../main.c:247
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is gds-render, version: %s\n"
|
"This is gds-render, version: %s\n"
|
||||||
@ -114,7 +104,7 @@ msgid ""
|
|||||||
"For a list of supported commands execute with --help option.\n"
|
"For a list of supported commands execute with --help option.\n"
|
||||||
msgstr ""
|
msgstr ""
|
||||||
|
|
||||||
#: ../main.c:96
|
#: ../main.c:98
|
||||||
msgid ""
|
msgid ""
|
||||||
"gds-render is a free tool for rendering GDS2 layout files into vector "
|
"gds-render is a free tool for rendering GDS2 layout files into vector "
|
||||||
"graphics."
|
"graphics."
|
||||||
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gds-render VERSION\n"
|
"Project-Id-Version: gds-render VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-11-15 20:32+0100\n"
|
"POT-Creation-Date: 2019-10-22 23:02+0200\n"
|
||||||
"PO-Revision-Date: 2019-10-18 23:10+0200\n"
|
"PO-Revision-Date: 2019-10-18 23:10+0200\n"
|
||||||
"Last-Translator: <mario.huettel@gmx.net>\n"
|
"Last-Translator: <mario.huettel@gmx.net>\n"
|
||||||
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
|
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
|
||||||
@ -17,34 +17,34 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: ../gds-render-gui.c:275
|
#: ../gds-render-gui.c:273
|
||||||
msgid "Acc. Date"
|
msgid "Acc. Date"
|
||||||
msgstr "Zugr. Datum"
|
msgstr "Zugr. Datum"
|
||||||
|
|
||||||
#: ../gds-render-gui.c:318
|
#: ../gds-render-gui.c:314
|
||||||
msgid "Cancel"
|
msgid "Cancel"
|
||||||
msgstr "Abbruch"
|
msgstr "Abbruch"
|
||||||
|
|
||||||
#: ../gds-render-gui.c:268
|
#: ../gds-render-gui.c:266
|
||||||
msgid "Cell"
|
msgid "Cell"
|
||||||
msgstr "Zelle"
|
msgstr "Zelle"
|
||||||
|
|
||||||
#: ../gds-render-gui.c:326
|
#: ../gds-render-gui.c:322
|
||||||
msgid "GDSII-Files"
|
msgid "GDSII-Files"
|
||||||
msgstr "GDSII-Dateiem"
|
msgstr "GDSII-Dateiem"
|
||||||
|
|
||||||
#: ../gds-render-gui.c:265
|
#: ../gds-render-gui.c:263
|
||||||
msgid "Library"
|
msgid "Library"
|
||||||
msgstr "Bibliothek"
|
msgstr "Bibliothek"
|
||||||
|
|
||||||
#: ../gds-render-gui.c:272
|
#: ../gds-render-gui.c:270
|
||||||
msgid "Mod. Date"
|
msgid "Mod. Date"
|
||||||
msgstr "Mod. Datum"
|
msgstr "Mod. Datum"
|
||||||
|
|
||||||
#: ../gds-render-gui.c:319
|
#: ../gds-render-gui.c:315
|
||||||
msgid "Open GDSII"
|
msgid "Open GDSII"
|
||||||
msgstr "GDSII öffnen"
|
msgstr "GDSII öffnen"
|
||||||
|
|
||||||
#: ../gds-render-gui.c:316
|
#: ../gds-render-gui.c:312
|
||||||
msgid "Open GDSII File"
|
msgid "Open GDSII File"
|
||||||
msgstr "GDSII Datei öffnen"
|
msgstr "GDSII Datei öffnen"
|
||||||
|
@ -7,7 +7,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: gds-render VERSION\n"
|
"Project-Id-Version: gds-render VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-11-15 20:32+0100\n"
|
"POT-Creation-Date: 2019-10-18 23:03+0200\n"
|
||||||
"PO-Revision-Date: 2019-10-18 20:49+0200\n"
|
"PO-Revision-Date: 2019-10-18 20:49+0200\n"
|
||||||
"Last-Translator: <mario.huettel@gmx.net>\n"
|
"Last-Translator: <mario.huettel@gmx.net>\n"
|
||||||
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
|
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
|
||||||
@ -17,7 +17,7 @@ msgstr ""
|
|||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||||
|
|
||||||
#: ../main.c:97
|
#: ../main.c:99
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"\n"
|
"\n"
|
||||||
@ -28,27 +28,23 @@ msgstr ""
|
|||||||
"\n"
|
"\n"
|
||||||
"Vollständige git Commit-ID %s"
|
"Vollständige git Commit-ID %s"
|
||||||
|
|
||||||
#: ../main.c:293
|
#: ../main.c:289
|
||||||
msgid " FILE - Convert GDS file <FILE> to graphic"
|
msgid " FILE - Convert GDS file <FILE> to graphic"
|
||||||
msgstr "Datei -- Konvertiere GDS Datei <Datei> zu Vektorgrafik"
|
msgstr "Datei -- Konvertiere GDS Datei <Datei> zu Vektorgrafik"
|
||||||
|
|
||||||
#: ../main.c:221
|
#: ../main.c:223
|
||||||
msgid "About"
|
msgid "About"
|
||||||
msgstr "Über"
|
msgstr "Über"
|
||||||
|
|
||||||
#: ../main.c:289
|
#: ../main.c:282
|
||||||
msgid "Argument string passed to render lib"
|
|
||||||
msgstr "Argumente, die an externe Render-Bibliothek weitergegeben werden sollen"
|
|
||||||
|
|
||||||
#: ../main.c:283
|
|
||||||
msgid "Cell to render"
|
msgid "Cell to render"
|
||||||
msgstr "Zu konvertierende Zelle"
|
msgstr "Zu konvertierende Zelle"
|
||||||
|
|
||||||
#: ../main.c:285
|
#: ../main.c:284
|
||||||
msgid "Create PDF Layers (OCG)"
|
msgid "Create PDF Layers (OCG)"
|
||||||
msgstr "Generiere PDF Layer (OCG)"
|
msgstr "Generiere PDF Layer (OCG)"
|
||||||
|
|
||||||
#: ../main.c:284
|
#: ../main.c:283
|
||||||
msgid "Create standalone TeX"
|
msgid "Create standalone TeX"
|
||||||
msgstr "Generiere alleinstehendes TeX"
|
msgstr "Generiere alleinstehendes TeX"
|
||||||
|
|
||||||
@ -56,41 +52,34 @@ msgstr "Generiere alleinstehendes TeX"
|
|||||||
msgid "Divide output coordinates by <SCALE>"
|
msgid "Divide output coordinates by <SCALE>"
|
||||||
msgstr "Skaliere Ausgabekoordinaten um Faktor <SCALE> herab"
|
msgstr "Skaliere Ausgabekoordinaten um Faktor <SCALE> herab"
|
||||||
|
|
||||||
#: ../main.c:320
|
#: ../main.c:314
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Ignored argument: %s"
|
msgid "Ignored argument: %s"
|
||||||
msgstr "Ignoriertes Argument: %s"
|
msgstr "Ignoriertes Argument: %s"
|
||||||
|
|
||||||
#: ../main.c:116
|
#: ../main.c:118
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Logo could not be displayed: %s\n"
|
msgid "Logo could not be displayed: %s\n"
|
||||||
msgstr "Logo konnte nicht angezeigt werden: %s\n"
|
msgstr "Logo konnte nicht angezeigt werden: %s\n"
|
||||||
|
|
||||||
#: ../main.c:298
|
#: ../main.c:294
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Option parsing failed: %s\n"
|
msgid "Option parsing failed: %s\n"
|
||||||
msgstr "Übergabeparameterkonvertierung fehlgeschlagen: %s\n"
|
msgstr "Übergabeparameterkonvertierung fehlgeschlagen: %s\n"
|
||||||
|
|
||||||
#: ../main.c:281
|
#: ../main.c:280
|
||||||
msgid "Output file path. Can be used multiple times."
|
msgid "Output file path. Can be used multiple times."
|
||||||
msgstr "Ausgabedatei. Kann mehrfach angegeben werden."
|
msgstr "Ausgabedatei. Kann mehrfach angegeben werden."
|
||||||
|
|
||||||
#: ../main.c:282
|
#: ../main.c:281
|
||||||
msgid "Path for Layer Mapping File"
|
msgid "Path for Layer Mapping File"
|
||||||
msgstr "Pfad zur \"Layer Mapping\"-Datei"
|
msgstr "Pfad zur \"Layer Mapping\"-Datei"
|
||||||
|
|
||||||
#: ../main.c:287
|
#: ../main.c:277
|
||||||
msgid ""
|
|
||||||
"Path to a custom shared object, that implements the necessary rendering "
|
|
||||||
"functions"
|
|
||||||
msgstr ""
|
|
||||||
"Pfad zu einer Programmbibliothek, die die notwendigen Renderingfunktionen bereitstellt"
|
|
||||||
|
|
||||||
#: ../main.c:276
|
|
||||||
msgid "Print version"
|
msgid "Print version"
|
||||||
msgstr "Programmversion aufgeben"
|
msgstr "Programmversion aufgeben"
|
||||||
|
|
||||||
#: ../main.c:220
|
#: ../main.c:222
|
||||||
msgid "Quit"
|
msgid "Quit"
|
||||||
msgstr "Beenden"
|
msgstr "Beenden"
|
||||||
|
|
||||||
@ -98,12 +87,12 @@ msgstr "Beenden"
|
|||||||
msgid "Renderer to use. Can be used multiple times."
|
msgid "Renderer to use. Can be used multiple times."
|
||||||
msgstr "Gewünschter Renderer. Kann mehrfach angegeben werden."
|
msgstr "Gewünschter Renderer. Kann mehrfach angegeben werden."
|
||||||
|
|
||||||
#: ../main.c:311
|
#: ../main.c:305
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid "Scale < 1 not allowed. Setting to 1\n"
|
msgid "Scale < 1 not allowed. Setting to 1\n"
|
||||||
msgstr "Skalierung < 1 nicht erlaubt. Rückfallwert 1 benutzt.\n"
|
msgstr "Skalierung < 1 nicht erlaubt. Rückfallwert 1 benutzt.\n"
|
||||||
|
|
||||||
#: ../main.c:213
|
#: ../main.c:215
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"There is already an open instance. Will open second window in that "
|
"There is already an open instance. Will open second window in that "
|
||||||
@ -112,7 +101,7 @@ msgstr ""
|
|||||||
"Es is bereits eine Instanz dieses Programms geöffnet. Ein weiteres Fenster "
|
"Es is bereits eine Instanz dieses Programms geöffnet. Ein weiteres Fenster "
|
||||||
"in dieser wird geöffnet.\n"
|
"in dieser wird geöffnet.\n"
|
||||||
|
|
||||||
#: ../main.c:245
|
#: ../main.c:247
|
||||||
#, c-format
|
#, c-format
|
||||||
msgid ""
|
msgid ""
|
||||||
"This is gds-render, version: %s\n"
|
"This is gds-render, version: %s\n"
|
||||||
@ -124,7 +113,7 @@ msgstr ""
|
|||||||
"Um eine Liste der unterstützten Befehle zu erhalten, bitte mit der Option --"
|
"Um eine Liste der unterstützten Befehle zu erhalten, bitte mit der Option --"
|
||||||
"help ausführen.\n"
|
"help ausführen.\n"
|
||||||
|
|
||||||
#: ../main.c:96
|
#: ../main.c:98
|
||||||
msgid ""
|
msgid ""
|
||||||
"gds-render is a free tool for rendering GDS2 layout files into vector "
|
"gds-render is a free tool for rendering GDS2 layout files into vector "
|
||||||
"graphics."
|
"graphics."
|
||||||
|
@ -8,7 +8,7 @@ msgid ""
|
|||||||
msgstr ""
|
msgstr ""
|
||||||
"Project-Id-Version: PACKAGE VERSION\n"
|
"Project-Id-Version: PACKAGE VERSION\n"
|
||||||
"Report-Msgid-Bugs-To: \n"
|
"Report-Msgid-Bugs-To: \n"
|
||||||
"POT-Creation-Date: 2019-11-15 20:32+0100\n"
|
"POT-Creation-Date: 2019-10-25 20:27+0200\n"
|
||||||
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
||||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user