c43e813a238e650c17e8dee441653d9037a86e18
kate
  Sun Apr 15 21:51:04 2018 -0700
Fix problem with r,g,b color specs.  Now also supports #RRGGBB anand 16 HTML color names. refs #21109

diff --git src/hg/lib/interact.c src/hg/lib/interact.c
index dff4faa..7bd2637 100644
--- src/hg/lib/interact.c
+++ src/hg/lib/interact.c
@@ -1,23 +1,24 @@
 /* interact.c was originally generated by the autoSql program, which also 
  * generated interact.h and interact.sql.  This module links the database and
  * the RAM representation of objects. */
 
 #include "common.h"
 #include "linefile.h"
 #include "dystring.h"
 #include "jksql.h"
+#include "basicBed.h"
 #include "interact.h"
 
 
 
 char *interactCommaSepFieldNames = "chrom,chromStart,chromEnd,name,score,value,exp,color,sourceChrom,sourceStart,sourceEnd,sourceName,sourceStrand,targetChrom,targetStart,targetEnd,targetName,targetStrand";
 
 void interactStaticLoad(char **row, struct interact *ret)
 /* Load a row from interact table into ret.  The contents of ret will
  * be replaced at the next call to this function. */
 {
 
 ret->chrom = row[0];
 ret->chromStart = sqlUnsigned(row[1]);
 ret->chromEnd = sqlUnsigned(row[2]);
 ret->name = row[3];
@@ -331,15 +332,44 @@
 int bDist = interactRegionDistance(b);
 
 // cross chromosome; always larger than same chrom
 if (aDist < 0)
     {
     if (bDist < 0)
         return 0;
     return 1;
     }
 if (bDist < 0)
     return -1;
 
 // same chromosome
 return aDist - bDist;
 }
+
+struct interact *interactLoadAndValidate(char **row)
+/* Load a interact from row fetched with select * from interact
+ * from database, validating fields.  Dispose of this with interactFree(). */
+// TODO: more validating
+{
+struct interact *ret;
+
+AllocVar(ret);
+ret->chrom = cloneString(row[0]);
+ret->chromStart = sqlUnsigned(row[1]);
+ret->chromEnd = sqlUnsigned(row[2]);
+ret->name = cloneString(row[3]);
+ret->score = sqlUnsigned(row[4]);
+ret->value = sqlDouble(row[5]);
+ret->exp = cloneString(row[6]);
+ret->color = bedParseColor(row[7]);
+ret->sourceChrom = cloneString(row[8]);
+ret->sourceStart = sqlUnsigned(row[9]);
+ret->sourceEnd = sqlUnsigned(row[10]);
+ret->sourceName = cloneString(row[11]);
+ret->sourceStrand = cloneString(row[12]);
+ret->targetChrom = cloneString(row[13]);
+ret->targetStart = sqlUnsigned(row[14]);
+ret->targetEnd = sqlUnsigned(row[15]);
+ret->targetName = cloneString(row[16]);
+ret->targetStrand = cloneString(row[17]);
+return ret;
+}