Compare commits
8 Commits
f4de9c4402
...
d08cd3626d
Author | SHA1 | Date | |
---|---|---|---|
d08cd3626d | |||
ef180f3ea2 | |||
74ecde9807 | |||
cd2cf8c5c7 | |||
63eb65a3c4 | |||
aa413732f1 | |||
54165a8475 | |||
c3c4636334 |
@ -9,7 +9,7 @@ done
|
||||
DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null && pwd )"
|
||||
cd "$DIR"
|
||||
|
||||
export PROJECT_NUMBER=`git describe --tags`
|
||||
export PROJECT_NUMBER=`../version/generate-version-string.sh`
|
||||
|
||||
if [ $# != 1 ]; then
|
||||
export OUTPUT_DIRECTORY="./output"
|
||||
|
Binary file not shown.
BIN
doxygen/images/gui.png
Normal file
BIN
doxygen/images/gui.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 35 KiB |
File diff suppressed because it is too large
Load Diff
Before Width: | Height: | Size: 114 KiB |
@ -6,10 +6,7 @@ This programm converts GDS layout files to
|
||||
- PDF Files using the @ref Cairo-Renderer
|
||||
- Latex code (TikZ) using the @ref LaTeX-Renderer
|
||||
|
||||
See the @subpage usage page for details and @subpage compilation for building instructions.
|
||||
|
||||
|
||||
|
||||
See the @subpage usage page for details and @subpage compilation for building instructions and @subpage versioning for the versioning scheme of this program.
|
||||
|
||||
|
||||
|
||||
|
@ -1,21 +1,21 @@
|
||||
/**
|
||||
@page usage Usage
|
||||
@section cmd Command Line Interface
|
||||
To use the application on the command line check 'gds-render --help'.
|
||||
To use the application on the command line check 'gds-render `--`help'.
|
||||
|
||||
Application Options:
|
||||
- -t, --tikz Output TikZ code
|
||||
- -p, --pdf Output PDF document
|
||||
- -s, --scale=SCALE Divide output coordinates by SCALE
|
||||
- -o, --tex-output=PATH Optional path for TeX file
|
||||
- -O, --pdf-output=PATH Optional path for PDF file
|
||||
- -m, --mapping=PATH Path for Layer Mapping File
|
||||
- -c, --cell=NAME Cell to render
|
||||
- -a, --tex-standalone Create standalone PDF
|
||||
- -l, --tex-layers Create PDF Layers (OCG)
|
||||
- -P, --custom-render-lib=PATH Path to a custom shared object, that implements the render_cell_to_file function
|
||||
- -e, --external-lib-output=PATH Output path for external render library
|
||||
- --display=DISPLAY X display to use
|
||||
- -t, `--`tikz Output TikZ code
|
||||
- -p, `--`pdf Output PDF document
|
||||
- -s, `--`scale=SCALE Divide output coordinates by SCALE
|
||||
- -o, `--`tex-output=PATH Optional path for TeX file
|
||||
- -O, `--`pdf-output=PATH Optional path for PDF file
|
||||
- -m, `--`mapping=PATH Path for Layer Mapping File
|
||||
- -c, `--`cell=NAME Cell to render
|
||||
- -a, `--`tex-standalone Create standalone PDF
|
||||
- -l, `--`tex-layers Create PDF Layers (OCG)
|
||||
- -P, `--`custom-render-lib=PATH Path to a custom shared object, that implements the render_cell_to_file function
|
||||
- -e, `--`external-lib-output=PATH Output path for external render library
|
||||
- `--`display=DISPLAY X display to use
|
||||
|
||||
|
||||
@section gui Graphical User Interface
|
||||
@ -24,7 +24,11 @@ The graphical user interface (GUI) can be used to open GDS Files, configure the
|
||||
|
||||
It is possible to export the layer configurations so they can be used later on. Even in the @ref cmd
|
||||
|
||||
@image html gui.svg
|
||||
@image latex gui.pdf
|
||||
@image html gui.png
|
||||
@image latex gui.png
|
||||
|
||||
The cell selector on the left shows the GDS Libraries and Cells. The cells are marked green if all references inside the cell could be found. If not all references could be found, the cell is marked orange. This doens't show if child cells have missing childs. Only one level of the hierarchy is checked in order to make it easier to spot an errorneous cell. Cells with missing child cells are still renderable but -- obviously -- faulty. If a cell or any sub-cell contains a reference loop, the cell is marked red. In this case it can't be selected for rendering.
|
||||
|
||||
In the above image the cell is green; so everything is okay.
|
||||
|
||||
*/
|
||||
|
36
doxygen/versioning.dox
Normal file
36
doxygen/versioning.dox
Normal file
@ -0,0 +1,36 @@
|
||||
/**
|
||||
@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.
|
||||
|
||||
Versions, including release candidates and path-levels, are tagged in git.
|
||||
|
||||
@subsection rc Release Candidates
|
||||
Release candidates are software versions that seem stable and functional to become a new version but testing is not fully finished. These versions are marked with an '-rcX', where X is the number of the release candidate.
|
||||
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'.
|
||||
|
||||
|
||||
@section git-version-num Git Based Version Number
|
||||
|
||||
The application and this documentation contain a git-based version number. With this version number not only released versions but all development points of the software can be uniquely identified.
|
||||
|
||||
An example for such a version number is: *v1.0-rc4-41-gaa41373-dirty*
|
||||
|
||||
It consists of the last @ref main-version (in this case version 1.0 -- Release candidate 4) and some other information from the source code management system. The number after the version tag is the commit count after the given version. In this case the specified version is 41 commits after the last tagged version 'v1.0-rc4'. The next section always starts with a 'g' (for git) and after that contains the first letters of the commit ID. In this case an additional '-dirty' is appended, showing that the software version contains unstaged changes.
|
||||
|
||||
In tabular form: *v1.0-rc4-41-gaa41373-dirty*
|
||||
|
||||
| Last tagged version | Commits since that version | Start of commit ID | Unstaged changes? |
|
||||
|---------------------|----------------------------|--------------------|---------------------|
|
||||
| 1.0-rc4 | 41 | aa41373 | yes |
|
||||
|
||||
|
||||
This git-based version number is automatically put into the application and this doxumentation during the application's compilation / the documentation's generation. For this *git* is needed. Therefore, it is highly recommended to have 'git' installed for compilation although it is no build dependency. In case of a missing git installation, the string "! version not set !" is compiled into the application.
|
||||
|
||||
**/
|
@ -298,6 +298,7 @@ static void on_convert_clicked(gpointer button, gpointer user)
|
||||
renderer_settings_dialog_set_database_unit_scale(settings, cell_to_render->parent_library->unit_in_meters);
|
||||
renderer_settings_dialog_set_cell_height(settings, height);
|
||||
renderer_settings_dialog_set_cell_width(settings, width);
|
||||
g_object_set(G_OBJECT(settings), "cell-name", cell_to_render->name, NULL);
|
||||
|
||||
res = gtk_dialog_run(GTK_DIALOG(settings));
|
||||
if (res == GTK_RESPONSE_OK) {
|
||||
|
@ -22,7 +22,7 @@
|
||||
* @{
|
||||
*/
|
||||
|
||||
/** @brief This string holds the 'git describe' version of the app */
|
||||
/** @brief This string holds the @ref git-version-num of the app */
|
||||
extern const char *_app_version_string;
|
||||
|
||||
/** @} */
|
||||
|
@ -118,11 +118,12 @@ static void lib_cell_renderer_get_property(GObject *object,
|
||||
}
|
||||
}
|
||||
|
||||
static GParamSpec *properties [PROP_COUNT];
|
||||
static GParamSpec *properties[PROP_COUNT];
|
||||
|
||||
void lib_cell_renderer_class_init(LibCellRendererClass *klass)
|
||||
{
|
||||
GObjectClass *oclass = G_OBJECT_CLASS(klass);
|
||||
|
||||
oclass->constructed = lib_cell_renderer_constructed;
|
||||
oclass->set_property = lib_cell_renderer_set_property;
|
||||
oclass->get_property = lib_cell_renderer_get_property;
|
||||
|
@ -19,7 +19,8 @@
|
||||
|
||||
|
||||
/**
|
||||
* @defgroup version Git-based Versioning Number
|
||||
* @defgroup version Version Number
|
||||
* See @ref git-version-num
|
||||
* @addtogroup version
|
||||
* @{
|
||||
*/
|
||||
|
@ -54,10 +54,60 @@ struct _RendererSettingsDialog {
|
||||
|
||||
G_DEFINE_TYPE(RendererSettingsDialog, renderer_settings_dialog, GTK_TYPE_DIALOG)
|
||||
|
||||
enum {
|
||||
PROP_CELL_NAME = 1,
|
||||
PROP_COUNT
|
||||
};
|
||||
|
||||
static GParamSpec *properties[PROP_COUNT];
|
||||
|
||||
static void renderer_settings_dialog_set_property(GObject *object, guint property_id,
|
||||
const GValue *value, GParamSpec *pspec)
|
||||
{
|
||||
const gchar *title = NULL;
|
||||
|
||||
switch (property_id) {
|
||||
case PROP_CELL_NAME:
|
||||
title = g_value_get_string(value);
|
||||
if (title)
|
||||
gtk_window_set_title(GTK_WINDOW(object), title);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void renderer_settings_dialog_get_property(GObject *object, guint property_id,
|
||||
GValue *value, GParamSpec *pspec)
|
||||
{
|
||||
const gchar *title;
|
||||
|
||||
switch (property_id) {
|
||||
case PROP_CELL_NAME:
|
||||
title = gtk_window_get_title(GTK_WINDOW(object));
|
||||
g_value_set_string(value, title);
|
||||
break;
|
||||
default:
|
||||
G_OBJECT_WARN_INVALID_PROPERTY_ID(object, property_id, pspec);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
static void renderer_settings_dialog_class_init(RendererSettingsDialogClass *klass)
|
||||
{
|
||||
/* No special code needed. Child cells are destroyed automatically due to reference counter */
|
||||
return;
|
||||
GObjectClass *oclass = G_OBJECT_CLASS(klass);
|
||||
|
||||
/* Override virtual functions */
|
||||
oclass->set_property = renderer_settings_dialog_set_property;
|
||||
oclass->get_property = renderer_settings_dialog_get_property;
|
||||
|
||||
properties[PROP_CELL_NAME] = g_param_spec_string("cell-name",
|
||||
"cell-name",
|
||||
"Cell name to be displayed in header bar",
|
||||
"",
|
||||
G_PARAM_READWRITE);
|
||||
g_object_class_install_properties(oclass, PROP_COUNT, properties);
|
||||
}
|
||||
|
||||
static void show_tex_options(RendererSettingsDialog *self)
|
||||
@ -141,6 +191,10 @@ static double convert_number_to_engineering(double input, const char **out_prefi
|
||||
1E2, 1E3, 1E6, 1E9, 1E12, 1E15, 1E18, 1E21, 1E24};
|
||||
const int prefix_count = (int)(sizeof(prefixes)/sizeof(char *));
|
||||
|
||||
/* If pointer is invalid, return NaN */
|
||||
if (!out_prefix)
|
||||
return 0.0 / 0.0;
|
||||
|
||||
/* Start with the 2nd smallest prefix */
|
||||
for (idx = 1; idx < prefix_count; idx++) {
|
||||
if (input < scale[idx]) {
|
||||
|
Loading…
Reference in New Issue
Block a user