diff --git a/gds-parser/gds-parser.c b/gds-parser/gds-parser.c index f4d20c8..2c91764 100644 --- a/gds-parser/gds-parser.c +++ b/gds-parser/gds-parser.c @@ -726,21 +726,22 @@ int parse_gds_from_file(const char *filename, GList **library_list) current_cell = NULL; printf("Leaving Cell\n"); break; - //case BOX: + case BOX: case BOUNDARY: if (current_cell == NULL) { - GDS_ERROR("Boundary outside of cell"); + GDS_ERROR("Boundary/Box outside of cell"); run = -3; break; } current_cell->graphic_objs = append_graphics(current_cell->graphic_objs, - GRAPHIC_POLYGON, ¤t_graphics); + (rec_type == BOUNDARY ? GRAPHIC_POLYGON : GRAPHIC_BOX), + ¤t_graphics); if (current_cell->graphic_objs == NULL) { GDS_ERROR("Memory allocation failed"); run = -4; break; } - printf("\tEntering boundary\n"); + printf("\tEntering boundary/Box\n"); break; case SREF: if (current_cell == NULL) { @@ -794,6 +795,7 @@ int parse_gds_from_file(const char *filename, GList **library_list) } break; + case MAG: break; case ANGLE: diff --git a/gds-parser/gds-types.h b/gds-parser/gds-types.h index 25cbd55..5c6b14f 100644 --- a/gds-parser/gds-types.h +++ b/gds-parser/gds-types.h @@ -6,7 +6,7 @@ #define CELL_NAME_MAX (100) -enum graphics_type {GRAPHIC_PATH = 0, GRAPHIC_POLYGON = 1}; +enum graphics_type {GRAPHIC_PATH = 0, GRAPHIC_POLYGON = 1, GRAPHIC_BOX}; enum path_type {PATH_FLUSH = 0, PATH_ROUNDED = 1, PATH_SQUARED = 2}; struct gds_point { diff --git a/latex-output/latex-output.c b/latex-output/latex-output.c index 75a5d68..73c4ad2 100644 --- a/latex-output/latex-output.c +++ b/latex-output/latex-output.c @@ -95,7 +95,7 @@ static void generate_graphics(FILE *tex_file, GList *graphics, GList *linfo, GSt if (write_layer_env(tex_file, &color, (int)gfx->layer, linfo, buffer) == TRUE) { /* Layer is defined => create graphics */ - if (gfx->gfx_type == GRAPHIC_POLYGON) { + if (gfx->gfx_type == GRAPHIC_POLYGON || gfx->gfx_type == GRAPHIC_BOX ) { g_string_printf(buffer, "\\draw[line width=0.00001 pt, draw={c%d}, fill={c%d}, fill opacity={%lf}] ", gfx->layer, gfx->layer, color.alpha); WRITEOUT_BUFFER(buffer); @@ -107,7 +107,7 @@ static void generate_graphics(FILE *tex_file, GList *graphics, GList *linfo, GSt } g_string_printf(buffer, "cycle;\n"); WRITEOUT_BUFFER(buffer); - } else if(gfx->gfx_type == GRAPHIC_PATH) { + } else if (gfx->gfx_type == GRAPHIC_PATH) { if (g_list_length(gfx->vertices) < 2) { printf("Cannot write path with less than 2 points\n"); @@ -171,7 +171,7 @@ static void render_cell(struct gds_cell *cell, GList *layer_infos, FILE *tex_fil WRITEOUT_BUFFER(buffer); g_string_printf(buffer, "\\begin{scope}[yscale=%lf, xscale=%lf]\n", (inst->flipped ? -1*inst->magnification : inst->magnification), - inst->magnification); + inst->magnification); WRITEOUT_BUFFER(buffer); render_cell(inst->cell_ref, layer_infos, tex_file, buffer);