Compare commits
	
		
			12 Commits
		
	
	
		
			python-ren
			...
			translatio
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| d7c0a34d7f | |||
| de0e46394e | |||
| f7ea1a4c7b | |||
| e61d660ecc | |||
| 29212b0a92 | |||
| 5f21f8c146 | |||
| c4baffe49d | |||
| 5f94ec49bf | |||
| c497a41ca6 | |||
| 25efe527c3 | |||
| 0507fa673b | |||
| 3d55b0ccec | 
@@ -38,7 +38,7 @@ IF(CMAKE_BUILD_TYPE STREQUAL "Debug")
 | 
			
		||||
	add_definitions(-DGETTEXT_PACKAGE=\"gds-render\" -DLOCALEDATADIR=\"${CMAKE_CURRENT_BINARY_DIR}/translations/output\")
 | 
			
		||||
	message("${BoldMagenta}${CMAKE_CURRENT_BINARY_DIR}/translations/output used as data dir${ColorReset}")
 | 
			
		||||
else(CMAKE_BUILD_TYPE STREQUAL "Debug")
 | 
			
		||||
	message("${BoldCyan}Global locale directory used. Make sure files in /usr/share/locale are available${ColorReset}")
 | 
			
		||||
	message("Global locale directory used. Make sure files in /usr/share/locale are available")
 | 
			
		||||
	add_definitions(-DGETTEXT_PACKAGE=\"gds-render\" -DLOCALEDATADIR=\"/usr/share\")
 | 
			
		||||
ENDIF(CMAKE_BUILD_TYPE STREQUAL "Debug")
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -146,7 +146,6 @@ int command_line_convert_gds(const char *gds_name,
 | 
			
		||||
			      double scale)
 | 
			
		||||
{
 | 
			
		||||
	int ret = -1;
 | 
			
		||||
	int render_ret;
 | 
			
		||||
	GList *libs = NULL;
 | 
			
		||||
	int res;
 | 
			
		||||
	GList *renderer_list = NULL;
 | 
			
		||||
@@ -164,14 +163,7 @@ int command_line_convert_gds(const char *gds_name,
 | 
			
		||||
 | 
			
		||||
	/* Load layer_settings */
 | 
			
		||||
	layer_sett = layer_settings_new();
 | 
			
		||||
	if (!layer_sett)
 | 
			
		||||
		goto return_value;
 | 
			
		||||
 | 
			
		||||
	ret = layer_settings_load_from_csv(layer_sett, layer_file);
 | 
			
		||||
	if (ret) {
 | 
			
		||||
		fprintf(stderr, _("Loading layer mapping file failed.\n"));
 | 
			
		||||
		goto ret_destroy_layer_mapping;
 | 
			
		||||
	}
 | 
			
		||||
	layer_settings_load_from_csv(layer_sett, layer_file);
 | 
			
		||||
 | 
			
		||||
	/* Create renderers */
 | 
			
		||||
	if (create_renderers(renderers, output_file_names, tex_layers, tex_standalone,
 | 
			
		||||
@@ -229,9 +221,7 @@ int command_line_convert_gds(const char *gds_name,
 | 
			
		||||
	/* Execute all rendererer instances */
 | 
			
		||||
	for (list_iter = renderer_list; list_iter; list_iter = list_iter->next) {
 | 
			
		||||
		current_renderer = GDS_RENDER_OUTPUT_RENDERER(list_iter->data);
 | 
			
		||||
		render_ret = gds_output_renderer_render_output(current_renderer, toplevel_cell, scale);
 | 
			
		||||
		if (render_ret)
 | 
			
		||||
			fprintf(stderr, "Rendering failed with error code: %d\n", render_ret);
 | 
			
		||||
		gds_output_renderer_render_output(current_renderer, toplevel_cell, scale);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
ret_destroy_library_list:
 | 
			
		||||
@@ -241,7 +231,6 @@ ret_clear_renderers:
 | 
			
		||||
		g_object_unref(list_iter->data);
 | 
			
		||||
ret_destroy_layer_mapping:
 | 
			
		||||
	g_object_unref(layer_sett);
 | 
			
		||||
return_value:
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -30,7 +30,7 @@ Development is done with the following library versions:
 | 
			
		||||
 | 
			
		||||
| Cairographics | GLib2      | GTK3      |
 | 
			
		||||
| ------------- | ---------- | --------- |
 | 
			
		||||
| 1.17.2        | 2.64.2     | 3.24.18   |
 | 
			
		||||
| 1.17.3        | 2.60.6-1   | 3.24.10-1 |
 | 
			
		||||
 | 
			
		||||
@section comp-instr Compilation Instructions
 | 
			
		||||
@subsection linux-build General Linux Build Instruction
 | 
			
		||||
@@ -47,7 +47,7 @@ Once cmake has finished, type
 | 
			
		||||
 make
 | 
			
		||||
@endcode
 | 
			
		||||
to build the program and 
 | 
			
		||||
 
 | 
			
		||||
 | 
			
		||||
@code
 | 
			
		||||
 make documentation
 | 
			
		||||
@endcode
 | 
			
		||||
@@ -59,7 +59,7 @@ The subfolder 'AUR' contains a PKGBUILD file to build an Archlinux/Pacman packag
 | 
			
		||||
 | 
			
		||||
@subsection comp-warnings Compiler Warnings
 | 
			
		||||
 | 
			
		||||
The compiler will throw the following warnings. Compiled with GCC 9.3.0.
 | 
			
		||||
The compiler will throw the following warnings. Compiled with GCC 8.2.1.
 | 
			
		||||
 | 
			
		||||
| Warning | Assessment |
 | 
			
		||||
| ------- | ---------- |
 | 
			
		||||
 
 | 
			
		||||
@@ -22,6 +22,5 @@
 | 
			
		||||
 * @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
 | 
			
		||||
 * @ref EXTERNAL_LIBRARY_FINALIZE_FUNCTION | int EXTERNAL_LIBRARY_FINALIZE_FUNCTION(void) | Called after rendering
 | 
			
		||||
 *
 | 
			
		||||
 */
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								doxygen/images/translate-glade.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								doxygen/images/translate-glade.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| 
		 After Width: | Height: | Size: 15 KiB  | 
							
								
								
									
										53
									
								
								doxygen/translation.dox
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										53
									
								
								doxygen/translation.dox
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,53 @@
 | 
			
		||||
/**
 | 
			
		||||
 | 
			
		||||
@page translation Translations / Internationalization
 | 
			
		||||
 | 
			
		||||
@section lang-available Available Languages
 | 
			
		||||
 | 
			
		||||
The development, documentation and default application language of gds-render is English.
 | 
			
		||||
Translations of GUI and console output exist for the following locales/languages
 | 
			
		||||
 | 
			
		||||
- de German (Deutsch)
 | 
			
		||||
- ja Japanese (日本語) (Work in progess)
 | 
			
		||||
 | 
			
		||||
On how to add new languages, see @ref lang-add
 | 
			
		||||
 | 
			
		||||
@section lang-internals Internals
 | 
			
		||||
This progamm uses gettext for translations.
 | 
			
		||||
 | 
			
		||||
@subsection lang-coding Make Strings Translatable in Code
 | 
			
		||||
Only strings, that are marked as translatable are actually available for translation and shown in the user's language.
 | 
			
		||||
All other text is displayed as written in the source files.
 | 
			
		||||
 | 
			
		||||
@subsubsection lang-add-glade Make GUI Elements in Glade Files Translatable
 | 
			
		||||
Text inside Glade's GUI files can be made translatable by checking the *translatable* option for the specific text property.
 | 
			
		||||
The following image shows the label property of a button. Notice the checked Translatable option.
 | 
			
		||||
@image html translate-glade.png
 | 
			
		||||
@image latex translate-glade.png
 | 
			
		||||
 | 
			
		||||
@subsubsection lang-add-c Make C Strings Translatable
 | 
			
		||||
In order to make strings in C code translatable, the following header has to be included:
 | 
			
		||||
@code
 | 
			
		||||
#inlcude <glib/gi18n.h>
 | 
			
		||||
@endcode
 | 
			
		||||
This header provides a few macros useful for translation. The most important one is the function-like macro
 | 
			
		||||
@code
 | 
			
		||||
_("Text here")
 | 
			
		||||
@endcode
 | 
			
		||||
which is just a underline character.
 | 
			
		||||
You can use this marco to encapsulate all static strings that shall be translated. The whole expression is still usable like any other string (except for compile time concatenation, like: "This is foo" " and this is bar")
 | 
			
		||||
 | 
			
		||||
Example:
 | 
			
		||||
@code
 | 
			
		||||
printf(_("The value of foo is %d\n"), foo);
 | 
			
		||||
@endcode
 | 
			
		||||
 | 
			
		||||
Text that must not be translated can be encapsulated inside a N_ macro like
 | 
			
		||||
@code
 | 
			
		||||
N_("This has to stay in English")
 | 
			
		||||
@endcode
 | 
			
		||||
The N_ macro is basically an empty macro and just for visualization.
 | 
			
		||||
 | 
			
		||||
@subsection lang-add Add a New Language
 | 
			
		||||
 | 
			
		||||
*/
 | 
			
		||||
@@ -2,8 +2,8 @@
 | 
			
		||||
@page versioning Version Number
 | 
			
		||||
 | 
			
		||||
@section main-version Main Versioning Scheme
 | 
			
		||||
The version number of this application consists of a given version in the format of 'v1.0'.
 | 
			
		||||
Where the first number indicates a major release and the second number indicates minor changes.
 | 
			
		||||
The version number of this application consists of a given version in the format of 'v1.0.0' (formely only 2 digits).
 | 
			
		||||
Where the first number indicates a major release and the second and third numbers indicate minor changes.
 | 
			
		||||
 | 
			
		||||
Versions, including release candidates and patch-levels, are tagged in git.
 | 
			
		||||
 | 
			
		||||
@@ -13,7 +13,7 @@ The 3rd release candidate of version 4.2 would be '*v4.2-rc3*'.
 | 
			
		||||
Release candidates are in a frozen state. Only bugfixes that are necessary for functionality are applied to these versions before releasing the final version.
 | 
			
		||||
 | 
			
		||||
@subsection patch-level Patch Levels
 | 
			
		||||
If an already released version contains bugs that need to be fixed, the version number is not incremented. Insted a new version number with a patch-level is created. The patch-level is appended with a dash directly after the version number. The fist patch-level of version 3.5 would be: 'v3.5-1'.
 | 
			
		||||
If an already released version contains bugs that need to be fixed, the version number is not incremented. Insted a new version number with a patch-level is created. The patch-level is appended with a dash directly after the version number. The fist patch-level of version 3.5.2 would be: 'v3.5.2-1'.
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@section git-version-num Git Based Version Number
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -65,7 +65,7 @@ void vector_2d_rotate(struct vector_2d *vec, double angle)
 | 
			
		||||
	sin_val = sin(angle);
 | 
			
		||||
	cos_val = cos(angle);
 | 
			
		||||
 | 
			
		||||
	(void)vector_2d_copy(&temp, vec);
 | 
			
		||||
	vector_2d_copy(&temp, vec);
 | 
			
		||||
 | 
			
		||||
	/* Apply rotation matrix */
 | 
			
		||||
	vec->x = (cos_val * temp.x) - (sin_val * temp.y);
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -35,17 +35,10 @@
 | 
			
		||||
#include <gds-render/gds-utils/gds-types.h>
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief Calculate bounding box of a gds cell.
 | 
			
		||||
 *
 | 
			
		||||
 * This function updates a given bounding box with the dimensions of a
 | 
			
		||||
 * gds_cell. Please note that the handling of path miter points is not complete yet.
 | 
			
		||||
 * If a path object is the outmost object of your cell at any edge,
 | 
			
		||||
 * the resulting bounding box might be the wrong size. The devistion from the real size
 | 
			
		||||
 * is guaranteed to be within the width of the path object.
 | 
			
		||||
 *
 | 
			
		||||
 * @param box Resulting boundig box. Will be updated and not overwritten
 | 
			
		||||
 * @brief calculate_cell_bounding_box Calculate bounding box of gds cell
 | 
			
		||||
 * @param box Resulting boundig box. Will be uüdated and not overwritten
 | 
			
		||||
 * @param cell Toplevel cell
 | 
			
		||||
 * @warning Handling of Path graphic objects not yet implemented correctly.
 | 
			
		||||
 * @warning Path handling not yet implemented correctly.
 | 
			
		||||
 */
 | 
			
		||||
void calculate_cell_bounding_box(union bounding_box *box, struct gds_cell *cell);
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
/**
 | 
			
		||||
 * @file cairo-renderer.h
 | 
			
		||||
 
 | 
			
		||||
@@ -37,11 +37,6 @@
 | 
			
		||||
 */
 | 
			
		||||
#define EXPORT_FUNC __attribute__((visibility("default")))
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief This define is used to export a variable symbol from a shared object
 | 
			
		||||
 */
 | 
			
		||||
#define EXPORT_VAR EXPORT_FUNC
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief Function name expected to be found in external library for rendering.
 | 
			
		||||
 *
 | 
			
		||||
@@ -61,15 +56,6 @@
 | 
			
		||||
 */
 | 
			
		||||
#define EXTERNAL_LIBRARY_INIT_FUNCTION exported_init
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief Function name expected to be found in external library for finalizing.
 | 
			
		||||
 *
 | 
			
		||||
 * @code
 | 
			
		||||
 * int EXTERNAL_LIBRARY_FINALIZE_FUNCTION(void);
 | 
			
		||||
 * @endcode
 | 
			
		||||
 */
 | 
			
		||||
#define EXTERNAL_LIBRARY_FINALIZE_FUNCTION exported_finalize
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief Global integer specified by an external renderer to signal, that the init and render functions shall be executed in a subprocess
 | 
			
		||||
 *
 | 
			
		||||
@@ -81,29 +67,10 @@
 | 
			
		||||
/**
 | 
			
		||||
 * @brief Define for declaring the exported functions.
 | 
			
		||||
 *
 | 
			
		||||
 * This not only helps with the declaration but also makes the symbols visible, so they can be called from outside the library
 | 
			
		||||
 * This not only helps with the declaration but also makes the symbols visible, so they can be called form outside the library
 | 
			
		||||
 */
 | 
			
		||||
#define EXPORTED_FUNC_DECL(FUNC) EXPORT_FUNC FUNC
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief Define for declaring exported variables
 | 
			
		||||
 *
 | 
			
		||||
 * This not only helps with the declaration but also makes the symbols visible, so they can be accessed from outside the library
 | 
			
		||||
 */
 | 
			
		||||
#define EXPORTED_VAR_DECL(VAR) EXPORT_VAR VAR
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief Define for declaring variables based on a define expansion
 | 
			
		||||
 * @note If you want to declare an exported variable use @ref EXPORTED_VAR_DECL
 | 
			
		||||
 */
 | 
			
		||||
#define VAR_DECL(VAR) VAR
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief Define for declaring functions based on a define expansion
 | 
			
		||||
 * @note If you want to declare an exported function use @ref EXPORTED_FUNC_DECL
 | 
			
		||||
 */
 | 
			
		||||
#define FUNC_DECL(FUNC) FUNC
 | 
			
		||||
 | 
			
		||||
/** @} */
 | 
			
		||||
 | 
			
		||||
#endif /* __EXTERNAL_RENDERER_INTERFACES_H__ */
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								main.c
									
									
									
									
									
								
							@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
/**
 | 
			
		||||
 * @file cairo-renderer.c
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -67,7 +67,6 @@ static int external_renderer_render_cell(struct gds_cell *toplevel_cell, GList *
 | 
			
		||||
{
 | 
			
		||||
	int (*so_render_func)(struct gds_cell *, GList *, const char *, double) = NULL;
 | 
			
		||||
	int (*so_init_func)(const char *, const char *) = NULL;
 | 
			
		||||
	int (*so_finalize_func)(void) = NULL;
 | 
			
		||||
	void *so_handle = NULL;
 | 
			
		||||
	char *error_msg;
 | 
			
		||||
	int forking_req;
 | 
			
		||||
@@ -95,7 +94,7 @@ static int external_renderer_render_cell(struct gds_cell *toplevel_cell, GList *
 | 
			
		||||
	so_render_func = (int (*)(struct gds_cell *, GList *, const char *, double))
 | 
			
		||||
				dlsym(so_handle, xstr(EXTERNAL_LIBRARY_RENDER_FUNCTION));
 | 
			
		||||
	error_msg = dlerror();
 | 
			
		||||
	if (error_msg) {
 | 
			
		||||
	if (error_msg != NULL) {
 | 
			
		||||
		fprintf(stderr, _("Rendering function not found in library:\n%s\n"), error_msg);
 | 
			
		||||
		goto ret_close_so_handle;
 | 
			
		||||
	}
 | 
			
		||||
@@ -103,16 +102,8 @@ static int external_renderer_render_cell(struct gds_cell *toplevel_cell, GList *
 | 
			
		||||
	/* 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) {
 | 
			
		||||
		fprintf(stderr, _("Rendering function not found in library:\n%s\n"), error_msg);
 | 
			
		||||
		goto ret_close_so_handle;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	/* Load the finalize function */
 | 
			
		||||
	so_finalize_func = (int (*)(void))dlsym(so_handle, xstr(EXTERNAL_LIBRARY_FINALIZE_FUNCTION));
 | 
			
		||||
	error_msg = dlerror();
 | 
			
		||||
	if (error_msg) {
 | 
			
		||||
		fprintf(stderr, "Finalize function not found in library:\n%s\n", error_msg);
 | 
			
		||||
	if (error_msg != NULL) {
 | 
			
		||||
		fprintf(stderr, _("Init function not found in library:\n%s\n"), error_msg);
 | 
			
		||||
		goto ret_close_so_handle;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -137,9 +128,6 @@ static int external_renderer_render_cell(struct gds_cell *toplevel_cell, GList *
 | 
			
		||||
	if (!ret)
 | 
			
		||||
		ret = so_render_func(toplevel_cell, layer_info_list, output_file, scale);
 | 
			
		||||
 | 
			
		||||
	/* Finalize the external renderer */
 | 
			
		||||
	ret |= so_finalize_func();
 | 
			
		||||
 | 
			
		||||
	/* If we are in a separate process, terminate here */
 | 
			
		||||
	if (forking_req)
 | 
			
		||||
		exit(ret);
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -1,4 +1,2 @@
 | 
			
		||||
add_subdirectory(plugin-example)
 | 
			
		||||
add_subdirectory(python-renderer)
 | 
			
		||||
 | 
			
		||||
add_custom_target(plugins DEPENDS pluginexample pythonrenderer)
 | 
			
		||||
add_custom_target(plugins DEPENDS pluginexample)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,11 +1,12 @@
 | 
			
		||||
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(${CMAKE_CURRENT_SOURCE_DIR}/include)
 | 
			
		||||
link_libraries(version)
 | 
			
		||||
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)
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
@@ -25,6 +25,7 @@
 | 
			
		||||
 * @{
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <glib.h>
 | 
			
		||||
#include <gds-render/gds-utils/gds-types.h>
 | 
			
		||||
@@ -45,10 +46,4 @@ int EXPORTED_FUNC_DECL(EXTERNAL_LIBRARY_INIT_FUNCTION)(const char *params, const
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int EXPORTED_FUNC_DECL(EXTERNAL_LIBRARY_FINALIZE_FUNCTION)(void)
 | 
			
		||||
{
 | 
			
		||||
	printf("Finalize function called.\n");
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** @} */
 | 
			
		||||
 
 | 
			
		||||
@@ -1,34 +0,0 @@
 | 
			
		||||
project(pythonrenderer)
 | 
			
		||||
cmake_minimum_required(VERSION 2.8.8)
 | 
			
		||||
find_package(PythonLibs)
 | 
			
		||||
 | 
			
		||||
if(NOT WIN32)
 | 
			
		||||
  string(ASCII 27 Esc)
 | 
			
		||||
  set(ColorReset "${Esc}[m")
 | 
			
		||||
  set(ColorBold  "${Esc}[1m")
 | 
			
		||||
  set(Red         "${Esc}[31m")
 | 
			
		||||
  set(Green       "${Esc}[32m")
 | 
			
		||||
  set(Yellow      "${Esc}[33m")
 | 
			
		||||
  set(Blue        "${Esc}[34m")
 | 
			
		||||
  set(Magenta     "${Esc}[35m")
 | 
			
		||||
  set(Cyan        "${Esc}[36m")
 | 
			
		||||
  set(White       "${Esc}[37m")
 | 
			
		||||
  set(BoldRed     "${Esc}[1;31m")
 | 
			
		||||
  set(BoldGreen   "${Esc}[1;32m")
 | 
			
		||||
  set(BoldYellow  "${Esc}[1;33m")
 | 
			
		||||
  set(BoldBlue    "${Esc}[1;34m")
 | 
			
		||||
  set(BoldMagenta "${Esc}[1;35m")
 | 
			
		||||
  set(BoldCyan    "${Esc}[1;36m")
 | 
			
		||||
  set(BoldWhite   "${Esc}[1;37m")
 | 
			
		||||
endif()
 | 
			
		||||
 | 
			
		||||
aux_source_directory(src SOURCES)
 | 
			
		||||
 | 
			
		||||
include_directories(${PYTHON_INCLUDE_DIRS} ${CMAKE_CURRENT_SOURCE_DIR}/include)
 | 
			
		||||
link_libraries(${PYTHON_LIBRARIES} version)
 | 
			
		||||
 | 
			
		||||
message("${BoldCyan}Python version found: ${PYTHONLIBS_VERSION_STRING}${ColorReset}")
 | 
			
		||||
 | 
			
		||||
add_library(${PROJECT_NAME} SHARED EXCLUDE_FROM_ALL ${SOURCES})
 | 
			
		||||
add_dependencies(${PROJECT_NAME} version)
 | 
			
		||||
 | 
			
		||||
@@ -1,43 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * GDSII-Converter Python Plugin
 | 
			
		||||
 * Copyright (C) 2019  Mario Hüttel <mario.huettel@gmx.net>
 | 
			
		||||
 *
 | 
			
		||||
 * This file is part of GDSII-Converter.
 | 
			
		||||
 *
 | 
			
		||||
 * GDSII-Converter is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License version 2 as
 | 
			
		||||
 * published by the Free Software Foundation.
 | 
			
		||||
 *
 | 
			
		||||
 * GDSII-Converter is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file force-fork.h
 | 
			
		||||
 * @brief Header file force fork variabel definition.
 | 
			
		||||
 *
 | 
			
		||||
 * This file makes the force fork variable accessible.
 | 
			
		||||
 * Actually this is kind of useless. However, here it is :)
 | 
			
		||||
 * @author Mario Hüttel <mario.huettel@gmx.net>
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __PYTHON_PLUGIN_FORCE_FORK_H__
 | 
			
		||||
#define __PYTHON_PLUGIN_FORCE_FORK_H__
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @addtogroup python-plugin
 | 
			
		||||
 * @{
 | 
			
		||||
 */
 | 
			
		||||
#include <gds-render/output-renderers/external-renderer-interfaces.h>
 | 
			
		||||
 | 
			
		||||
extern const int VAR_DECL(EXTERNAL_LIBRARY_FORK_REQUEST);
 | 
			
		||||
 | 
			
		||||
/** @} */
 | 
			
		||||
 | 
			
		||||
#endif /* __PYTHON_PLUGIN_FORCE_FORK_H__ */
 | 
			
		||||
 | 
			
		||||
@@ -1,49 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * GDSII-Converter Python Plugin
 | 
			
		||||
 * Copyright (C) 2019  Mario Hüttel <mario.huettel@gmx.net>
 | 
			
		||||
 *
 | 
			
		||||
 * This file is part of GDSII-Converter.
 | 
			
		||||
 *
 | 
			
		||||
 * GDSII-Converter is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License version 2 as
 | 
			
		||||
 * published by the Free Software Foundation.
 | 
			
		||||
 *
 | 
			
		||||
 * GDSII-Converter is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file gds-render-module.h
 | 
			
		||||
 * @brief Header file for the gds-render python module implementation
 | 
			
		||||
 * @author Mario Hüttel <mario.huettel@gmx.net>
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __GDS_RENDER_MODULE_H__
 | 
			
		||||
#define __GDS_RENDER_MODULE_H__
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @addtogroup python-renderer
 | 
			
		||||
 * @{
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <Python.h>
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief The gds_render python module name as string
 | 
			
		||||
 */
 | 
			
		||||
#define GDS_RENDER_MOD_NAME "gds_render"
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief Set up the gds_render python module
 | 
			
		||||
 * @return New module reference
 | 
			
		||||
 */
 | 
			
		||||
PyObject *init_gds_render_module();
 | 
			
		||||
 | 
			
		||||
/** @} */
 | 
			
		||||
 | 
			
		||||
#endif /* __GDS_RENDER_MODULE_H__ */
 | 
			
		||||
@@ -1,50 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * GDSII-Converter Python Plugin
 | 
			
		||||
 * Copyright (C) 2020  Mario Hüttel <mario.huettel@gmx.net>
 | 
			
		||||
 *
 | 
			
		||||
 * This file is part of GDSII-Converter.
 | 
			
		||||
 *
 | 
			
		||||
 * GDSII-Converter is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License version 2 as
 | 
			
		||||
 * published by the Free Software Foundation.
 | 
			
		||||
 *
 | 
			
		||||
 * GDSII-Converter is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file python-renderer/glist.c
 | 
			
		||||
 * @author Mario Hüttel <mario.huettel@gmx.net>
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @defgroup python-plugin-glist GList wrapper for python
 | 
			
		||||
 * @ingroup python-plugin
 | 
			
		||||
 * This is a wrapping class for GLists
 | 
			
		||||
 * @addtogroup python-plugin-glist
 | 
			
		||||
 * @{
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#ifndef __GLIST_H__
 | 
			
		||||
#define __GLIST_H__
 | 
			
		||||
 | 
			
		||||
#ifndef PY_SSIZE_T_CLEAN
 | 
			
		||||
#define PY_SSIZE_T_CLEAN
 | 
			
		||||
#endif
 | 
			
		||||
#include <Python.h>
 | 
			
		||||
#include <glib.h>
 | 
			
		||||
 | 
			
		||||
extern PyTypeObject GListType;
 | 
			
		||||
 | 
			
		||||
typedef struct _GListObject GListObject;
 | 
			
		||||
 | 
			
		||||
void glist_set_head_ptr(GListObject *self, GList *head);
 | 
			
		||||
 | 
			
		||||
#endif /* __GLIST_H__ */
 | 
			
		||||
 | 
			
		||||
/** @} */
 | 
			
		||||
@@ -1,37 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * GDSII-Converter Python Plugin
 | 
			
		||||
 * Copyright (C) 2019  Mario Hüttel <mario.huettel@gmx.net>
 | 
			
		||||
 *
 | 
			
		||||
 * This file is part of GDSII-Converter.
 | 
			
		||||
 *
 | 
			
		||||
 * GDSII-Converter is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License version 2 as
 | 
			
		||||
 * published by the Free Software Foundation.
 | 
			
		||||
 *
 | 
			
		||||
 * GDSII-Converter is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file python-renderer/force-fork.c
 | 
			
		||||
 * @author Mario Hüttel <mario.huettel@gmx.net>
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <python-renderer/force-fork.h>
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @addtogroup python-plugin
 | 
			
		||||
 * @{
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/* The precense of this variable tells the gds-render application to execute this plugin in a separate process
 | 
			
		||||
 * The variable's value is don't care
 | 
			
		||||
 */
 | 
			
		||||
const int EXPORTED_VAR_DECL(EXTERNAL_LIBRARY_FORK_REQUEST) = 1;
 | 
			
		||||
 | 
			
		||||
/** @} */
 | 
			
		||||
@@ -1,100 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * GDSII-Converter Python Plugin
 | 
			
		||||
 * Copyright (C) 2019  Mario Hüttel <mario.huettel@gmx.net>
 | 
			
		||||
 *
 | 
			
		||||
 * This file is part of GDSII-Converter.
 | 
			
		||||
 *
 | 
			
		||||
 * GDSII-Converter is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License version 2 as
 | 
			
		||||
 * published by the Free Software Foundation.
 | 
			
		||||
 *
 | 
			
		||||
 * GDSII-Converter is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file gds-render-module.c
 | 
			
		||||
 * @brief Gds-render python module implementation
 | 
			
		||||
 * @author Mario Hüttel <mario.huettel@gmx.net>
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <python-renderer/gds-render-module.h>
 | 
			
		||||
#include <gds-render/gds-utils/gds-types.h>
 | 
			
		||||
#include <python-renderer/glist.h>
 | 
			
		||||
 | 
			
		||||
static PyObject *test(PyObject *self, PyObject *args)
 | 
			
		||||
{
 | 
			
		||||
	long int i;
 | 
			
		||||
 | 
			
		||||
	if(!PyArg_ParseTuple(args, "l:get_number", &i))
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	i *= i;
 | 
			
		||||
 | 
			
		||||
	return PyLong_FromLong(i);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static PyMethodDef gds_render_methods[] = {
 | 
			
		||||
	{"get_number", test, METH_VARARGS, "Return the number of arguments received by the process."},
 | 
			
		||||
	{NULL, NULL, 0, NULL}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static PyModuleDef gds_render_module_def = {
 | 
			
		||||
	PyModuleDef_HEAD_INIT,
 | 
			
		||||
	.m_name = GDS_RENDER_MOD_NAME,
 | 
			
		||||
	.m_doc = "GDS Render Base App Module",
 | 
			
		||||
	.m_size = -1,
 | 
			
		||||
	.m_methods = gds_render_methods,
 | 
			
		||||
	NULL, NULL, NULL, NULL
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static int gds_render_module_check_types_ready()
 | 
			
		||||
{
 | 
			
		||||
	if (!PyType_Ready(&GListType))
 | 
			
		||||
		return -1;
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int gds_render_module_add_types(PyObject *module)
 | 
			
		||||
{
 | 
			
		||||
	int err;
 | 
			
		||||
 | 
			
		||||
	Py_INCREF(&GListType);
 | 
			
		||||
	err = PyModule_AddObject(module, "GdsPoint", (PyObject *)&GListType);
 | 
			
		||||
	if (err < 0) {
 | 
			
		||||
		goto decref_glist;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	return 0;
 | 
			
		||||
 | 
			
		||||
decref_glist:
 | 
			
		||||
	Py_DECREF(&GListType);
 | 
			
		||||
	return -1;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
PyObject *init_gds_render_module(void)
 | 
			
		||||
{
 | 
			
		||||
	int err;
 | 
			
		||||
	PyObject *gds_render_module;
 | 
			
		||||
 | 
			
		||||
	if (gds_render_module_check_types_ready())
 | 
			
		||||
		return NULL;
 | 
			
		||||
 | 
			
		||||
	gds_render_module = PyModule_Create(&gds_render_module_def);
 | 
			
		||||
 | 
			
		||||
	err = gds_render_module_add_types(gds_render_module);
 | 
			
		||||
	if (err) {
 | 
			
		||||
		Py_DECREF(gds_render_module);
 | 
			
		||||
		gds_render_module = NULL;
 | 
			
		||||
		goto return_module;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
return_module:
 | 
			
		||||
	return gds_render_module;
 | 
			
		||||
}
 | 
			
		||||
@@ -1,72 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * GDSII-Converter Python Plugin
 | 
			
		||||
 * Copyright (C) 2020  Mario Hüttel <mario.huettel@gmx.net>
 | 
			
		||||
 *
 | 
			
		||||
 * This file is part of GDSII-Converter.
 | 
			
		||||
 *
 | 
			
		||||
 * GDSII-Converter is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License version 2 as
 | 
			
		||||
 * published by the Free Software Foundation.
 | 
			
		||||
 *
 | 
			
		||||
 * GDSII-Converter is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file python-renderer/glist.c
 | 
			
		||||
 * @author Mario Hüttel <mario.huettel@gmx.net>
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @defgroup python-plugin-glist GList wrapper for python
 | 
			
		||||
 * @ingroup python-plugin
 | 
			
		||||
 * This is a wrapping class for GLists
 | 
			
		||||
 * This wrpper acts as a read only access to the lists
 | 
			
		||||
 *
 | 
			
		||||
 * @addtogroup python-plugin-glist
 | 
			
		||||
 * @{
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <python-renderer/glist.h>
 | 
			
		||||
 | 
			
		||||
struct _GListObject {
 | 
			
		||||
	PyObject_HEAD
 | 
			
		||||
	GList *head;
 | 
			
		||||
	size_t len;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static PyObject *glist_to_list(GListObject *self, PyObject *Py_UNUSED(ignored))
 | 
			
		||||
{
 | 
			
		||||
	return Py_BuildValue("");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static PyMethodDef glist_methods[] = {
 | 
			
		||||
	{"tolist", (PyCFunction)glist_to_list, METH_NOARGS, "Convert GList to editable list"}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
void glist_set_head_ptr(GListObject *self, GList *head)
 | 
			
		||||
{
 | 
			
		||||
	if (!self || !head)
 | 
			
		||||
		return;
 | 
			
		||||
 | 
			
		||||
	self->head = head;
 | 
			
		||||
	self->len = g_list_length(self->head);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
PyTypeObject GListType = {
 | 
			
		||||
	PyVarObject_HEAD_INIT(NULL, 0)
 | 
			
		||||
	.tp_name = "gds_render.GList",
 | 
			
		||||
	.tp_doc = "Read only GList",
 | 
			
		||||
	.tp_basicsize = sizeof(GListObject),
 | 
			
		||||
	.tp_itemsize = 0,
 | 
			
		||||
	.tp_flags = Py_TPFLAGS_DEFAULT,
 | 
			
		||||
	.tp_new = PyType_GenericNew,
 | 
			
		||||
	.tp_methods = glist_methods
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/** @} */
 | 
			
		||||
@@ -1,173 +0,0 @@
 | 
			
		||||
/*
 | 
			
		||||
 * GDSII-Converter Python Plugin
 | 
			
		||||
 * Copyright (C) 2019  Mario Hüttel <mario.huettel@gmx.net>
 | 
			
		||||
 *
 | 
			
		||||
 * This file is part of GDSII-Converter.
 | 
			
		||||
 *
 | 
			
		||||
 * GDSII-Converter is free software: you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms of the GNU General Public License version 2 as
 | 
			
		||||
 * published by the Free Software Foundation.
 | 
			
		||||
 *
 | 
			
		||||
 * GDSII-Converter is distributed in the hope that it will be useful,
 | 
			
		||||
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | 
			
		||||
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @file python-renderer/plugin-main.c
 | 
			
		||||
 * @author Mario Hüttel <mario.huettel@gmx.net>
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @defgroup python-plugin Python Plugin for External Renderer
 | 
			
		||||
 * @ingroup plugins
 | 
			
		||||
 * This is a plugin for calling an external python script as renderer
 | 
			
		||||
 * @addtogroup python-plugin
 | 
			
		||||
 * @{
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
#include <stdio.h>
 | 
			
		||||
#include <libgen.h>
 | 
			
		||||
#include <glib.h>
 | 
			
		||||
#include <unistd.h>
 | 
			
		||||
#include <Python.h>
 | 
			
		||||
 | 
			
		||||
#include <gds-render/gds-utils/gds-types.h>
 | 
			
		||||
#include <gds-render/output-renderers/external-renderer-interfaces.h>
 | 
			
		||||
 | 
			
		||||
#include <python-renderer/gds-render-module.h>
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * @brief Global variable for loaded module. This is not very nice.
 | 
			
		||||
 * @warning This has to be changed, if this api wants to be re-entrant.
 | 
			
		||||
 */
 | 
			
		||||
static PyObject *p_module = NULL;
 | 
			
		||||
 | 
			
		||||
int EXPORTED_FUNC_DECL(EXTERNAL_LIBRARY_RENDER_FUNCTION)(struct gds_cell *toplevel, GList *layer_info_list, const char *output_file_name, double scale)
 | 
			
		||||
{
 | 
			
		||||
	int ret = 0;
 | 
			
		||||
	PyObject *p_render_func;
 | 
			
		||||
	PyObject *p_return_value;
 | 
			
		||||
 | 
			
		||||
	if (!toplevel)
 | 
			
		||||
		return -1000;
 | 
			
		||||
	if (!p_module)
 | 
			
		||||
		return -2000;
 | 
			
		||||
 | 
			
		||||
	printf("Rendering %s\n", toplevel->name);
 | 
			
		||||
 | 
			
		||||
	p_render_func = PyObject_GetAttrString(p_module, "test_func");
 | 
			
		||||
	if (!p_render_func && !PyCallable_Check(p_render_func)) {
 | 
			
		||||
		if (PyErr_Occurred())
 | 
			
		||||
			PyErr_Print();
 | 
			
		||||
		else
 | 
			
		||||
			fprintf(stderr, "Function not found in python module\n");
 | 
			
		||||
 | 
			
		||||
		ret = -1;
 | 
			
		||||
		goto return_value;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	p_return_value = PyObject_CallObject(p_render_func, NULL);
 | 
			
		||||
	if (p_return_value) {
 | 
			
		||||
		printf("Result of call: %ld\n", PyLong_AsLong(p_return_value));
 | 
			
		||||
		Py_DECREF(p_return_value);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	Py_XDECREF(p_render_func);
 | 
			
		||||
 | 
			
		||||
return_value:
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int EXPORTED_FUNC_DECL(EXTERNAL_LIBRARY_INIT_FUNCTION)(const char *params, const char *version)
 | 
			
		||||
{
 | 
			
		||||
	int ret = 0;
 | 
			
		||||
	PyObject *p_name;
 | 
			
		||||
	PyObject *p_sys_path;
 | 
			
		||||
	PyObject *p_mod_dir_string;
 | 
			
		||||
	PyObject *gds_render_module;
 | 
			
		||||
	char file_path[PATH_MAX];
 | 
			
		||||
	char *file_path_for_dir;
 | 
			
		||||
	char *file_path_for_base;
 | 
			
		||||
	char *dir_name;
 | 
			
		||||
	char *base_name;
 | 
			
		||||
 | 
			
		||||
	if (!params || !version)
 | 
			
		||||
		return -1000;
 | 
			
		||||
 | 
			
		||||
	printf("Init with params: %s\ngds-render version: %s\n", params, version);
 | 
			
		||||
 | 
			
		||||
	ret = PyImport_AppendInittab("gds_render", &init_gds_render_module);
 | 
			
		||||
	if (ret) {
 | 
			
		||||
		ret = -1;
 | 
			
		||||
		fprintf(stderr, "Registration of gds_render python module failed\n");
 | 
			
		||||
		goto return_value;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	Py_Initialize();
 | 
			
		||||
 | 
			
		||||
	if (!realpath(params, file_path)) {
 | 
			
		||||
		ret = -2;
 | 
			
		||||
		fprintf(stderr, "Invalid file name.\n");
 | 
			
		||||
		goto return_value;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	file_path_for_dir = strdup(file_path);
 | 
			
		||||
	if (!file_path_for_dir) {
 | 
			
		||||
		ret = -3;
 | 
			
		||||
		goto return_value;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	file_path_for_base = strdup(file_path);
 | 
			
		||||
	if (!file_path_for_base) {
 | 
			
		||||
		ret = -3;
 | 
			
		||||
		free (file_path_for_dir);
 | 
			
		||||
		goto return_value;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	dir_name = dirname(file_path_for_dir);
 | 
			
		||||
	base_name = basename(file_path_for_base);
 | 
			
		||||
 | 
			
		||||
	printf("Dir name : %s\n BAse name: %s\n", dir_name, base_name);
 | 
			
		||||
 | 
			
		||||
	p_sys_path = PySys_GetObject("path");
 | 
			
		||||
	p_mod_dir_string = PyUnicode_FromString(dir_name);
 | 
			
		||||
	PyList_Append(p_sys_path, p_mod_dir_string);
 | 
			
		||||
	Py_DECREF(p_mod_dir_string);
 | 
			
		||||
 | 
			
		||||
	p_name = PyUnicode_DecodeFSDefault(strtok(base_name, "."));
 | 
			
		||||
	p_module = PyImport_Import(p_name);
 | 
			
		||||
	Py_DECREF(p_name);
 | 
			
		||||
 | 
			
		||||
	if (!p_module) {
 | 
			
		||||
		PyErr_Print();
 | 
			
		||||
		fprintf(stderr, "Failed to load %s\n", params);
 | 
			
		||||
		ret = -1;
 | 
			
		||||
		goto return_value;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	free(file_path_for_dir);
 | 
			
		||||
	free(file_path_for_base);
 | 
			
		||||
 | 
			
		||||
return_value:
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int EXPORTED_FUNC_DECL(EXTERNAL_LIBRARY_FINALIZE_FUNCTION)(void)
 | 
			
		||||
{
 | 
			
		||||
	int ret;
 | 
			
		||||
 | 
			
		||||
	printf("Finalizing\n");
 | 
			
		||||
 | 
			
		||||
	if (p_module)
 | 
			
		||||
		Py_DECREF(p_module);
 | 
			
		||||
 | 
			
		||||
	ret = Py_FinalizeEx();
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
/** @} */
 | 
			
		||||
							
								
								
									
										1
									
								
								translations/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										1
									
								
								translations/.gitignore
									
									
									
									
										vendored
									
									
										Normal file
									
								
							@@ -0,0 +1 @@
 | 
			
		||||
*.mo
 | 
			
		||||
@@ -1,7 +1,7 @@
 | 
			
		||||
# German translations for gds-render package.
 | 
			
		||||
# Copyright (C) 2019 THE gds-render'S COPYRIGHT HOLDER
 | 
			
		||||
# This file is distributed under the same license as the gds-render package.
 | 
			
		||||
# マリオ <mario.huettel@gmx.net>, 2019.
 | 
			
		||||
# Mario Hüttel <mario.huettel@gmx.net>, 2019.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										460
									
								
								translations/pot/po/ja/gds-render.po
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										460
									
								
								translations/pot/po/ja/gds-render.po
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,460 @@
 | 
			
		||||
# Japanese translations for gds-render package.
 | 
			
		||||
# Copyright (C) 2019 THE gds-render'S COPYRIGHT HOLDER
 | 
			
		||||
# This file is distributed under the same license as the gds-render package.
 | 
			
		||||
# Mario Hüttel <mario.huettel@gmx.net>, 2019.
 | 
			
		||||
#
 | 
			
		||||
msgid ""
 | 
			
		||||
msgstr ""
 | 
			
		||||
"Project-Id-Version: gds-render\n"
 | 
			
		||||
"Report-Msgid-Bugs-To: \n"
 | 
			
		||||
"POT-Creation-Date: 2019-12-16 18:27+0100\n"
 | 
			
		||||
"PO-Revision-Date: 2020-01-16 22:54+0100\n"
 | 
			
		||||
"Last-Translator: Mario Hüttel <mario.huettel@gmx.net>\n"
 | 
			
		||||
"Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
 | 
			
		||||
"Language: ja\n"
 | 
			
		||||
"MIME-Version: 1.0\n"
 | 
			
		||||
"Content-Type: text/plain; charset=UTF-8\n"
 | 
			
		||||
"Content-Transfer-Encoding: 8bit\n"
 | 
			
		||||
"Plural-Forms: nplurals=1; plural=0;\n"
 | 
			
		||||
"X-Generator: Poedit 2.2.4\n"
 | 
			
		||||
 | 
			
		||||
#: ../main.c:97
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"Full git commit: %s"
 | 
			
		||||
msgstr ""
 | 
			
		||||
"\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"git コミット: %s"
 | 
			
		||||
 | 
			
		||||
#: ../main.c:294
 | 
			
		||||
msgid " FILE - Convert GDS file <FILE> to graphic"
 | 
			
		||||
msgstr " ファイル - ファイルを変換する"
 | 
			
		||||
 | 
			
		||||
#: ../resources/about.glade:10
 | 
			
		||||
msgid "!! Replaced during runtime !!"
 | 
			
		||||
msgstr "!! ランタイムで代わる !!"
 | 
			
		||||
 | 
			
		||||
#: ../command-line.c:205
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "%d reference loops found.\n"
 | 
			
		||||
msgstr "%d 参照ループが見つかりました.\n"
 | 
			
		||||
 | 
			
		||||
#: ../main.c:220
 | 
			
		||||
msgid "About"
 | 
			
		||||
msgstr "情報"
 | 
			
		||||
 | 
			
		||||
#: ../main.c:290
 | 
			
		||||
msgid "Argument string passed to render lib"
 | 
			
		||||
msgstr "レンダリングに渡されるデタ"
 | 
			
		||||
 | 
			
		||||
#: ../resources/main.glade:225
 | 
			
		||||
msgid "Automatically color layers"
 | 
			
		||||
msgstr "レイヤーを自動的に色付けする"
 | 
			
		||||
 | 
			
		||||
#: ../resources/main.glade:255
 | 
			
		||||
msgid "Automatically name layers"
 | 
			
		||||
msgstr "レイヤーに自動的に名前を付ける"
 | 
			
		||||
 | 
			
		||||
#: ../gds-utils/gds-tree-checker.c:71
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Broken cell list item found in cell %s. Will continue.\n"
 | 
			
		||||
msgstr "%sのセルで壊れたセルリストアイテムが見つかりました。続けます。\n"
 | 
			
		||||
 | 
			
		||||
#: ../gds-utils/gds-tree-checker.c:57
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Broken cell list item found. Will continue.\n"
 | 
			
		||||
msgstr "壊れたセルリストアイテムが見つかりました。続けます。\n"
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/cairo-renderer.c:409
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Cairo export finished. It might still be buggy!\n"
 | 
			
		||||
msgstr "Cairoの変換が終了しました.\n"
 | 
			
		||||
 | 
			
		||||
#. Execute
 | 
			
		||||
#: ../output-renderers/external-renderer.c:120
 | 
			
		||||
msgid "Calling external renderer."
 | 
			
		||||
msgstr "外部レンダラーの実行。"
 | 
			
		||||
 | 
			
		||||
#: ../gds-render-gui.c:286 ../widgets/conv-settings-dialog.c:291
 | 
			
		||||
msgid "Cancel"
 | 
			
		||||
msgstr "キャンセル"
 | 
			
		||||
 | 
			
		||||
#: ../gds-render-gui.c:244
 | 
			
		||||
msgid "Cell"
 | 
			
		||||
msgstr "セル"
 | 
			
		||||
 | 
			
		||||
#: ../command-line.c:209
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Cell is affected by reference loop. Abort!\n"
 | 
			
		||||
msgstr "このセルに参照ループがあります。アボート!\n"
 | 
			
		||||
 | 
			
		||||
#: ../main.c:284
 | 
			
		||||
msgid "Cell to render"
 | 
			
		||||
msgstr "レンダリングされるセル"
 | 
			
		||||
 | 
			
		||||
#: ../command-line.c:215
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Cell was not checked. This should not happen. Please report this issue. Will "
 | 
			
		||||
"continue either way.\n"
 | 
			
		||||
msgstr "セルのチェックはしませんでした。これは問題です。\n"
 | 
			
		||||
 | 
			
		||||
#: ../command-line.c:202
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Checking library %s failed.\n"
 | 
			
		||||
msgstr "ライブラリ %s のチェックは失敗しました。\n"
 | 
			
		||||
 | 
			
		||||
#: ../resources/dialog.glade:79
 | 
			
		||||
msgid "Configure LaTeX as standalone document"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../resources/main.glade:109
 | 
			
		||||
msgid "Convert selected cell"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/external-renderer.c:89
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Could not load external library '%s'\n"
 | 
			
		||||
"Detailed error is:\n"
 | 
			
		||||
"%s\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/latex-renderer.c:373
 | 
			
		||||
msgid "Could not open LaTeX output file"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../command-line.c:195
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Couldn't find cell in first library!\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../command-line.c:81
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Count of renderers %d does not match count of output file names %d\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../main.c:286
 | 
			
		||||
msgid "Create PDF Layers (OCG)"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../main.c:285
 | 
			
		||||
msgid "Create standalone TeX"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../main.c:280
 | 
			
		||||
msgid "Divide output coordinates by <SCALE>"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../resources/layer-widget.glade:62
 | 
			
		||||
msgid "Export Layer"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/cairo-renderer.c:366
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Exporting layer %d to file\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/external-renderer.c:142
 | 
			
		||||
msgid "External renderer finished."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#. This should not happen
 | 
			
		||||
#: ../output-renderers/cairo-renderer.c:271
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Fatal error: Cairo Renderer: Could not spawn child process!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../resources/main.glade:50
 | 
			
		||||
msgid "GDS-Render"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../gds-render-gui.c:294
 | 
			
		||||
msgid "GDSII-Files"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../resources/dialog.glade:18
 | 
			
		||||
msgid "Generate LaTeX/TikZ output"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../resources/dialog.glade:93
 | 
			
		||||
msgid "Generate PDF Layers"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/latex-renderer.c:253
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Generating cell %s"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../resources/about.glade:12
 | 
			
		||||
msgid "Git Repository"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../widgets/conv-settings-dialog.c:246
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Height: %.3lf %sm"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../main.c:321
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Ignored argument: %s"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/external-renderer.c:106
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Init function not found in library:\n"
 | 
			
		||||
"%s\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/cairo-renderer.c:321
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Layer number too high / outside of spec.\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/cairo-renderer.c:369
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Layer outside of spec.\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../widgets/layer-element.c:102
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Layer: %d"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../gds-render-gui.c:241
 | 
			
		||||
msgid "Library"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../resources/main.glade:68
 | 
			
		||||
msgid "Load Mapping"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../resources/main.glade:73
 | 
			
		||||
msgid "Load the current layer configuration from CSV"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../main.c:116
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Logo could not be displayed: %s\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/gds-output-renderer.c:293
 | 
			
		||||
msgid "No layer specification supplied."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../command-line.c:186
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "No library in library list. This should not happen.\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/gds-output-renderer.c:288
 | 
			
		||||
msgid "No/invalid output file set."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../widgets/conv-settings-dialog.c:291
 | 
			
		||||
msgid "OK"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../resources/main.glade:58
 | 
			
		||||
msgid "Open GDS2 Database"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../gds-render-gui.c:287
 | 
			
		||||
msgid "Open GDSII"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../gds-render-gui.c:284
 | 
			
		||||
msgid "Open GDSII File"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../main.c:299
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Option parsing failed: %s\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../widgets/conv-settings-dialog.c:255
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Output Height: %u px"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/gds-output-renderer.c:283
 | 
			
		||||
msgid "Output Renderer not valid."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/gds-output-renderer.c:304
 | 
			
		||||
msgid "Output Renderer: Rendering function broken. This is a bug."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#. Set the pixel sizes
 | 
			
		||||
#: ../widgets/conv-settings-dialog.c:252
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Output Width: %u px"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../main.c:282
 | 
			
		||||
msgid "Output file path. Can be used multiple times."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/gds-output-renderer.c:298
 | 
			
		||||
msgid "Output renderer called without cell to render."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/gds-output-renderer.c:74
 | 
			
		||||
msgid "Output renderer does not define a render_output function!"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../main.c:283
 | 
			
		||||
msgid "Path for Layer Mapping File"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../main.c:288
 | 
			
		||||
msgid ""
 | 
			
		||||
"Path to a custom shared object, that implements the necessary rendering "
 | 
			
		||||
"functions"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/external-renderer.c:78
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Path to shared object not set!\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../command-line.c:74
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Please specify renderers and file names\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../command-line.c:104
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Please specify shared object for external renderer. Will ignore this "
 | 
			
		||||
"renderer.\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../main.c:277
 | 
			
		||||
msgid "Print version"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../command-line.c:160
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Probably missing argument. Check --help option\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../main.c:219
 | 
			
		||||
msgid "Quit"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../widgets/activity-bar.c:104
 | 
			
		||||
msgid "Ready"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../resources/dialog.glade:33
 | 
			
		||||
msgid "Render PDF using Cairographics"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../resources/dialog.glade:48
 | 
			
		||||
msgid "Render SVG using Cairographics (too buggy at the moment)"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../widgets/conv-settings-dialog.c:293
 | 
			
		||||
msgid "Renderer Settings"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/gds-output-renderer.c:365
 | 
			
		||||
msgid "Renderer already started asynchronously"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../main.c:279
 | 
			
		||||
msgid "Renderer to use. Can be used multiple times."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/cairo-renderer.c:467
 | 
			
		||||
msgid "Rendering Cairo Output..."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../gds-render-gui.c:554
 | 
			
		||||
msgid "Rendering cell..."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/external-renderer.c:98
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"Rendering function not found in library:\n"
 | 
			
		||||
"%s\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../resources/main.glade:86
 | 
			
		||||
msgid "Save Mapping"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../resources/main.glade:23
 | 
			
		||||
msgid "Save the current layer configuration to CSV"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../main.c:312
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Scale < 1 not allowed. Setting to 1\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../resources/layer-widget.glade:51
 | 
			
		||||
msgid "Select Layer Color and Opacity"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../resources/main.glade:240
 | 
			
		||||
msgid "Select all layers for export"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../output-renderers/cairo-renderer.c:331
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Size of layer %d%s%s%s: <%lf x %lf> @ (%lf | %lf)\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../resources/main.glade:195
 | 
			
		||||
msgid "Sort layers ascending"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../resources/main.glade:210
 | 
			
		||||
msgid "Sort layers descending"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../main.c:212
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"There is already an open instance. Will open second window in that "
 | 
			
		||||
"instance.\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../main.c:244
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid ""
 | 
			
		||||
"This is gds-render, version: %s\n"
 | 
			
		||||
"\n"
 | 
			
		||||
"For a list of supported commands execute with --help option.\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../gds-utils/gds-tree-checker.c:188
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Visited cell list should be empty. This is a bug. Please report this.\n"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../widgets/conv-settings-dialog.c:244
 | 
			
		||||
#, c-format
 | 
			
		||||
msgid "Width: %.3lf %sm"
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../widgets/activity-bar.c:110
 | 
			
		||||
msgid "Working..."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../main.c:96
 | 
			
		||||
msgid ""
 | 
			
		||||
"gds-render is a free tool for rendering GDS2 layout files into vector "
 | 
			
		||||
"graphics."
 | 
			
		||||
msgstr ""
 | 
			
		||||
 | 
			
		||||
#: ../resources/layer-widget.glade:37
 | 
			
		||||
msgid "label"
 | 
			
		||||
msgstr ""
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -14,7 +14,7 @@
 | 
			
		||||
 * GNU General Public License for more details.
 | 
			
		||||
 *
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with GDSII-Converter. If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 * along with GDSII-Converter.  If not, see <http://www.gnu.org/licenses/>.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/*
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user