Index: trunk/src_plugins/io_lihata/io_lihata.c =================================================================== --- trunk/src_plugins/io_lihata/io_lihata.c (revision 32889) +++ trunk/src_plugins/io_lihata/io_lihata.c (revision 32890) @@ -52,6 +52,13 @@ return 40; } + if ((lih) && (typ & PCB_IOT_PADSTACK)) { + if (wr && (ctx->write_padstack != NULL)) + return 100; + if (!wr && (ctx->parse_padstack != NULL)) + return 100; + } + if (!lih || ((typ & (~(PCB_IOT_PCB | PCB_IOT_FONT | PCB_IOT_FOOTPRINT))) != 0)) return 0; @@ -90,6 +97,7 @@ plug_io_lihata_v7.parse_buffer = io_lihata_parse_buffer; plug_io_lihata_v7.write_font = io_lihata_write_font; plug_io_lihata_v7.write_buffer = io_lihata_write_buffer; + plug_io_lihata_v7.write_padstack = io_lihata_write_padstack; plug_io_lihata_v7.write_subcs_head = io_lihata_write_subcs_head; plug_io_lihata_v7.write_subcs_subc = io_lihata_write_subcs_subc; plug_io_lihata_v7.write_subcs_tail = io_lihata_write_subcs_tail; Index: trunk/src_plugins/io_lihata/write.c =================================================================== --- trunk/src_plugins/io_lihata/write.c (revision 32889) +++ trunk/src_plugins/io_lihata/write.c (revision 32890) @@ -2011,6 +2011,28 @@ } +int io_lihata_write_padstack(pcb_plug_io_t *ctx, FILE *f, pcb_pstk_proto_t *proto) +{ + int res; + lht_doc_t *doc; + + wrver = plug2ver(ctx); + if (wrver < 6) + wrver = 6; + + io_lihata_full_tree = 1; + doc = lht_dom_init(); + doc->root = lht_dom_node_alloc(LHT_HASH, "pcb-rnd-padstack-v0"); + + clean_invalid(doc->root); /* remove invalid nodes placed for persistency */ + res = lht_dom_export(doc->root, f, ""); + + lht_dom_uninit(doc); + io_lihata_full_tree = 0; + return res; + +} + typedef struct { int womit_font, womit_config, womit_styles; int ver; Index: trunk/src_plugins/io_lihata/write.h =================================================================== --- trunk/src_plugins/io_lihata/write.h (revision 32889) +++ trunk/src_plugins/io_lihata/write.h (revision 32890) @@ -38,6 +38,7 @@ int io_lihata_write_subcs_head(pcb_plug_io_t *ctx, void **udata, FILE *f, int lib, long num_subcs); int io_lihata_write_subcs_subc(pcb_plug_io_t *ctx, void **udata, FILE *f, pcb_subc_t *subc); int io_lihata_write_subcs_tail(pcb_plug_io_t *ctx, void **udata, FILE *f); +int io_lihata_write_padstack(pcb_plug_io_t *ctx, FILE *f, pcb_pstk_proto_t *proto); void *io_lihata_save_as_subd_init(const pcb_plug_io_t *ctx, rnd_hid_dad_subdialog_t *sub, pcb_plug_iot_t type); void io_lihata_save_as_subd_uninit(const pcb_plug_io_t *ctx, void *plg_ctx, rnd_hid_dad_subdialog_t *sub, rnd_bool apply);