d4e14ca0a20861998ad7c807a6b2473ade5c3c4f
max
  Wed Jul 6 06:31:12 2022 -0700
add label hints for doWiggle and maxWindowCoverage tracks, refs #29715

diff --git src/hg/hgTracks/hgTracks.h src/hg/hgTracks/hgTracks.h
index e4f5dec..1f27faa 100644
--- src/hg/hgTracks/hgTracks.h
+++ src/hg/hgTracks/hgTracks.h
@@ -1622,30 +1622,33 @@
 /* No-op loadItems when we aren't going to try. */
 
 void filterItems(struct track *tg, boolean (*filter)(struct track *tg, void *item), 
                 char *filterType);
 /* Filter out items from track->itemList. */
 
 int gCmpPriority(const void *va, const void *vb);
 /* Compare groups based on priority. */
 
 int tgCmpPriority(const void *va, const void *vb);
 /* Compare to sort based on priority; use shortLabel as secondary sort key. */
 
 void printMenuBar();
 /* Put up the menu bar. */
 
+boolean winTooBigDoWiggle(struct cart *cart, struct track *tg);
+/* return true if we wiggle because the window size exceeds a certain threshold */
+
 boolean checkIfWiggling(struct cart *cart, struct track *tg);
 /* Check to see if a track should be drawing as a wiggle. */
 
 boolean isTypeBedLike(struct track *track);
 /* Check if track type is BED-like packable thing (but not rmsk or joinedRmsk) */
 
 boolean isTypeUseItemNameAsKey(struct track *track);
 /* Check if track type is like expRatio and key is just item name. */
 
 boolean isTypeUseMapItemNameAsKey(struct track *track);
 /* Check if track type is like interact and uses map item name to link across multi regions */
 
 void setEMGeneTrack();
 /* Find the track for the gene table to use for exonMostly and geneMostly. */
 
@@ -1700,30 +1703,36 @@
                             double scale, Color color, enum trackVisibility vis);
 /* Draw next item buttons and map boxes */
 
 struct spaceSaver *findSpaceSaver(struct track *tg, enum trackVisibility vis);
 /* Find SpaceSaver in list. Return spaceSaver found or NULL. */
 
 void labelTrackAsFilteredNumber(struct track *tg, unsigned numOut);
 /* add text to track long label to indicate filter is active and how many items were deleted */
 
 void labelTrackAsFiltered(struct track *tg);
 /* add text to track long label to indicate filter is active */
 
 void labelTrackAsHideEmpty(struct track *tg);
 /* add text to track long label to indicate empty subtracks are hidden */
 
+void labelTrackAsDensity(struct track *tg);
+/* Add text to track long label to indicate density mode */
+
+void labelTrackAsDensityWindowSize(struct track *tg);
+/* Add text to track long label to indicate density mode because window size exceeds some threshold */
+
 void setupHotkeys(boolean gotExtTools);
 /* setup keyboard shortcuts and a help dialog for it */
 
 void calcWiggleOrdering(struct cart *cart, struct flatTracks *flatTracks);
 
 void bedPlusLabelDrawAt(struct track *tg, void *item, struct hvGfx *hvg, int xOff, int y,
 			       double scale, MgFont *font, Color color, enum trackVisibility vis);
 /* Draw a single bed item at position.  If vis is full, draw the associated label to the left
  * of the item. */
 
 Color blackItemNameColor(struct track *tg, void *item, struct hvGfx *hvg);
 /* Force item name (label) color to black */
 
 void linkedFeaturesMapItem(struct track *tg, struct hvGfx *hvg, void *item,
 				char *itemName, char *mapItemName, int start, int end,