New upstream version 2.8.0
Carsten Schoenert
2 years ago
0 | name: CI | |
1 | ||
2 | # Controls when the action will run. Triggers the workflow on push or pull | |
3 | # request events but only for the main branch | |
4 | on: | |
5 | push: | |
6 | branches: | |
7 | - main | |
8 | pull_request: | |
9 | branches: [ main ] | |
10 | ||
11 | ||
12 | jobs: | |
13 | ci: | |
14 | runs-on: ubuntu-20.04 | |
15 | ||
16 | steps: | |
17 | - uses: actions/checkout@v2 | |
18 | ||
19 | - name: Get number of jobs for compiling | |
20 | run: echo "NUM_BUILD_JOBS=$((`nproc --all` * 4))" >> $GITHUB_ENV | |
21 | ||
22 | - name: Set a local install path | |
23 | run: echo "LOCAL_INSTALL_PATH=${HOME}/.local" >> $GITHUB_ENV | |
24 | ||
25 | - name: Get requirements for configure and build | |
26 | run: | | |
27 | sudo apt-get install autopoint libgtkmm-2.4-dev desktop-file-utils libc6-dbg | |
28 | ||
29 | - name: Configure and build | |
30 | run: | | |
31 | sh autogen.sh | |
32 | ./configure CPPFLAGS_EXTRA=-Werror | |
33 | make -j ${NUM_BUILD_JOBS} | |
34 | ||
35 | - name: Install valgrind | |
36 | run: | | |
37 | pushd ~ | |
38 | git clone --depth=1 --branch=master https://github.com/eyal0/valgrind.git | |
39 | pushd valgrind | |
40 | sh autogen.sh | |
41 | ./configure --prefix=${LOCAL_INSTALL_PATH} | |
42 | make -j ${NUM_BUILD_JOBS} | |
43 | make install | |
44 | popd | |
45 | popd | |
46 | ||
47 | - name: Run unit tests | |
48 | run: | | |
49 | make check || (cat test/test-suite.log && false) | |
50 | ||
51 | - name: Rebuild Fedora 34 | |
52 | run: npx --package mini-cross@0.15.2 mc --no-tty fedora:34 .mc/rebuild.sh | |
53 | ||
54 | - name: Rebuild Ubuntu 20.04 | |
55 | run: npx --package mini-cross@0.15.2 mc --no-tty ubuntu:20.04 .mc/rebuild.sh | |
56 | ||
57 | - name: Rebuild Windows amd64 | |
58 | run: npx --package mini-cross@0.15.2 mc --no-tty windows:amd64 .mc/rebuild.sh | |
59 | ||
60 | - name: Rebuild gerbv.github.io | |
61 | run: | | |
62 | npx --package mini-cross@0.15.2 mc --no-tty website make -C gerbv.github.io | |
63 | find gerbv.github.io -type f -name '.gitignore' -exec rm {} \; | |
64 | ||
65 | - name: Deploy gerbv.github.io | |
66 | uses: JamesIves/github-pages-deploy-action@4.1.5 | |
67 | with: | |
68 | repository-name: gerbv/gerbv.github.io | |
69 | branch: gh-pages | |
70 | folder: gerbv.github.io | |
71 | token: ${{ secrets.GERBV_BUILDBOT_PAT }} | |
72 | git-config-name: gerbv-buildbot | |
73 | git-config-email: violetland+gerbv@mail.ru | |
74 | single-commit: true | |
75 | # @see https://github.community/t/how-can-i-test-if-secrets-are-available-in-an-action/17911/10 | |
76 | env: | |
77 | GERBV_BUILDBOT_PAT: ${{ secrets.GERBV_BUILDBOT_PAT }} | |
78 | if: ${{ success() && github.event_name == 'push' && env.GERBV_BUILDBOT_PAT }} | |
79 |
44 | 44 | src/authors.c |
45 | 45 | src/bugs.c |
46 | 46 | src/gerbv |
47 | src/gerbv.exe | |
47 | 48 | src/gerbv.orig |
49 | src/gerbv_icon.ico | |
48 | 50 | src/libgerbv.la |
49 | 51 | src/libgerbv.pc |
50 | 52 | src/run_gerbv |
52 | 54 | test-driver |
53 | 55 | test/mismatch/ |
54 | 56 | test/outputs/ |
57 | win32/BUGS.txt | |
58 | win32/COPYING.txt |
0 | --- | |
1 | base: fedora:34 | |
2 | install: | |
3 | - gcc | |
4 | - gcc-c++ | |
5 | - make | |
6 | ||
7 | # Buildsystem dependencies | |
8 | - autoconf | |
9 | - gettext-devel | |
10 | - libtool | |
11 | - pkgconf | |
12 | ||
13 | # Runtime dependencies | |
14 | - cairo-devel | |
15 | - gtk2-devel | |
16 | - libdxflib-devel | |
17 | ||
18 | # Test dependencies | |
19 | - ImageMagick | |
20 | ||
21 | # Packaging dependencies | |
22 | - git | |
23 | --- | |
24 |
0 | #!/bin/bash | |
1 | ||
2 | set -e | |
3 | ||
4 | ./configure \ | |
5 | --disable-debug \ | |
6 | --enable-dxf \ | |
7 | --disable-update-desktop-database \ | |
8 |
0 | #!/bin/bash | |
1 | # | |
2 | # Builds an archive containing a gerbv binary distribution for Linux based | |
3 | # systems | |
4 | # | |
5 | # @param $1 System name e.g. 'Fedora 34' | |
6 | # | |
7 | # @warning Expects working directory to be set to project root | |
8 | ||
9 | ||
10 | # Validate arguments | |
11 | RELEASE_OS="${1}" | |
12 | ||
13 | if [ "${RELEASE_OS}" == "" ]; then | |
14 | (>&2 echo "Usage: package-linux.sh <release-os>") | |
15 | exit 1 | |
16 | fi | |
17 | ||
18 | ||
19 | # Validate environment | |
20 | CAT=`command -v cat` | |
21 | CHMOD=`command -v chmod` | |
22 | CP=`command -v cp` | |
23 | DATE=`command -v date` | |
24 | FIND=`command -v find` | |
25 | GIT=`command -v git` | |
26 | GZIP=`command -v gzip` | |
27 | MKTEMP=`command -v mktemp` | |
28 | TAR=`command -v tar` | |
29 | ||
30 | if [ ! -x "${CAT}" ]; then | |
31 | (>&2 echo "\`cat' missing") | |
32 | exit 1 | |
33 | fi | |
34 | ||
35 | if [ ! -x "${CHMOD}" ]; then | |
36 | (>&2 echo "\`chmod' missing") | |
37 | exit 1 | |
38 | fi | |
39 | ||
40 | if [ ! -x "${CP}" ]; then | |
41 | (>&2 echo "\`cp' missing") | |
42 | exit 1 | |
43 | fi | |
44 | ||
45 | if [ ! -x "${DATE}" ]; then | |
46 | (>&2 echo "\`date' missing") | |
47 | exit 1 | |
48 | fi | |
49 | ||
50 | if [ ! -x "${FIND}" ]; then | |
51 | (>&2 echo "\`find' missing") | |
52 | exit 1 | |
53 | fi | |
54 | ||
55 | if [ ! -x "${GIT}" ]; then | |
56 | (>&2 echo "\`git' missing") | |
57 | exit 1 | |
58 | fi | |
59 | ||
60 | if [ ! -x "${GZIP}" ]; then | |
61 | (>&2 echo "\`gzip' missing") | |
62 | exit 1 | |
63 | fi | |
64 | ||
65 | if [ ! -x "${MKTEMP}" ]; then | |
66 | (>&2 echo "\`mktemp' missing") | |
67 | exit 1 | |
68 | fi | |
69 | ||
70 | if [ ! -x "${TAR}" ]; then | |
71 | (>&2 echo "\`tar' missing") | |
72 | exit 1 | |
73 | fi | |
74 | ||
75 | ||
76 | # Gather information about current build | |
77 | set -e | |
78 | ||
79 | RELEASE_COMMIT=`"${GIT}" rev-parse HEAD` | |
80 | RELEASE_COMMIT_SHORT="${RELEASE_COMMIT:0:6}" | |
81 | RELEASE_DATE=`"${DATE}" --rfc-3339=date` | |
82 | ||
83 | ||
84 | # Copy files to be released into temporary directory | |
85 | WEBSITE_DIRECTORY='gerbv.github.io/ci' | |
86 | TEMPORARY_DIRECTORY=`"${MKTEMP}" --directory` | |
87 | ||
88 | "${CP}" 'COPYING' "${TEMPORARY_DIRECTORY}" | |
89 | "${CP}" 'src/.libs/gerbv' "${TEMPORARY_DIRECTORY}" | |
90 | "${FIND}" 'src/.libs' -name 'libgerbv.so*' -exec "${CP}" {} "${TEMPORARY_DIRECTORY}" \; | |
91 | ||
92 | "${CAT}" <<EOT >> "${TEMPORARY_DIRECTORY}/gerbv.sh" | |
93 | #!/bin/bash | |
94 | ||
95 | DIRECTORY=\`dirname "\$0"\` | |
96 | LD_LIBRARY_PATH="\${LD_LIBRARY_PATH}:\${DIRECTORY}" "\${DIRECTORY}/gerbv" | |
97 | EOT | |
98 | ||
99 | "${CHMOD}" +x "${TEMPORARY_DIRECTORY}/gerbv.sh" | |
100 | ||
101 | ||
102 | # Create archive and auxiliary files | |
103 | RELEASE_FILENAME="gerbv_${RELEASE_DATE}_${RELEASE_COMMIT_SHORT}_(${RELEASE_OS}).tar.gz" | |
104 | ||
105 | "${TAR}" --directory="${TEMPORARY_DIRECTORY}" -czf "${WEBSITE_DIRECTORY}/${RELEASE_FILENAME}" '.' | |
106 | ||
107 | echo "${RELEASE_COMMIT}" > "${WEBSITE_DIRECTORY}/${RELEASE_OS}.RELEASE_COMMIT" | |
108 | echo "${RELEASE_COMMIT_SHORT}" > "${WEBSITE_DIRECTORY}/${RELEASE_OS}.RELEASE_COMMIT_SHORT" | |
109 | echo "${RELEASE_DATE}" > "${WEBSITE_DIRECTORY}/${RELEASE_OS}.RELEASE_DATE" | |
110 | echo "${RELEASE_FILENAME}" > "${WEBSITE_DIRECTORY}/${RELEASE_OS}.RELEASE_FILENAME" | |
111 |
0 | #!/bin/bash | |
1 | # | |
2 | # Helper script to unify build logic between different operating systems. Can be | |
3 | # executed like this from the main directory: | |
4 | # | |
5 | # mc fedora:34 .mc/rebuild.sh | |
6 | # mc ubuntu:20.04 .mc/rebuild.sh | |
7 | set -e | |
8 | ||
9 | sh autogen.sh | |
10 | /opt/configure.sh | |
11 | make clean | |
12 | make | |
13 | /opt/package.sh | |
14 |
0 | #!/bin/bash | |
1 | ||
2 | set -e | |
3 | ||
4 | ./configure \ | |
5 | --disable-debug \ | |
6 | --enable-dxf \ | |
7 | --disable-update-desktop-database \ | |
8 |
0 | --- | |
1 | base: ubuntu:20.04 | |
2 | install: | |
3 | - gcc | |
4 | - make | |
5 | ||
6 | # Buildsystem dependencies | |
7 | - autoconf | |
8 | - autopoint | |
9 | - libtool | |
10 | - pkg-config | |
11 | ||
12 | # Runtime dependencies | |
13 | - libdxflib-dev | |
14 | - libgtk2.0-dev | |
15 | - libcairo2-dev | |
16 | ||
17 | # Test dependencies | |
18 | - imagemagick | |
19 | ||
20 | # Packaging dependencies | |
21 | - git | |
22 | --- | |
23 |
0 | #!/bin/bash | |
1 | ||
2 | set -e | |
3 | ||
4 | mingw64-configure \ | |
5 | --disable-debug \ | |
6 | --disable-update-desktop-database \ | |
7 |
0 | #!/bin/bash | |
1 | # | |
2 | # Builds an archive containing a gerbv binary distribution for Windows systems | |
3 | # | |
4 | # @warning Expects working directory to be set to project root | |
5 | ||
6 | ||
7 | # Validate arguments | |
8 | RELEASE_OS="Windows amd64" | |
9 | ||
10 | if [ "${RELEASE_OS}" == "" ]; then | |
11 | (>&2 echo "Usage: package-linux.sh <release-os>") | |
12 | exit 1 | |
13 | fi | |
14 | ||
15 | ||
16 | # Validate environment | |
17 | CP=`command -v cp` | |
18 | DATE=`command -v date` | |
19 | FIND=`command -v find` | |
20 | GIT=`command -v git` | |
21 | MKTEMP=`command -v mktemp` | |
22 | ZIP=`command -v zip` | |
23 | ||
24 | if [ ! -x "${CP}" ]; then | |
25 | (>&2 echo "\`cp' missing") | |
26 | exit 1 | |
27 | fi | |
28 | ||
29 | if [ ! -x "${DATE}" ]; then | |
30 | (>&2 echo "\`date' missing") | |
31 | exit 1 | |
32 | fi | |
33 | ||
34 | if [ ! -x "${FIND}" ]; then | |
35 | (>&2 echo "\`find' missing") | |
36 | exit 1 | |
37 | fi | |
38 | ||
39 | if [ ! -x "${GIT}" ]; then | |
40 | (>&2 echo "\`git' missing") | |
41 | exit 1 | |
42 | fi | |
43 | ||
44 | if [ ! -x "${MKTEMP}" ]; then | |
45 | (>&2 echo "\`mktemp' missing") | |
46 | exit 1 | |
47 | fi | |
48 | ||
49 | if [ ! -x "${ZIP}" ]; then | |
50 | (>&2 echo "\`zip' missing") | |
51 | exit 1 | |
52 | fi | |
53 | ||
54 | ||
55 | # Gather information about current build | |
56 | set -e | |
57 | ||
58 | RELEASE_COMMIT=`"${GIT}" rev-parse HEAD` | |
59 | RELEASE_COMMIT_SHORT="${RELEASE_COMMIT:0:6}" | |
60 | RELEASE_DATE=`"${DATE}" --rfc-3339=date` | |
61 | ||
62 | ||
63 | # Copy files to be released into temporary directory | |
64 | WEBSITE_DIRECTORY='gerbv.github.io/ci' | |
65 | TEMPORARY_DIRECTORY=`"${MKTEMP}" --directory` | |
66 | ||
67 | "${CP}" 'COPYING' "${TEMPORARY_DIRECTORY}" | |
68 | "${CP}" 'src/.libs/gerbv.exe' "${TEMPORARY_DIRECTORY}" | |
69 | "${FIND}" 'src/.libs' -name 'libgerbv-*.dll' -exec "${CP}" {} "${TEMPORARY_DIRECTORY}" \; | |
70 | ||
71 | # @warning While this might copy more libraries than strictly necessary, it | |
72 | # won't be many more, since the development environment contains only the | |
73 | # required mingw dependencies | |
74 | MINGW_LIBRARY_DIRECTORY='/usr/x86_64-w64-mingw32/sys-root/mingw/bin' | |
75 | ||
76 | "${FIND}" "${MINGW_LIBRARY_DIRECTORY}" -type f -name '*.dll' -exec "${CP}" {} "${TEMPORARY_DIRECTORY}" \; | |
77 | ||
78 | ||
79 | # Create archive and auxiliary files | |
80 | RELEASE_FILENAME="gerbv_${RELEASE_DATE}_${RELEASE_COMMIT_SHORT}_(${RELEASE_OS}).zip" | |
81 | ||
82 | "${FIND}" "${TEMPORARY_DIRECTORY}" -type f -exec "${ZIP}" --junk-paths "${WEBSITE_DIRECTORY}/${RELEASE_FILENAME}" {} \; | |
83 | ||
84 | echo "${RELEASE_COMMIT}" > "${WEBSITE_DIRECTORY}/${RELEASE_OS}.RELEASE_COMMIT" | |
85 | echo "${RELEASE_COMMIT_SHORT}" > "${WEBSITE_DIRECTORY}/${RELEASE_OS}.RELEASE_COMMIT_SHORT" | |
86 | echo "${RELEASE_DATE}" > "${WEBSITE_DIRECTORY}/${RELEASE_OS}.RELEASE_DATE" | |
87 | echo "${RELEASE_FILENAME}" > "${WEBSITE_DIRECTORY}/${RELEASE_OS}.RELEASE_FILENAME" | |
88 |
0 | --- | |
1 | base: fedora:34 | |
2 | install: | |
3 | - make | |
4 | - mingw64-gcc | |
5 | - mingw64-gcc-c++ | |
6 | ||
7 | # Buildsystem dependencies | |
8 | - autoconf | |
9 | - gettext-devel | |
10 | - libtool | |
11 | ||
12 | # Runtime dependencies | |
13 | # | |
14 | # @warning gtk2-devel should not be required, but needed to provide | |
15 | # {@code /usr/share/aclocal/gsettings.m4} since autoconf does not seem to | |
16 | # pick up on {@code /usr/x86_64-w64-mingw32/sys-root/mingw/share/aclocal/gsettings.m4} | |
17 | - gtk2-devel | |
18 | - mingw64-cairo-static | |
19 | - mingw64-gtk2-static | |
20 | ||
21 | # Test dependencies | |
22 | - ImageMagick | |
23 | ||
24 | # Packaging dependencies | |
25 | - git | |
26 | - zip | |
27 | --- | |
28 |
29 | 29 | test \ |
30 | 30 | win32 |
31 | 31 | |
32 | EXTRA_DIST = BUGS CONTRIBUTORS HACKING AUTHORS ChangeLog COPYING INSTALL \ | |
33 | NEWS README \ | |
34 | TODO \ | |
35 | autogen.sh README-cvs.txt README-release.txt \ | |
36 | README-win32.txt icon-theme-installer BUGS | |
32 | EXTRA_DIST = \ | |
33 | autogen.sh icon-theme-installer \ | |
34 | INSTALL \ | |
35 | AUTHORS CONTRIBUTORS COPYING \ | |
36 | HACKING ChangeLog NEWS BUGS TODO \ | |
37 | README README-git.txt README-release.txt README-win32.txt | |
37 | 38 | |
38 | 39 | DISTCHECK_CONFIGURE_FLAGS = \ |
39 | 40 | --disable-update-desktop-database GTK_UPDATE_ICON_THEME_BIN=true |
40 | 41 | |
41 | 42 | .PHONY: doxygen |
42 | 43 | doxygen: |
43 | doxygen doc/Doxyfile.nopreprocessing | |
44 | PROJECT_NUMBER=@VERSION@ doxygen doc/Doxyfile.nopreprocessing |
0 | ======================================================================== | |
1 | Release Notes for gerbv-2.8.0 | |
2 | ======================================================================== | |
3 | gerbv maintenance has moved from SourceForge to GitHub in order to revitalize | |
4 | the project. Multiple patches from the mailing list have been reintegrated and | |
5 | build warnings have been trimmed down. | |
6 | ||
7 | -CVE-2021-40391: Gerbv drill format T-code tool number out-of-bounds write vulnerability | |
8 | ||
9 | -Patch #77: Fix double-freeing memory | |
10 | -Patch #81: Fix casting pointer to different size integer | |
11 | -Patch #83: Crash may occur on opening/saveing files | |
12 | ||
13 | ||
0 | 14 | ======================================================================== |
1 | 15 | Release Notes for gerbv-2.7.1 |
2 | 16 | ======================================================================== |
3 | 17 | This is a minor patch release on top of gerbv-2.7.0 in order to fix the security |
4 | 18 | vulnerability TALOS-2021-1402 discovered by the Cisco Talos team. |
19 | ||
5 | 20 | |
6 | 21 | ======================================================================== |
7 | 22 | Release Notes for gerbv-2.7.0 |
0 | # Gerbv – a Gerber file viewer | |
1 | ||
2 | Gerbv was originally developed as part of the | |
3 | [gEDA Project](https://www.geda-project.org/) but is now seperatly maintained. | |
4 | ||
5 | ||
6 | ## About Gerbv | |
7 | ||
8 | * Gerbv is a viewer for Gerber RS-274X files, Excellon drill files, and CSV | |
9 | pick-and-place files. (Note: RS-274D files are not supported.) | |
10 | * Gerbv is a native Linux application, and it runs on many common Unix | |
11 | platforms. | |
12 | * Gerbv is free/open-source software. | |
13 | * The core functionality of Gerbv is located in a separate library (libgerbv), | |
14 | allowing developers to include Gerber parsing/editing/exporting/rendering into | |
15 | other programs. | |
16 | * Gerbv is one of the utilities originally affiliated with the gEDA project, an | |
17 | umbrella organization dedicated to producing free software tools for | |
18 | electronic design. | |
19 | ||
20 | ||
21 | ## About this fork | |
22 | ||
23 | While Gerbv is great software, the development on Source Force has stalled since | |
24 | many years with patches accumulating in the tracker and mailing list. | |
25 | ||
26 | This fork aims at providing a maintained Gerbv source, containing mostly | |
27 | bugfixes. | |
28 | ||
29 | To communicate with the original Gerbv developers, please post your query on the | |
30 | following mailing list: | |
31 | ||
32 | gerbv-devel@lists.sourceforge.net | |
33 | geda-user@delorie.com | |
34 | ||
35 | This is a friendly fork and I'm willing to invite other people to join the Gerbv | |
36 | GitHub organization. | |
37 | ||
38 | ||
39 | ## Applied patches from SourceForge | |
40 | ||
41 | * [Patch #77: Fix double-freeing memory](https://sourceforge.net/p/gerbv/patches/77/), | |
42 | applied in [PR#24](https://github.com/gerbv/gerbv/pull/24) as | |
43 | [Commit `a96b46`](https://github.com/gerbv/gerbv/commit/a96b46c7249e97e950d860790b84bcdba2368f57) | |
44 | * [Patch #81: Fix casting pointer to different size integer](https://sourceforge.net/p/gerbv/patches/81/), | |
45 | applied in [PR#23](https://github.com/gerbv/gerbv/pull/23) as | |
46 | [Commit `e4b344`](https://github.com/gerbv/gerbv/commit/e4b344e182191296d48b392f56f3bdd48900e1fc) | |
47 | * [Patch #83: Crash may occur on opening/saveing files](https://sourceforge.net/p/gerbv/patches/83/), | |
48 | applied in [PR#8](https://github.com/gerbv/gerbv/pull/8) as | |
49 | [Commit `242dda`](https://github.com/gerbv/gerbv/commit/242dda66b81e88f17f4ef99840cfeff727753b19) | |
50 | ||
51 | ||
52 | ## Supported platforms | |
53 | ||
54 | Gerbv has been built and tested on | |
55 | ||
56 | * Debian 10 (amd64) | |
57 | * Fedora 34 (amd64) | |
58 | * Ubuntu 20.04 (amd64) | |
59 | * Windows 10 (amd64 cross compiled from Fedora as well as native x86/amd64 using MSYS2) | |
60 | ||
61 | ||
62 | ## Information for developers | |
63 | ||
64 | Gerbv is split into a core functional library and a GUI portion. Developers | |
65 | wishing to incorporate Gerber parsing/editing/exporting/rendering into other | |
66 | programs are welcome to use libgerbv. Complete API documentation for libgerbv | |
67 | is here, as well as many example programs using libgerbv. | |
68 | ||
69 | ||
70 | ## Security | |
71 | ||
72 | The current focus of gerbv is to provide a utility to view and manipulate | |
73 | trusted gerber files. When using gerbv, you should not view files from untrusted | |
74 | sources without extra precautions. | |
75 | ||
76 | Nevertheless, we acknowledge that libgerbv will be used to handle untrusted | |
77 | input, maybe even provided over the network. In those cases we strongly advise | |
78 | to treat libgerbv as any codec and isolate its operations from the rest of your | |
79 | application. | |
80 | ||
81 | ||
82 | ## License | |
83 | ||
84 | Gerbv and all associated files is placed under the GNU Public License (GPL) | |
85 | version 2.0. See the toplevel [COPYING](COPYING) file for more information. | |
86 | ||
87 | Programs and associated files are: | |
88 | Copyright 2001, 2002 by Stefan Petersen and the respective original authors | |
89 | (which are listed on the respective files) | |
90 |
0 | gEDA | |
1 | ||
2 | GNU Electronic Design Automation | |
3 | ------------------------------------------------------------------------------ | |
4 | ||
5 | gerbv TODO | |
6 | ||
7 | Stefan Petersen | |
8 | E-mail: spe@stacken.kth.se | |
9 | Web: http://gerbv.sourceforge.net/ | |
10 | $Id$ | |
11 | ||
12 | ------------------------------------------------------------------------------ | |
13 | ||
14 | For an up-to-date list of TODO items, see the Feature Requests at | |
15 | http://sourceforge.net/projects/gerbv |
21 | 21 | dnl Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111 USA |
22 | 22 | |
23 | 23 | |
24 | AC_INIT([gerbv], [2.7.1]) | |
24 | AC_INIT([gerbv], [m4_esyscmd(utils/git-version-gen.sh 2.8.0)]) | |
25 | 25 | AC_CONFIG_SRCDIR([src/gerbv.c]) |
26 | 26 | AC_PREREQ([2.59]) |
27 | 27 | AM_INIT_AUTOMAKE([1.9]) |
298 | 298 | ]], [[ |
299 | 299 | if (!strncmp("2.2.", DL_VERSION, 4) |
300 | 300 | || !strncmp("2.5.", DL_VERSION, 4) |
301 | || !strncmp("3.12.", DL_VERSION, 5)) | |
301 | || !strncmp("3.12.", DL_VERSION, 5) | |
302 | || !strncmp("3.17.", DL_VERSION, 5)) | |
302 | 303 | return 0; |
303 | 304 | |
304 | 305 | return 1; |
390 | 391 | AC_CHECK_FUNCS(realpath canonicalize_file_name) |
391 | 392 | libiberty_NEED_DECLARATION(canonicalize_file_name) |
392 | 393 | |
393 | ||
394 | CFLAGS="$CFLAGS $GDK_PIXBUF_CFLAGS $GTK_CFLAGS $CAIRO_CFLAGS" | |
395 | LIBS="$LIBS $GDK_PIXBUF_LIBS $GTK_LIBS $CAIRO_LIBS" | |
396 | ||
397 | CPPFLAGS="$CPPFLAGS $GTK_CFLAGS" | |
394 | AC_SUBST([GTK_CFLAGS_ISYSTEM], ['$(subst -I/usr/include/gtk-2.0,-isystem /usr/include/gtk-2.0,$(GTK_CFLAGS))']) | |
395 | ||
396 | CFLAGS="$CFLAGS $GDK_PIXBUF_CFLAGS $GTK_CFLAGS_ISYSTEM $CAIRO_CFLAGS" | |
397 | LIBS="$LIBS $GDK_PIXBUF_LIBS $GTK_LIBS $CAIRO_LIBS -lm" | |
398 | ||
399 | AC_ARG_VAR([CPPFLAGS_EXTRA], [Additional flags when compiling]) | |
400 | ||
401 | CPPFLAGS="$CPPFLAGS $GTK_CFLAGS_ISYSTEM $CPPFLAGS_EXTRA" | |
398 | 402 | |
399 | 403 | ############################################################ |
400 | 404 | # |
30 | 30 | # This could be handy for archiving the generated documentation or |
31 | 31 | # if some version control system is used. |
32 | 32 | |
33 | PROJECT_NUMBER = 2.7 | |
33 | PROJECT_NUMBER = $(PROJECT_NUMBER) | |
34 | 34 | |
35 | 35 | # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) |
36 | 36 | # base path where the generated documentation will be put. |
100 | 100 | "F121","0805","2039.504mil","3507.346mil","2040mil","3506.85mil","2039.504mil","3552.346mil","T","270.00","BK2125HS601-T 600R@100MHZ" |
101 | 101 | "F122","0805","1909.944mil","3936.512mil","1909.449mil","3937.008mil","1909.944mil","3891.512mil","T","90.00","BK2125HS601-T 600R@100MHZ" |
102 | 102 | "F123","NFM21C","2253.945mil","3503.914mil","2253.937mil","3503.937mil","2253.944mil","3545.252mil","T","270.00","*" |
103 | "LED200","LED_3M","1260.008mil","1465.26mil","1259.842mil","1515.748mil","1260.008mil","1415.26mil","T","270.00","LED GRÃœN 3MM" | |
103 | "LED200","LED_3M","1260.008mil","1465.26mil","1259.842mil","1515.748mil","1260.008mil","1415.26mil","T","270.00","LED GR\DCN 3MM" | |
104 | 104 | "P100","BOURNS3314J","3030mil","2536.85mil","3030mil","2536.85mil","2952.5mil","2491.85mil","T","270.00","5K 20% 0.25W" |
105 | 105 | "P101","BOURNS3314J","3070mil","696.85mil","3070mil","696.85mil","3115mil","619.35mil","T","360.00","5K 20% 0.25W" |
106 | 106 | "P102","BOURNS3314J","830mil","1296.85mil","830mil","1296.85mil","875mil","1219.35mil","T","360.00","10K 20% 0.25W" |
100 | 100 | F121 0805 2039.504mil 3507.346mil 2040mil 3506.85mil 2039.504mil 3552.346mil T 270.00 BK2125HS601-T 600R@100MHZ |
101 | 101 | F122 0805 1909.944mil 3936.512mil 1909.449mil 3937.008mil 1909.944mil 3891.512mil T 90.00 BK2125HS601-T 600R@100MHZ |
102 | 102 | F123 NFM21C 2253.945mil 3503.914mil 2253.937mil 3503.937mil 2253.944mil 3545.252mil T 270.00 * |
103 | LED200 LED_3M 1260.008mil 1465.26mil 1259.842mil 1515.748mil 1260.008mil 1415.26mil T 270.00 LED GRÃœN 3MM | |
103 | LED200 LED_3M 1260.008mil 1465.26mil 1259.842mil 1515.748mil 1260.008mil 1415.26mil T 270.00 LED GR\DCN 3MM | |
104 | 104 | P100 BOURNS3314J 3030mil 2536.85mil 3030mil 2536.85mil 2952.5mil 2491.85mil T 270.00 5K 20% 0.25W |
105 | 105 | P101 BOURNS3314J 3070mil 696.85mil 3070mil 696.85mil 3115mil 619.35mil T 360.00 5K 20% 0.25W |
106 | 106 | P102 BOURNS3314J 830mil 1296.85mil 830mil 1296.85mil 875mil 1219.35mil T 360.00 10K 20% 0.25W |
0 | .PHONY: all | |
1 | all: clean build | |
2 | ||
3 | ||
4 | .PHONY: clean | |
5 | clean: | |
6 | if [ -f 'doc' ]; then \ | |
7 | rm -rf 'doc'; \ | |
8 | fi | |
9 | ||
10 | if [ -f 'index.html' ]; then \ | |
11 | rm 'index.html'; \ | |
12 | fi | |
13 | ||
14 | ||
15 | .PHONY: build | |
16 | build: | |
17 | make -C '..' doxygen | |
18 | cp -r '../doc/html' 'doc' | |
19 | ||
20 | m4 'index.html.m4' > 'index.html' | |
21 |
0 | <?xml version="1.0" encoding="UTF-8"?> | |
1 | <svg version="1.1" viewBox="0 0 204.7 200.9" xmlns="http://www.w3.org/2000/svg"> | |
2 | <title>Fedora logo (2021)</title> | |
3 | <path d="m102.7 1.987c-55.41 0-100.3 44.21-100.4 98.79h-0.01773v76.47h0.01773c0.02659 12.38 10.22 22.4 22.8 22.4h77.58c55.42-0.0349 100.3-44.24 100.3-98.79 8e-5 -54.58-44.91-98.79-100.4-98.79zm20.39 40.68c16.85 0 32.76 12.7 32.76 30.23 0 1.625 0.01 3.252-0.26 5.095-0.4668 4.662-4.794 8.012-9.505 7.355-4.711-0.6649-7.909-5.07-7.037-9.679 0.0799-0.526 0.1083-1.352 0.1083-2.772 0-9.938-8.257-13.77-16.06-13.77-7.805 0-14.84 6.462-14.85 13.77 0.1349 8.455 0 16.84 0 25.29l14.49-0.1067c11.31-0.2306 11.44 16.54 0.1305 16.46l-14.61 0.1067c-0.0354 6.801 0.0532 5.571 0.0178 8.996 0 0 0.1225 8.318-0.1296 14.62-1.749 18.52-17.76 33.32-37 33.32-20.4 0-37.2-16.41-37.2-36.54 0.6124-20.7 17.38-36.99 38.5-36.8l11.78-0.08737v16.43l-11.78 0.1066h-0.06216c-11.6 0.3382-21.55 8.1-21.74 20.34 0 11.15 9.148 20.08 20.5 20.08 11.34 0 20.42-8.124 20.42-20.06l-0.01772-62.23c0.0058-1.155 0.04435-2.073 0.1731-3.347 1.914-15.22 15.74-26.82 31.39-26.82z" style="fill:#51a2da;stroke-width:.982"/> | |
4 | </svg> |
0 | bg_hr.png CC0-1.0 https://github.com/pages-themes/slate/blob/ff147bf37e3611395f37cc0cdcaee57550293235/assets/images/bg_hr.png | |
1 | blacktocat.png CC0-1.0 https://github.com/pages-themes/slate/blob/ff147bf37e3611395f37cc0cdcaee57550293235/assets/images/blacktocat.png | |
2 | Fedora_icon_(2021).svg [fedora-logo] https://de.wikipedia.org/wiki/Datei:Fedora_icon_(2021).svg | |
3 | cof_orange_hex.png [ubuntu-logo] https://assets.ubuntu.com/v1/9fbc8a44-circle-of-friends-web.zip | |
4 | gerbv.svg GPL-2.0-only https://github.com/gerbv/gerbv/blob/52b9e719981da5a450d073a7a5064d1903926fed/desktop/gerbv.svg | |
5 | icon_download.png CC0-1.0 https://github.com/pages-themes/slate/blob/ff147bf37e3611395f37cc0cdcaee57550293235/assets/images/icon_download.png | |
6 | slate-style.css CC0-1.0 https://github.com/pages-themes/slate/tree/a185c0dde883863779be4856421ba0b2390f44a4 | |
7 | sprite_download.png CC0-1.0 https://github.com/pages-themes/slate/blob/ff147bf37e3611395f37cc0cdcaee57550293235/assets/images/sprite_download.png | |
8 | Windows_10_Logo.png [windows-logo] https://de.wikipedia.org/wiki/Datei:Windows_10_Logo.svg | |
9 | ||
10 | [fedora-logo]: https://fedoraproject.org/wiki/Legal:Trademark_guidelines | |
11 | [ubuntu-logo]: https://design.ubuntu.com/brand/ubuntu-logo/ | |
12 | [windows-logo]: https://www.microsoft.com/en-us/legal/intellectualproperty/trademarks | |
13 |
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
0 | <?xml version="1.0" encoding="UTF-8" standalone="no"?> | |
1 | <!-- Created with Inkscape (http://www.inkscape.org/) --> | |
2 | <svg | |
3 | xmlns:svg="http://www.w3.org/2000/svg" | |
4 | xmlns="http://www.w3.org/2000/svg" | |
5 | xmlns:xlink="http://www.w3.org/1999/xlink" | |
6 | version="1.0" | |
7 | width="128" | |
8 | height="128" | |
9 | id="svg2396"> | |
10 | <defs | |
11 | id="defs2398"> | |
12 | <linearGradient | |
13 | id="linearGradient4684"> | |
14 | <stop | |
15 | style="stop-color:#000000;stop-opacity:1" | |
16 | offset="0" | |
17 | id="stop4686" /> | |
18 | <stop | |
19 | style="stop-color:#343434;stop-opacity:1" | |
20 | offset="1" | |
21 | id="stop4688" /> | |
22 | </linearGradient> | |
23 | <linearGradient | |
24 | id="linearGradient5048"> | |
25 | <stop | |
26 | style="stop-color:#000000;stop-opacity:0" | |
27 | offset="0" | |
28 | id="stop5050" /> | |
29 | <stop | |
30 | style="stop-color:#000000;stop-opacity:1" | |
31 | offset="0.5" | |
32 | id="stop5056" /> | |
33 | <stop | |
34 | style="stop-color:#000000;stop-opacity:0" | |
35 | offset="1" | |
36 | id="stop5052" /> | |
37 | </linearGradient> | |
38 | <linearGradient | |
39 | id="linearGradient2937"> | |
40 | <stop | |
41 | style="stop-color:#333333;stop-opacity:1" | |
42 | offset="0" | |
43 | id="stop2939" /> | |
44 | <stop | |
45 | style="stop-color:#474747;stop-opacity:1" | |
46 | offset="1" | |
47 | id="stop2941" /> | |
48 | </linearGradient> | |
49 | <linearGradient | |
50 | id="linearGradient2929"> | |
51 | <stop | |
52 | style="stop-color:#737373;stop-opacity:1" | |
53 | offset="0" | |
54 | id="stop2931" /> | |
55 | <stop | |
56 | style="stop-color:#73a424;stop-opacity:1" | |
57 | offset="1" | |
58 | id="stop2933" /> | |
59 | </linearGradient> | |
60 | <linearGradient | |
61 | id="linearGradient5464"> | |
62 | <stop | |
63 | style="stop-color:#73d216;stop-opacity:1" | |
64 | offset="0" | |
65 | id="stop5466" /> | |
66 | <stop | |
67 | style="stop-color:#ffffff;stop-opacity:1" | |
68 | offset="1" | |
69 | id="stop5468" /> | |
70 | </linearGradient> | |
71 | <linearGradient | |
72 | id="linearGradient4360"> | |
73 | <stop | |
74 | style="stop-color:#d8d8d8;stop-opacity:0" | |
75 | offset="0" | |
76 | id="stop4362" /> | |
77 | <stop | |
78 | style="stop-color:#ffffff;stop-opacity:1" | |
79 | offset="1" | |
80 | id="stop4364" /> | |
81 | </linearGradient> | |
82 | <linearGradient | |
83 | x1="21.313709" | |
84 | y1="10.795495" | |
85 | x2="13.984389" | |
86 | y2="10.795495" | |
87 | id="linearGradient6447" | |
88 | xlink:href="#linearGradient5464" | |
89 | gradientUnits="userSpaceOnUse" | |
90 | gradientTransform="matrix(1,0,0,1.4112692,0,-7.1972126)" | |
91 | spreadMethod="reflect" /> | |
92 | <linearGradient | |
93 | x1="27.16466" | |
94 | y1="41.576271" | |
95 | x2="37.249554" | |
96 | y2="33.886486" | |
97 | id="linearGradient3645" | |
98 | xlink:href="#linearGradient4360" | |
99 | gradientUnits="userSpaceOnUse" | |
100 | spreadMethod="reflect" /> | |
101 | <linearGradient | |
102 | x1="21.313709" | |
103 | y1="10.795495" | |
104 | x2="13.984389" | |
105 | y2="10.795495" | |
106 | id="linearGradient3669" | |
107 | xlink:href="#linearGradient5464" | |
108 | gradientUnits="userSpaceOnUse" | |
109 | gradientTransform="matrix(1,0,0,1.4112692,0,-7.1972126)" | |
110 | spreadMethod="reflect" /> | |
111 | <linearGradient | |
112 | x1="40.751785" | |
113 | y1="43.994072" | |
114 | x2="7.5954852" | |
115 | y2="4.2193146" | |
116 | id="linearGradient3326" | |
117 | xlink:href="#linearGradient2937" | |
118 | gradientUnits="userSpaceOnUse" | |
119 | gradientTransform="matrix(0.889237,0,0,0.7822742,0.6229226,7.6471606)" /> | |
120 | <linearGradient | |
121 | x1="40.751785" | |
122 | y1="43.994072" | |
123 | x2="7.5954852" | |
124 | y2="4.2193146" | |
125 | id="linearGradient2250" | |
126 | xlink:href="#linearGradient2937" | |
127 | gradientUnits="userSpaceOnUse" | |
128 | gradientTransform="matrix(0.889237,0,0,0.7822742,0.6229226,7.6471606)" /> | |
129 | <linearGradient | |
130 | x1="40.751785" | |
131 | y1="43.994072" | |
132 | x2="7.5954852" | |
133 | y2="4.2193146" | |
134 | id="linearGradient2294" | |
135 | xlink:href="#linearGradient2937" | |
136 | gradientUnits="userSpaceOnUse" | |
137 | gradientTransform="matrix(0.889237,0,0,0.7822742,0.6229226,7.6471606)" /> | |
138 | <linearGradient | |
139 | x1="40.751785" | |
140 | y1="43.994072" | |
141 | x2="7.5954852" | |
142 | y2="4.2193146" | |
143 | id="linearGradient2500" | |
144 | xlink:href="#linearGradient2937" | |
145 | gradientUnits="userSpaceOnUse" | |
146 | gradientTransform="matrix(0.889237,0,0,0.7822742,0.6229226,7.6471606)" /> | |
147 | <linearGradient | |
148 | x1="40.751785" | |
149 | y1="43.994072" | |
150 | x2="7.5954852" | |
151 | y2="4.2193146" | |
152 | id="linearGradient2502" | |
153 | xlink:href="#linearGradient2937" | |
154 | gradientUnits="userSpaceOnUse" | |
155 | gradientTransform="matrix(0.889237,0,0,0.7822742,0.6229226,7.6471606)" /> | |
156 | </defs> | |
157 | <g | |
158 | style="display:inline" | |
159 | id="layer1" /> | |
160 | <g | |
161 | style="display:inline" | |
162 | id="layer2"> | |
163 | <g | |
164 | transform="matrix(2.3604652,1.2409028,-1.2407632,2.3607308,51.999447,-21.683224)" | |
165 | style="display:inline" | |
166 | id="use3514"> | |
167 | <rect | |
168 | width="31.01214" | |
169 | height="32.011047" | |
170 | ry="0.89887106" | |
171 | x="6.4950466" | |
172 | y="10.499681" | |
173 | style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:0.63253012;fill-rule:nonzero;stroke:url(#linearGradient2500);stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
174 | id="rect2210" /> | |
175 | <rect | |
176 | width="28.997715" | |
177 | height="30.003584" | |
178 | rx="0.13186733" | |
179 | ry="0.1148243" | |
180 | x="7.5" | |
181 | y="11.496416" | |
182 | style="opacity:0.79120878;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
183 | id="rect2212" /> | |
184 | <path | |
185 | d="M 10.184257,13.467549 L 15.5,13.5 L 18.5,16.5 L 18.5,24.5" | |
186 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
187 | id="path2214" /> | |
188 | <path | |
189 | d="M 22.5,24.5 L 22.5,16.5 L 19.5,13.5" | |
190 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
191 | id="path2216" /> | |
192 | <path | |
193 | d="M 26.5,24.5 L 26.5,16.5 L 23.5,13.5" | |
194 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
195 | id="path2218" /> | |
196 | <path | |
197 | d="M 30.5,24.5 L 30.5,13.5" | |
198 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
199 | id="path2220" /> | |
200 | <path | |
201 | d="M 18.5,24.5 L 18.5,26.5" | |
202 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
203 | id="path2222" /> | |
204 | <path | |
205 | d="M 22.5,24.5 L 22.5,26.5" | |
206 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
207 | id="path2224" /> | |
208 | <path | |
209 | d="M 26.5,24.5 L 26.5,26.5" | |
210 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
211 | id="path2226" /> | |
212 | <path | |
213 | d="M 30.5,24.5 L 30.5,26.5" | |
214 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
215 | id="path2228" /> | |
216 | <path | |
217 | d="M 30.5,31.5 L 30.5,33.5" | |
218 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
219 | id="path2230" /> | |
220 | <path | |
221 | d="M 26.5,31.5 L 26.5,33.5" | |
222 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
223 | id="path2232" /> | |
224 | <path | |
225 | d="M 22.5,31.5 L 22.5,33.5" | |
226 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
227 | id="path2234" /> | |
228 | <path | |
229 | d="M 18.5,31.5 L 18.5,33.5" | |
230 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
231 | id="path2236" /> | |
232 | <path | |
233 | d="M 18.5,33.5 L 18.5,36.5 L 16.5,38.5 L 10.5,38.5" | |
234 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
235 | id="path2238" /> | |
236 | <path | |
237 | d="M 22.5,33.5 L 22.5,38.5" | |
238 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
239 | id="path2240" /> | |
240 | <path | |
241 | d="M 26.5,33.5 L 26.5,36.5 L 28.5,38.5 L 34.5,38.5" | |
242 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
243 | id="path2242" /> | |
244 | <path | |
245 | d="M 30.5,33.5 L 32.5,35.5 L 34.5,35.5" | |
246 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
247 | id="path2244" /> | |
248 | <path | |
249 | d="M 10.5,15.5 L 14.5,15.5 L 16.5,17.5 L 16.5,35.5 L 15.5,36.5 L 10.5,36.5 L 10.5,15.5 z " | |
250 | style="opacity:1;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
251 | id="path2246" /> | |
252 | <rect | |
253 | width="16" | |
254 | height="13" | |
255 | ry="2.0280445" | |
256 | x="16.5" | |
257 | y="22.5" | |
258 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
259 | id="rect2248" /> | |
260 | </g> | |
261 | <use | |
262 | transform="matrix(0.9736689,0.2279926,-0.2279414,0.9736689,26.137765,-19.83503)" | |
263 | style="display:inline" | |
264 | id="use3466" | |
265 | x="0" | |
266 | y="0" | |
267 | width="48" | |
268 | height="48" | |
269 | xlink:href="#use3464" /> | |
270 | <g | |
271 | transform="matrix(2.6667,0,0,2.667,-10.653592,2.6383863)" | |
272 | style="display:inline" | |
273 | id="use3464"> | |
274 | <rect | |
275 | width="31.01214" | |
276 | height="32.011047" | |
277 | ry="0.89887106" | |
278 | x="6.4950466" | |
279 | y="10.499681" | |
280 | style="opacity:1;color:#000000;fill:#ffffff;fill-opacity:0.63253012;fill-rule:nonzero;stroke:url(#linearGradient2502);stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
281 | id="rect2254" /> | |
282 | <rect | |
283 | width="28.997715" | |
284 | height="30.003584" | |
285 | rx="0.13186733" | |
286 | ry="0.1148243" | |
287 | x="7.5" | |
288 | y="11.496416" | |
289 | style="opacity:0.79120878;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#ffffff;stroke-width:1;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
290 | id="rect2256" /> | |
291 | <path | |
292 | d="M 10.184257,13.467549 L 15.5,13.5 L 18.5,16.5 L 18.5,24.5" | |
293 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
294 | id="path2258" /> | |
295 | <path | |
296 | d="M 22.5,24.5 L 22.5,16.5 L 19.5,13.5" | |
297 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
298 | id="path2260" /> | |
299 | <path | |
300 | d="M 26.5,24.5 L 26.5,16.5 L 23.5,13.5" | |
301 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
302 | id="path2262" /> | |
303 | <path | |
304 | d="M 30.5,24.5 L 30.5,13.5" | |
305 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
306 | id="path2264" /> | |
307 | <path | |
308 | d="M 18.5,24.5 L 18.5,26.5" | |
309 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
310 | id="path2266" /> | |
311 | <path | |
312 | d="M 22.5,24.5 L 22.5,26.5" | |
313 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
314 | id="path2268" /> | |
315 | <path | |
316 | d="M 26.5,24.5 L 26.5,26.5" | |
317 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
318 | id="path2270" /> | |
319 | <path | |
320 | d="M 30.5,24.5 L 30.5,26.5" | |
321 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
322 | id="path2272" /> | |
323 | <path | |
324 | d="M 30.5,31.5 L 30.5,33.5" | |
325 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
326 | id="path2274" /> | |
327 | <path | |
328 | d="M 26.5,31.5 L 26.5,33.5" | |
329 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
330 | id="path2276" /> | |
331 | <path | |
332 | d="M 22.5,31.5 L 22.5,33.5" | |
333 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
334 | id="path2278" /> | |
335 | <path | |
336 | d="M 18.5,31.5 L 18.5,33.5" | |
337 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.99999988;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
338 | id="path2280" /> | |
339 | <path | |
340 | d="M 18.5,33.5 L 18.5,36.5 L 16.5,38.5 L 10.5,38.5" | |
341 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
342 | id="path2282" /> | |
343 | <path | |
344 | d="M 22.5,33.5 L 22.5,38.5" | |
345 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
346 | id="path2284" /> | |
347 | <path | |
348 | d="M 26.5,33.5 L 26.5,36.5 L 28.5,38.5 L 34.5,38.5" | |
349 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
350 | id="path2286" /> | |
351 | <path | |
352 | d="M 30.5,33.5 L 32.5,35.5 L 34.5,35.5" | |
353 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
354 | id="path2288" /> | |
355 | <path | |
356 | d="M 10.5,15.5 L 14.5,15.5 L 16.5,17.5 L 16.5,35.5 L 15.5,36.5 L 10.5,36.5 L 10.5,15.5 z " | |
357 | style="opacity:1;color:#000000;fill:#000000;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
358 | id="path2290" /> | |
359 | <rect | |
360 | width="16" | |
361 | height="13" | |
362 | ry="2.0280445" | |
363 | x="16.5" | |
364 | y="22.5" | |
365 | style="opacity:1;color:#000000;fill:none;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.99999994;stroke-linecap:round;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:block;overflow:visible" | |
366 | id="rect2292" /> | |
367 | </g> | |
368 | <path | |
369 | d="M 10.6668,69.342 L 10.6668,34.671 L 85.3344,34.671 L 85.3344,69.342 C 66.6675,85.344 37.3338,53.34 10.6668,69.342 z " | |
370 | style="fill:#ffffff;fill-opacity:0.51807233;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;display:inline" | |
371 | id="path3470" /> | |
372 | <path | |
373 | d="M 31 31 A 10 10 0 1 1 11,31 A 10 10 0 1 1 31 31 z" | |
374 | transform="scale(2.6667,2.667)" | |
375 | style="color:#000000;fill:#72a0cf;fill-opacity:0.30120485;fill-rule:evenodd;stroke:#000000;stroke-width:1.5;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | |
376 | id="path3519" /> | |
377 | <rect | |
378 | width="8.3139791" | |
379 | height="46.050308" | |
380 | ry="2.9566638" | |
381 | x="-56.911964" | |
382 | y="108.47866" | |
383 | transform="matrix(0.3823627,-0.9240123,0.9041292,0.4272591,0,0)" | |
384 | style="color:#000000;fill:#2e3436;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.66845894;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" | |
385 | id="rect3521" /> | |
386 | </g> | |
387 | </svg> |
Binary diff not shown
0 | .highlight table td{padding:5px}.highlight table pre{margin:0}.highlight .cm{color:#777772;font-style:italic}.highlight .cp{color:#797676;font-weight:bold}.highlight .c1{color:#777772;font-style:italic}.highlight .cs{color:#797676;font-weight:bold;font-style:italic}.highlight .c,.highlight .cd{color:#777772;font-style:italic}.highlight .err{color:#a61717;background-color:#e3d2d2}.highlight .gd{color:#000000;background-color:#ffdddd}.highlight .ge{color:#000000;font-style:italic}.highlight .gr{color:#aa0000}.highlight .gh{color:#797676}.highlight .gi{color:#000000;background-color:#ddffdd}.highlight .go{color:#888888}.highlight .gp{color:#555555}.highlight .gs{font-weight:bold}.highlight .gu{color:#aaaaaa}.highlight .gt{color:#aa0000}.highlight .kc{color:#000000;font-weight:bold}.highlight .kd{color:#000000;font-weight:bold}.highlight .kn{color:#000000;font-weight:bold}.highlight .kp{color:#000000;font-weight:bold}.highlight .kr{color:#000000;font-weight:bold}.highlight .kt{color:#445588;font-weight:bold}.highlight .k,.highlight .kv{color:#000000;font-weight:bold}.highlight .mf{color:#009999}.highlight .mh{color:#009999}.highlight .il{color:#009999}.highlight .mi{color:#009999}.highlight .mo{color:#009999}.highlight .m,.highlight .mb,.highlight .mx{color:#009999}.highlight .sb{color:#d14}.highlight .sc{color:#d14}.highlight .sd{color:#d14}.highlight .s2{color:#d14}.highlight .se{color:#d14}.highlight .sh{color:#d14}.highlight .si{color:#d14}.highlight .sx{color:#d14}.highlight .sr{color:#009926}.highlight .s1{color:#d14}.highlight .ss{color:#990073}.highlight .s{color:#d14}.highlight .na{color:#008080}.highlight .bp{color:#797676}.highlight .nb{color:#0086B3}.highlight .nc{color:#445588;font-weight:bold}.highlight .no{color:#008080}.highlight .nd{color:#3c5d5d;font-weight:bold}.highlight .ni{color:#800080}.highlight .ne{color:#990000;font-weight:bold}.highlight .nf{color:#990000;font-weight:bold}.highlight .nl{color:#990000;font-weight:bold}.highlight .nn{color:#555555}.highlight .nt{color:#000080}.highlight .vc{color:#008080}.highlight .vg{color:#008080}.highlight .vi{color:#008080}.highlight .nv{color:#008080}.highlight .ow{color:#000000;font-weight:bold}.highlight .o{color:#000000;font-weight:bold}.highlight .w{color:#bbbbbb}.highlight{background-color:#f8f8f8}html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video{margin:0;padding:0;border:0;font:inherit;vertical-align:baseline}article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{display:block}ol,ul{list-style:none}table{border-collapse:collapse;border-spacing:0}body{box-sizing:border-box;color:#373737;background:#212121;font-size:16px;font-family:'Myriad Pro', Calibri, Helvetica, Arial, sans-serif;line-height:1.5;-webkit-font-smoothing:antialiased}h1,h2,h3,h4,h5,h6{margin:10px 0;font-weight:700;color:#222222;font-family:'Lucida Grande', 'Calibri', Helvetica, Arial, sans-serif;letter-spacing:-1px}h1{font-size:36px;font-weight:700}h2{padding-bottom:10px;font-size:32px;background:url("bg_hr.png") repeat-x bottom}h3{font-size:24px}h4{font-size:21px}h5{font-size:18px}h6{font-size:16px}p{margin:10px 0 15px 0}footer p{color:#f2f2f2}a{text-decoration:none;color:#0F79D0;text-shadow:none;transition:color 0.5s ease;transition:text-shadow 0.5s ease;-webkit-transition:color 0.5s ease;-webkit-transition:text-shadow 0.5s ease;-moz-transition:color 0.5s ease;-moz-transition:text-shadow 0.5s ease;-o-transition:color 0.5s ease;-o-transition:text-shadow 0.5s ease;-ms-transition:color 0.5s ease;-ms-transition:text-shadow 0.5s ease}a:hover,a:focus{text-decoration:underline}footer a{color:#F2F2F2;text-decoration:underline}em,cite{font-style:italic}strong{font-weight:bold}img{position:relative;margin:0 auto;max-width:739px;padding:5px;margin:10px 0 10px 0;border:1px solid #ebebeb;box-shadow:0 0 5px #ebebeb;-webkit-box-shadow:0 0 5px #ebebeb;-moz-box-shadow:0 0 5px #ebebeb;-o-box-shadow:0 0 5px #ebebeb;-ms-box-shadow:0 0 5px #ebebeb}p img{display:inline;margin:0;padding:0;vertical-align:middle;text-align:center;border:none}pre,code{color:#222;background-color:#fff;font-family:Monaco, "Bitstream Vera Sans Mono", "Lucida Console", Terminal, monospace;font-size:0.875em;border-radius:2px;-moz-border-radius:2px;-webkit-border-radius:2px}pre{padding:10px;box-shadow:0 0 10px rgba(0,0,0,0.1);overflow:auto}code{padding:3px;margin:0 3px;box-shadow:0 0 10px rgba(0,0,0,0.1)}pre code{display:block;box-shadow:none}blockquote{color:#666;margin-bottom:20px;padding:0 0 0 20px;border-left:3px solid #bbb}ul,ol,dl{margin-bottom:15px}ul{list-style-position:inside;list-style:disc;padding-left:20px}ol{list-style-position:inside;list-style:decimal;padding-left:20px}dl dt{font-weight:bold}dl dd{padding-left:20px;font-style:italic}dl p{padding-left:20px;font-style:italic}hr{height:1px;margin-bottom:5px;border:none;background:url("bg_hr.png") repeat-x center}table{border:1px solid #373737;margin-bottom:20px;text-align:left}th{font-family:'Lucida Grande', 'Helvetica Neue', Helvetica, Arial, sans-serif;padding:10px;background:#373737;color:#fff}td{padding:10px;border:1px solid #373737}form{background:#f2f2f2;padding:20px}kbd{background-color:#fafbfc;border:1px solid #c6cbd1;border-bottom-color:#959da5;border-radius:3px;box-shadow:inset 0 -1px 0 #959da5;color:#444d56;display:inline-block;font-size:11px;line-height:11px;padding:3px 5px;vertical-align:middle}.outer{width:100%}.inner{position:relative;max-width:640px;padding:20px 10px;margin:0 auto}#forkme_banner{display:block;position:absolute;top:0;right:10px;z-index:10;padding:10px 50px 10px 10px;color:#fff;background:url("blacktocat.png") #0090ff no-repeat 95% 50%;font-weight:700;box-shadow:0 0 10px rgba(0,0,0,0.5);border-bottom-left-radius:2px;border-bottom-right-radius:2px}#header_wrap{background:#212121;background:-moz-linear-gradient(top, #373737, #212121);background:-webkit-linear-gradient(top, #373737, #212121);background:-ms-linear-gradient(top, #373737, #212121);background:-o-linear-gradient(top, #373737, #212121);background:linear-gradient(to top, #373737, #212121)}#header_wrap .inner{padding:50px 10px 30px 10px}#project_title{margin:0;color:#fff;font-size:42px;font-weight:700;text-shadow:#111 0px 0px 10px}#project_tagline{color:#fff;font-size:24px;font-weight:300;background:none;text-shadow:#111 0px 0px 10px}#downloads{position:absolute;width:210px;z-index:10;bottom:-40px;right:0;height:70px;background:url("icon_download.png") no-repeat 0% 90%}.zip_download_link{display:block;float:right;width:90px;height:70px;text-indent:-5000px;overflow:hidden;background:url(sprite_download.png) no-repeat bottom left}.tar_download_link{display:block;float:right;width:90px;height:70px;text-indent:-5000px;overflow:hidden;background:url(sprite_download.png) no-repeat bottom right;margin-left:10px}.zip_download_link:hover{background:url(sprite_download.png) no-repeat top left}.tar_download_link:hover{background:url(sprite_download.png) no-repeat top right}#main_content_wrap{background:#f2f2f2;border-top:1px solid #111;border-bottom:1px solid #111}#main_content{padding-top:40px}#footer_wrap{background:#212121}@media screen and (max-width: 992px){img{max-width:100%}}@media screen and (max-width: 480px){body{font-size:14px}#downloads{display:none}.inner{min-width:320px;max-width:480px}#project_title{font-size:32px}h1{font-size:28px}h2{font-size:24px}h3{font-size:21px}h4{font-size:18px}h5{font-size:14px}h6{font-size:12px}code,pre{font-size:11px}}@media screen and (max-width: 320px){body{font-size:14px}#downloads{display:none}.inner{min-width:240px;max-width:320px}#project_title{font-size:28px}h1{font-size:24px}h2{font-size:21px}h3{font-size:18px}h4{font-size:16px}h5{font-size:14px}h6{font-size:12px}code,pre{min-width:240px;max-width:320px;font-size:11px}} |
Binary diff not shown
0 | /*.RELEASE_COMMIT | |
1 | /*.RELEASE_COMMIT_SHORT | |
2 | /*.RELEASE_DATE | |
3 | /*.RELEASE_FILENAME | |
4 | /*.tar.gz | |
5 | /*.zip |
Binary diff not shown
0 | ||
1 | <!DOCTYPE html> | |
2 | <html lang="en-US"> | |
3 | ||
4 | <!-- | |
5 | | Theme based on GitHub Pages slate theme | |
6 | | | |
7 | | @see https://github.com/pages-themes/slate | |
8 | | @see https://github.com/pages-themes/slate/blob/master/LICENSE | |
9 | --> | |
10 | ||
11 | <head> | |
12 | <meta charset='utf-8'> | |
13 | <meta http-equiv="X-UA-Compatible" content="IE=edge"> | |
14 | <meta name="viewport" content="width=device-width,maximum-scale=2"> | |
15 | <link rel="stylesheet" type="text/css" media="screen" href="/assets/slate-style.css?v=a185c0dde883863779be4856421ba0b2390f44a4"> | |
16 | ||
17 | <title>gerbv - A Free/Open Source Gerber Viewer</title> | |
18 | <meta name="description" content="Gerbv is a viewer for Gerber RS-274X files, Excellon drill files, and CSV pick-and-place files." /> | |
19 | </head> | |
20 | ||
21 | <body> | |
22 | ||
23 | <!-- HEADER --> | |
24 | <div id="header_wrap" class="outer"> | |
25 | <header class="inner"> | |
26 | ||
27 | <a id="forkme_banner" href="https://github.com/gerbv/gerbv">View on GitHub</a> | |
28 | ||
29 | <img src="assets/gerbv.svg" style="float: left; box-shadow: none; border: none; padding-right: 2em" /> | |
30 | <h1 id="project_title">gerbv</h1> | |
31 | <h2 id="project_tagline">A Free/Open Source Gerber Viewer</h2> | |
32 | ||
33 | <section id="downloads"> | |
34 | <a class="zip_download_link" href="https://github.com/gerbv/gerbv/zipball/main">Download this project as a .zip file</a> | |
35 | <a class="tar_download_link" href="https://github.com/gerbv/gerbv/tarball/main">Download this project as a tar.gz file</a> | |
36 | </section> | |
37 | ||
38 | </header> | |
39 | </div> | |
40 | ||
41 | <!-- MAIN CONTENT --> | |
42 | <div id="main_content_wrap" class="outer"> | |
43 | <section id="main_content" class="inner"> | |
44 | ||
45 | <h2>Overview</h2> | |
46 | ||
47 | <ul> | |
48 | <li>Gerbv is a viewer for Gerber RS-274X files, Excellon drill files, and CSV pick-and-place files.</li> | |
49 | <li>Gerbv is a native Linux application, and it runs on many common UNIX platforms. A Windows version is also available.</li> | |
50 | <li>Gerbv is <a href="http://www.gnu.org/philosophy/free-sw.html">free</a> / <a href="http://www.opensource.org/docs/osd">open-source</a> software.</li> | |
51 | <li>The core functionality of gerbv is located in a separate library (<a href="doc">libgerbv</a>), allowing developers to include Gerber parsing/editing/exporting/rendering into other programs</li> | |
52 | <li>Gerbv was originally developed as one of the utilities affiliated with the <a href="http://www.geda-project.org/">gEDA project</a>, an umbrella organization dedicated to producing free software tools for electronic design.</li> | |
53 | </ul> | |
54 | ||
55 | ||
56 | <h2>Download</h2> | |
57 | ||
58 | <p>No official releases have been published yet, however you can download the latest binaries for various platforms here. Be aware however that they are not manually verified!</p> | |
59 | ||
60 | <table style="width: 100%"> | |
61 | <tr> | |
62 | <th>OS</th> | |
63 | <th>Build date</th> | |
64 | <th>Source</th> | |
65 | <th>Download</th> | |
66 | </tr> | |
67 | <tr> | |
68 | <td style="vertical-align: middle"><img src="assets/Fedora_icon_(2021).svg" alt="Fedora 34" title="Fedora 34" style="height: 100px; box-shadow: none; border: none" /></td> | |
69 | <td style="vertical-align: middle">include(ci/Fedora 34.RELEASE_DATE)</td> | |
70 | <td style="vertical-align: middle"><code><a href="https://github.com/gerbv/gerbv/tree/include(ci/Fedora 34.RELEASE_COMMIT)">include(ci/Fedora 34.RELEASE_COMMIT_SHORT)</a></code></td> | |
71 | <td style="vertical-align: middle"><a class="tar_download_link" href="ci/include(ci/Fedora 34.RELEASE_FILENAME)">Download Fedora 34 binaries</a></td> | |
72 | </tr> | |
73 | <tr> | |
74 | <td style="vertical-align: middle"><img src="assets/cof_orange_hex.png" alt="Ubuntu 20.04" title="Ubuntu 20.04" style="height: 100px; box-shadow: none; border: none" /></td> | |
75 | <td style="vertical-align: middle">include(ci/Ubuntu 20.04.RELEASE_DATE)</td> | |
76 | <td style="vertical-align: middle"><code><a href="https://github.com/gerbv/gerbv/tree/include(ci/Ubuntu 20.04.RELEASE_COMMIT)">include(ci/Ubuntu 20.04.RELEASE_COMMIT_SHORT)</a></code></td> | |
77 | <td style="vertical-align: middle"><a class="tar_download_link" href="ci/include(ci/Ubuntu 20.04.RELEASE_FILENAME)">Download Ubuntu 20.04 binaries</a></td> | |
78 | </tr> | |
79 | <tr> | |
80 | <td style="vertical-align: middle"><img src="assets/Windows_10_Logo.png" alt="Windows amd64" title="Windows amd64" style="height: 100px; box-shadow: none; border: none" /></td> | |
81 | <td style="vertical-align: middle">include(ci/Windows amd64.RELEASE_DATE)</td> | |
82 | <td style="vertical-align: middle"><code><a href="https://github.com/gerbv/gerbv/tree/include(ci/Windows amd64.RELEASE_COMMIT)">include(ci/Windows amd64.RELEASE_COMMIT_SHORT)</a></code></td> | |
83 | <td style="vertical-align: middle"><a class="zip_download_link" href="ci/include(ci/Windows amd64.RELEASE_FILENAME)">Download Windows amd64 binaries</a></td> | |
84 | </tr> | |
85 | </table> | |
86 | ||
87 | </section> | |
88 | </div> | |
89 | ||
90 | <!-- FOOTER --> | |
91 | <div id="footer_wrap" class="outer"> | |
92 | <footer class="inner"> | |
93 | ||
94 | <p class="copyright">Slate theme maintained by <a href="https://github.com/pages-themes">pages-themes</a></p> | |
95 | </footer> | |
96 | </div> | |
97 | </body> | |
98 | </html> | |
99 |
198 | 198 | |
199 | 199 | /* Update the last folder */ |
200 | 200 | g_free (mainProject->path); |
201 | mainProject->path = project_filename; | |
201 | mainProject->path = g_strdup(project_filename); | |
202 | 202 | |
203 | 203 | gerbv_unload_all_layers (mainProject); |
204 | 204 | main_open_project_from_filename (mainProject, project_filename); |
438 | 438 | { |
439 | 439 | gint i, filecount, img; |
440 | 440 | gerbv_image_t *out; |
441 | gerbv_layertype_t layertype; | |
441 | 442 | struct l_image_info { |
442 | 443 | gerbv_image_t *image; |
443 | 444 | gerbv_user_transformation_t *transform; |
445 | 446 | |
446 | 447 | images=(struct l_image_info *)g_new0(struct l_image_info,1); |
447 | 448 | out = NULL; |
448 | switch(type){ | |
449 | case CALLBACKS_SAVE_FILE_DRILLM: | |
450 | type=GERBV_LAYERTYPE_DRILL; | |
451 | break; | |
452 | case CALLBACKS_SAVE_FILE_RS274XM: | |
453 | type=GERBV_LAYERTYPE_RS274X; | |
454 | break; | |
455 | default: | |
456 | GERB_COMPILE_ERROR(_("Unknown Layer type for merge")); | |
457 | goto err; | |
449 | switch(type) { | |
450 | case CALLBACKS_SAVE_FILE_DRILLM: | |
451 | layertype = GERBV_LAYERTYPE_DRILL; | |
452 | break; | |
453 | case CALLBACKS_SAVE_FILE_RS274XM: | |
454 | layertype = GERBV_LAYERTYPE_RS274X; | |
455 | break; | |
456 | default: | |
457 | GERB_COMPILE_ERROR(_("Unknown Layer type for merge")); | |
458 | goto err; | |
458 | 459 | } |
459 | 460 | dprintf("Looking for matching files\n"); |
460 | 461 | for (i = img = filecount = 0; i < mainProject->max_files; ++i) { |
461 | 462 | if (mainProject->file[i] && mainProject->file[i]->isVisible && |
462 | (mainProject->file[i]->image->layertype == type)) { | |
463 | (mainProject->file[i]->image->layertype == layertype)) { | |
463 | 464 | ++filecount; |
464 | 465 | dprintf("Adding '%s'\n", mainProject->file[i]->name); |
465 | 466 | images[img].image=mainProject->file[i]->image; |
501 | 502 | for (int i = 0; i < mainProject->max_files; ++i) { |
502 | 503 | if (mainProject->file[i] |
503 | 504 | && mainProject->file[i]->isVisible |
504 | && (layer_type == -1 || layer_type == | |
505 | mainProject->file[i]->image->layertype)) { | |
506 | ||
505 | && (layer_type == (gerbv_layertype_t)-1 | |
506 | || layer_type == mainProject->file[i]->image->layertype)) { | |
507 | 507 | if (first_vis_file == NULL) { |
508 | 508 | first_vis_file = mainProject->file[i]; |
509 | 509 | /* Always directory of first visible file */ |
1869 | 1869 | "Version %s\n" |
1870 | 1870 | "Compiled on %s at %s\n" |
1871 | 1871 | "\n" |
1872 | "Gerbv is part of the gEDA Project.\n" | |
1872 | "Gerbv was originally developed as part of the gEDA Project " | |
1873 | "but is now seperatly maintained.\n" | |
1873 | 1874 | "\n" |
1874 | 1875 | "For more information see:\n" |
1875 | " gEDA homepage: http://geda-project.org/\n" | |
1876 | " gEDA Wiki: http://wiki.geda-project.org/"), | |
1876 | " gerbv homepage: https://gerbv.github.io/\n" | |
1877 | " gerbv repository: https://github.com/gerbv/gerbv"), | |
1877 | 1878 | VERSION, __DATE__, __TIME__); |
1878 | 1879 | |
1879 | 1880 | #if GTK_CHECK_VERSION(2,6,0) |
1915 | 1916 | a[i] = _(authors_string_array[i]); |
1916 | 1917 | |
1917 | 1918 | gtk_about_dialog_set_authors(GTK_ABOUT_DIALOG (aboutdialog1), (const gchar **)a); |
1918 | gtk_about_dialog_set_website(GTK_ABOUT_DIALOG (aboutdialog1), "http://gerbv.geda-project.org/"); | |
1919 | gtk_about_dialog_set_website(GTK_ABOUT_DIALOG (aboutdialog1), "https://gerbv.github.io/"); | |
1919 | 1920 | g_free(a); |
1920 | 1921 | |
1921 | 1922 | g_signal_connect (G_OBJECT(aboutdialog1),"response", |
2767 | 2768 | } |
2768 | 2769 | |
2769 | 2770 | open_files(fns); |
2770 | g_slist_free(fns); | |
2771 | g_slist_free_full(fns, g_free); | |
2771 | 2772 | g_strfreev(uris); |
2772 | 2773 | |
2773 | 2774 | return TRUE; |
2859 | 2860 | GtkTreeIter iter; |
2860 | 2861 | GtkTreeSelection *selection; |
2861 | 2862 | gint oldSelectedRow; |
2862 | int i; | |
2863 | 2863 | |
2864 | 2864 | if (screen.win.treeIsUpdating) |
2865 | 2865 | return; |
2981 | 2981 | gtk_widget_set_sensitive (screen.win.curLayerMenuItem, showItems); |
2982 | 2982 | gtk_widget_set_sensitive (screen.win.curAnalyzeMenuItem, showItems); |
2983 | 2983 | gtk_widget_set_sensitive (screen.win.curEditMenuItem, showItems); |
2984 | for (i = 0; i < sizeof(screen.win.curFileMenuItem)/ | |
2985 | sizeof(screen.win.curFileMenuItem[0]); i++) { | |
2984 | for (unsigned int i = 0; | |
2985 | i < G_N_ELEMENTS(screen.win.curFileMenuItem); i++) { | |
2986 | 2986 | gtk_widget_set_sensitive (screen.win.curFileMenuItem[i], showItems); |
2987 | 2987 | } |
2988 | 2988 | screen.win.treeIsUpdating = FALSE; |
3906 | 3906 | /* --------------------------------------------------------- */ |
3907 | 3907 | void |
3908 | 3908 | callbacks_sidepane_render_type_combo_box_changed (GtkComboBox *widget, gpointer user_data) { |
3909 | int type = gtk_combo_box_get_active (widget); | |
3909 | gerbv_render_types_t type = gtk_combo_box_get_active (widget); | |
3910 | 3910 | |
3911 | 3911 | dprintf ("%s(): type = %d\n", __FUNCTION__, type); |
3912 | 3912 | |
3920 | 3920 | /* --------------------------------------------------------- */ |
3921 | 3921 | void |
3922 | 3922 | callbacks_viewmenu_rendertype_changed (GtkCheckMenuItem *widget, gpointer user_data) { |
3923 | gint type = GPOINTER_TO_INT(user_data); | |
3923 | gerbv_render_types_t type = GPOINTER_TO_INT(user_data); | |
3924 | 3924 | |
3925 | 3925 | if (type == screenRenderInfo.renderType) |
3926 | 3926 | return; |
3934 | 3934 | /* --------------------------------------------------------- */ |
3935 | 3935 | void |
3936 | 3936 | callbacks_viewmenu_units_changed (GtkCheckMenuItem *widget, gpointer user_data) { |
3937 | gint unit = GPOINTER_TO_INT(user_data); | |
3937 | gerbv_gui_unit_t unit = GPOINTER_TO_INT(user_data); | |
3938 | 3938 | |
3939 | 3939 | if (unit < 0 || unit == screen.unit) |
3940 | 3940 | return; |
3947 | 3947 | /* --------------------------------------------------------- */ |
3948 | 3948 | void |
3949 | 3949 | callbacks_statusbar_unit_combo_box_changed (GtkComboBox *widget, gpointer user_data) { |
3950 | int unit = gtk_combo_box_get_active (widget); | |
3950 | gerbv_gui_unit_t unit = gtk_combo_box_get_active (widget); | |
3951 | 3951 | int force_change = GPOINTER_TO_INT (user_data); |
3952 | 3952 | |
3953 | 3953 | if (!force_change && (unit < 0 || unit == screen.unit)) |
25 | 25 | \ingroup gerbv |
26 | 26 | */ |
27 | 27 | |
28 | enum { | |
28 | typedef enum { | |
29 | 29 | CALLBACKS_SAVE_PROJECT_AS, |
30 | 30 | CALLBACKS_SAVE_FILE_PS, |
31 | 31 | CALLBACKS_SAVE_FILE_PDF, |
42 | 42 | |
43 | 43 | } CALLBACKS_SAVE_FILE_TYPE; |
44 | 44 | |
45 | enum { | |
45 | typedef enum { | |
46 | 46 | LAYER_SELECTED = -1, |
47 | 47 | LAYER_ALL_ON = -2, |
48 | 48 | LAYER_ALL_OFF = -3, |
992 | 992 | } |
993 | 993 | |
994 | 994 | if (drawMode == DRAW_SELECTIONS) { |
995 | int i; | |
996 | 995 | gboolean foundNet = FALSE; |
997 | 996 | gerbv_selection_item_t sItem; |
998 | 997 | |
999 | for (i=0; i<selectionInfo->selectedNodeArray->len; i++){ | |
998 | for (guint i = 0; i < selectionInfo->selectedNodeArray->len; i++) { | |
1000 | 999 | sItem = g_array_index (selectionInfo->selectedNodeArray, |
1001 | 1000 | gerbv_selection_item_t, i); |
1002 | 1001 | if (sItem.net == net) { |
119 | 119 | gerbv_selection_info_t *selectionInfo, gboolean remove) |
120 | 120 | { |
121 | 121 | gerbv_selection_item_t sItem; |
122 | gint i; | |
123 | ||
124 | for (i = 0; i < selection_length (selectionInfo); i++) { | |
122 | ||
123 | for (guint i = 0; i < selection_length (selectionInfo); i++) { | |
125 | 124 | sItem = selection_get_item_by_index (selectionInfo, i); |
126 | 125 | if (sItem.net == net) { |
127 | 126 | if (remove) |
167 | 167 | static gerbv_HID_Attribute drill_attribute_list[] = { |
168 | 168 | /* This should be first */ |
169 | 169 | {N_("autodetect"), N_("Try to autodetect the file format"), |
170 | HID_Boolean, 0, 0, {1, 0, 0}, 0, 0}, | |
170 | HID_Boolean, 0, 0, {1, 0, 0}, 0, 0, 0}, | |
171 | 171 | |
172 | 172 | {N_("zero_suppression"), N_("Zero suppression"), |
173 | HID_Enum, 0, 0, {0, 0, 0}, suppression_list, 0}, | |
173 | HID_Enum, 0, 0, {0, 0, 0}, suppression_list, 0, 0}, | |
174 | 174 | |
175 | 175 | {N_("units"), N_("Length units"), |
176 | HID_Enum, 0, 0, {0, 0, 0}, units_list, 0}, | |
176 | HID_Enum, 0, 0, {0, 0, 0}, units_list, 0, 0}, | |
177 | 177 | |
178 | 178 | {N_("digits"), N_("Number of digits. For trailing zero suppression," |
179 | 179 | " this is the number of digits before the decimal point. " |
180 | 180 | "Otherwise this is the number of digits after the decimal point."), |
181 | HID_Integer, 0, 20, {5, 0, 0}, 0, 0}, | |
181 | HID_Integer, 0, 20, {5, 0, 0}, 0, 0, 0}, | |
182 | 182 | |
183 | 183 | #if 0 |
184 | 184 | {"tool_units", "Tool size units", |
185 | HID_Enum, 0, 0, {0, 0, 0}, units_list, 0}, | |
185 | HID_Enum, 0, 0, {0, 0, 0}, units_list, 0, 0}, | |
186 | 186 | #endif |
187 | 187 | }; |
188 | 188 | |
479 | 479 | curr_net->stop_x = state->curr_x; |
480 | 480 | curr_net->stop_y = state->curr_y; |
481 | 481 | |
482 | if (state->unit == GERBV_UNIT_MM) { | |
483 | /* Convert to inches -- internal units */ | |
484 | curr_net->stop_x /= 25.4; | |
485 | curr_net->stop_y /= 25.4; | |
486 | } | |
487 | ||
482 | 488 | r = image->aperture[state->current_tool]->parameter[0]/2; |
483 | 489 | |
484 | 490 | /* Update boundingBox with drilled slot stop_x,y coords */ |
489 | 495 | |
490 | 496 | drill_update_image_info_min_max_from_bbox(image->info, bbox); |
491 | 497 | |
492 | if (state->unit == GERBV_UNIT_MM) { | |
493 | /* Convert to inches -- internal units */ | |
494 | curr_net->stop_x /= 25.4; | |
495 | curr_net->stop_y /= 25.4; | |
496 | } | |
497 | 498 | curr_net->aperture_state = GERBV_APERTURE_STATE_ON; |
498 | 499 | |
499 | 500 | break; |
763 | 764 | for (c = 1 ; c <= rcnt ; c++) { |
764 | 765 | state->curr_x = start_x + c*step_x; |
765 | 766 | state->curr_y = start_y + c*step_y; |
766 | dprintf (" Repeat #%d — new location is (%g, %g)\n", c, state->curr_x, state->curr_y); | |
767 | dprintf (" Repeat #%d - new location is (%g, %g)\n", c, state->curr_x, state->curr_y); | |
767 | 768 | curr_net = drill_add_drill_hole (image, state, stats, curr_net); |
768 | 769 | } |
769 | 770 | |
1119 | 1120 | |
1120 | 1121 | /* Set the current tool to the correct one */ |
1121 | 1122 | state->current_tool = tool_num; |
1123 | apert = image->aperture[tool_num]; | |
1122 | 1124 | |
1123 | 1125 | /* Check for a size definition */ |
1124 | 1126 | temp = gerb_fgetc(fd); |
1155 | 1157 | "at line %ld in file \"%s\""), |
1156 | 1158 | size, tool_num, file_line, fd->filename); |
1157 | 1159 | } else { |
1158 | apert = image->aperture[tool_num]; | |
1159 | 1160 | if (apert != NULL) { |
1160 | 1161 | /* allow a redefine of a tool only if the new definition is exactly the same. |
1161 | 1162 | * This avoid lots of spurious complaints with the output of some cad |
1773 | 1774 | { |
1774 | 1775 | int read; |
1775 | 1776 | char temp[DRILL_READ_DOUBLE_SIZE]; |
1776 | int i = 0, ndigits = 0; | |
1777 | unsigned int i = 0, ndigits = 0; | |
1777 | 1778 | double result; |
1778 | 1779 | gboolean decimal_point = FALSE; |
1779 | 1780 | gboolean sign_prepend = FALSE; |
1807 | 1808 | if (decimal_point) { |
1808 | 1809 | result = strtod(temp, NULL); |
1809 | 1810 | } else { |
1810 | int wantdigits; | |
1811 | unsigned int wantdigits; | |
1811 | 1812 | double scale; |
1812 | 1813 | char tmp2[DRILL_READ_DOUBLE_SIZE]; |
1813 | 1814 |
177 | 177 | for (error = input_stats->error_list; error != NULL; error = error->next) { |
178 | 178 | if (error->error_text != NULL) |
179 | 179 | gerbv_stats_printf(accum_stats->error_list, error->type, |
180 | this_layer, error->error_text); | |
180 | this_layer, "%s", error->error_text); | |
181 | 181 | } |
182 | 182 | |
183 | 183 | /* ==== Now deal with the misc header stuff ==== */ |
209 | 209 | error = error->next) { |
210 | 210 | if (error->error_text != NULL) { |
211 | 211 | gerbv_stats_printf(accum_stats->error_list, error->type, |
212 | this_layer, error->error_text); | |
212 | this_layer, "%s", error->error_text); | |
213 | 213 | } |
214 | 214 | } |
215 | 215 |
61 | 61 | |
62 | 62 | /* define all apertures */ |
63 | 63 | gerbv_aperture_t *aperture; |
64 | gint i; | |
65 | 64 | |
66 | 65 | /* the image should already have been cleaned by a duplicate_image call, so we can safely |
67 | 66 | assume the aperture range is correct */ |
68 | for (i = APERTURE_MIN; i < APERTURE_MAX; i++) { | |
67 | for (int i = APERTURE_MIN; i < APERTURE_MAX; i++) { | |
69 | 68 | aperture = image->aperture[i]; |
70 | 69 | |
71 | 70 | if (!aperture) |
85 | 84 | fprintf(fd, "%%\n"); |
86 | 85 | /* write rest of image */ |
87 | 86 | |
88 | for (i = 0; i < apertureTable->len; i++) { | |
87 | for (guint i = 0; i < apertureTable->len; i++) { | |
89 | 88 | int aperture_idx = g_array_index(apertureTable, int, i); |
90 | 89 | |
91 | 90 | /* write tool change */ |
93 | 93 | |
94 | 94 | /* define all apertures */ |
95 | 95 | gerbv_aperture_t *currentAperture; |
96 | gint i; | |
97 | 96 | |
98 | 97 | /* the image should already have been cleaned by a duplicate_image call, so we can safely |
99 | 98 | assume the aperture range is correct */ |
100 | for (i=APERTURE_MIN; i<APERTURE_MAX; i++) { | |
99 | for (int i=APERTURE_MIN; i<APERTURE_MAX; i++) { | |
101 | 100 | currentAperture = image->aperture[i]; |
102 | 101 | |
103 | 102 | if (!currentAperture) |
119 | 118 | |
120 | 119 | /* write rest of image */ |
121 | 120 | |
122 | for (i=0; i<apertureTable->len; i++) { | |
121 | for (guint i=0; i<apertureTable->len; i++) { | |
123 | 122 | int currentAperture=g_array_index (apertureTable, int, i); |
124 | 123 | |
125 | 124 | /* write tool change */ |
222 | 222 | fprintf(fd, "G04 This is an RS-274x file exported by *\n"); |
223 | 223 | fprintf(fd, "G04 gerbv version %s *\n",VERSION); |
224 | 224 | fprintf(fd, "G04 More information is available about gerbv at *\n"); |
225 | fprintf(fd, "G04 http://gerbv.geda-project.org/ *\n"); | |
225 | fprintf(fd, "G04 https://gerbv.github.io/ *\n"); | |
226 | 226 | fprintf(fd, "G04 --End of header info--*\n"); |
227 | 227 | fprintf(fd, "%%MOIN*%%\n"); |
228 | 228 | fprintf(fd, "%%FSLAX36Y36*%%\n"); |
58 | 58 | struct stat statinfo; |
59 | 59 | |
60 | 60 | dprintf("---> Entering gerb_fopen, filename = %s\n", filename); |
61 | #ifdef HAVE_SYS_MMAN_H | |
61 | ||
62 | 62 | fd = g_new(gerb_file_t, 1); |
63 | 63 | if (fd == NULL) { |
64 | 64 | return NULL; |
65 | 65 | } |
66 | 66 | |
67 | 67 | dprintf(" Doing fopen\n"); |
68 | fd->fd = fopen(filename, "r"); | |
68 | /* fopen() can't open files with non ASCII filenames on windows */ | |
69 | fd->fd = g_fopen(filename, "rb"); | |
69 | 70 | if (fd->fd == NULL) { |
70 | 71 | g_free(fd); |
71 | 72 | return NULL; |
95 | 96 | errno = EIO; /* More compatible with the world outside Linux */ |
96 | 97 | return NULL; |
97 | 98 | } |
99 | ||
100 | #ifdef HAVE_SYS_MMAN_H | |
98 | 101 | |
99 | 102 | dprintf(" Doing mmap\n"); |
100 | 103 | fd->datalen = (int)statinfo.st_size; |
105 | 108 | g_free(fd); |
106 | 109 | fd = NULL; |
107 | 110 | } |
111 | ||
108 | 112 | #else |
109 | 113 | /* all systems without mmap, not only MINGW32 */ |
110 | fd = g_new(gerb_file_t); | |
111 | if (fd == NULL) { | |
112 | return NULL; | |
113 | } | |
114 | ||
115 | /* fopen() can't open files with non ASCII filenames on windows */ | |
116 | fd->fd = g_fopen(filename, "rb"); | |
117 | if (fd->fd == NULL) { | |
118 | g_free(fd); | |
119 | return NULL; | |
120 | } | |
121 | fd->ptr = 0; | |
122 | fd->fileno = fileno(fd->fd); | |
123 | if (fstat(fd->fileno, &statinfo) < 0) { | |
124 | fclose(fd->fd); | |
125 | g_free(fd); | |
126 | return NULL; | |
127 | } | |
128 | if (!S_ISREG(statinfo.st_mode)) { | |
129 | fclose(fd->fd); | |
130 | g_free(fd); | |
131 | errno = EISDIR; | |
132 | return NULL; | |
133 | } | |
134 | if ((int)statinfo.st_size == 0) { | |
135 | fclose(fd->fd); | |
136 | g_free(fd); | |
137 | errno = EIO; /* More compatible with the world outside Linux */ | |
138 | return NULL; | |
139 | } | |
114 | ||
115 | dprintf(" Doing calloc\n"); | |
140 | 116 | fd->datalen = (int)statinfo.st_size; |
141 | 117 | fd->data = calloc(1, statinfo.st_size + 1); |
142 | 118 | if (fd->data == NULL) { |
151 | 127 | return NULL; |
152 | 128 | } |
153 | 129 | rewind (fd->fd); |
130 | ||
154 | 131 | #endif |
155 | 132 | |
156 | 133 | dprintf("<--- Leaving gerb_fopen\n"); |
336 | 313 | /* |
337 | 314 | * Build complete path (inc. filename) and check if file exists. |
338 | 315 | */ |
339 | complete_path = (char *)g_malloc(strlen(curr_path) + strlen(filename) + 2); | |
316 | complete_path = g_build_filename(curr_path, filename, NULL); | |
340 | 317 | if (complete_path == NULL) |
341 | 318 | return NULL; |
342 | strcpy(complete_path, curr_path); | |
343 | complete_path[strlen(curr_path)] = G_DIR_SEPARATOR; | |
344 | complete_path[strlen(curr_path) + 1] = '\0'; | |
345 | strncat(complete_path, filename, strlen(filename)); | |
346 | 319 | |
347 | 320 | if (paths[i][0] == '$') { |
348 | 321 | g_free(curr_path); |
172 | 172 | gerbv_layer_t *tempLayer = layer; |
173 | 173 | |
174 | 174 | layer = layer->next; |
175 | g_free (tempLayer->name); | |
175 | 176 | g_free (tempLayer); |
176 | 177 | } |
177 | 178 | for (state = image->states; state != NULL; ) { |
294 | 295 | while (net){ |
295 | 296 | printf(_("(%f,%f)->(%f,%f) with %d ("), net->start_x, net->start_y, |
296 | 297 | net->stop_x, net->stop_y, net->aperture); |
297 | printf(_(gerbv_interpolation_name(net->interpolation))); | |
298 | printf("%s", _(gerbv_interpolation_name(net->interpolation))); | |
298 | 299 | gerbv_image_aperture_state(net->aperture_state); |
299 | 300 | printf(")\n"); |
300 | 301 | net = net->next; |
311 | 312 | previousLayer->next = newLayer; |
312 | 313 | /* clear this boolean so we only draw the knockout once */ |
313 | 314 | newLayer->knockout.firstInstance = FALSE; |
315 | newLayer->name = NULL; | |
314 | 316 | newLayer->next = NULL; |
315 | 317 | |
316 | 318 | return newLayer; |
401 | 403 | err_unknown_macro_aperture = 0, |
402 | 404 | err_rotate_oval = 0, |
403 | 405 | err_rotate_rect = 0; |
404 | guint i; | |
405 | 406 | |
406 | 407 | if (trans && (trans->mirrorAroundX || trans->mirrorAroundY)) { |
407 | 408 | if (sourceImage->layertype != GERBV_LAYERTYPE_DRILL) { |
428 | 429 | |
429 | 430 | trans_apers = g_new (int, aper_last_id + 1); |
430 | 431 | /* Initialize trans_apers array */ |
431 | for (i = 0; i < aper_last_id + 1; i++) | |
432 | for (int i = 0; i < aper_last_id + 1; i++) | |
432 | 433 | trans_apers[i] = -1; |
433 | 434 | } |
434 | 435 | |
475 | 476 | |
476 | 477 | /* Check if we need to translate the aperture number */ |
477 | 478 | if (translationTable) { |
478 | for (i = 0; i < translationTable->len; i++) { | |
479 | for (guint i = 0; i < translationTable->len; i++) { | |
479 | 480 | gerb_translation_entry_t translationEntry; |
480 | 481 | |
481 | 482 | translationEntry = |
703 | 704 | break; |
704 | 705 | |
705 | 706 | case GERBV_APTYPE_MACRO_OUTLINE: |
706 | for (i = 0; i < 1 + sam->parameter[ | |
707 | for (int i = 0; i < 1 + sam->parameter[ | |
707 | 708 | OUTLINE_NUMBER_OF_POINTS]; i++) { |
708 | 709 | sam->parameter[OUTLINE_X_IDX_OF_POINT(i)] *= |
709 | 710 | trans->scaleX; |
1214 | 1215 | gboolean |
1215 | 1216 | gerbv_image_reduce_area_of_selected_objects (GArray *selectionArray, |
1216 | 1217 | gdouble areaReduction, gint paneRows, gint paneColumns, gdouble paneSeparation){ |
1217 | int i; | |
1218 | 1218 | gdouble minX,minY,maxX,maxY; |
1219 | 1219 | |
1220 | for (i=0; i<selectionArray->len; i++) { | |
1220 | for (guint i=0; i<selectionArray->len; i++) { | |
1221 | 1221 | gerbv_selection_item_t sItem = g_array_index (selectionArray,gerbv_selection_item_t, i); |
1222 | 1222 | gerbv_image_t *image = sItem.image; |
1223 | 1223 | gerbv_net_t *currentNet = sItem.net; |
1310 | 1310 | |
1311 | 1311 | gboolean |
1312 | 1312 | gerbv_image_move_selected_objects (GArray *selectionArray, gdouble translationX, |
1313 | gdouble translationY) { | |
1314 | int i; | |
1315 | ||
1316 | for (i=0; i<selectionArray->len; i++) { | |
1313 | gdouble translationY) | |
1314 | { | |
1315 | for (guint i=0; i<selectionArray->len; i++) { | |
1317 | 1316 | gerbv_selection_item_t sItem = g_array_index (selectionArray,gerbv_selection_item_t, i); |
1318 | 1317 | gerbv_net_t *currentNet = sItem.net; |
1319 | 1318 |
559 | 559 | } else if (gerber_is_rs274d_p(fd)) { |
560 | 560 | gchar *str = g_strdup_printf(_("Most likely found a RS-274D file " |
561 | 561 | "\"%s\" ... trying to open anyways\n"), filename); |
562 | dprintf(str); | |
563 | g_warning(str); | |
562 | dprintf("%s", str); | |
563 | g_warning("%s", str); | |
564 | 564 | g_free (str); |
565 | 565 | |
566 | 566 | if (!foundBinary || forceLoadFile) { |
57 | 57 | |
58 | 58 | For help with using the standalone Gerbv software, please refer to the man page |
59 | 59 | (using the command "man gerbv") or go to the Gerbv homepage for documentation |
60 | (http://gerbv.geda-project.org). | |
60 | (https://gerbv.github.io/). | |
61 | 61 | |
62 | 62 | */ |
63 | 63 | |
64 | 64 | #ifndef __GERBV_H__ |
65 | 65 | #define __GERBV_H__ |
66 | ||
67 | #if defined(__cplusplus) | |
68 | extern "C" { | |
69 | #endif | |
70 | 66 | |
71 | 67 | #ifdef HAVE_CONFIG_H |
72 | 68 | # include "config.h" |
79 | 75 | |
80 | 76 | #ifndef RENDER_USING_GDK |
81 | 77 | # include <cairo.h> |
78 | #endif | |
79 | ||
80 | #if defined(__cplusplus) | |
81 | extern "C" { | |
82 | 82 | #endif |
83 | 83 | |
84 | 84 | #define APERTURE_MIN 10 |
0 | /** \file icons.h | |
1 | \brief XPM info for the toolbar button icons | |
2 | \ingroup gerbv | |
3 | */ | |
4 | ||
5 | /* ------------------- Zoom tool icon -------------------------- */ | |
6 | /* GdkPixbuf RGBA C-Source image dump */ | |
7 | #ifdef __SUNPRO_C | |
8 | #pragma align 4 (lzoom) | |
9 | #endif | |
10 | #ifdef __GNUC__ | |
11 | static const guint8 lzoom[] __attribute__ ((__aligned__ (4))) = | |
12 | #else | |
13 | static const guint8 lzoom[] = | |
14 | #endif | |
0 | #include <gdk-pixbuf/gdk-pixbuf.h> | |
1 | ||
2 | typedef struct icon { | |
3 | GdkColorspace colorspace; | |
4 | gboolean has_alpha; | |
5 | int bits_per_sample; | |
6 | int width; | |
7 | int height; | |
8 | int rowstride; | |
9 | const guchar *data; | |
10 | } icon; | |
11 | ||
12 | static const guchar lzoom_data[] = | |
15 | 13 | { "" |
16 | /* Pixbuf magic (0x47646b50) */ | |
17 | "GdkP" | |
18 | /* length: header (24) + pixel_data (2304) */ | |
19 | "\0\0\11\30" | |
20 | /* pixdata_type (0x1010002) */ | |
21 | "\1\1\0\2" | |
22 | /* rowstride (96) */ | |
23 | "\0\0\0`" | |
24 | /* width (24) */ | |
25 | "\0\0\0\30" | |
26 | /* height (24) */ | |
27 | "\0\0\0\30" | |
28 | /* pixel_data: */ | |
29 | 14 | "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0IIIN444\243---\335))" |
30 | 15 | ")\373&&&\373&&&\335&&&\243555N\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" |
31 | 16 | "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" |
119 | 104 | "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" |
120 | 105 | "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}; |
121 | 106 | |
107 | static const icon lzoom = { | |
108 | .colorspace = GDK_COLORSPACE_RGB, | |
109 | .has_alpha = 1, | |
110 | .bits_per_sample = 8, | |
111 | .width = 24, | |
112 | .height = 24, | |
113 | .rowstride = 96, | |
114 | .data = lzoom_data, | |
115 | }; | |
122 | 116 | |
123 | 117 | /* ------------------- Measure tool icon ------------------- */ |
124 | 118 | /* GdkPixbuf RGBA C-Source image dump 1-byte-run-length-encoded */ |
127 | 121 | ver. 1.8.0-1~bpo70+. This theme has been made by Rowen_Stipe based on |
128 | 122 | Faenza and Faience icon themes by ~Tiheum. */ |
129 | 123 | |
130 | #ifdef __SUNPRO_C | |
131 | #pragma align 4 (ruler) | |
132 | #endif | |
133 | #ifdef __GNUC__ | |
134 | static const guint8 ruler[] __attribute__ ((__aligned__ (4))) = | |
135 | #else | |
136 | static const guint8 ruler[] = | |
137 | #endif | |
124 | static const guchar ruler_data[] = | |
138 | 125 | { "" |
139 | /* Pixbuf magic (0x47646b50) */ | |
140 | "GdkP" | |
141 | /* length: header (24) + pixel_data (1689) */ | |
142 | "\0\0\6\261" | |
143 | /* pixdata_type (0x2010002) */ | |
144 | "\2\1\0\2" | |
145 | /* rowstride (96) */ | |
146 | "\0\0\0`" | |
147 | /* width (24) */ | |
148 | "\0\0\0\30" | |
149 | /* height (24) */ | |
150 | "\0\0\0\30" | |
151 | /* pixel_data: */ | |
152 | "\233\377\377\377\0\1\0\0\0\7\220\0\0\0\15\1\0\0\0\7\205\377\377\377\0" | |
153 | "\24\311\277e`\356\343\205\337\363\350\215\377\363\351\217\377\363\351" | |
154 | "\222\377\363\351\225\377\364\352\227\377\364\352\231\377\364\353\233" | |
155 | "\377\364\353\235\377\365\354\237\377\365\354\240\377\365\354\241\377" | |
156 | "\365\355\244\377\365\355\246\377\366\355\250\377\366\356\252\377\366" | |
157 | "\356\254\377\362\352\243\346\322\312~k\203\377\377\377\0\12\0\0\0\11" | |
158 | "\352\335z\340\355\337_\377\357\342k\377\361\344z\377\360\344{\377\361" | |
159 | "\345\201\377\361\346\201\377\361\347\205\377\362\347\205\377\202\362" | |
160 | "\350\212\377\12\363\351\217\377\363\350\217\377\363\351\224\377\364\351" | |
161 | "\223\377\364\352\230\377\364\352\227\377\364\353\231\377\364\353\236" | |
162 | "\377\360\346\236\350\0\0\0\11\202\377\377\377\0\26\0\0\0\20\360\344{" | |
163 | "\377\352\333L\377\357\343u\377\214|\"\377\361\345\200\377\214|$\377\361" | |
164 | "\346\205\377\214|%\377\362\347\212\377\214}'\377\362\350\216\377\215" | |
165 | "}(\377\363\351\223\377\215})\377\364\352\227\377\215~*\377\363\352\231" | |
166 | "\377\215}*\377\363\352\231\377\365\355\244\377\0\0\0\20\202\377\377\377" | |
167 | "\0\26\0\0\0\21\357\342u\377\353\331L\377\360\343v\377\206u\34\377\361" | |
168 | "\345\202\377\206u\35\377\362\347\207\377\206v\36\377\362\350\214\377" | |
169 | "\206v\40\377\362\350\220\377\206v\40\377\363\351\225\377\206v\"\377\363" | |
170 | "\352\231\377\206v\"\377\364\352\232\377\206v\"\377\364\351\231\377\364" | |
171 | "\353\240\377\0\0\0\21\202\377\377\377\0\26\0\0\0\22\356\340m\377\352" | |
172 | "\330I\377\357\342u\377~m\26\377\361\345\201\377~m\27\377\361\345\206" | |
173 | "\377\177m\30\377\361\346\213\377\177n\31\377\362\347\217\377\177n\32" | |
174 | "\377\363\351\224\377\177n\32\377\363\351\230\377\177n\33\377\363\351" | |
175 | "\232\377\177n\33\377\363\351\226\377\363\352\232\377\0\0\0\22\202\377" | |
176 | "\377\377\0\26\0\0\0\24\355\337e\377\351\327E\377\356\341s\377xf\17\377" | |
177 | "\360\344~\377xg\20\377\361\345\204\377xg\21\377\361\346\210\377xg\21" | |
178 | "\377\361\346\215\377xg\22\377\362\350\221\377xg\22\377\363\351\225\377" | |
179 | "xg\23\377\362\351\230\377xg\23\377\362\351\224\377\362\350\225\377\0" | |
180 | "\0\0\24\202\377\377\377\0\26\0\0\0\25\352\334]\377\346\326@\377\355\340" | |
181 | "o\377p_\11\377\356\343{\377p_\11\377\357\344\201\377p_\12\377\357\345" | |
182 | "\205\377p_\12\377\360\346\211\377p_\12\377\361\346\215\377p_\13\377\361" | |
183 | "\350\222\377p_\13\377\362\350\225\377p_\13\377\361\350\221\377\360\346" | |
184 | "\216\377\0\0\0\25\202\377\377\377\0\26\0\0\0\26\351\332T\377\345\324" | |
185 | ":\377\355\337k\377jW\3\377\356\341x\377jW\3\377\356\343}\377jW\3\377" | |
186 | "\357\344\201\377jW\3\377\357\345\206\377jW\3\377\360\346\212\377jW\3" | |
187 | "\377\361\347\217\377jW\3\377\361\350\221\377jW\3\377\361\346\215\377" | |
188 | "\357\345\207\377\0\0\0\26\202\377\377\377\0\26\0\0\0\27\346\327J\377" | |
189 | "\344\3226\377\353\335h\377fT\0\377\355\341t\377\355\341x\377\355\341" | |
190 | "w\377\356\341}\377\356\342{\377\357\343\201\377\357\342\200\377\357\344" | |
191 | "\205\377\357\345\207\377fT\0\377\360\346\214\377\360\345\215\377\360" | |
192 | "\346\215\377\360\345\215\377\357\343\201\377\356\342\200\377\0\0\0\27" | |
193 | "\202\377\377\377\0\26\0\0\0\30\345\325@\377\343\3201\377\352\335d\377" | |
194 | "fT\0\377\354\340q\377\350\330Q\377\350\331T\377\351\332W\377\351\332" | |
195 | "Z\377\351\332\\\377\352\333`\377\352\334b\377\357\344\205\377fT\0\377" | |
196 | "\357\345\211\377\353\337n\377\354\337o\377\353\337l\377\353\336i\377" | |
197 | "\355\340y\377\0\0\0\30\202\377\377\377\0\26\0\0\0\32\344\3228\377\343" | |
198 | "\320-\377\352\334a\377fT\0\377\354\336n\377\347\327N\377\350\330Q\377" | |
199 | "\350\331T\377\351\331W\377\351\332X\377\351\331V\377\350\330R\377\354" | |
200 | "\337q\377fT\0\377\354\336o\377\347\326H\377\346\325C\377\345\3229\377" | |
201 | "\343\3200\377\345\324A\377\0\0\0\32\202\377\377\377\0\12\0\0\0\33\343" | |
202 | "\3200\377\342\316)\377\351\332]\377fT\0\377\353\335k\377\346\325I\377" | |
203 | "\346\325H\377\345\324D\377\345\324@\377\203\345\323<\377\11\351\331W" | |
204 | "\377\352\334c\377\351\331W\377\344\323;\377\344\3229\377\343\3200\377" | |
205 | "\342\316'\377\343\3200\377\0\0\0\33\202\377\377\377\0\6\0\0\0\34\341" | |
206 | "\315(\377\341\314#\377\351\331Z\377fT\0\377\351\333c\377\212\344\321" | |
207 | ":\377\6\344\3219\377\343\3206\377\342\316.\377\341\314#\377\341\315(" | |
208 | "\377\0\0\0\34\202\377\377\377\0\1\0\0\0\35\202\337\313\37\377\3\346\327" | |
209 | "U\377fT\0\377\350\331]\377\212\342\3206\377\3\342\3205\377\342\3172\377" | |
210 | "\340\315*\377\202\337\313\37\377\1\0\0\0\35\202\377\377\377\0\6\0\0\0" | |
211 | "\36\335\311\27\377\336\312\34\377\343\323E\377\347\330Y\377\345\326O" | |
212 | "\377\212\341\3174\377\6\341\3173\377\341\3160\377\337\314'\377\336\312" | |
213 | "\34\377\335\311\27\377\0\0\0\36\202\377\377\377\0\6\0\0\0\40\333\307" | |
214 | "\20\377\335\311\30\377\336\313#\377\340\315+\377\340\316/\377\212\340" | |
215 | "\3160\377\6\340\316/\377\340\315+\377\336\313#\377\335\311\30\377\333" | |
216 | "\307\20\377\0\0\0\40\202\377\377\377\0\6\0\0\0!\332\305\15\377\333\306" | |
217 | "\23\377\335\310\34\377\336\312%\377\337\313)\377\212\337\314+\377\6\337" | |
218 | "\313)\377\336\312%\377\335\310\34\377\333\306\23\377\332\305\15\377\0" | |
219 | "\0\0!\202\377\377\377\0\6\0\0\0\"\332\303\12\377\333\304\16\377\334\306" | |
220 | "\25\377\335\307\32\377\335\310\36\377\212\336\311\40\377\6\335\310\36" | |
221 | "\377\335\307\32\377\334\306\25\377\333\304\16\377\332\303\12\377\0\0" | |
222 | "\0\"\202\377\377\377\0\7\0\0\0\40\272\247\10\353\331\303\12\377\332\303" | |
223 | "\13\377\332\304\16\377\333\305\20\377\333\305\21\377\210\333\305\22\377" | |
224 | "\7\333\305\21\377\333\305\20\377\332\304\16\377\332\303\13\377\331\303" | |
225 | "\12\377\272\247\10\353\0\0\0\40\202\377\377\377\0\12\0\0\0\10QH\2\242" | |
226 | "\274\251\20\355\334\307\35\377\334\311\"\377\335\312%\377\337\313)\377" | |
227 | "\337\313,\377\337\314/\377\340\3153\377\202\340\3166\377\12\340\3153" | |
228 | "\377\337\314/\377\337\313,\377\337\313)\377\335\312%\377\334\311\"\377" | |
229 | "\334\307\35\377\274\251\20\355QH\2\242\0\0\0\10\203\377\377\377\0\3\0" | |
230 | "\0\0+\0\0\0{\0\0\0\243\216\0\0\0\245\3\0\0\0\243\0\0\0{\0\0\0+\232\377" | |
231 | "\377\377\0"}; | |
126 | "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" | |
127 | "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" | |
128 | "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" | |
129 | "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" | |
130 | "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0" | |
131 | "\377\377\377\0\377\377\377\0\0\0\0\7\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0" | |
132 | "\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0" | |
133 | "\0\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\15\0\0\0\7\377\377\377\0\377\377" | |
134 | "\377\0\377\377\377\0\377\377\377\0\377\377\377\0\311\277e`\356\343\205" | |
135 | "\337\363\350\215\377\363\351\217\377\363\351\222\377\363\351\225\377\364" | |
136 | "\352\227\377\364\352\231\377\364\353\233\377\364\353\235\377\365\354\237" | |
137 | "\377\365\354\240\377\365\354\241\377\365\355\244\377\365\355\246\377\366" | |
138 | "\355\250\377\366\356\252\377\366\356\254\377\362\352\243\346\322\312~" | |
139 | "k\377\377\377\0\377\377\377\0\377\377\377\0\0\0\0\11\352\335z\340\355" | |
140 | "\337_\377\357\342k\377\361\344z\377\360\344{\377\361\345\201\377\361\346" | |
141 | "\201\377\361\347\205\377\362\347\205\377\362\350\212\377\362\350\212\377" | |
142 | "\363\351\217\377\363\350\217\377\363\351\224\377\364\351\223\377\364\352" | |
143 | "\230\377\364\352\227\377\364\353\231\377\364\353\236\377\360\346\236\350" | |
144 | "\0\0\0\11\377\377\377\0\377\377\377\0\0\0\0\20\360\344{\377\352\333L\377" | |
145 | "\357\343u\377\214|\"\377\361\345\200\377\214|$\377\361\346\205\377\214" | |
146 | "|%\377\362\347\212\377\214}'\377\362\350\216\377\215}(\377\363\351\223" | |
147 | "\377\215})\377\364\352\227\377\215~*\377\363\352\231\377\215}*\377\363" | |
148 | "\352\231\377\365\355\244\377\0\0\0\20\377\377\377\0\377\377\377\0\0\0" | |
149 | "\0\21\357\342u\377\353\331L\377\360\343v\377\206u\34\377\361\345\202\377" | |
150 | "\206u\35\377\362\347\207\377\206v\36\377\362\350\214\377\206v\40\377\362" | |
151 | "\350\220\377\206v\40\377\363\351\225\377\206v\"\377\363\352\231\377\206" | |
152 | "v\"\377\364\352\232\377\206v\"\377\364\351\231\377\364\353\240\377\0\0" | |
153 | "\0\21\377\377\377\0\377\377\377\0\0\0\0\22\356\340m\377\352\330I\377\357" | |
154 | "\342u\377~m\26\377\361\345\201\377~m\27\377\361\345\206\377\177m\30\377" | |
155 | "\361\346\213\377\177n\31\377\362\347\217\377\177n\32\377\363\351\224\377" | |
156 | "\177n\32\377\363\351\230\377\177n\33\377\363\351\232\377\177n\33\377\363" | |
157 | "\351\226\377\363\352\232\377\0\0\0\22\377\377\377\0\377\377\377\0\0\0" | |
158 | "\0\24\355\337e\377\351\327E\377\356\341s\377xf\17\377\360\344~\377xg\20" | |
159 | "\377\361\345\204\377xg\21\377\361\346\210\377xg\21\377\361\346\215\377" | |
160 | "xg\22\377\362\350\221\377xg\22\377\363\351\225\377xg\23\377\362\351\230" | |
161 | "\377xg\23\377\362\351\224\377\362\350\225\377\0\0\0\24\377\377\377\0\377" | |
162 | "\377\377\0\0\0\0\25\352\334]\377\346\326@\377\355\340o\377p_\11\377\356" | |
163 | "\343{\377p_\11\377\357\344\201\377p_\12\377\357\345\205\377p_\12\377\360" | |
164 | "\346\211\377p_\12\377\361\346\215\377p_\13\377\361\350\222\377p_\13\377" | |
165 | "\362\350\225\377p_\13\377\361\350\221\377\360\346\216\377\0\0\0\25\377" | |
166 | "\377\377\0\377\377\377\0\0\0\0\26\351\332T\377\345\324:\377\355\337k\377" | |
167 | "jW\3\377\356\341x\377jW\3\377\356\343}\377jW\3\377\357\344\201\377jW\3" | |
168 | "\377\357\345\206\377jW\3\377\360\346\212\377jW\3\377\361\347\217\377j" | |
169 | "W\3\377\361\350\221\377jW\3\377\361\346\215\377\357\345\207\377\0\0\0" | |
170 | "\26\377\377\377\0\377\377\377\0\0\0\0\27\346\327J\377\344\3226\377\353" | |
171 | "\335h\377fT\0\377\355\341t\377\355\341x\377\355\341w\377\356\341}\377" | |
172 | "\356\342{\377\357\343\201\377\357\342\200\377\357\344\205\377\357\345" | |
173 | "\207\377fT\0\377\360\346\214\377\360\345\215\377\360\346\215\377\360\345" | |
174 | "\215\377\357\343\201\377\356\342\200\377\0\0\0\27\377\377\377\0\377\377" | |
175 | "\377\0\0\0\0\30\345\325@\377\343\3201\377\352\335d\377fT\0\377\354\340" | |
176 | "q\377\350\330Q\377\350\331T\377\351\332W\377\351\332Z\377\351\332\\\377" | |
177 | "\352\333`\377\352\334b\377\357\344\205\377fT\0\377\357\345\211\377\353" | |
178 | "\337n\377\354\337o\377\353\337l\377\353\336i\377\355\340y\377\0\0\0\30" | |
179 | "\377\377\377\0\377\377\377\0\0\0\0\32\344\3228\377\343\320-\377\352\334" | |
180 | "a\377fT\0\377\354\336n\377\347\327N\377\350\330Q\377\350\331T\377\351" | |
181 | "\331W\377\351\332X\377\351\331V\377\350\330R\377\354\337q\377fT\0\377" | |
182 | "\354\336o\377\347\326H\377\346\325C\377\345\3229\377\343\3200\377\345" | |
183 | "\324A\377\0\0\0\32\377\377\377\0\377\377\377\0\0\0\0\33\343\3200\377\342" | |
184 | "\316)\377\351\332]\377fT\0\377\353\335k\377\346\325I\377\346\325H\377" | |
185 | "\345\324D\377\345\324@\377\345\323<\377\345\323<\377\345\323<\377\351" | |
186 | "\331W\377\352\334c\377\351\331W\377\344\323;\377\344\3229\377\343\320" | |
187 | "0\377\342\316'\377\343\3200\377\0\0\0\33\377\377\377\0\377\377\377\0\0" | |
188 | "\0\0\34\341\315(\377\341\314#\377\351\331Z\377fT\0\377\351\333c\377\344" | |
189 | "\321:\377\344\321:\377\344\321:\377\344\321:\377\344\321:\377\344\321" | |
190 | ":\377\344\321:\377\344\321:\377\344\321:\377\344\321:\377\344\3219\377" | |
191 | "\343\3206\377\342\316.\377\341\314#\377\341\315(\377\0\0\0\34\377\377" | |
192 | "\377\0\377\377\377\0\0\0\0\35\337\313\37\377\337\313\37\377\346\327U\377" | |
193 | "fT\0\377\350\331]\377\342\3206\377\342\3206\377\342\3206\377\342\3206" | |
194 | "\377\342\3206\377\342\3206\377\342\3206\377\342\3206\377\342\3206\377" | |
195 | "\342\3206\377\342\3205\377\342\3172\377\340\315*\377\337\313\37\377\337" | |
196 | "\313\37\377\0\0\0\35\377\377\377\0\377\377\377\0\0\0\0\36\335\311\27\377" | |
197 | "\336\312\34\377\343\323E\377\347\330Y\377\345\326O\377\341\3174\377\341" | |
198 | "\3174\377\341\3174\377\341\3174\377\341\3174\377\341\3174\377\341\317" | |
199 | "4\377\341\3174\377\341\3174\377\341\3174\377\341\3173\377\341\3160\377" | |
200 | "\337\314'\377\336\312\34\377\335\311\27\377\0\0\0\36\377\377\377\0\377" | |
201 | "\377\377\0\0\0\0\40\333\307\20\377\335\311\30\377\336\313#\377\340\315" | |
202 | "+\377\340\316/\377\340\3160\377\340\3160\377\340\3160\377\340\3160\377" | |
203 | "\340\3160\377\340\3160\377\340\3160\377\340\3160\377\340\3160\377\340" | |
204 | "\3160\377\340\316/\377\340\315+\377\336\313#\377\335\311\30\377\333\307" | |
205 | "\20\377\0\0\0\40\377\377\377\0\377\377\377\0\0\0\0!\332\305\15\377\333" | |
206 | "\306\23\377\335\310\34\377\336\312%\377\337\313)\377\337\314+\377\337" | |
207 | "\314+\377\337\314+\377\337\314+\377\337\314+\377\337\314+\377\337\314" | |
208 | "+\377\337\314+\377\337\314+\377\337\314+\377\337\313)\377\336\312%\377" | |
209 | "\335\310\34\377\333\306\23\377\332\305\15\377\0\0\0!\377\377\377\0\377" | |
210 | "\377\377\0\0\0\0\"\332\303\12\377\333\304\16\377\334\306\25\377\335\307" | |
211 | "\32\377\335\310\36\377\336\311\40\377\336\311\40\377\336\311\40\377\336" | |
212 | "\311\40\377\336\311\40\377\336\311\40\377\336\311\40\377\336\311\40\377" | |
213 | "\336\311\40\377\336\311\40\377\335\310\36\377\335\307\32\377\334\306\25" | |
214 | "\377\333\304\16\377\332\303\12\377\0\0\0\"\377\377\377\0\377\377\377\0" | |
215 | "\0\0\0\40\272\247\10\353\331\303\12\377\332\303\13\377\332\304\16\377" | |
216 | "\333\305\20\377\333\305\21\377\333\305\22\377\333\305\22\377\333\305\22" | |
217 | "\377\333\305\22\377\333\305\22\377\333\305\22\377\333\305\22\377\333\305" | |
218 | "\22\377\333\305\21\377\333\305\20\377\332\304\16\377\332\303\13\377\331" | |
219 | "\303\12\377\272\247\10\353\0\0\0\40\377\377\377\0\377\377\377\0\0\0\0" | |
220 | "\10QH\2\242\274\251\20\355\334\307\35\377\334\311\"\377\335\312%\377\337" | |
221 | "\313)\377\337\313,\377\337\314/\377\340\3153\377\340\3166\377\340\316" | |
222 | "6\377\340\3153\377\337\314/\377\337\313,\377\337\313)\377\335\312%\377" | |
223 | "\334\311\"\377\334\307\35\377\274\251\20\355QH\2\242\0\0\0\10\377\377" | |
224 | "\377\0\377\377\377\0\377\377\377\0\0\0\0+\0\0\0{\0\0\0\243\0\0\0\245\0" | |
225 | "\0\0\245\0\0\0\245\0\0\0\245\0\0\0\245\0\0\0\245\0\0\0\245\0\0\0\245\0" | |
226 | "\0\0\245\0\0\0\245\0\0\0\245\0\0\0\245\0\0\0\245\0\0\0\245\0\0\0\243\0" | |
227 | "\0\0{\0\0\0+\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" | |
228 | "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" | |
229 | "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" | |
230 | "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" | |
231 | "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" | |
232 | "\377\377\0\377\377\377\0"}; | |
233 | ||
234 | static const icon ruler = { | |
235 | .colorspace = GDK_COLORSPACE_RGB, | |
236 | .has_alpha = 1, | |
237 | .bits_per_sample = 8, | |
238 | .width = 24, | |
239 | .height = 24, | |
240 | .rowstride = 96, | |
241 | .data = ruler_data, | |
242 | }; | |
232 | 243 | |
233 | 244 | |
234 | 245 | /* ------------------- Move tool icon -------------------------- */ |
235 | 246 | /* GdkPixbuf RGBA C-Source image dump */ |
236 | 247 | |
237 | #ifdef __SUNPRO_C | |
238 | #pragma align 4 (move) | |
239 | #endif | |
240 | #ifdef __GNUC__ | |
241 | static const guint8 move[] __attribute__ ((__aligned__ (4))) = | |
242 | #else | |
243 | static const guint8 move[] = | |
244 | #endif | |
248 | static const guchar move_data[] = | |
245 | 249 | { "" |
246 | /* Pixbuf magic (0x47646b50) */ | |
247 | "GdkP" | |
248 | /* length: header (24) + pixel_data (1936) */ | |
249 | "\0\0\7\250" | |
250 | /* pixdata_type (0x1010002) */ | |
251 | "\1\1\0\2" | |
252 | /* rowstride (88) */ | |
253 | "\0\0\0X" | |
254 | /* width (22) */ | |
255 | "\0\0\0\26" | |
256 | /* height (22) */ | |
257 | "\0\0\0\26" | |
258 | /* pixel_data: */ | |
259 | 250 | "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" |
260 | 251 | "\0\0\0\0\0\0\40J\207\31\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" |
261 | 252 | "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0" |
323 | 314 | "\0\0\0\2\0\0\0\2\0\0\0\3\0\0\0\3\0\0\0\2\0\0\0\2\0\0\0\1\0\0\0\1\0\0" |
324 | 315 | "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"}; |
325 | 316 | |
317 | static const icon move = { | |
318 | .colorspace = GDK_COLORSPACE_RGB, | |
319 | .has_alpha = 1, | |
320 | .bits_per_sample = 8, | |
321 | .width = 22, | |
322 | .height = 22, | |
323 | .rowstride = 88, | |
324 | .data = move_data, | |
325 | }; | |
326 | 326 | |
327 | 327 | /* ------------------- Pointer tool icon -------------------------- */ |
328 | 328 | /* GdkPixbuf RGBA C-Source image dump */ |
329 | 329 | |
330 | #ifdef __SUNPRO_C | |
331 | #pragma align 4 (pointer) | |
332 | #endif | |
333 | #ifdef __GNUC__ | |
334 | static const guint8 pointer[] __attribute__ ((__aligned__ (4))) = | |
335 | #else | |
336 | static const guint8 pointer[] = | |
337 | #endif | |
330 | static const guchar pointer_data[] = | |
338 | 331 | { "" |
339 | /* Pixbuf magic (0x47646b50) */ | |
340 | "GdkP" | |
341 | /* length: header (24) + pixel_data (2304) */ | |
342 | "\0\0\11\30" | |
343 | /* pixdata_type (0x1010002) */ | |
344 | "\1\1\0\2" | |
345 | /* rowstride (96) */ | |
346 | "\0\0\0`" | |
347 | /* width (24) */ | |
348 | "\0\0\0\30" | |
349 | /* height (24) */ | |
350 | "\0\0\0\30" | |
351 | /* pixel_data: */ | |
352 | 332 | "\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" |
353 | 333 | "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" |
354 | 334 | "\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377" |
463 | 443 | "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377" |
464 | 444 | "\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0\377\377\377\0"}; |
465 | 445 | |
466 | ||
446 | static const icon pointer = { | |
447 | .colorspace = GDK_COLORSPACE_RGB, | |
448 | .has_alpha = 1, | |
449 | .bits_per_sample = 8, | |
450 | .width = 24, | |
451 | .height = 24, | |
452 | .rowstride = 96, | |
453 | .data = pointer_data, | |
454 | }; |
74 | 74 | g_string_printf(win_title, "%s — Gerbv", basename); |
75 | 75 | g_free(basename); |
76 | 76 | } else { |
77 | g_string_printf(win_title, _(gerbv_win_title)); | |
77 | g_string_printf(win_title, "%s", _(gerbv_win_title)); | |
78 | 78 | } |
79 | 79 | |
80 | 80 | gtk_window_set_title(GTK_WINDOW(win), win_title->str); |
143 | 143 | gtk_widget_size_request (label, &req); |
144 | 144 | gtk_widget_set_size_request (label, req.width, req.height); |
145 | 145 | gtk_label_set_text (GTK_LABEL (label), ""); |
146 | } | |
147 | ||
148 | GdkPixbuf *pixbuf_from_icon(const icon *icon) | |
149 | { | |
150 | return gdk_pixbuf_new_from_data(icon->data, | |
151 | icon->colorspace, | |
152 | icon->has_alpha, | |
153 | icon->bits_per_sample, | |
154 | icon->width, | |
155 | icon->height, | |
156 | icon->rowstride, | |
157 | NULL, NULL); | |
146 | 158 | } |
147 | 159 | |
148 | 160 | /* ---------------------------------------------- */ |
336 | 348 | screen.settings = g_settings_new(settings_id); |
337 | 349 | } |
338 | 350 | |
339 | pointerpixbuf = gdk_pixbuf_new_from_inline(-1, pointer, FALSE, NULL); | |
340 | movepixbuf = gdk_pixbuf_new_from_inline(-1, move, FALSE, NULL); | |
341 | zoompixbuf = gdk_pixbuf_new_from_inline(-1, lzoom, FALSE, NULL); | |
342 | measurepixbuf = gdk_pixbuf_new_from_inline(-1, ruler, FALSE, NULL); | |
351 | pointerpixbuf = pixbuf_from_icon(&pointer); | |
352 | movepixbuf = pixbuf_from_icon(&move); | |
353 | zoompixbuf = pixbuf_from_icon(&lzoom); | |
354 | measurepixbuf = pixbuf_from_icon(&ruler); | |
343 | 355 | |
344 | 356 | tooltips = gtk_tooltips_new(); |
345 | 357 | accel_group = gtk_accel_group_new (); |
1800 | 1812 | /* Output temporary stored log messages */ |
1801 | 1813 | extern GArray *log_array_tmp; |
1802 | 1814 | struct log_struct log_item; |
1803 | int i; | |
1804 | ||
1805 | for (i = 0; i < log_array_tmp->len; i++) { | |
1815 | ||
1816 | for (guint i = 0; i < log_array_tmp->len; i++) { | |
1806 | 1817 | log_item = g_array_index (log_array_tmp, struct log_struct, i); |
1807 | 1818 | callbacks_handle_log_messages (log_item.domain, log_item.level, |
1808 | 1819 | log_item.message, NULL); |
909 | 909 | used a relative path */ |
910 | 910 | g_free (mainProject->path); |
911 | 911 | if (!g_path_is_absolute(project_filename)) { |
912 | gchar *fullName = g_build_filename (g_get_current_dir (), | |
912 | gchar *currentDir = g_get_current_dir (); | |
913 | gchar *fullName = g_build_filename (currentDir, | |
913 | 914 | project_filename, NULL); |
914 | 915 | main_open_project_from_filename (mainProject, fullName); |
915 | 916 | mainProject->path = g_path_get_dirname (fullName); |
916 | 917 | g_free (fullName); |
918 | g_free (currentDir); | |
917 | 919 | } else { |
918 | 920 | main_open_project_from_filename (mainProject, project_filename); |
919 | 921 | mainProject->path = g_path_get_dirname (project_filename); |
923 | 925 | for(i = optind ; i < argc; i++) { |
924 | 926 | g_free (mainProject->path); |
925 | 927 | if (!g_path_is_absolute(argv[i])) { |
926 | gchar *fullName = g_build_filename (g_get_current_dir (), | |
928 | gchar *currentDir = g_get_current_dir (); | |
929 | gchar *fullName = g_build_filename (currentDir, | |
927 | 930 | argv[i], NULL); |
928 | 931 | gerbv_open_layer_from_filename_with_color (mainProject, fullName, |
929 | 932 | mainDefaultColors[loadedIndex % NUMBER_OF_DEFAULT_COLORS].red*257, |
932 | 935 | mainDefaultColors[loadedIndex % NUMBER_OF_DEFAULT_COLORS].alpha*257); |
933 | 936 | mainProject->path = g_path_get_dirname (fullName); |
934 | 937 | g_free (fullName); |
938 | g_free (currentDir); | |
935 | 939 | } else { |
936 | 940 | gerbv_open_layer_from_filename_with_color (mainProject, argv[i], |
937 | 941 | mainDefaultColors[loadedIndex % NUMBER_OF_DEFAULT_COLORS].red*257, |
538 | 538 | { |
539 | 539 | gerbv_image_t *image = NULL; |
540 | 540 | gerbv_net_t *curr_net = NULL; |
541 | int i; | |
542 | 541 | gerbv_transf_t *tr_rot = gerb_transf_new(); |
543 | 542 | gerbv_drill_stats_t *stats; /* Eventually replace with pick_place_stats */ |
544 | 543 | gboolean foundElement = FALSE; |
546 | 545 | |
547 | 546 | /* step through and make sure we have an element on the layer before |
548 | 547 | we actually create a new image for it and fill it */ |
549 | for (i = 0; i < parsedPickAndPlaceData->len; i++) { | |
548 | for (guint i = 0; i < parsedPickAndPlaceData->len; i++) { | |
550 | 549 | PnpPartData partData = g_array_index(parsedPickAndPlaceData, PnpPartData, i); |
551 | 550 | |
552 | 551 | if ((boardSide == 0) && !((partData.layer[0]=='b') || (partData.layer[0]=='B'))) |
598 | 597 | image->aperture[0]->parameter[0] = draw_width; |
599 | 598 | image->aperture[0]->nuf_parameters = 1; |
600 | 599 | |
601 | for (i = 0; i < parsedPickAndPlaceData->len; i++) { | |
600 | for (guint i = 0; i < parsedPickAndPlaceData->len; i++) { | |
602 | 601 | PnpPartData partData = g_array_index(parsedPickAndPlaceData, PnpPartData, i); |
603 | 602 | float radius,labelOffset; |
604 | 603 |
426 | 426 | init_paths (char *argv0) |
427 | 427 | { |
428 | 428 | size_t l; |
429 | int i; | |
430 | 429 | int haspath; |
431 | 430 | char *t1, *t2; |
432 | 431 | int found_bindir = 0; |
443 | 442 | */ |
444 | 443 | |
445 | 444 | haspath = 0; |
446 | for (i = 0; i < strlen (argv0) ; i++) | |
445 | for (unsigned int i = 0; i < strlen (argv0) ; i++) | |
447 | 446 | { |
448 | 447 | if (argv0[i] == GERBV_DIR_SEPARATOR_C) |
449 | 448 | haspath = 1; |
564 | 563 | static char * |
565 | 564 | convert_path_separators(char* path, int conv_flag) |
566 | 565 | { |
566 | if (path == NULL) return NULL; | |
567 | ||
567 | 568 | #if defined (__MINGW32__) |
568 | 569 | char *hit_in_path; |
569 | 570 |
21 | 21 | |
22 | 22 | -gdb - runs gerbv in the GDB debugger |
23 | 23 | |
24 | -valgrind - runs gerbv with the Valgrind memory checker | |
25 | ||
24 | 26 | -h|--help - displays this message and exits |
25 | 27 | |
26 | 28 | -- - halts all further option processing all additional options |
37 | 39 | } |
38 | 40 | |
39 | 41 | do_gdb=no |
42 | do_valgrind=no | |
40 | 43 | while test $# -gt 0 ; do |
41 | 44 | case $1 in |
42 | 45 | -gdb) |
43 | 46 | do_gdb=yes |
47 | shift | |
48 | ;; | |
49 | ||
50 | -valgrind) | |
51 | do_valgrind=yes | |
44 | 52 | shift |
45 | 53 | ;; |
46 | 54 | |
101 | 109 | echo "Set LD_PRELOAD to ${LD_PRELOAD}" |
102 | 110 | |
103 | 111 | GERBV=@BUILDDIR@/gerbv |
112 | VALGRIND="" | |
104 | 113 | |
114 | if test $do_valgrind = yes ; then | |
115 | VALGRIND="valgrind --trace-children=yes --suppressions=gerbv.supp --error-exitcode=127 --errors-for-leak-kinds=definite --leak-check=full -s --exit-on-first-error=yes --expensive-definedness-checks=yes -- " | |
116 | fi | |
117 | ||
118 | if [ ! -f "${GERBV}" ]; then | |
119 | echo "${GERBV} not found" | |
120 | exit 1 | |
121 | fi | |
105 | 122 | mv -f ${GERBV} ${GERBV}.orig |
106 | 123 | sed \ |
107 | 124 | -e 's;LD_LIBRARY_PATH="/;LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:/;g' \ |
134 | 151 | else |
135 | 152 | GERBV_SCHEMEINIT="@SRCDIR@" |
136 | 153 | export GERBV_SCHEMEINIT |
137 | exec ${GERBV} "$@" | |
154 | exec ${VALGRIND} ${GERBV} "$@" | |
138 | 155 | fi |
139 | 156 |
15 | 15 | \brief The TinyScheme compiler |
16 | 16 | \ingroup gerbv |
17 | 17 | */ |
18 | ||
19 | #include <assert.h> | |
18 | 20 | |
19 | 21 | #ifdef HAVE_CONFIG_H |
20 | 22 | #include <config.h> |
37 | 39 | #ifdef HAVE_UNISTD_H |
38 | 40 | #include <unistd.h> /* access() on Linux */ |
39 | 41 | #endif |
42 | #include <stddef.h> | |
40 | 43 | |
41 | 44 | #if USE_STRCASECMP |
42 | 45 | #include <strings.h> |
567 | 570 | char *cp; |
568 | 571 | long i; |
569 | 572 | int k; |
570 | int adj=ADJ; | |
573 | size_t adj=ADJ; | |
571 | 574 | |
572 | 575 | if(adj<sizeof(struct cell)) { |
573 | 576 | adj=sizeof(struct cell); |
582 | 585 | i = ++sc->last_cell_seg ; |
583 | 586 | sc->alloc_seg[i] = cp; |
584 | 587 | /* adjust in TYPE_BITS-bit boundary */ |
585 | if((unsigned long)cp%adj!=0) { | |
586 | cp=(char*)(adj*((unsigned long)cp/adj+1)); | |
588 | /* Check that the casting below is safe. */ | |
589 | static_assert(sizeof(size_t) == sizeof(cp), | |
590 | "Can't cast pointer to size_t."); | |
591 | if((size_t)cp%adj!=0) { | |
592 | cp=(char*)(adj*((size_t)cp/adj+1)); | |
587 | 593 | } |
588 | 594 | /* insert new segment in address order */ |
589 | 595 | newp=(pointer)cp; |
10 | 10 | IM_DISPLAY=${IM_DISPLAY} \ |
11 | 11 | IM_MONTAGE=${IM_MONTAGE} |
12 | 12 | |
13 | RUN_TESTS= run_tests.sh | |
13 | RUN_TESTS= run_tests.sh run_valgrind_tests.sh | |
14 | 14 | |
15 | 15 | check_SCRIPTS= ${RUN_TESTS} |
16 | 16 |
0 | { | |
1 | ignore bash memory leaks | |
2 | Memcheck:Leak | |
3 | match-leak-kinds: definite | |
4 | fun:malloc | |
5 | fun:xmalloc | |
6 | fun:set_default_locale | |
7 | fun:main | |
8 | } |
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
Binary diff not shown
20 | 20 | # This code was derived from code written by Dan McMahill as part of the |
21 | 21 | # latex-mk testsuite. The original code was covered by a BSD license |
22 | 22 | # but the copyright holder is releasing the version for gerbv under the GPL. |
23 | ||
24 | set -e | |
23 | 25 | |
24 | 26 | magic_test_skip=${GERBV_MAGIC_TEST_SKIP:-no} |
25 | 27 | |
73 | 75 | OPTIONS |
74 | 76 | |
75 | 77 | -g | --golden <dir> : Specifies that <dir> should be used for the |
76 | reference files. | |
78 | reference files. | |
79 | ||
80 | -v | --valgrind : Specifies that valgrind should check gerbv. | |
77 | 81 | |
78 | 82 | LIMITATIONS |
79 | 83 | |
112 | 116 | regen=yes |
113 | 117 | shift |
114 | 118 | ;; |
115 | ||
119 | ||
120 | -v|--valgrind) | |
121 | valgrind=yes | |
122 | shift | |
123 | ;; | |
124 | ||
116 | 125 | -*) |
117 | 126 | echo "unknown option: $1" |
118 | 127 | exit 1 |
128 | 137 | all_tests="$*" |
129 | 138 | |
130 | 139 | # The gerbv executible |
131 | GERBV=${GERBV:-../src/run_gerbv --} | |
140 | if test "X$valgrind" = "Xyes" ; then | |
141 | GERBV=${GERBV:-../src/run_gerbv -valgrind --} | |
142 | else | |
143 | GERBV=${GERBV:-../src/run_gerbv --} | |
144 | fi | |
132 | 145 | GERBV_DEFAULT_FLAGS=${GERBV_DEFAULT_FLAGS:---export=png --window=640x480} |
133 | 146 | |
134 | 147 | # Source directory |
193 | 193 | |
194 | 194 | # Test "G85" drilled slot |
195 | 195 | test-drill-slot-drilled-g85 | test-drill-slot-drilled-g85.exc |
196 | ||
197 | # Out of bounds drill tool | |
198 | out-of-bounds-drill-tool | test-out-of-bounds-drill-tool.exc |
0 | #!/bin/bash | |
1 | # | |
2 | # Generates gerbv version string from a given prefix and the current commit | |
3 | # short id | |
4 | # | |
5 | # @warning Version will only be updated when reconfiguring! Will have no effect | |
6 | # on incremental builds | |
7 | # | |
8 | # @param $1 Version prefix | |
9 | ||
10 | set -e | |
11 | ||
12 | ||
13 | # Validate arguments | |
14 | PREFIX="${1}" | |
15 | ||
16 | if [ "" == "${PREFIX}" ]; then | |
17 | (>&2 echo "Usage: git-version-gen.sh <prefix>") | |
18 | exit 1 | |
19 | fi | |
20 | ||
21 | ||
22 | # Validate environment | |
23 | GIT=`command -v git` | |
24 | ||
25 | if [ ! -x "${GIT}" ]; then | |
26 | (>&2 echo "\`git' missing") | |
27 | exit 1 | |
28 | fi | |
29 | ||
30 | ||
31 | # Get commit short id | |
32 | RELEASE_COMMIT=`"${GIT}" rev-parse HEAD` | |
33 | RELEASE_COMMIT_SHORT="${RELEASE_COMMIT:0:6}" | |
34 | ||
35 | ||
36 | # Output final version | |
37 | echo -n "${PREFIX}~${RELEASE_COMMIT_SHORT}" | |
38 |