00f964165ca3cef379e600e38bdb8d6f959723d9
braney
  Mon Jan 23 12:03:26 2023 -0800
first cut at a demo of squishyPack mode.

diff --git src/hg/hgTracks/hgTracks.h src/hg/hgTracks/hgTracks.h
index d05c922..27735eb 100644
--- src/hg/hgTracks/hgTracks.h
+++ src/hg/hgTracks/hgTracks.h
@@ -287,30 +287,31 @@
 	MgFont *font, Color color, enum trackVisibility vis);
     /* Draw a single Non-proportional fixed-width item.  Such as gtexGene.
      * This is method is optional, but if it's here
      * then you can plug in genericDrawItems into the drawItems,
      * which takes care of all sorts of things including packing. */
 
     int (*nonPropPixelWidth)(struct track *tg, void *item);
     /* Return the width in pixels of the non-proportional part of track, e.g. gtexGene graphic */
 
 
     struct slInt *labelColumns; /* The columns in a bigBed that can be used for labels. */
     boolean subTrackVisSet;     /* have we calculated visibility on this subtrack */
     boolean subTrackVis;        /* if we calculated it, what is it */
 
     struct lollyCartOptions *lollyCart;
+    double squishyPackPoint;    /* the value at which we switch to squish mode. */
     };
 
 struct window  // window in multiwindow image
     {
     struct window *next;   // Next on list.
 
     // These two were experimental and will be removed soon:
     char *organism;        /* Name of organism */
     char *database;        /* Name of database */
 
     char *chromName;
     int winStart;           // in bases
     int winEnd;
     int insideX;            // in pixels
     int insideWidth;
@@ -395,30 +396,31 @@
     void *extra;			/* Extra info that varies with type. */
     void *original;			/* The structure that was converted
 					   into this (when needed later).  */
     struct itemAttr *itemAttr;          /* itemAttr object for this lf, or NULL */
     unsigned highlightColor;            /* highlight color,0 if no highlight */
     enum highlightMode highlightMode;   /* highlight mode,0 if no highlight */
     char* mouseOver;                    /* mouse over text */
     char* cds;                          /* CDS in NCBI format */
 #ifdef USE_HAL
     boolean isHalSnake;
     struct hal_target_dupe_list_t *dupeList;
 #endif
     boolean isBigGenePred;
     char *label;                        /* Label for bigBeds. */
     int qSize;				/* Query size for chain/bigChain */
+    double squishyPackVal;              /* the squishyPoint value for this item. */
     };
 
 struct linkedFeaturesSeries
 /* series of linked features that are comprised of multiple linked features */
 {
     struct linkedFeaturesSeries *next;
     char *name;                      /* name for series of linked features */
     int start, end;                     /* Start/end in browser coordinates. */
     int orientation;                    /* Orientation. */
     int grayIx;				/* Gray index (average of features) */
     boolean noLine;                     /* if true don't draw line connecting features */
     struct linkedFeatures *features;    /* linked features for a series */
 };
 
 struct knownGenesExtra