Index: plugins/io_eeschema/read_disp.c =================================================================== --- plugins/io_eeschema/read_disp.c (revision 11420) +++ plugins/io_eeschema/read_disp.c (revision 11421) @@ -647,6 +647,67 @@ return eeschema_render_wires(ctx, &ctx->sheet->direct, parent, pts); } +static int eechema_parse_busentry(read_ctx_t* ctx, csch_cgrp_t* dst, + gsxl_node_t* node) +{ + gsxl_node_t* at = NULL; + gsxl_node_t* size = NULL; + + gsxl_node_t* const parent = node->parent; + + float x, y; + float sx, sy; + + for(;node;node=node->next) + { + if(strcmp(node->str, "at")==0) + { + at = node->children; + } + else + if(strcmp(node->str, "size")==0) + { + size = node->children; + } + else + if(strcmp(node->str, "stroke")==0 || + strcmp(node->str, "uuid")==0) + { + /* ignore these */ + } + else + { + unexpected_child(ctx, node->parent, node); + return -1; + } + } + + if(!at) + { + eechema_error(ctx, parent, "missing 'at' data from 'bus_entry' object"); + return -1; + } + + if(!size) + { + eechema_error(ctx, parent, "missing 'size' data from 'bus_entry' object"); + return -1; + } + + if(eechema_parse_xy(ctx, at, &x, &y)!=0) + { + return -1; + } + + if(eechema_parse_xy(ctx, size, &sx, &sy)!=0) + { + return -1; + } + + return eeschema_render_busentry_decor(ctx, dst, parent, x, y, sx, sy, + eeschema_get_stroke(ctx)); +} + static int eechema_parse_polyline(read_ctx_t* ctx, csch_cgrp_t* dst, gsxl_node_t* node) { @@ -3098,7 +3159,7 @@ { "global_label", eechema_parse_globallabel }, { "hierarchical_label", eechema_parse_hierarchicallabel }, { "netclass_flag", eechema_parse_netclassflag }, - { "bus_entry", eechema_parse__ignore }, /* TODO: bus is not supported, these must be ignored */ + { "bus_entry", eechema_parse_busentry }, { "sheet", eechema_parse__sch_sheet }, { "embedded_fonts", eechema_parse__ignore }, /* TODO: what's the purpose of this? */ DRAWING_PRIMITIVES Index: plugins/io_eeschema/read_render.c =================================================================== --- plugins/io_eeschema/read_render.c (revision 11420) +++ plugins/io_eeschema/read_render.c (revision 11421) @@ -1058,3 +1058,17 @@ return 0; } + +static int eeschema_render_busentry_decor(read_ctx_t* const ctx, + csch_cgrp_t* const dst, gsxl_node_t* const objroot, + const float x, const float y, const float size_x, const float size_y, + const char* const stroke) +{ + if(!csch_alien_mkline(&ctx->alien, dst, x, y, x+size_x, y+size_y, stroke)) + { + eechema_error(ctx, objroot, "could not make bus_entry decor line"); + return -1; + } + + return 0; +}