Compare commits
No commits in common. "1b1f742ae110685ba3c589a36accce4d61c77945" and "7977ee7c8be89f7a3bf7bf7f240d7aad537ad047" have entirely different histories.
1b1f742ae1
...
7977ee7c8b
@ -30,9 +30,6 @@ pkg_search_module(GLIB REQUIRED glib-2.0)
|
||||
pkg_check_modules(GTK3 REQUIRED gtk+-3.0)
|
||||
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_compile_options(-Wall -Wextra -Wold-style-declaration -Wuninitialized -Wmaybe-uninitialized -Wunused-parameter)
|
||||
|
||||
IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
@ -49,6 +46,7 @@ add_subdirectory(doxygen)
|
||||
add_subdirectory(translations)
|
||||
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})
|
||||
add_definitions(${GLIB2_CFLAGS_OTHER})
|
||||
|
||||
|
@ -56,7 +56,7 @@ static int create_renderers(char **renderers,
|
||||
char **output_file_names,
|
||||
gboolean tex_layers,
|
||||
gboolean tex_standalone,
|
||||
const struct external_renderer_params *ext_params,
|
||||
const char *so_path,
|
||||
GList **renderer_list,
|
||||
LayerSettings *layer_settings)
|
||||
{
|
||||
@ -100,13 +100,11 @@ static int create_renderers(char **renderers,
|
||||
} else if (!strcmp(current_renderer, "svg")) {
|
||||
output_renderer = GDS_RENDER_OUTPUT_RENDERER(cairo_renderer_new_svg());
|
||||
} 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"));
|
||||
continue;
|
||||
}
|
||||
output_renderer = GDS_RENDER_OUTPUT_RENDERER(
|
||||
external_renderer_new_with_so_and_param(ext_params->so_path,
|
||||
ext_params->cli_params));
|
||||
output_renderer = GDS_RENDER_OUTPUT_RENDERER(external_renderer_new_with_so(so_path));
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
@ -140,7 +138,7 @@ int command_line_convert_gds(const char *gds_name,
|
||||
char **renderers,
|
||||
char **output_file_names,
|
||||
const char *layer_file,
|
||||
struct external_renderer_params *ext_param,
|
||||
const char *so_path,
|
||||
gboolean tex_standalone,
|
||||
gboolean tex_layers,
|
||||
double scale)
|
||||
@ -167,7 +165,7 @@ int command_line_convert_gds(const char *gds_name,
|
||||
|
||||
/* Create renderers */
|
||||
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;
|
||||
|
||||
|
||||
|
@ -15,5 +15,5 @@ if (DOXYGEN_FOUND)
|
||||
DEPENDS doxygen
|
||||
)
|
||||
else (DOXYGEN_FOUND)
|
||||
message("Doxygen needs to be installed to generate the doxygen documentation")
|
||||
message("Doxygen need to be installed to generate the doxygen documentation")
|
||||
endif (DOXYGEN_FOUND)
|
||||
|
@ -9,18 +9,7 @@
|
||||
* Property Name | Description
|
||||
* -----------------|----------------------------------------------------------------
|
||||
* 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.
|
||||
*
|
||||
* @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>
|
||||
|
||||
/**
|
||||
* @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
|
||||
* @param gds_name Path to GDS File
|
||||
@ -55,7 +40,7 @@ struct external_renderer_params {
|
||||
* @param renderers Renderer ids
|
||||
* @param output_file_names Output file names
|
||||
* @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_layers TeX OCR layers
|
||||
* @param scale Scale value
|
||||
@ -66,7 +51,7 @@ int command_line_convert_gds(const char *gds_name,
|
||||
char **renderers,
|
||||
char **output_file_names,
|
||||
const char *layer_file,
|
||||
struct external_renderer_params *ext_param,
|
||||
const char *so_path,
|
||||
gboolean tex_standalone,
|
||||
gboolean tex_layers,
|
||||
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/gds-utils/gds-types.h>
|
||||
#include <gds-render/output-renderers/external-renderer-interfaces.h>
|
||||
|
||||
G_BEGIN_DECLS
|
||||
|
||||
@ -41,6 +40,16 @@ G_BEGIN_DECLS
|
||||
|
||||
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
|
||||
* @return New object
|
||||
@ -50,10 +59,9 @@ ExternalRenderer *external_renderer_new();
|
||||
/**
|
||||
* @brief Create new ExternalRenderer object with specified shared object path
|
||||
* @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.
|
||||
*/
|
||||
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
|
||||
|
||||
|
23
main.c
23
main.c
@ -23,6 +23,8 @@
|
||||
* @author Mario Hüttel <mario.huettel@gmx.net>
|
||||
*/
|
||||
|
||||
|
||||
|
||||
#include <stdio.h>
|
||||
#include <gtk/gtk.h>
|
||||
#include <glib.h>
|
||||
@ -263,12 +265,9 @@ int main(int argc, char **argv)
|
||||
gchar *cellname = NULL;
|
||||
gchar **renderer_args = NULL;
|
||||
gboolean version = FALSE, pdf_standalone = FALSE, pdf_layers = FALSE;
|
||||
gchar *custom_library_path = NULL;
|
||||
int scale = 1000;
|
||||
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");
|
||||
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" },
|
||||
{"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 },
|
||||
{"custom-render-lib", 'P', 0, G_OPTION_ARG_FILENAME, &so_render_params.so_path,
|
||||
_("Path to a custom shared object, that implements the necessary rendering functions"), "PATH"},
|
||||
{"render-lib-params", 'W', 0, G_OPTION_ARG_STRING, &so_render_params.cli_params,
|
||||
_("Argument string passed to render lib"), NULL},
|
||||
{NULL, 0, 0, 0, NULL, NULL, NULL}
|
||||
{"custom-render-lib", 'P', 0, G_OPTION_ARG_FILENAME, &custom_library_path,
|
||||
"Path to a custom shared object, that implements the " EXTERNAL_LIBRARY_FUNCTION " function", "PATH"},
|
||||
{NULL}
|
||||
};
|
||||
|
||||
context = g_option_context_new(_(" FILE - Convert GDS file <FILE> to graphic"));
|
||||
@ -323,7 +320,7 @@ int main(int argc, char **argv)
|
||||
|
||||
app_status =
|
||||
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 {
|
||||
app_status = start_gui(argc, argv);
|
||||
@ -342,10 +339,8 @@ ret_status:
|
||||
g_free(mappingname);
|
||||
if (cellname)
|
||||
free(cellname);
|
||||
if (so_render_params.so_path)
|
||||
free(so_render_params.so_path);
|
||||
if (so_render_params.cli_params)
|
||||
g_free(so_render_params.cli_params);
|
||||
if (custom_library_path)
|
||||
free(custom_library_path);
|
||||
|
||||
return app_status;
|
||||
}
|
||||
|
@ -30,22 +30,16 @@
|
||||
|
||||
#include <dlfcn.h>
|
||||
#include <stdio.h>
|
||||
#include <sys/wait.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 {
|
||||
GdsOutputRenderer parent;
|
||||
char *shared_object_path;
|
||||
char *cli_param_string;
|
||||
};
|
||||
|
||||
enum {
|
||||
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 */
|
||||
};
|
||||
|
||||
@ -58,20 +52,15 @@ G_DEFINE_TYPE(ExternalRenderer, external_renderer, GDS_RENDER_TYPE_OUTPUT_RENDER
|
||||
* @param output_file Destination file
|
||||
* @param scale the scaling value to scale the output cell down by.
|
||||
* @param so_path Path to shared object
|
||||
* @param params Parameters passed to EXTERNAL_LIBRARY_INIT_FUNCTION
|
||||
* @return 0 if successful
|
||||
*/
|
||||
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_init_func)(const char *, const char *) = NULL;
|
||||
void *so_handle = NULL;
|
||||
char *error_msg;
|
||||
int forking_req;
|
||||
int ret = 0;
|
||||
pid_t fork_pid = 0;
|
||||
int forked_status;
|
||||
|
||||
if (!so_path) {
|
||||
fprintf(stderr, "Path to shared object not set!\n");
|
||||
@ -89,56 +78,21 @@ static int external_renderer_render_cell(struct gds_cell *toplevel_cell, GList *
|
||||
return -2000;
|
||||
}
|
||||
|
||||
/* Load rendering symbol from library */
|
||||
/* Load symbol from library */
|
||||
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();
|
||||
if (error_msg != NULL) {
|
||||
fprintf(stderr, "Rendering function not found in library:\n%s\n", error_msg);
|
||||
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 */
|
||||
|
||||
if (so_render_func) {
|
||||
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);
|
||||
|
||||
/* 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:
|
||||
dlclose(so_handle);
|
||||
@ -162,8 +116,7 @@ static int external_renderer_render_output(GdsOutputRenderer *renderer,
|
||||
if (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,
|
||||
ext_renderer->cli_param_string);
|
||||
ret = external_renderer_render_cell(cell, layer_infos, output_file, scale, ext_renderer->shared_object_path);
|
||||
if (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:
|
||||
g_value_set_string(value, self->shared_object_path);
|
||||
break;
|
||||
case PROP_PARAM_STRING:
|
||||
g_value_set_string(value, self->cli_param_string);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, property_id, pspec);
|
||||
break;
|
||||
@ -201,11 +151,6 @@ static void external_renderer_set_property(GObject *obj, guint property_id, cons
|
||||
g_free(self->shared_object_path);
|
||||
self->shared_object_path = g_value_dup_string(value);
|
||||
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:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID(obj, property_id, pspec);
|
||||
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)
|
||||
{
|
||||
ExternalRenderer *self;
|
||||
|
||||
self = GDS_RENDER_EXTERNAL_RENDERER(self_obj);
|
||||
ExternalRenderer *self = GDS_RENDER_EXTERNAL_RENDERER(self_obj);
|
||||
|
||||
if (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.",
|
||||
NULL,
|
||||
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);
|
||||
}
|
||||
|
||||
static void external_renderer_init(ExternalRenderer *self)
|
||||
{
|
||||
self->shared_object_path = NULL;
|
||||
self->cli_param_string = NULL;
|
||||
}
|
||||
|
||||
ExternalRenderer *external_renderer_new()
|
||||
@ -271,10 +207,9 @@ ExternalRenderer *external_renderer_new()
|
||||
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,
|
||||
"param-string", param_string,NULL);
|
||||
return g_object_new(GDS_RENDER_TYPE_EXTERNAL_RENDERER, "shared-object-path", so_path, NULL);
|
||||
}
|
||||
|
||||
/** @} */
|
||||
|
@ -1,2 +0,0 @@
|
||||
add_subdirectory(plugin-example)
|
||||
add_custom_target(plugins DEPENDS pluginexample)
|
@ -1,12 +0,0 @@
|
||||
project(pluginexample)
|
||||
cmake_minimum_required(VERSION 2.8)
|
||||
find_package(PkgConfig REQUIRED)
|
||||
pkg_search_module(PYTHON REQUIRED python3)
|
||||
|
||||
aux_source_directory(src SOURCES)
|
||||
|
||||
include_directories(${PYTHON_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/include)
|
||||
link_libraries(${PYTHON_LDFLAGS} version)
|
||||
|
||||
add_library(${PROJECT_NAME} SHARED EXCLUDE_FROM_ALL ${SOURCES})
|
||||
add_dependencies(${PROJECT_NAME} version)
|
@ -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;
|
||||
}
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -17,34 +17,34 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../gds-render-gui.c:275
|
||||
#: ../gds-render-gui.c:273
|
||||
msgid "Acc. Date"
|
||||
msgstr ""
|
||||
|
||||
#: ../gds-render-gui.c:318
|
||||
#: ../gds-render-gui.c:314
|
||||
msgid "Cancel"
|
||||
msgstr ""
|
||||
|
||||
#: ../gds-render-gui.c:268
|
||||
#: ../gds-render-gui.c:266
|
||||
msgid "Cell"
|
||||
msgstr ""
|
||||
|
||||
#: ../gds-render-gui.c:326
|
||||
#: ../gds-render-gui.c:322
|
||||
msgid "GDSII-Files"
|
||||
msgstr ""
|
||||
|
||||
#: ../gds-render-gui.c:265
|
||||
#: ../gds-render-gui.c:263
|
||||
msgid "Library"
|
||||
msgstr ""
|
||||
|
||||
#: ../gds-render-gui.c:272
|
||||
#: ../gds-render-gui.c:270
|
||||
msgid "Mod. Date"
|
||||
msgstr ""
|
||||
|
||||
#: ../gds-render-gui.c:319
|
||||
#: ../gds-render-gui.c:315
|
||||
msgid "Open GDSII"
|
||||
msgstr ""
|
||||
|
||||
#: ../gds-render-gui.c:316
|
||||
#: ../gds-render-gui.c:312
|
||||
msgid "Open GDSII File"
|
||||
msgstr ""
|
||||
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Type: text/plain; charset=CHARSET\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
|
||||
#: ../main.c:97
|
||||
#: ../main.c:99
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
@ -25,27 +25,23 @@ msgid ""
|
||||
"Full git commit: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../main.c:293
|
||||
#: ../main.c:289
|
||||
msgid " FILE - Convert GDS file <FILE> to graphic"
|
||||
msgstr ""
|
||||
|
||||
#: ../main.c:221
|
||||
#: ../main.c:223
|
||||
msgid "About"
|
||||
msgstr ""
|
||||
|
||||
#: ../main.c:289
|
||||
msgid "Argument string passed to render lib"
|
||||
msgstr ""
|
||||
|
||||
#: ../main.c:283
|
||||
#: ../main.c:282
|
||||
msgid "Cell to render"
|
||||
msgstr ""
|
||||
|
||||
#: ../main.c:285
|
||||
#: ../main.c:284
|
||||
msgid "Create PDF Layers (OCG)"
|
||||
msgstr ""
|
||||
|
||||
#: ../main.c:284
|
||||
#: ../main.c:283
|
||||
msgid "Create standalone TeX"
|
||||
msgstr ""
|
||||
|
||||
@ -53,40 +49,34 @@ msgstr ""
|
||||
msgid "Divide output coordinates by <SCALE>"
|
||||
msgstr ""
|
||||
|
||||
#: ../main.c:320
|
||||
#: ../main.c:314
|
||||
#, c-format
|
||||
msgid "Ignored argument: %s"
|
||||
msgstr ""
|
||||
|
||||
#: ../main.c:116
|
||||
#: ../main.c:118
|
||||
#, c-format
|
||||
msgid "Logo could not be displayed: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../main.c:298
|
||||
#: ../main.c:294
|
||||
#, c-format
|
||||
msgid "Option parsing failed: %s\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../main.c:281
|
||||
#: ../main.c:280
|
||||
msgid "Output file path. Can be used multiple times."
|
||||
msgstr ""
|
||||
|
||||
#: ../main.c:282
|
||||
#: ../main.c:281
|
||||
msgid "Path for Layer Mapping File"
|
||||
msgstr ""
|
||||
|
||||
#: ../main.c:287
|
||||
msgid ""
|
||||
"Path to a custom shared object, that implements the necessary rendering "
|
||||
"functions"
|
||||
msgstr ""
|
||||
|
||||
#: ../main.c:276
|
||||
#: ../main.c:277
|
||||
msgid "Print version"
|
||||
msgstr ""
|
||||
|
||||
#: ../main.c:220
|
||||
#: ../main.c:222
|
||||
msgid "Quit"
|
||||
msgstr ""
|
||||
|
||||
@ -94,19 +84,19 @@ msgstr ""
|
||||
msgid "Renderer to use. Can be used multiple times."
|
||||
msgstr ""
|
||||
|
||||
#: ../main.c:311
|
||||
#: ../main.c:305
|
||||
#, c-format
|
||||
msgid "Scale < 1 not allowed. Setting to 1\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../main.c:213
|
||||
#: ../main.c:215
|
||||
#, c-format
|
||||
msgid ""
|
||||
"There is already an open instance. Will open second window in that "
|
||||
"instance.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../main.c:245
|
||||
#: ../main.c:247
|
||||
#, c-format
|
||||
msgid ""
|
||||
"This is gds-render, version: %s\n"
|
||||
@ -114,7 +104,7 @@ msgid ""
|
||||
"For a list of supported commands execute with --help option.\n"
|
||||
msgstr ""
|
||||
|
||||
#: ../main.c:96
|
||||
#: ../main.c:98
|
||||
msgid ""
|
||||
"gds-render is a free tool for rendering GDS2 layout files into vector "
|
||||
"graphics."
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gds-render VERSION\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"
|
||||
"Last-Translator: <mario.huettel@gmx.net>\n"
|
||||
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
|
||||
@ -17,34 +17,34 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: ../gds-render-gui.c:275
|
||||
#: ../gds-render-gui.c:273
|
||||
msgid "Acc. Date"
|
||||
msgstr "Zugr. Datum"
|
||||
|
||||
#: ../gds-render-gui.c:318
|
||||
#: ../gds-render-gui.c:314
|
||||
msgid "Cancel"
|
||||
msgstr "Abbruch"
|
||||
|
||||
#: ../gds-render-gui.c:268
|
||||
#: ../gds-render-gui.c:266
|
||||
msgid "Cell"
|
||||
msgstr "Zelle"
|
||||
|
||||
#: ../gds-render-gui.c:326
|
||||
#: ../gds-render-gui.c:322
|
||||
msgid "GDSII-Files"
|
||||
msgstr "GDSII-Dateiem"
|
||||
|
||||
#: ../gds-render-gui.c:265
|
||||
#: ../gds-render-gui.c:263
|
||||
msgid "Library"
|
||||
msgstr "Bibliothek"
|
||||
|
||||
#: ../gds-render-gui.c:272
|
||||
#: ../gds-render-gui.c:270
|
||||
msgid "Mod. Date"
|
||||
msgstr "Mod. Datum"
|
||||
|
||||
#: ../gds-render-gui.c:319
|
||||
#: ../gds-render-gui.c:315
|
||||
msgid "Open GDSII"
|
||||
msgstr "GDSII öffnen"
|
||||
|
||||
#: ../gds-render-gui.c:316
|
||||
#: ../gds-render-gui.c:312
|
||||
msgid "Open GDSII File"
|
||||
msgstr "GDSII Datei öffnen"
|
||||
|
@ -7,7 +7,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: gds-render VERSION\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"
|
||||
"Last-Translator: <mario.huettel@gmx.net>\n"
|
||||
"Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
|
||||
@ -17,7 +17,7 @@ msgstr ""
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
|
||||
|
||||
#: ../main.c:97
|
||||
#: ../main.c:99
|
||||
#, c-format
|
||||
msgid ""
|
||||
"\n"
|
||||
@ -28,27 +28,23 @@ msgstr ""
|
||||
"\n"
|
||||
"Vollständige git Commit-ID %s"
|
||||
|
||||
#: ../main.c:293
|
||||
#: ../main.c:289
|
||||
msgid " FILE - Convert GDS file <FILE> to graphic"
|
||||
msgstr "Datei -- Konvertiere GDS Datei <Datei> zu Vektorgrafik"
|
||||
|
||||
#: ../main.c:221
|
||||
#: ../main.c:223
|
||||
msgid "About"
|
||||
msgstr "Über"
|
||||
|
||||
#: ../main.c:289
|
||||
msgid "Argument string passed to render lib"
|
||||
msgstr "Argumente, die an externe Render-Bibliothek weitergegeben werden sollen"
|
||||
|
||||
#: ../main.c:283
|
||||
#: ../main.c:282
|
||||
msgid "Cell to render"
|
||||
msgstr "Zu konvertierende Zelle"
|
||||
|
||||
#: ../main.c:285
|
||||
#: ../main.c:284
|
||||
msgid "Create PDF Layers (OCG)"
|
||||
msgstr "Generiere PDF Layer (OCG)"
|
||||
|
||||
#: ../main.c:284
|
||||
#: ../main.c:283
|
||||
msgid "Create standalone TeX"
|
||||
msgstr "Generiere alleinstehendes TeX"
|
||||
|
||||
@ -56,41 +52,34 @@ msgstr "Generiere alleinstehendes TeX"
|
||||
msgid "Divide output coordinates by <SCALE>"
|
||||
msgstr "Skaliere Ausgabekoordinaten um Faktor <SCALE> herab"
|
||||
|
||||
#: ../main.c:320
|
||||
#: ../main.c:314
|
||||
#, c-format
|
||||
msgid "Ignored argument: %s"
|
||||
msgstr "Ignoriertes Argument: %s"
|
||||
|
||||
#: ../main.c:116
|
||||
#: ../main.c:118
|
||||
#, c-format
|
||||
msgid "Logo could not be displayed: %s\n"
|
||||
msgstr "Logo konnte nicht angezeigt werden: %s\n"
|
||||
|
||||
#: ../main.c:298
|
||||
#: ../main.c:294
|
||||
#, c-format
|
||||
msgid "Option parsing failed: %s\n"
|
||||
msgstr "Übergabeparameterkonvertierung fehlgeschlagen: %s\n"
|
||||
|
||||
#: ../main.c:281
|
||||
#: ../main.c:280
|
||||
msgid "Output file path. Can be used multiple times."
|
||||
msgstr "Ausgabedatei. Kann mehrfach angegeben werden."
|
||||
|
||||
#: ../main.c:282
|
||||
#: ../main.c:281
|
||||
msgid "Path for Layer Mapping File"
|
||||
msgstr "Pfad zur \"Layer Mapping\"-Datei"
|
||||
|
||||
#: ../main.c:287
|
||||
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
|
||||
#: ../main.c:277
|
||||
msgid "Print version"
|
||||
msgstr "Programmversion aufgeben"
|
||||
|
||||
#: ../main.c:220
|
||||
#: ../main.c:222
|
||||
msgid "Quit"
|
||||
msgstr "Beenden"
|
||||
|
||||
@ -98,12 +87,12 @@ msgstr "Beenden"
|
||||
msgid "Renderer to use. Can be used multiple times."
|
||||
msgstr "Gewünschter Renderer. Kann mehrfach angegeben werden."
|
||||
|
||||
#: ../main.c:311
|
||||
#: ../main.c:305
|
||||
#, c-format
|
||||
msgid "Scale < 1 not allowed. Setting to 1\n"
|
||||
msgstr "Skalierung < 1 nicht erlaubt. Rückfallwert 1 benutzt.\n"
|
||||
|
||||
#: ../main.c:213
|
||||
#: ../main.c:215
|
||||
#, c-format
|
||||
msgid ""
|
||||
"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 "
|
||||
"in dieser wird geöffnet.\n"
|
||||
|
||||
#: ../main.c:245
|
||||
#: ../main.c:247
|
||||
#, c-format
|
||||
msgid ""
|
||||
"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 --"
|
||||
"help ausführen.\n"
|
||||
|
||||
#: ../main.c:96
|
||||
#: ../main.c:98
|
||||
msgid ""
|
||||
"gds-render is a free tool for rendering GDS2 layout files into vector "
|
||||
"graphics."
|
||||
|
@ -8,7 +8,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: PACKAGE VERSION\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"
|
||||
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
||||
"Language-Team: LANGUAGE <LL@li.org>\n"
|
||||
|
Loading…
x
Reference in New Issue
Block a user