Index: trunk/src_plugins/io_bxl/bxl.h =================================================================== --- trunk/src_plugins/io_bxl/bxl.h (revision 30610) +++ trunk/src_plugins/io_bxl/bxl.h (revision 30611) @@ -30,10 +30,12 @@ struct { pcb_layer_t *layer; - pcb_coord_t origin_x, origin_y, endp_x, endp_y, width, radius; + pcb_coord_t origin_x, origin_y, endp_x, endp_y, width, height, radius; + pcb_coord_t hole; pcb_poly_t *poly; double arc_start, arc_delta; double rot; + int num_shapes, pad_type; pcb_bxl_just_t hjust, vjust; pcb_bxl_test_style_t *text_style; char *text_str; @@ -74,4 +76,9 @@ void pcb_bxl_text_style_begin(pcb_bxl_ctx_t *ctx, char *name); void pcb_bxl_text_style_end(pcb_bxl_ctx_t *ctx); +void pcb_bxl_padstack_begin(pcb_bxl_ctx_t *ctx, char *name); +void pcb_bxl_padstack_end(pcb_bxl_ctx_t *ctx); +void pcb_bxl_padstack_begin_shape(pcb_bxl_ctx_t *ctx, const char *name); +void pcb_bxl_padstack_end_shape(pcb_bxl_ctx_t *ctx); + #endif Index: trunk/src_plugins/io_bxl/bxl_gram.c =================================================================== --- trunk/src_plugins/io_bxl/bxl_gram.c (revision 30610) +++ trunk/src_plugins/io_bxl/bxl_gram.c (revision 30611) @@ -16,155 +16,158 @@ static const pcb_bxl_int_t pcb_bxl_lhs[] = { -1, 0, 5, 5, 6, 6, 6, 6, 3, 3, 7, 7, 4, 4, 1, 1, 2, 12, 12, 12, 13, - 14, 15, 17, 8, 16, 16, 18, 18, 18, 9, - 19, 19, 21, 21, 21, 21, 20, 20, 22, 23, - 23, 24, 24, 24, 24, 26, 10, 25, 25, 27, - 27, 27, 27, 28, 29, 29, 30, 30, 30, 30, - 30, 30, 30, 30, 31, 39, 39, 40, 40, 40, - 40, 40, 40, 40, 42, 32, 41, 41, 43, 43, - 43, 43, 43, 45, 33, 44, 44, 46, 46, 46, - 46, 34, 47, 47, 48, 48, 48, 48, 50, 36, - 49, 49, 51, 51, 51, 51, 51, 51, 53, 37, - 52, 52, 54, 54, 54, 54, 54, 54, 38, 35, - 55, 55, 56, 56, 56, 11, + 14, 15, 17, 8, 16, 16, 18, 18, 18, 20, + 22, 9, 19, 19, 23, 23, 23, 23, 21, 21, + 26, 24, 25, 25, 27, 27, 27, 27, 29, 10, + 28, 28, 30, 30, 30, 30, 31, 32, 32, 33, + 33, 33, 33, 33, 33, 33, 33, 34, 42, 42, + 43, 43, 43, 43, 43, 43, 43, 45, 35, 44, + 44, 46, 46, 46, 46, 46, 48, 36, 47, 47, + 49, 49, 49, 49, 37, 50, 50, 51, 51, 51, + 51, 53, 39, 52, 52, 54, 54, 54, 54, 54, + 54, 56, 40, 55, 55, 57, 57, 57, 57, 57, + 57, 41, 38, 58, 58, 59, 59, 59, 11, }; static const pcb_bxl_int_t pcb_bxl_len[] = { 2, 2, 0, 3, 1, 1, 1, 1, 1, 1, 1, 2, 0, 1, 1, 1, 1, 2, 2, 2, 4, - 2, 2, 0, 4, 0, 4, 2, 2, 2, 10, - 0, 4, 2, 2, 2, 2, 0, 2, 4, 0, - 4, 2, 2, 1, 1, 0, 6, 0, 3, 1, - 6, 6, 6, 6, 0, 3, 1, 1, 1, 1, - 1, 1, 1, 1, 2, 0, 4, 2, 2, 2, - 2, 2, 2, 1, 0, 3, 0, 4, 2, 3, - 1, 1, 1, 0, 3, 0, 4, 4, 1, 1, - 1, 2, 0, 4, 3, 1, 1, 1, 0, 3, - 0, 4, 2, 2, 2, 1, 1, 1, 0, 3, - 0, 4, 2, 2, 2, 1, 1, 1, 2, 2, - 0, 4, 2, 2, 1, 6, + 2, 2, 0, 4, 0, 4, 2, 2, 2, 0, + 0, 12, 0, 4, 2, 2, 2, 2, 0, 2, + 0, 5, 0, 4, 2, 2, 1, 1, 0, 6, + 0, 3, 1, 6, 6, 6, 6, 0, 3, 1, + 1, 1, 1, 1, 1, 1, 1, 2, 0, 4, + 2, 2, 2, 2, 2, 2, 1, 0, 3, 0, + 4, 2, 3, 1, 1, 1, 0, 3, 0, 4, + 4, 1, 1, 1, 2, 0, 4, 3, 1, 1, + 1, 0, 3, 0, 4, 2, 2, 2, 1, 1, + 1, 0, 3, 0, 4, 2, 2, 2, 1, 1, + 1, 2, 2, 0, 4, 2, 2, 1, 6, }; static const pcb_bxl_int_t pcb_bxl_defred[] = { 0, 0, 0, 0, 13, 11, 0, 0, 0, 0, 1, - 0, 4, 5, 6, 7, 23, 0, 0, 0, 0, - 0, 0, 0, 46, 0, 3, 0, 24, 0, 0, + 0, 4, 5, 6, 7, 23, 30, 0, 0, 0, + 0, 0, 49, 0, 3, 0, 24, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 33, 8, 9, 34, 35, 36, 0, 0, 0, 0, - 0, 0, 0, 0, 50, 0, 14, 15, 27, 28, - 29, 0, 32, 0, 0, 0, 0, 0, 47, 0, - 126, 26, 0, 0, 16, 0, 0, 0, 49, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 75, 84, - 0, 99, 109, 0, 0, 0, 0, 57, 58, 59, - 60, 61, 62, 63, 64, 0, 0, 0, 0, 30, - 38, 0, 65, 0, 0, 0, 92, 0, 0, 0, - 119, 120, 54, 0, 51, 52, 53, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 74, 0, 0, 76, - 0, 85, 0, 0, 0, 0, 0, 96, 97, 98, - 0, 0, 100, 0, 110, 0, 0, 125, 0, 56, - 0, 0, 0, 44, 45, 0, 39, 68, 69, 70, - 71, 0, 72, 73, 0, 0, 0, 81, 82, 83, - 0, 0, 89, 90, 91, 0, 18, 21, 0, 17, - 19, 0, 0, 0, 0, 106, 107, 108, 0, 0, - 0, 0, 116, 117, 118, 0, 123, 124, 0, 22, - 42, 43, 0, 0, 67, 79, 0, 0, 0, 0, - 95, 94, 103, 104, 105, 0, 115, 113, 114, 0, - 122, 41, 20, 80, 78, 0, 87, 102, 112, 88, + 0, 0, 0, 0, 0, 0, 0, 53, 0, 14, + 15, 27, 28, 29, 0, 16, 35, 8, 9, 36, + 37, 38, 0, 0, 0, 0, 0, 0, 50, 0, + 129, 26, 34, 0, 0, 0, 0, 0, 52, 0, + 0, 0, 0, 0, 31, 0, 78, 87, 0, 102, + 112, 0, 0, 0, 0, 60, 61, 62, 63, 64, + 65, 66, 67, 0, 0, 0, 0, 0, 68, 0, + 0, 0, 95, 0, 0, 0, 122, 123, 57, 0, + 54, 55, 56, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 77, 0, 0, 79, 0, 88, 0, + 0, 0, 0, 0, 99, 100, 101, 0, 0, 103, + 0, 113, 0, 0, 128, 0, 59, 41, 32, 40, + 71, 72, 73, 74, 0, 75, 76, 0, 0, 0, + 0, 84, 85, 86, 0, 0, 92, 93, 94, 0, + 18, 21, 0, 17, 19, 0, 0, 0, 0, 109, + 110, 111, 0, 0, 0, 0, 119, 120, 121, 0, + 126, 127, 0, 0, 0, 70, 22, 82, 0, 0, + 0, 0, 98, 97, 106, 107, 108, 0, 118, 116, + 117, 0, 125, 0, 0, 20, 83, 81, 0, 90, + 105, 115, 0, 0, 47, 48, 0, 42, 91, 45, + 46, 0, 44, }; static const pcb_bxl_int_t pcb_bxl_dgoto[] = { 2, - 75, 76, 44, 3, 10, 11, 4, 12, 13, 14, - 15, 148, 137, 150, 165, 28, 21, 40, 23, 86, - 33, 87, 129, 166, 53, 35, 54, 55, 96, 97, - 98, 99, 100, 101, 102, 103, 104, 105, 113, 138, - 140, 114, 181, 142, 115, 186, 117, 151, 153, 118, - 199, 155, 119, 206, 121, 159, + 56, 57, 60, 3, 10, 11, 4, 12, 13, 14, + 15, 145, 134, 147, 174, 27, 21, 35, 29, 22, + 125, 107, 40, 126, 225, 204, 237, 46, 30, 47, + 48, 94, 95, 96, 97, 98, 99, 100, 101, 102, + 103, 109, 135, 137, 110, 175, 139, 111, 180, 113, + 148, 150, 114, 193, 152, 115, 200, 117, 156, }; static const pcb_bxl_int_t pcb_bxl_sindex[] = { 13, - 13, 0, -259, 0, 0, -250, -221, -218, -197, 0, - 13, 0, 0, 0, 0, 0, 27, 13, -244, -259, - 34, -245, 13, 0, -239, 0, -169, 0, -180, -229, - -229, -229, 59, -168, -196, -154, -203, -203, -203, 63, - 0, 0, 0, 0, 0, 0, 27, 47, 48, 67, - 72, 73, -163, 13, 0, -198, 0, 0, 0, 0, - 0, 34, 0, -139, -137, -203, -203, -203, 0, -196, - 0, 0, 13, 13, 0, 78, 81, 83, 0, -142, - -170, -203, -203, -203, -130, -136, -142, 94, 0, 0, - 98, 0, 0, 107, 107, -133, 13, 0, 0, 0, - 0, 0, 0, 0, 0, 108, 109, 110, 113, 0, - 0, -146, 0, 114, 116, -233, 0, 117, 118, -272, - 0, 0, 0, -170, 0, 0, 0, -184, 13, -99, - -100, -97, -96, -203, -93, -203, 0, 120, -243, 0, - -201, 0, -94, -90, -92, -86, -229, 0, 0, 0, - 121, -192, 0, -252, 0, -88, -84, 0, 136, 0, - -203, -203, -80, 0, 0, 138, 0, 0, 0, 0, - 0, 137, 0, 0, 94, -78, 139, 0, 0, 0, - 143, -203, 0, 0, 0, 144, 0, 0, -74, 0, - 0, 98, -203, -203, -203, 0, 0, 0, 146, -203, - -72, -229, 0, 0, 0, 148, 0, 0, 107, 0, - 0, 0, 113, -203, 0, 0, -203, 114, 147, 116, - 0, 0, 0, 0, 0, 117, 0, 0, 0, 118, - 0, 0, 0, 0, 0, -203, 0, 0, 0, 0, + 13, 0, -242, 0, 0, -230, -198, -194, -195, 0, + 13, 0, 0, 0, 0, 0, 0, 13, -245, -242, + 29, 31, 0, -233, 0, -212, 0, -231, 13, -207, + -173, -225, -225, -225, 54, -225, -217, -217, -217, 55, + -169, 45, 64, 67, 77, -155, 13, 0, -189, 0, + 0, 0, 0, 0, 29, 0, 0, 0, 0, 0, + 0, 0, 31, 70, -127, -225, -225, -225, 0, -207, + 0, 0, 0, -125, 13, 90, 92, 93, 0, 13, + -174, -225, -225, -225, 0, 98, 0, 0, 99, 0, + 0, 100, 100, -139, 13, 0, 0, 0, 0, 0, + 0, 0, 0, 103, 105, 106, -121, -199, 0, 110, + 111, -239, 0, 112, 113, -251, 0, 0, 0, -174, + 0, 0, 0, -106, -113, -121, -102, -103, -101, -100, + -225, -95, -225, 0, 117, -227, 0, -147, 0, -96, + -91, -92, -86, -217, 0, 0, 0, 131, -192, 0, + -255, 0, -87, -85, 0, 133, 0, 0, 0, 0, + 0, 0, 0, 0, 132, 0, 0, 98, -225, -83, + 134, 0, 0, 0, 138, -225, 0, 0, 0, 139, + 0, 0, -79, 0, 0, 99, -225, -225, -225, 0, + 0, 0, 141, -225, -77, -217, 0, 0, 0, 143, + 0, 0, 100, 145, -225, 0, 0, 0, -225, 110, + 142, 111, 0, 0, 0, 0, 0, 112, 0, 0, + 0, 113, 0, -161, 13, 0, 0, 0, -225, 0, + 0, 0, -225, -71, 0, 0, 147, 0, 0, 0, + 0, 145, 0, }; static const pcb_bxl_int_t pcb_bxl_rindex[] = { 9, - 1, 0, 180, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 182, 0, 0, 180, - 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, -89, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 182, 0, 0, 0, + 1, 0, 189, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 189, + 180, 181, 0, 0, 0, 0, 0, 0, 0, -84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 183, 0, 0, 0, 0, 0, 0, 0, -89, - 0, 0, 0, 0, 0, 0, 0, 0, 0, -73, - -87, 0, 0, 0, 0, 0, -73, 186, 0, 0, - 187, 0, 0, 188, 188, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 189, 0, - 0, 0, 0, 190, 191, 0, 0, 192, 193, 0, - 0, 0, 0, -87, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 180, 0, 0, 0, 0, 0, + 0, 0, 181, 0, 0, 0, 0, 0, 0, -84, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + -89, 0, 0, 0, 0, 183, 0, 0, 184, 0, + 0, 186, 186, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, -70, 0, 0, 187, + 190, 0, 0, 191, 192, 0, 0, 0, 0, -89, + 0, 0, 0, 0, 0, -70, 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, 186, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 187, 0, 0, 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 188, 0, - 0, 0, 189, 0, 0, 0, 0, 190, 0, 191, - 0, 0, 0, 0, 0, 192, 0, 0, 0, 193, + 0, 0, 0, 0, 0, 0, 0, 183, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 184, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 186, 193, 0, 0, 0, 0, 0, 187, + 0, 190, 0, 0, 0, 0, 0, 191, 0, 0, + 0, 192, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 193, 0, }; static const pcb_bxl_int_t pcb_bxl_gindex[] = { 0, - -25, -62, -29, 0, 184, 0, 6, 0, 0, 0, - 0, 51, -71, -91, -98, 145, 0, 0, 159, 122, - 0, 0, -5, 0, 140, 0, 0, 0, 87, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 37, 0, - -4, 0, 0, -7, 0, 0, 23, 0, -10, 0, - 0, -13, 0, 0, -95, 0, + -27, -64, -26, 0, 179, 0, -1, 0, 0, 0, + 0, 53, -52, -122, -123, 150, 0, 0, 144, 0, + 80, 0, 0, 0, -34, 0, 0, 140, 0, 0, + 0, 89, 0, 0, 0, 0, 0, 0, 0, 0, + 0, 43, 0, 2, 0, 0, 3, 0, 0, 27, + 0, -4, 0, 0, -6, 0, 0, -82, 0, }; #define pcb_bxl_TABLESIZE 321 -static const pcb_bxl_int_t pcb_bxl_table[] = { 122, - 10, 45, 46, 6, 77, 78, 5, 7, 12, 16, - 143, 59, 60, 61, 57, 58, 20, 134, 8, 106, - 107, 108, 1, 24, 144, 29, 30, 31, 34, 143, - 161, 42, 43, 144, 156, 157, 164, 134, 17, 200, - 180, 18, 185, 144, 149, 146, 134, 179, 158, 184, - 201, 147, 9, 198, 57, 58, 134, 202, 19, 70, - 197, 176, 205, 145, 146, 32, 22, 178, 25, 183, - 147, 172, 161, 27, 36, 144, 177, 41, 80, 81, - 196, 161, 204, 49, 144, 50, 51, 52, 134, 161, - 162, 163, 144, 182, 37, 38, 39, 134, 210, 47, - 48, 56, 124, 62, 64, 65, 66, 193, 194, 195, - 174, 67, 68, 231, 88, 69, 71, 191, 73, 219, - 74, 82, 89, 90, 83, 91, 84, 85, 92, 109, - 223, 110, 93, 112, 167, 94, 211, 116, 95, 130, - 131, 132, 133, 134, 135, 136, 120, 123, 125, 126, - 127, 233, 128, 139, 234, 141, 152, 154, 168, 169, - 175, 192, 170, 171, 173, 187, 188, 189, 224, 225, - 190, 207, 229, 240, 227, 208, 209, 212, 213, 2, - 214, 216, 217, 218, 220, 221, 226, 228, 230, 48, - 236, 31, 25, 55, 37, 66, 93, 121, 40, 77, - 86, 101, 111, 26, 203, 63, 72, 232, 111, 79, - 160, 215, 237, 235, 222, 238, 239, 0, 0, 0, +static const pcb_bxl_int_t pcb_bxl_table[] = { 5, + 10, 76, 77, 78, 52, 53, 54, 140, 12, 20, + 118, 61, 62, 173, 179, 178, 23, 104, 105, 106, + 6, 141, 1, 140, 7, 192, 191, 41, 199, 16, + 50, 51, 50, 51, 131, 8, 194, 141, 131, 36, + 37, 38, 143, 58, 59, 70, 169, 195, 144, 141, + 131, 32, 33, 34, 196, 153, 154, 142, 143, 146, + 19, 17, 131, 155, 144, 18, 165, 24, 26, 9, + 28, 171, 42, 81, 43, 44, 45, 170, 85, 39, + 31, 169, 49, 172, 141, 177, 127, 128, 129, 130, + 131, 132, 133, 120, 55, 63, 190, 131, 198, 64, + 236, 235, 65, 66, 207, 167, 67, 187, 188, 189, + 86, 211, 169, 233, 234, 141, 68, 185, 87, 88, + 223, 89, 215, 69, 90, 71, 169, 74, 91, 141, + 75, 92, 80, 82, 93, 83, 84, 108, 112, 116, + 226, 119, 131, 121, 227, 122, 123, 176, 124, 136, + 138, 149, 151, 158, 159, 161, 162, 168, 163, 164, + 216, 217, 166, 181, 239, 182, 219, 183, 240, 221, + 184, 186, 201, 203, 202, 205, 208, 209, 210, 212, + 213, 218, 220, 222, 224, 229, 241, 242, 2, 25, + 33, 58, 69, 96, 51, 124, 80, 39, 25, 89, + 104, 114, 43, 197, 72, 160, 73, 243, 157, 79, + 206, 228, 214, 231, 230, 232, 0, 0, 0, 0, + 0, 0, 0, 238, 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, 0, 0, - 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 10, 10, 10, 10, 12, 0, 0, 0, 12, 0, 0, 10, 10, 10, 10, 10, 10, 10, 10, 12, 0, 0, 0, @@ -173,33 +176,33 @@ 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 12, }; -static const pcb_bxl_int_t pcb_bxl_check[] = { 95, - 0, 31, 32, 263, 67, 68, 1, 267, 0, 260, - 263, 37, 38, 39, 258, 259, 11, 290, 278, 82, - 83, 84, 10, 18, 277, 271, 272, 273, 23, 263, - 274, 261, 262, 277, 307, 308, 128, 290, 260, 292, - 139, 260, 141, 277, 116, 298, 290, 139, 120, 141, - 303, 304, 312, 152, 258, 259, 290, 310, 256, 54, - 152, 305, 154, 297, 298, 311, 40, 139, 313, 141, - 304, 134, 274, 40, 314, 277, 139, 258, 73, 74, - 152, 274, 154, 280, 277, 282, 283, 284, 290, 274, - 275, 276, 277, 295, 264, 265, 266, 290, 161, 41, - 269, 256, 97, 41, 58, 58, 40, 300, 301, 302, - 136, 40, 40, 209, 285, 279, 315, 147, 258, 182, - 258, 44, 293, 294, 44, 296, 44, 270, 299, 260, - 193, 268, 303, 40, 129, 306, 162, 40, 309, 286, - 287, 288, 289, 290, 291, 292, 40, 281, 41, 41, - 41, 214, 40, 40, 217, 40, 40, 40, 258, 260, - 41, 41, 260, 260, 258, 260, 257, 260, 194, 195, - 257, 260, 202, 236, 200, 260, 41, 258, 41, 0, - 44, 260, 44, 41, 41, 260, 41, 260, 41, 279, - 44, 10, 10, 281, 268, 10, 10, 10, 10, 10, - 10, 10, 10, 20, 154, 47, 62, 213, 87, 70, - 124, 175, 220, 218, 192, 226, 230, -1, -1, -1, +static const pcb_bxl_int_t pcb_bxl_check[] = { 1, + 0, 66, 67, 68, 32, 33, 34, 263, 0, 11, + 93, 38, 39, 136, 138, 138, 18, 82, 83, 84, + 263, 277, 10, 263, 267, 149, 149, 29, 151, 260, + 258, 259, 258, 259, 290, 278, 292, 277, 290, 271, + 272, 273, 298, 261, 262, 47, 274, 303, 304, 277, + 290, 264, 265, 266, 310, 307, 308, 297, 298, 112, + 256, 260, 290, 116, 304, 260, 131, 313, 40, 312, + 40, 136, 280, 75, 282, 283, 284, 305, 80, 311, + 314, 274, 256, 136, 277, 138, 286, 287, 288, 289, + 290, 291, 292, 95, 41, 41, 149, 290, 151, 269, + 224, 224, 58, 40, 169, 133, 40, 300, 301, 302, + 285, 176, 274, 275, 276, 277, 40, 144, 293, 294, + 203, 296, 187, 279, 299, 315, 274, 58, 303, 277, + 258, 306, 258, 44, 309, 44, 44, 40, 40, 40, + 205, 281, 290, 41, 209, 41, 41, 295, 270, 40, + 40, 40, 40, 260, 268, 258, 260, 41, 260, 260, + 188, 189, 258, 260, 229, 257, 194, 260, 233, 196, + 257, 41, 260, 41, 260, 44, 260, 44, 41, 41, + 260, 41, 260, 41, 40, 44, 258, 41, 0, 10, + 10, 281, 10, 10, 279, 10, 10, 268, 20, 10, + 10, 10, 10, 151, 55, 126, 63, 242, 120, 70, + 168, 210, 186, 218, 212, 222, -1, -1, -1, -1, + -1, -1, -1, 225, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 263, -1, -1, -1, 267, 268, 269, 270, 263, -1, -1, -1, 267, -1, -1, 278, 279, 280, 281, 282, 283, 284, 285, 278, -1, -1, -1, @@ -210,7 +213,7 @@ }; #define pcb_bxl_FINAL 2 #define pcb_bxl_MAXTOKEN 315 -#define pcb_bxl_UNDFTOKEN 374 +#define pcb_bxl_UNDFTOKEN 377 #define pcb_bxl_TRANSLATE(a) ((a) > pcb_bxl_MAXTOKEN ? pcb_bxl_UNDFTOKEN : (a)) #if pcb_bxl_DEBUG static const char *const pcb_bxl_name[] = { @@ -233,7 +236,7 @@ "T_PROPERTY","T_WIZARD","T_VARNAME","T_VARDATA","T_TEMPLATEDATA","T_ISFLIPPED", "T_NOPASTE","T_SYMBOL","T_ENDSYMBOL","T_COMPONENT","T_ENDCOMPONENT",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,0,0,0,0,0,0,0,0,0,0,0,0, -0,0,0,0,0,0,0,0,0,0,0,0,"illegal-symbol", +0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"illegal-symbol", }; static const char *const pcb_bxl_rule[] = { "$accept : full_file", @@ -266,24 +269,27 @@ "text_style_attr : T_FONTWIDTH real", "text_style_attr : T_FONTCHARWIDTH real", "text_style_attr : T_FONTHEIGHT real", -"pad_stack : T_PADSTACK T_QSTR pstk_attrs nl T_SHAPES ':' T_INTEGER nl pad_shapes T_ENDPADSTACK", +"$$2 :", +"$$3 :", +"pad_stack : T_PADSTACK T_QSTR $$2 pstk_attrs nl T_SHAPES ':' T_INTEGER nl $$3 pad_shapes T_ENDPADSTACK", "pstk_attrs :", "pstk_attrs : '(' pstk_attr ')' pstk_attrs", -"pstk_attr : T_HOLEDIAM T_INTEGER", +"pstk_attr : T_HOLEDIAM coord", "pstk_attr : T_SURFACE boolean", "pstk_attr : T_PLATED boolean", "pstk_attr : T_NOPASTE boolean", "pad_shapes :", "pad_shapes : pad_shape pad_shapes", -"pad_shape : T_PADSHAPE T_QSTR padshape_attrs nl", +"$$4 :", +"pad_shape : T_PADSHAPE T_QSTR $$4 padshape_attrs nl", "padshape_attrs :", "padshape_attrs : '(' padshape_attr ')' padshape_attrs", -"padshape_attr : T_HEIGHT real", +"padshape_attr : T_HEIGHT coord", "padshape_attr : T_PADTYPE T_INTEGER", "padshape_attr : common_layer", "padshape_attr : common_width", -"$$2 :", -"pattern : T_PATTERN T_QSTR nl $$2 pattern_chldrn T_ENDPATTERN", +"$$5 :", +"pattern : T_PATTERN T_QSTR nl $$5 pattern_chldrn T_ENDPATTERN", "pattern_chldrn :", "pattern_chldrn : pattern_chld nl pattern_chldrn", "pattern_chld : data", @@ -311,8 +317,8 @@ "pad_attr : T_ORIGINALPINNUMBER T_INTEGER", "pad_attr : T_ROTATE real", "pad_attr : common_origin", -"$$3 :", -"poly : T_POLY $$3 poly_attrs", +"$$6 :", +"poly : T_POLY $$6 poly_attrs", "poly_attrs :", "poly_attrs : '(' poly_attr ')' poly_attrs", "poly_attr : T_PROPERTY T_QSTR", @@ -320,8 +326,8 @@ "poly_attr : common_origin", "poly_attr : common_layer", "poly_attr : common_width", -"$$4 :", -"line : T_LINE $$4 line_attrs", +"$$7 :", +"line : T_LINE $$7 line_attrs", "line_attrs :", "line_attrs : '(' line_attr ')' line_attrs", "line_attr : T_ENDPOINT coord ',' coord", @@ -335,8 +341,8 @@ "attribute_attr : common_attr_text", "attribute_attr : common_origin", "attribute_attr : common_layer", -"$$5 :", -"arc : T_ARC $$5 arc_attrs", +"$$8 :", +"arc : T_ARC $$8 arc_attrs", "arc_attrs :", "arc_attrs : '(' arc_attr ')' arc_attrs", "arc_attr : T_RADIUS coord", @@ -345,8 +351,8 @@ "arc_attr : common_origin", "arc_attr : common_layer", "arc_attr : common_width", -"$$6 :", -"text : T_TEXT $$6 text_attrs", +"$$9 :", +"text : T_TEXT $$9 text_attrs", "text_attrs :", "text_attrs : '(' text_attr ')' text_attrs", "text_attr : T_TEXT T_QSTR", @@ -635,95 +641,127 @@ #line 157 "../../src_plugins/io_bxl/bxl_gram.y" { ctx->state.text_style->height = yyctx->stack.l_mark[0].un.d; } break; -case 34: +case 30: +#line 164 "../../src_plugins/io_bxl/bxl_gram.y" + { pcb_bxl_padstack_begin(ctx, yyctx->stack.l_mark[0].un.s); /* $2 is taken over */ } +break; +case 31: +#line 166 "../../src_plugins/io_bxl/bxl_gram.y" + { ctx->state.num_shapes = yyctx->stack.l_mark[-1].un.i; } +break; +case 32: +#line 168 "../../src_plugins/io_bxl/bxl_gram.y" + { pcb_bxl_padstack_end(ctx); } +break; +case 35: #line 177 "../../src_plugins/io_bxl/bxl_gram.y" + { ctx->state.hole = yyctx->stack.l_mark[0].un.c; } +break; +case 36: +#line 178 "../../src_plugins/io_bxl/bxl_gram.y" { ctx->state.surface = yyctx->stack.l_mark[0].un.i; } break; -case 35: -#line 178 "../../src_plugins/io_bxl/bxl_gram.y" +case 37: +#line 179 "../../src_plugins/io_bxl/bxl_gram.y" { ctx->state.plated = yyctx->stack.l_mark[0].un.i; } break; -case 36: -#line 179 "../../src_plugins/io_bxl/bxl_gram.y" +case 38: +#line 180 "../../src_plugins/io_bxl/bxl_gram.y" { ctx->state.nopaste = yyctx->stack.l_mark[0].un.i; } break; +case 41: +#line 189 "../../src_plugins/io_bxl/bxl_gram.y" + { pcb_bxl_padstack_begin_shape(ctx, yyctx->stack.l_mark[0].un.s); free(yyctx->stack.l_mark[0].un.s); } +break; +case 42: +#line 190 "../../src_plugins/io_bxl/bxl_gram.y" + { pcb_bxl_padstack_end_shape(ctx); } +break; +case 45: +#line 199 "../../src_plugins/io_bxl/bxl_gram.y" + { ctx->state.height = yyctx->stack.l_mark[0].un.c; } +break; case 46: -#line 205 "../../src_plugins/io_bxl/bxl_gram.y" +#line 200 "../../src_plugins/io_bxl/bxl_gram.y" + { ctx->state.pad_type = yyctx->stack.l_mark[0].un.i; } +break; +case 49: +#line 207 "../../src_plugins/io_bxl/bxl_gram.y" { pcb_bxl_pattern_begin(ctx, yyctx->stack.l_mark[-1].un.s); free(yyctx->stack.l_mark[-1].un.s); } break; -case 47: -#line 207 "../../src_plugins/io_bxl/bxl_gram.y" +case 50: +#line 209 "../../src_plugins/io_bxl/bxl_gram.y" { pcb_bxl_pattern_end(ctx); } break; -case 75: -#line 267 "../../src_plugins/io_bxl/bxl_gram.y" +case 78: +#line 269 "../../src_plugins/io_bxl/bxl_gram.y" { pcb_bxl_poly_begin(ctx); } break; -case 76: -#line 268 "../../src_plugins/io_bxl/bxl_gram.y" +case 79: +#line 270 "../../src_plugins/io_bxl/bxl_gram.y" { pcb_bxl_poly_end(ctx); } break; -case 79: -#line 278 "../../src_plugins/io_bxl/bxl_gram.y" +case 82: +#line 280 "../../src_plugins/io_bxl/bxl_gram.y" { pcb_bxl_add_property(ctx, (pcb_any_obj_t *)ctx->state.poly, yyctx->stack.l_mark[0].un.s); free(yyctx->stack.l_mark[0].un.s); } break; -case 80: -#line 279 "../../src_plugins/io_bxl/bxl_gram.y" +case 83: +#line 281 "../../src_plugins/io_bxl/bxl_gram.y" { pcb_bxl_poly_add_vertex(ctx, yyctx->stack.l_mark[-2].un.c, yyctx->stack.l_mark[0].un.c); } break; -case 84: -#line 287 "../../src_plugins/io_bxl/bxl_gram.y" +case 87: +#line 289 "../../src_plugins/io_bxl/bxl_gram.y" { pcb_bxl_reset(ctx); } break; -case 85: -#line 288 "../../src_plugins/io_bxl/bxl_gram.y" +case 88: +#line 290 "../../src_plugins/io_bxl/bxl_gram.y" { pcb_bxl_add_line(ctx); pcb_bxl_reset(ctx); } break; -case 88: -#line 297 "../../src_plugins/io_bxl/bxl_gram.y" +case 91: +#line 299 "../../src_plugins/io_bxl/bxl_gram.y" { ctx->state.endp_x = yyctx->stack.l_mark[-2].un.c; ctx->state.endp_y = yyctx->stack.l_mark[0].un.c; } break; -case 99: -#line 323 "../../src_plugins/io_bxl/bxl_gram.y" +case 102: +#line 325 "../../src_plugins/io_bxl/bxl_gram.y" { pcb_bxl_reset(ctx); } break; -case 100: -#line 324 "../../src_plugins/io_bxl/bxl_gram.y" +case 103: +#line 326 "../../src_plugins/io_bxl/bxl_gram.y" { pcb_bxl_add_arc(ctx); pcb_bxl_reset(ctx); } break; -case 103: -#line 333 "../../src_plugins/io_bxl/bxl_gram.y" +case 106: +#line 335 "../../src_plugins/io_bxl/bxl_gram.y" { ctx->state.radius = yyctx->stack.l_mark[0].un.c; } break; -case 104: -#line 334 "../../src_plugins/io_bxl/bxl_gram.y" +case 107: +#line 336 "../../src_plugins/io_bxl/bxl_gram.y" { ctx->state.arc_start = yyctx->stack.l_mark[0].un.d; } break; -case 105: -#line 335 "../../src_plugins/io_bxl/bxl_gram.y" +case 108: +#line 337 "../../src_plugins/io_bxl/bxl_gram.y" { ctx->state.arc_delta = yyctx->stack.l_mark[0].un.d; } break; -case 109: -#line 343 "../../src_plugins/io_bxl/bxl_gram.y" +case 112: +#line 345 "../../src_plugins/io_bxl/bxl_gram.y" { pcb_bxl_reset(ctx); } break; -case 110: -#line 344 "../../src_plugins/io_bxl/bxl_gram.y" +case 113: +#line 346 "../../src_plugins/io_bxl/bxl_gram.y" { pcb_bxl_add_text(ctx); pcb_bxl_reset(ctx); } break; -case 113: -#line 353 "../../src_plugins/io_bxl/bxl_gram.y" +case 116: +#line 355 "../../src_plugins/io_bxl/bxl_gram.y" { pcb_bxl_set_text_str(ctx, yyctx->stack.l_mark[0].un.s); /* $2 is taken over */ } break; -case 114: -#line 354 "../../src_plugins/io_bxl/bxl_gram.y" +case 117: +#line 356 "../../src_plugins/io_bxl/bxl_gram.y" { ctx->state.flipped = yyctx->stack.l_mark[0].un.i; } break; -case 115: -#line 355 "../../src_plugins/io_bxl/bxl_gram.y" +case 118: +#line 357 "../../src_plugins/io_bxl/bxl_gram.y" { ctx->state.rot = yyctx->stack.l_mark[0].un.d; } break; -#line 739 "../../src_plugins/io_bxl/bxl_gram.c" +#line 777 "../../src_plugins/io_bxl/bxl_gram.c" } yyctx->stack.s_mark -= yyctx->yym; yyctx->state = *yyctx->stack.s_mark; Index: trunk/src_plugins/io_bxl/bxl_gram.y =================================================================== --- trunk/src_plugins/io_bxl/bxl_gram.y (revision 30610) +++ trunk/src_plugins/io_bxl/bxl_gram.y (revision 30611) @@ -161,10 +161,11 @@ /*** PadStack ***/ pad_stack: - T_PADSTACK T_QSTR pstk_attrs nl - T_SHAPES ':' T_INTEGER nl - pad_shapes - T_ENDPADSTACK + T_PADSTACK T_QSTR { pcb_bxl_padstack_begin(ctx, $2); /* $2 is taken over */ } + pstk_attrs nl + T_SHAPES ':' T_INTEGER nl { ctx->state.num_shapes = $8; } + pad_shapes + T_ENDPADSTACK { pcb_bxl_padstack_end(ctx); } ; pstk_attrs: @@ -173,7 +174,7 @@ ; pstk_attr: - T_HOLEDIAM T_INTEGER + T_HOLEDIAM coord { ctx->state.hole = $2; } | T_SURFACE boolean { ctx->state.surface = $2; } | T_PLATED boolean { ctx->state.plated = $2; } | T_NOPASTE boolean { ctx->state.nopaste = $2; } @@ -185,7 +186,8 @@ ; pad_shape: - T_PADSHAPE T_QSTR padshape_attrs nl + T_PADSHAPE T_QSTR { pcb_bxl_padstack_begin_shape(ctx, $2); free($2); } + padshape_attrs nl { pcb_bxl_padstack_end_shape(ctx); } ; padshape_attrs: @@ -194,8 +196,8 @@ ; padshape_attr: - T_HEIGHT real - | T_PADTYPE T_INTEGER + T_HEIGHT coord { ctx->state.height = $2; } + | T_PADTYPE T_INTEGER { ctx->state.pad_type = $2; } | common_layer | common_width ; Index: trunk/src_plugins/io_bxl/read.c =================================================================== --- trunk/src_plugins/io_bxl/read.c (revision 30610) +++ trunk/src_plugins/io_bxl/read.c (revision 30611) @@ -183,7 +183,27 @@ free(tmp); } +void pcb_bxl_padstack_begin(pcb_bxl_ctx_t *ctx, char *name) +{ +} + +void pcb_bxl_padstack_end(pcb_bxl_ctx_t *ctx) +{ + +} + +void pcb_bxl_padstack_begin_shape(pcb_bxl_ctx_t *ctx, const char *name) +{ + +} + +void pcb_bxl_padstack_end_shape(pcb_bxl_ctx_t *ctx) +{ + +} + + void pcb_bxl_add_line(pcb_bxl_ctx_t *ctx) { pcb_coord_t width;