Index: trunk/scconfig/Rev.h =================================================================== --- trunk/scconfig/Rev.h (revision 22263) +++ trunk/scconfig/Rev.h (revision 22264) @@ -1 +1 @@ -static const int myrev = 22231; +static const int myrev = 22264; Index: trunk/scconfig/Rev.tab =================================================================== --- trunk/scconfig/Rev.tab (revision 22263) +++ trunk/scconfig/Rev.tab (revision 22264) @@ -1,4 +1,4 @@ -22231 configure new source files for tEDAx layer, board and drc save +22264 configure new source files for tEDAx layer, board and drc save 22167 configure removal of the old gtk-only preferences dialog code 22119 configure dialogs config for window placement 21977 configure new propedit Index: trunk/src_plugins/io_tedax/io_tedax.pup =================================================================== --- trunk/src_plugins/io_tedax/io_tedax.pup (revision 22263) +++ trunk/src_plugins/io_tedax/io_tedax.pup (revision 22264) @@ -8,5 +8,6 @@ $fmt-feature-w tEDAx footprint (any version) $package io-standard dep lib_compat_help +dep lib_netmap default buildin autoload 1 Index: trunk/src_plugins/io_tedax/tboard.c =================================================================== --- trunk/src_plugins/io_tedax/tboard.c (revision 22263) +++ trunk/src_plugins/io_tedax/tboard.c (revision 22264) @@ -32,6 +32,8 @@ #include #include +#include "../src_plugins/lib_netmap/placement.h" + #include "board.h" #include "data.h" #include "tboard.h" @@ -80,38 +82,6 @@ return 0; } -typedef struct { - htscp_t subcs; - pcb_data_t data; /* temp buffer to place prototype subcs in */ - pcb_board_t *pcb; -} pcb_placement_t; - - -static void pcb_placement_init(pcb_placement_t *ctx, pcb_board_t *pcb) -{ - memset(ctx, 0, sizeof(pcb_placement_t)); - htscp_init(&ctx->subcs, pcb_subc_hash, pcb_subc_eq); - pcb_data_init(&ctx->data); - pcb_data_bind_board_layers(pcb, &ctx->data, 0); - ctx->pcb = pcb; -} - -static void pcb_placement_uninit(pcb_placement_t *ctx) -{ - htscp_uninit(&ctx->subcs); - pcb_data_uninit(&ctx->data); -} - -static void pcb_placement_build(pcb_placement_t *ctx, pcb_data_t *data) -{ - PCB_SUBC_LOOP(data) { - if (!htscp_has(&ctx->subcs, subc)) { - htscp_insert(&ctx->subcs, subc, subc); - } - } - PCB_END_LOOP; -} - static int tedax_global_subc_fwrite(pcb_placement_t *ctx, FILE *f) { htscp_entry_t *e; Index: trunk/src_plugins/lib_netmap/Plug.tmpasm =================================================================== --- trunk/src_plugins/lib_netmap/Plug.tmpasm (revision 22263) +++ trunk/src_plugins/lib_netmap/Plug.tmpasm (revision 22264) @@ -1,6 +1,7 @@ put /local/pcb/mod {lib_netmap} put /local/pcb/mod/OBJS [@ $(PLUGDIR)/lib_netmap/netmap.o + $(PLUGDIR)/lib_netmap/placement.o @] switch /local/pcb/lib_netmap/controls Index: trunk/src_plugins/lib_netmap/placement.c =================================================================== --- trunk/src_plugins/lib_netmap/placement.c (nonexistent) +++ trunk/src_plugins/lib_netmap/placement.c (revision 22264) @@ -0,0 +1,53 @@ +/* + * COPYRIGHT + * + * pcb-rnd, interactive printed circuit board design + * Copyright (C) 2019 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 "placement.h" + +void pcb_placement_init(pcb_placement_t *ctx, pcb_board_t *pcb) +{ + memset(ctx, 0, sizeof(pcb_placement_t)); + htscp_init(&ctx->subcs, pcb_subc_hash, pcb_subc_eq); + pcb_data_init(&ctx->data); + pcb_data_bind_board_layers(pcb, &ctx->data, 0); + ctx->pcb = pcb; +} + +void pcb_placement_uninit(pcb_placement_t *ctx) +{ + htscp_uninit(&ctx->subcs); + pcb_data_uninit(&ctx->data); +} + +void pcb_placement_build(pcb_placement_t *ctx, pcb_data_t *data) +{ + PCB_SUBC_LOOP(data) { + if (!htscp_has(&ctx->subcs, subc)) { + htscp_insert(&ctx->subcs, subc, subc); + } + } + PCB_END_LOOP; +} Index: trunk/src_plugins/lib_netmap/placement.h =================================================================== --- trunk/src_plugins/lib_netmap/placement.h (nonexistent) +++ trunk/src_plugins/lib_netmap/placement.h (revision 22264) @@ -0,0 +1,13 @@ +#include "board.h" +#include "data.h" +#include "ht_subc.h" + +typedef struct { + htscp_t subcs; + pcb_board_t *pcb; + pcb_data_t data; /* temp buffer to place prototype subcs in */ +} pcb_placement_t; + +void pcb_placement_init(pcb_placement_t *ctx, pcb_board_t *pcb); +void pcb_placement_uninit(pcb_placement_t *ctx); +void pcb_placement_build(pcb_placement_t *ctx, pcb_data_t *data);