X-Authentication-Warning: delorie.com: mail set sender to geda-user-bounces using -f X-Recipient: geda-user AT delorie DOT com DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject :x-enigmail-version:content-type; bh=L4FFCJqcO+KGDUkLWO9apq/vaqp0gyKOh8uacgnCc8I=; b=DZ9nwEiR9hFvOUKYohvDbRnkTgQVFMYP2k8/tmMKFUfrDOXnVBFM0BH1c8TK0aGBXy DHs04Gp4LVUyw9R+wvXS+Wb9KYKXndegmOovTTu3R0DI3Cx4AuQmcPz2h0zKguHlUKlN 7dPobgD7J0mcOux0bP37sOL2eVE9Ls5RjYjApgRb9fylcwuqSqp3FI0BbDmlwz239zNH j2xywvpxLrQuCECaK9EoNaNKfGfjKCw++zMozNN049qoXd+zUjyc4WO8mglOctFspyUy TMUalOvepOE8i0S8Y62Q2A9Ujfq9wwyR3oZ33J1Bzs/Ftn3jBuXyhhzPWjNVpOiRxbx1 rs/g== Message-ID: <503D4CC0.7030504@googlemail.com> Date: Tue, 28 Aug 2012 23:57:04 +0100 From: Andy Busse User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:14.0) Gecko/20120717 Thunderbird/14.0 MIME-Version: 1.0 To: geda-user AT delorie DOT com Subject: [geda-user] gsymcheck patch: check symbol for default colours X-Enigmail-Version: 1.4.4 Content-Type: multipart/mixed; boundary="------------070507050706090104010107" Reply-To: geda-user AT delorie DOT com This is a multi-part message in MIME format. --------------070507050706090104010107 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Hi, I've attached some patches to gsymcheck which adds the ability to check whether the symbol uses the default colours as set out in the wiki. If it's of any use, I'd like to carry this on and add more functionality to gsymcheck, possibly to automatically correcting symbols if the user requests - it'd be nice if gsymcheck found no warnings with anything in the symbols/ directory I've tried to follow the same style found in the rest of the file, any comments/suggestions would be most welcome. One thing I did notice is that there appears to be a lot of "count++" going on - any reason for doing this and not using g_list_length, considering the counts are usually pretty small? Thanks, Andy --------------070507050706090104010107 Content-Type: text/x-patch; name="0001-gsymcheck-Add-a-check-for-the-colour-of-objects-thei.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0001-gsymcheck-Add-a-check-for-the-colour-of-objects-thei.pa"; filename*1="tch" From 2aff6f53b3b474ba6e4c66d3ba889252bec96e47 Mon Sep 17 00:00:00 2001 From: Andrew Busse Date: Tue, 28 Aug 2012 20:17:00 +0100 Subject: [PATCH 1/3] gsymcheck: Add a check for the colour of objects & their attributes s_check_color checks the colour all of the visible objects in the symbol against the recommended set of colors from the wiki. o_attrib_find_attrib_by_name has been moved to prototype.h as s_check_color needs to get at the color and visibility of the pinnumber and pinlabel attributes. --- gsymcheck/include/prototype.h | 3 +- gsymcheck/src/s_check.c | 141 ++++++++++++++++++++++++++++++++++++ libgeda/include/libgeda/prototype.h | 1 + libgeda/include/prototype_priv.h | 1 - 4 files changed, 144 insertions(+), 2 deletions(-) diff --git a/gsymcheck/include/prototype.h b/gsymcheck/include/prototype.h index b71ab0e..8caca04 100644 --- a/gsymcheck/include/prototype.h +++ b/gsymcheck/include/prototype.h @@ -31,7 +31,8 @@ void s_check_connections(const GList *obj_list, SYMCHECK *s_current); void s_check_missing_attribute(OBJECT *object, char *attribute, SYMCHECK *s_current); void s_check_missing_attributes(const GList *obj_list, SYMCHECK *s_current); void s_check_pintype(const GList *obj_list, SYMCHECK *s_current); -/* s_log.c */ +void s_check_color(const GList *obj_list, SYMCHECK *s_current); +//* s_log.c */ void s_log_update (const gchar *log_domain, GLogLevelFlags log_level, const gchar *buf); /* s_symstruct.c */ SYMCHECK *s_symstruct_init(void); diff --git a/gsymcheck/src/s_check.c b/gsymcheck/src/s_check.c index d66106f..249e450 100644 --- a/gsymcheck/src/s_check.c +++ b/gsymcheck/src/s_check.c @@ -117,6 +117,9 @@ s_check_symbol (TOPLEVEL *pr_current, PAGE *p_current, const GList *obj_list) /* check for connections with in a symbol (completely disallowed) */ s_check_connections (obj_list, s_symcheck); + /* check whether objects use the correct colors */ + s_check_color (obj_list, s_symcheck); + /* now report the info/warnings/errors to the user */ if (!quiet_mode) { @@ -1415,3 +1418,141 @@ void s_check_pintype (const GList *obj_list, SYMCHECK *s_current) } } } + +/* This function looks at all of the visible objects and attributes in the + * symbol, then checks the object's color against the recommended color from + * http://wiki.geda-project.org/geda:gschem_symbol_creation + * A warning message is thrown if incorrect colors appear in the symbol. + */ +void +s_check_color (const GList *obj_list, SYMCHECK *s_current) +{ + const GList *iter; + char *message; + GList *attributes = NULL; + OBJECT *pinnumber, *pinlabel; + + for (iter = obj_list; iter != NULL; iter = g_list_next (iter)) { + OBJECT *o_current = iter->data; + + /* As we're checking the color of all objects, we don't really care about an + * object's color if it's visible */ + if (o_current->visibility == VISIBLE) { + switch (o_current->type){ + case OBJ_PIN: + attributes = o_attrib_return_attribs(o_current); + pinnumber = o_attrib_find_attrib_by_name(attributes,"pinnumber",0); + pinlabel = o_attrib_find_attrib_by_name(attributes,"pinlabel",0); + + /* If a pin has no pinnumber or pinlabel, this will be picked up as an + * error by s_check_missing_attributes. Here, we are only checking for + * the color. Again, check for visibility as the pin number doesn't + * have to be visible */ + if (pinnumber != NULL) { + if (pinnumber->color != ATTRIBUTE_COLOR && pinnumber->visibility == VISIBLE) { + message = g_strdup_printf("%s not using attribute color\n", + pinnumber->text->string); + s_current->warning_messages = g_list_append(s_current->warning_messages, + message); + s_current->warning_count++; + } + } + + /* We also need to check whether the pin label exists, and is visible */ + if (pinlabel != NULL) { + if (pinlabel->color != TEXT_COLOR && pinlabel->visibility==VISIBLE) { + message = g_strdup_printf("%s not using text color\n", + pinlabel->text->string); + s_current->warning_messages = g_list_append(s_current->warning_messages, + message); + s_current->warning_count++; + } + } + + if (o_current->color != PIN_COLOR) { + message = g_strdup_printf("Pin %s at (x1=%d,y1=%d) not using pin color\n", + o_attrib_search_object_attribs_by_name(o_current,"pinnumber",0), + o_current->line->x[0],o_current->line->y[0]); + s_current->warning_messages = g_list_append(s_current->warning_messages, + message); + s_current->warning_count++; + } + + g_list_free(attributes); + break; + case OBJ_LINE: + if (o_current->color != GRAPHIC_COLOR) { + message = g_strdup_printf("Line at (x1=%d,y1=%d) not using graphic color\n", + o_current->line->x[0], o_current->line->y[0]); + s_current->warning_messages = g_list_append(s_current->warning_messages, + message); + s_current->warning_count++; + } + + break; + case OBJ_BOX: + if (o_current->color != GRAPHIC_COLOR) { + message = g_strdup_printf("Box at (x1=%d,y1=%d) not using graphic color\n", + o_current->box->upper_x, o_current->box->upper_y); + s_current->warning_messages = g_list_append(s_current->warning_messages, + message); + s_current->warning_count++; + } + + break; + case OBJ_ARC: + if (o_current->color != GRAPHIC_COLOR) { + message = g_strdup_printf("Arc with center (x1=%d,y1=%d) not using graphic color\n", + o_current->arc->x, o_current->arc->y); + s_current->warning_messages = g_list_append(s_current->warning_messages, + message); + s_current->warning_count++; + } + + break; + case OBJ_CIRCLE: + if (o_current->color == LOGIC_BUBBLE_COLOR) { + message = g_strdup_printf("Found logic bubble at (x1=%d,y1=%d)\n", + o_current->circle->center_x, o_current->circle->center_y); + s_current->info_messages = g_list_append(s_current->info_messages, + message); + } else if (o_current->color != (GRAPHIC_COLOR)) { + message = g_strdup_printf("Circle with center (x1=%d,y1=%d) not using graphic " + "or logic bubble color\n", o_current->circle->center_x, + o_current->circle->center_y); + s_current->warning_messages = g_list_append(s_current->warning_messages, + message); + s_current->warning_count++; + } + + break; + case OBJ_TEXT: + /* Not defined in the guidelines document, but most symbols seem to have + * their refdes as DETACHED_ATTRIBUTE_COLOR */ + if (strstr(o_current->text->string, "refdes=")) { + if (o_current->color != DETACHED_ATTRIBUTE_COLOR) { + message = g_strdup_printf("%s not using detached attribute color\n", + o_current->text->string); + s_current->warning_messages = g_list_append(s_current->warning_messages, + message); + s_current->warning_count++; + } + /* o_current->attached_to ensures the text object isn't actually an + * attribute of another object (e.g. pinnumber, pinlabel are text + * objects). */ + } else if (o_current->color != TEXT_COLOR && o_current->attached_to == NULL) { + message = g_strdup_printf("Text \"%s\" at (x1=%d,y1=%d) not using text color\n", + o_current->text->string, o_current->text->x, + o_current->text->y); + s_current->warning_messages = g_list_append(s_current->warning_messages, + message); + s_current->warning_count++; + } + + break; + default: + break; + } + } + } +} diff --git a/libgeda/include/libgeda/prototype.h b/libgeda/include/libgeda/prototype.h index 60e6a18..baef641 100644 --- a/libgeda/include/libgeda/prototype.h +++ b/libgeda/include/libgeda/prototype.h @@ -84,6 +84,7 @@ void o_attrib_remove(TOPLEVEL *toplevel, GList **list, OBJECT *remove); gboolean o_attrib_string_get_name_value (const gchar *string, gchar **name_ptr, gchar **value_ptr); gboolean o_attrib_get_name_value (OBJECT *attrib, gchar **name_ptr, gchar **value_ptr); GList *o_attrib_find_floating_attribs (const GList *list); +OBJECT *o_attrib_find_attrib_by_name(const GList *list, char *name, int count); char *o_attrib_search_floating_attribs_by_name (const GList *list, char *name, int counter); char *o_attrib_search_attached_attribs_by_name (OBJECT *object, char *name, int counter); char *o_attrib_search_inherited_attribs_by_name (OBJECT *object, char *name, int counter); diff --git a/libgeda/include/prototype_priv.h b/libgeda/include/prototype_priv.h index b3faa6d..5a33cbe 100644 --- a/libgeda/include/prototype_priv.h +++ b/libgeda/include/prototype_priv.h @@ -90,7 +90,6 @@ GList *o_read_attribs(TOPLEVEL *toplevel, TextBuffer *tb, unsigned int release_ver, unsigned int fileformat_ver, GError **err); -OBJECT *o_attrib_find_attrib_by_name(const GList *list, char *name, int count); /* o_basic.c */ void o_bounds_invalidate(TOPLEVEL *toplevel, OBJECT *object); -- 1.7.11.4 --------------070507050706090104010107 Content-Type: text/x-patch; name="0002-gsymcheck-Fix-incorrect-colours-in-some-of-the-test-.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0002-gsymcheck-Fix-incorrect-colours-in-some-of-the-test-.pa"; filename*1="tch" From 6face3781ce64b7086a2396982e66cde33df7633 Mon Sep 17 00:00:00 2001 From: Andrew Busse Date: Tue, 28 Aug 2012 20:23:28 +0100 Subject: [PATCH 2/3] gsymcheck: Fix incorrect colours in some of the test files 16877d6772 introduced an extra check for symbol colours, this caused the test suite to fail as some of these symbols had incorrect colours. This commit sets them to the recommended set of colours, and the test suite now passes. --- gsymcheck/tests/duplicate_net.sym | 4 ++-- gsymcheck/tests/lots_of_errors.sym | 2 +- gsymcheck/tests/misplaced_attributes.sym | 10 +++++----- gsymcheck/tests/old_symbol.sym | 2 +- gsymcheck/tests/pin_offgrid.sym | 20 ++++++++++---------- gsymcheck/tests/text_errors.sym | 8 ++++---- gsymcheck/tests/urefinside.sym | 2 +- 7 files changed, 24 insertions(+), 24 deletions(-) diff --git a/gsymcheck/tests/duplicate_net.sym b/gsymcheck/tests/duplicate_net.sym index e61ea6a..73f5d25 100644 --- a/gsymcheck/tests/duplicate_net.sym +++ b/gsymcheck/tests/duplicate_net.sym @@ -57,7 +57,7 @@ pintype=in } T 300 900 8 10 1 1 0 0 1 refdes=U? -T 1800 1100 8 10 1 0 0 0 1 +T 1800 1100 9 10 1 0 0 0 1 net=INVALID:1,5 -T 1800 900 8 10 1 0 0 0 1 +T 1800 900 9 10 1 0 0 0 1 net=INVALID:5,6,6 diff --git a/gsymcheck/tests/lots_of_errors.sym b/gsymcheck/tests/lots_of_errors.sym index dec6aed..8c7016e 100644 --- a/gsymcheck/tests/lots_of_errors.sym +++ b/gsymcheck/tests/lots_of_errors.sym @@ -43,5 +43,5 @@ pinseq=1 T 100 750 5 8 1 1 0 0 pinnumber=1 } -T 300 900 8 10 1 1 0 0 +T 300 900 9 10 1 1 0 0 uref=U? diff --git a/gsymcheck/tests/misplaced_attributes.sym b/gsymcheck/tests/misplaced_attributes.sym index 6b2b884..0cefb05 100644 --- a/gsymcheck/tests/misplaced_attributes.sym +++ b/gsymcheck/tests/misplaced_attributes.sym @@ -24,7 +24,7 @@ T 1500 3600 5 10 1 0 0 0 1 pintype=io T 1500 3400 5 10 1 0 0 0 1 pinseq=2 -T 1500 4000 5 10 1 0 0 0 1 +T 1500 4000 9 10 1 0 0 0 1 pinlabel=xxxx T 1500 3800 5 10 1 0 0 0 1 pinnumber=2 @@ -53,13 +53,13 @@ V 5103 3599 600 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 T 5100 3600 5 10 1 1 0 0 1 comment=attached to circle } -T 4600 5500 8 10 1 0 0 0 1 +T 4600 5500 9 10 1 0 0 0 1 pinlabel=not attached -T 4600 5200 8 10 1 0 0 0 1 +T 4600 5200 9 10 1 0 0 0 1 pinseq=3 -T 4600 4900 8 10 1 0 0 0 1 +T 4600 4900 9 10 1 0 0 0 1 pinnumber=3 -T 4600 4600 8 10 1 0 0 0 1 +T 4600 4600 9 10 1 0 0 0 1 pintype=io B 4500 4500 2200 1200 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 T 4500 5800 9 10 1 0 0 0 1 diff --git a/gsymcheck/tests/old_symbol.sym b/gsymcheck/tests/old_symbol.sym index 8e93acb..cf49229 100644 --- a/gsymcheck/tests/old_symbol.sym +++ b/gsymcheck/tests/old_symbol.sym @@ -45,5 +45,5 @@ pin1=1 T 100 750 5 8 0 1 0 0 pintype=123just a type } -T 300 900 8 10 1 1 0 0 +T 300 900 9 10 1 1 0 0 uref=U? diff --git a/gsymcheck/tests/pin_offgrid.sym b/gsymcheck/tests/pin_offgrid.sym index f3f72f0..592ad1c 100644 --- a/gsymcheck/tests/pin_offgrid.sym +++ b/gsymcheck/tests/pin_offgrid.sym @@ -3,7 +3,7 @@ P 701 3600 401 3600 1 0 1 { T 400 3600 5 10 0 0 0 0 1 pintype=in -T 755 3595 5 10 1 1 0 0 1 +T 755 3595 9 10 1 1 0 0 1 pinlabel=Test: pin x1, x2 offgrid, whichend 1 T 605 3645 5 10 1 1 0 6 1 pinnumber=1 @@ -14,7 +14,7 @@ P 400 4000 700 4000 1 0 0 { T 400 4000 5 10 0 0 0 0 1 pintype=in -T 755 3995 5 10 1 1 0 0 1 +T 755 3995 9 10 1 1 0 0 1 pinlabel=Test: Pin OK T 605 4045 5 10 1 1 0 6 1 pinnumber=2 @@ -25,7 +25,7 @@ P 410 2800 700 2800 1 0 0 { T 400 2800 5 10 0 0 0 0 1 pintype=in -T 755 2795 5 10 1 1 0 0 1 +T 755 2795 9 10 1 1 0 0 1 pinlabel=Test: x1 offgrid T 605 2845 5 10 1 1 0 6 1 pinnumber=3 @@ -36,7 +36,7 @@ P 400 2420 700 2400 1 0 0 { T 400 2400 5 10 0 0 0 0 1 pintype=in -T 755 2395 5 10 1 1 0 0 1 +T 755 2395 9 10 1 1 0 0 1 pinlabel=Test: y1 offgrid T 605 2445 5 10 1 1 0 6 1 pinnumber=4 @@ -47,7 +47,7 @@ P 400 2000 710 2000 1 0 0 { T 400 2000 5 10 0 0 0 0 1 pintype=in -T 755 1995 5 10 1 1 0 0 1 +T 755 1995 9 10 1 1 0 0 1 pinlabel=Test: x2 offgrid T 605 2045 5 10 1 1 0 6 1 pinnumber=5 @@ -58,7 +58,7 @@ P 400 1600 700 1620 1 0 0 { T 400 1600 5 10 0 0 0 0 1 pintype=in -T 755 1595 5 10 1 1 0 0 1 +T 755 1595 9 10 1 1 0 0 1 pinlabel=Test: y2 offgrid T 605 1645 5 10 1 1 0 6 1 pinnumber=6 @@ -69,7 +69,7 @@ P 404 1204 700 1200 1 0 0 { T 400 1200 5 10 0 0 0 0 1 pintype=in -T 755 1195 5 10 1 1 0 0 1 +T 755 1195 9 10 1 1 0 0 1 pinlabel=Test: x1, y1 offgrid T 605 1245 5 10 1 1 0 6 1 pinnumber=7 @@ -80,7 +80,7 @@ P 400 800 706 806 1 0 0 { T 400 800 5 10 0 0 0 0 1 pintype=in -T 755 795 5 10 1 1 0 0 1 +T 755 795 9 10 1 1 0 0 1 pinlabel=Test: x2, y2 offgrid T 605 845 5 10 1 1 0 6 1 pinnumber=8 @@ -91,7 +91,7 @@ P 400 3204 700 3204 1 0 0 { T 400 3200 5 10 0 0 0 0 1 pintype=in -T 755 3195 5 10 1 1 0 0 1 +T 755 3195 9 10 1 1 0 0 1 pinlabel=Test: pin y1,y2 offgrid, whichend 0 T 605 3245 5 10 1 1 0 6 1 pinnumber=9 @@ -101,7 +101,7 @@ pinseq=9 B 700 500 3100 3900 3 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 T 700 4500 9 10 1 0 0 0 1 pin_ongrid test -T 700 4700 9 10 1 0 0 0 1 +T 700 4700 8 10 1 0 0 0 1 refdes=X? T 700 4900 9 10 1 0 0 0 1 footprint=xx diff --git a/gsymcheck/tests/text_errors.sym b/gsymcheck/tests/text_errors.sym index 6e26570..5039f6e 100644 --- a/gsymcheck/tests/text_errors.sym +++ b/gsymcheck/tests/text_errors.sym @@ -4,7 +4,7 @@ P 0 200 300 200 1 0 0 { T 0 200 5 10 0 0 0 0 1 pintype=in -T 355 195 5 10 1 1 0 0 1 +T 355 195 9 10 1 1 0 0 1 pinlabel=\_Reset T 205 245 5 10 1 1 0 6 1 pinnumber=1 @@ -17,7 +17,7 @@ P 0 600 300 600 1 0 0 { T 0 600 5 10 0 0 0 0 1 pintype=in -T 355 595 5 10 1 1 0 0 1 +T 355 595 9 10 1 1 0 0 1 pinlabel=a\b T 205 645 5 10 1 1 0 6 1 pinnumber=2 @@ -30,7 +30,7 @@ P 0 1000 300 1000 1 0 0 { T 0 1000 5 10 0 0 0 0 1 pintype=in -T 355 995 5 10 1 1 0 0 1 +T 355 995 9 10 1 1 0 0 1 pinlabel=ab\c\d\ T 205 1045 5 10 1 1 0 6 1 pinnumber=3 @@ -55,7 +55,7 @@ P 0 1400 300 1400 1 0 0 { T 0 1400 5 10 0 0 0 0 1 pintype=in -T 355 1395 5 10 1 1 0 0 1 +T 355 1395 9 10 1 1 0 0 1 pinlabel=R/\_W\_ T 205 1445 5 10 1 1 0 6 1 pinnumber=4 diff --git a/gsymcheck/tests/urefinside.sym b/gsymcheck/tests/urefinside.sym index ef521d1..9f08d4c 100644 --- a/gsymcheck/tests/urefinside.sym +++ b/gsymcheck/tests/urefinside.sym @@ -55,5 +55,5 @@ pinlabel=A T 0 550 5 8 0 0 0 0 pintype=in } -T 300 900 8 10 1 1 0 0 +T 300 900 9 10 1 1 0 0 uref=U? -- 1.7.11.4 --------------070507050706090104010107 Content-Type: text/x-patch; name="0003-gsymcheck-Add-a-test-symbol-for-the-s_check_color-fu.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename*0="0003-gsymcheck-Add-a-test-symbol-for-the-s_check_color-fu.pa"; filename*1="tch" From bf3e0b15ec176ee6dc23eb54951a70aa91078b99 Mon Sep 17 00:00:00 2001 From: Andrew Busse Date: Tue, 28 Aug 2012 20:28:07 +0100 Subject: [PATCH 3/3] gsymcheck: Add a test symbol for the s_check_color function 16877d6772 introduces a check for symbol colours. This symbol (derived from correct.sym) has been modified so that it should fail every check performed by s_check_color --- gsymcheck/tests/incorrect_colours.output | 13 +++++++ gsymcheck/tests/incorrect_colours.sym | 64 ++++++++++++++++++++++++++++++++ 2 files changed, 77 insertions(+) create mode 100644 gsymcheck/tests/incorrect_colours.output create mode 100644 gsymcheck/tests/incorrect_colours.sym diff --git a/gsymcheck/tests/incorrect_colours.output b/gsymcheck/tests/incorrect_colours.output new file mode 100644 index 0000000..75c30ca --- /dev/null +++ b/gsymcheck/tests/incorrect_colours.output @@ -0,0 +1,13 @@ +Warning: Line at (x1=300,y1=800) not using graphic color +Warning: Arc with center (x1=700,y1=500) not using graphic color +Warning: Circle with center (x1=1050,y1=500) not using graphic or logic bubble color +Warning: pinnumber=3 not using attribute color +Warning: pinlabel=C not using text color +Warning: Pin 3 at (x1=1100,y1=500) not using pin color +Warning: refdes=U? not using detached attribute color +Warning: Circle with center (x1=550,y1=500) not using graphic or logic bubble color +Warning: Text "some +text" at (x1=800,y1=900) not using text color +Warning: Box at (x1=600,y1=1500) not using graphic color +10 warnings found +No errors found diff --git a/gsymcheck/tests/incorrect_colours.sym b/gsymcheck/tests/incorrect_colours.sym new file mode 100644 index 0000000..3eda16a --- /dev/null +++ b/gsymcheck/tests/incorrect_colours.sym @@ -0,0 +1,64 @@ +v 20110115 2 +L 300 200 300 800 3 0 0 0 -1 -1 +T 300 0 9 8 1 0 0 0 1 +7400 +L 300 800 700 800 9 0 0 0 -1 -1 +T 500 900 5 10 0 0 0 0 1 +device=7400 +T 1200 1100 5 10 0 0 0 0 1 +footprint=unspecified +T 500 1100 5 10 0 0 0 0 1 +slot=1 +T 500 1300 5 10 0 0 0 0 1 +numslots=4 +T 500 1500 5 10 0 0 0 0 1 +slotdef=1:1,2,3 +T 500 1700 5 10 0 0 0 0 1 +slotdef=2:4,5,6 +T 500 1900 5 10 0 0 0 0 1 +slotdef=3:9,10,8 +T 500 2100 5 10 0 0 0 0 1 +slotdef=4:12,13,11 +L 300 200 700 200 3 0 0 0 -1 -1 +A 700 500 300 270 180 5 0 0 0 -1 -1 +V 1050 500 50 8 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +P 1100 500 1300 500 6 0 1 +{ +T 1085 350 5 8 0 0 0 0 1 +pinseq=3 +T 1085 550 1 8 1 1 0 0 1 +pinnumber=3 +T 1085 350 1 8 1 1 0 0 1 +pinlabel=C +T 1085 350 5 8 0 0 0 0 1 +pintype=out +} +P 300 300 0 300 1 0 1 +{ +T 0 150 5 8 0 0 0 0 1 +pinseq=2 +T 100 350 5 8 1 1 0 0 1 +pinnumber=2 +T 0 150 5 8 0 0 0 0 1 +pinlabel=B +T 0 150 5 8 0 0 0 0 1 +pintype=in +} +P 300 700 0 700 1 0 1 +{ +T 0 550 5 8 0 0 0 0 1 +pinseq=1 +T 100 750 5 8 1 1 0 0 1 +pinnumber=1 +T 0 550 5 8 0 0 0 0 1 +pinlabel=A +T 0 550 5 8 0 0 0 0 1 +pintype=in +} +T 300 900 1 10 1 1 0 0 1 +refdes=U? +V 550 500 100 8 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 +T 800 900 6 10 1 0 0 0 2 +some +text +B 600 1200 100 300 2 0 0 0 -1 -1 0 -1 -1 -1 -1 -1 -- 1.7.11.4 --------------070507050706090104010107--