Index: trunk/src/libcschem/Makefile =================================================================== --- trunk/src/libcschem/Makefile (revision 338) +++ trunk/src/libcschem/Makefile (revision 339) @@ -1,4 +1,13 @@ CFLAGS = -I.. -I../../src_3rd CFLAGS += -Wall -g +CFLAGS += -ansi -pedantic +OBJS = compile.o vtcoutline.o rtree.o +all: $(OBJS) + compile.o: compile.c + +vtcoutline.o: vtcoutline.c + +clean: + rm $(OBJS) Index: trunk/src/libcschem/TODO.h =================================================================== --- trunk/src/libcschem/TODO.h (revision 338) +++ trunk/src/libcschem/TODO.h (revision 339) @@ -1,2 +1,7 @@ +#ifndef TODO_H +#define TODO_H + typedef int htul_t; typedef int htsl_t; + +#endif Index: trunk/src/libcschem/common_types.h =================================================================== --- trunk/src/libcschem/common_types.h (revision 338) +++ trunk/src/libcschem/common_types.h (revision 339) @@ -1,2 +1,9 @@ +#ifndef CSCH_COMMON_TYPES_H +#define CSCH_COMMON_TYPES_H + typedef unsigned long csch_oid_t; #define CSCH_INVALID_ID ((csch_oid_t)(0)) + +typedef unsigned long csch_coord_t; + +#endif Index: trunk/src/libcschem/concrete.h =================================================================== --- trunk/src/libcschem/concrete.h (revision 338) +++ trunk/src/libcschem/concrete.h (revision 339) @@ -1,9 +1,30 @@ +#ifndef CSCH_CONCRETE_H +#define CSCH_CONCRETE_H #include "libcschem/common_types.h" +#include "libcschem/rtree.h" +#include +#include +#include "TODO.h" typedef struct csch_sheet_s { htip_t id2obj; /* id -> object pointer (primary storage); rarely delete from this (undo needs deleted objects) */ csch_rtree_t rtree; /* IDs in screen coords */ - csch_id_t next_id; + csch_oid_t next_id; } csch_sheet_t; +typedef enum csch_ctype_s { + CSCH_CTYPE_INVALID = 0, + CSCH_CTYPE_LINE, + CSCH_CTYPE_ARC, + CSCH_CTYPE_POLY +} csch_ctype_t; + +typedef struct csch_chdr_s { + csch_oid_t oid; + csch_ctype_t type; + csch_oid_t parent; + htsp_t attr; +} csch_chdr_t; + +#endif Index: trunk/src/libcschem/concrete_arc.h =================================================================== --- trunk/src/libcschem/concrete_arc.h (nonexistent) +++ trunk/src/libcschem/concrete_arc.h (revision 339) @@ -0,0 +1,14 @@ +#ifndef CSCH_CONCRETE_ARC_H +#define CSCH_CONCRETE_ARC_H +#include "libcschem/concrete.h" + +typedef struct csch_arc_s { /* type=CSCH_CTYPE_ARC */ + csch_chdr_t hdr; + csch_oid_t pen; + double sang, dang; + csch_coord_t cx, cy, rx, ry, sx, sy, ex, ey; + unsigned svalid:1; + unsigned evalid:1; +} csch_carc_t; + +#endif Index: trunk/src/libcschem/concrete_line.h =================================================================== --- trunk/src/libcschem/concrete_line.h (nonexistent) +++ trunk/src/libcschem/concrete_line.h (revision 339) @@ -0,0 +1,11 @@ +#ifndef CSCH_CONCRETE_LINE_H +#define CSCH_CONCRETE_LINE_H +#include "libcschem/concrete.h" + +typedef struct csch_cline_s { /* type=CSCH_CTYPE_LINE */ + csch_chdr_t hdr; + csch_oid_t pen; + csch_coord_t x1, y1, x2, y2; +} csch_cline_t; + +#endif Index: trunk/src/libcschem/concrete_poly.h =================================================================== --- trunk/src/libcschem/concrete_poly.h (nonexistent) +++ trunk/src/libcschem/concrete_poly.h (revision 339) @@ -0,0 +1,13 @@ +#ifndef CSCH_CONCRETE_POLY_H +#define CSCH_CONCRETE_POLY_H +#include "libcschem/concrete.h" + +#include "libcschem/vtcoutline.h" + +typedef struct csch_cpoly_s { /* type=CSCH_CTYPE_POLY */ + csch_chdr_t hdr; + csch_oid_t pen; + csch_vtcoutline_t outline; +} csch_cpoly_t; + +#endif Index: trunk/src/libcschem/vtcoutline.c =================================================================== --- trunk/src/libcschem/vtcoutline.c (nonexistent) +++ trunk/src/libcschem/vtcoutline.c (revision 339) @@ -0,0 +1,3 @@ +#define GVT_DONT_UNDEF +#include "vtcoutline.h" +#include Index: trunk/src/libcschem/vtcoutline.h =================================================================== --- trunk/src/libcschem/vtcoutline.h (nonexistent) +++ trunk/src/libcschem/vtcoutline.h (revision 339) @@ -0,0 +1,28 @@ +#ifndef VTCSCH_COUTLINE_H +#define VTCSCH_COUTLINE_H + +#include +#include +#include "libcschem/concrete.h" +#include "libcschem/concrete_arc.h" +#include "libcschem/concrete_line.h" + +typedef union csch_coutline_s { /* outline object of a polygon */ + csch_chdr_t hdr; + csch_cline_t line; + csch_carc_t arc; +} csch_coutline_t; + +#define GVT(x) csch_vtcoutline_ ## x + +#define GVT_ELEM_TYPE csch_coutline_t +#define GVT_SIZE_TYPE long +#define GVT_DOUBLING_THRS 256 +#define GVT_START_SIZE 16 +#define GVT_FUNC +#define GVT_SET_NEW_BYTES_TO 0 +#include +#define GVT_REALLOC(vect, ptr, size) realloc(ptr, size) +#define GVT_FREE(vect, ptr) free(ptr) +#include +#endif