e9cd3eef710ba3141d58ef119006b7d2327e5b7f markd Wed Dec 9 13:52:01 2020 -0800 fixed accidently backout of master changes in the last merge diff --git src/hg/hgTracks/lollyTrack.c src/hg/hgTracks/lollyTrack.c index f0471da..53a558a 100644 --- src/hg/hgTracks/lollyTrack.c +++ src/hg/hgTracks/lollyTrack.c @@ -1,434 +1,518 @@ /* lollyTrack -- load and draw lollys */ /* Copyright (C) 2019 The Regents of the University of California * See README in this or parent directory for licensing information. */ #include "common.h" #include "obscure.h" #include "hgTracks.h" #include "bedCart.h" #include "bigWarn.h" #include "lolly.h" #include "limits.h" #include "float.h" #include "bigBedFilter.h" #include "asParse.h" #define LOLLY_DIAMETER 2 * (lollyCart->radius + 2) struct lolly { struct lolly *next; char *name; /* the mouseover name */ double val; /* value in the data file */ unsigned start; /* genomic start address */ unsigned end; /* genomic end address */ unsigned radius; /* radius of the top of the lolly */ unsigned height; /* height of the lolly */ Color color; /* color of the lolly */ char *mouseOver; }; static unsigned getLollyColor( struct hvGfx *hvg, unsigned color) /* Get the device color from our internal definition. */ { struct rgbColor itemRgb; itemRgb.r = (color & 0xff0000) >> 16; itemRgb.g = (color & 0xff00) >> 8; itemRgb.b = color & 0xff; return hvGfxFindColorIx(hvg, itemRgb.r, itemRgb.g, itemRgb.b); } +// structure to capture yLabels +struct yLabel +{ +struct yLabel *next; +unsigned y; +char *label; +unsigned long color; +boolean on; +}; + +int cmpY(const void *va, const void *vb) +// sort the lines by y value +{ +const struct yLabel *a = *((struct yLabel **)va); +const struct yLabel *b = *((struct yLabel **)vb); +return a->y - b->y; +} + +// font heights available to the user +unsigned fontHeights[] = { 6,8,10,12,14,18,24 ,34 }; + +unsigned findBiggest(unsigned num) +/* find biggest font not bigger than num */ +{ +int ii; +unsigned prev = 0; + +for (ii=0; ii < ArraySize(fontHeights); prev = fontHeights[ii], ii++) + if (fontHeights[ii] > num) + return prev; + +return 34; +} + void doYLabels(struct track *tg, struct hvGfx *hvg, int width, int height, struct lollyCartOptions *lollyCart, int xOff, int yOff, Color color, MgFont *font, boolean doLabels ) -/* Draw labels or lines for labels. */ +/* parse lines like yAxisLabel