Index: trunk/scconfig/plugins.h =================================================================== --- trunk/scconfig/plugins.h (revision 35282) +++ trunk/scconfig/plugins.h (revision 35283) @@ -113,6 +113,7 @@ plugin_def("export_xy", "xy (centroid) pcb_exporter", sbuildin, 1) plugin_header("\nIO plugins (file formats):\n") +plugin_def("io_altium", "Altium board", sdisable, 0) plugin_def("io_autotrax", "autotrax (freeware PCB CAD)", sbuildin, 1) plugin_def("io_bxl", "BXL footprint", sbuildin, 1) plugin_def("io_dsn", "specctra .dsn", sbuildin, 1) Index: trunk/src_plugins/io_altium/Makefile =================================================================== --- trunk/src_plugins/io_altium/Makefile (nonexistent) +++ trunk/src_plugins/io_altium/Makefile (revision 35283) @@ -0,0 +1,5 @@ +all: + cd ../../src && $(MAKE) mod_io_altium + +clean: + rm *.o *.so 2>/dev/null ; true Index: trunk/src_plugins/io_altium/Plug.tmpasm =================================================================== --- trunk/src_plugins/io_altium/Plug.tmpasm (nonexistent) +++ trunk/src_plugins/io_altium/Plug.tmpasm (revision 35283) @@ -0,0 +1,12 @@ +put /local/pcb/mod {io_altium} + + +put /local/pcb/mod/OBJS [@ + $(PLUGDIR)/io_altium/io_altium.o +@] + +switch /local/pcb/io_altium/controls + case {buildin} include /local/pcb/tmpasm/buildin; end; + case {plugin} include /local/pcb/tmpasm/plugin; end; + case {disable} include /local/pcb/tmpasm/disable; end; +end Index: trunk/src_plugins/io_altium/io_altium.c =================================================================== --- trunk/src_plugins/io_altium/io_altium.c (nonexistent) +++ trunk/src_plugins/io_altium/io_altium.c (revision 35283) @@ -0,0 +1,88 @@ +/* + * COPYRIGHT + * + * pcb-rnd, interactive printed circuit board design + * + * Altium IO plugin - plugin coordination + * pcb-rnd Copyright (C) 2021 Tibor 'Igor2' Palinkas + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Contact: + * Project page: http://repo.hu/projects/pcb-rnd + * lead developer: http://repo.hu/projects/pcb-rnd/contact.html + * mailing list: pcb-rnd (at) list.repo.hu (send "subscribe") + */ + +#include "config.h" + +#include +#include +#include +#include +#include "plug_io.h" + + +static pcb_plug_io_t io_pcbdoc_ascii; +static const char *altium_cookie = "Altium IO"; + + +int io_altium_fmt(pcb_plug_io_t *ctx, pcb_plug_iot_t typ, int wr, const char *fmt) +{ + if ((strcmp(ctx->description, fmt) != 0) && (rnd_strcasecmp(fmt, "altium") != 0)) /* format name mismatch */ + return 0; + + if ((typ & (~(PCB_IOT_PCB))) != 0) /* support only boards */ + return 0; + + if (wr) + return 0; + + return 100; +} + +int pplg_check_ver_io_altium(int ver_needed) { return 0; } + +void pplg_uninit_io_altium(void) +{ + RND_HOOK_UNREGISTER(pcb_plug_io_t, pcb_plug_io_chain, &io_pcbdoc_ascii); +} + +int pplg_init_io_altium(void) +{ + RND_API_CHK_VER; + + io_pcbdoc_ascii.plugin_data = NULL; + io_pcbdoc_ascii.fmt_support_prio = io_altium_fmt; +/* io_pcbdoc_ascii.test_parse = io_altium_test_parse; + io_pcbdoc_ascii.parse_pcb = io_altium_parse_pcb;*/ +/* io_pcbdoc_ascii.parse_footprint = io_altium_parse_footprint; + io_pcbdoc_ascii.map_footprint = io_altium_map_footprint;*/ + io_pcbdoc_ascii.parse_font = NULL; + io_pcbdoc_ascii.write_buffer = NULL; + io_pcbdoc_ascii.write_pcb = NULL; + io_pcbdoc_ascii.default_fmt = "altium"; + io_pcbdoc_ascii.description = "Altium PcbDoc ASCII board"; + io_pcbdoc_ascii.save_preference_prio = 1; + io_pcbdoc_ascii.default_extension = ".PcbDoc"; + io_pcbdoc_ascii.fp_extension = NULL; + io_pcbdoc_ascii.mime_type = "application/x-altium"; + io_pcbdoc_ascii.multi_footprint = 0; + + RND_HOOK_REGISTER(pcb_plug_io_t, pcb_plug_io_chain, &io_pcbdoc_ascii); + + return 0; +} + Index: trunk/src_plugins/io_altium/io_altium.pup =================================================================== --- trunk/src_plugins/io_altium/io_altium.pup (nonexistent) +++ trunk/src_plugins/io_altium/io_altium.pup (revision 35283) @@ -0,0 +1,10 @@ +$class io +$short Altium board +$long load boards in the altium PcbDoc format +$state WIP +$fmt-native no +$fmt-feature-r Altium PcbDoc ASCII board +#$fmt-feature-w Altium PcbDoc ASCII board +#$package io-alien +default disable-all +autoload 1 Index: trunk/src_plugins/plugins_ALL.tmpasm =================================================================== --- trunk/src_plugins/plugins_ALL.tmpasm (revision 35282) +++ trunk/src_plugins/plugins_ALL.tmpasm (revision 35283) @@ -68,6 +68,7 @@ include {../src_plugins/import_sch2/Plug.tmpasm} include {../src_plugins/import_tinycad/Plug.tmpasm} include {../src_plugins/import_ttf/Plug.tmpasm} +include {../src_plugins/io_altium/Plug.tmpasm} include {../src_plugins/io_autotrax/Plug.tmpasm} include {../src_plugins/io_bxl/Plug.tmpasm} include {../src_plugins/io_dsn/Plug.tmpasm}