b8180d9f6d41dc708a2f249ba892cbca311e7a06 jcasper Mon Feb 27 11:38:55 2023 -0800 Adding transparency support for colors refs #30569 diff --git src/hg/lib/hui.c src/hg/lib/hui.c index 4a044c6..18e4bd9 100644 --- src/hg/lib/hui.c +++ src/hg/lib/hui.c @@ -454,38 +454,32 @@ #endif // write to trash file and custom track int regionCount = 0; while (lineFileChopNext(lf, words, bedSize)) { region = bedLoadN(words, bedSize); if (bedSize < 9) { // assign alternating light/dark color color = doLightColor ? colorLight : colorDark; doLightColor = !doLightColor; } else { - // no lib ? sigh - int colorIx = (int)region->itemRgb; - struct rgbColor rgb = colorIxToRgb(colorIx); - safef(userColor, sizeof userColor, "%d,%d,%d", rgb.b, rgb.g, rgb.r); - - // or this ? -- uglier but deeper in code - //safef(userColor, sizeof userColor, "%d,%d,%d", (region->itemRgb & 0xff0000) >> 16, - //(region->itemRgb & 0xff00) >> 8, (region->itemRgb & 0xff)); + struct rgbColor rgb = bedColorToRgb(region->itemRgb); + safef(userColor, sizeof userColor, "%d,%d,%d", rgb.r, rgb.g, rgb.b); } if (bedSize < 4) { // region label based on chrom and an item number safef(name, sizeof name, "r%d/%s", id++, region->chrom); } else { strcpy(name, region->name); } // write to trash file safef(regionInfo, sizeof regionInfo, "%s\t%d\t%d\n", region->chrom, region->chromStart, region->chromEnd); mustWrite(f, regionInfo, strlen(regionInfo)); @@ -3489,30 +3483,31 @@ *value = cloneString(membership->membership[ix]); return TRUE; } } } return FALSE; } static char *subtrackColorToCompare(struct trackDb *subtrack) /* Convert RGB color to string with scaled hue, suitable for alpha sort */ { struct rgbColor rgbColor; rgbColor.r = subtrack->colorR; rgbColor.g = subtrack->colorG; rgbColor.b = subtrack->colorB; +rgbColor.a = 255; struct hslColor hslColor = mgRgbToHsl(rgbColor); int hue = hslColor.h * 10; char buf[5]; safef(buf, 5, "%04d", hue); return cloneString(buf); } boolean subgroupFindTitle(struct trackDb *parentTdb, char *name,char **value) // looks for a a subgroup matching the name and returns the title if found { if (value != (void*)NULL) *value = NULL; members_t*members=subgroupMembersGet(parentTdb, name); //const members_t *members = membersFindByTag(parentTdb,name); // Can't use because of dimension dependence