Commits for braney
switch to files view, user index
v499_base to v500_preview (2026-06-01 to 2026-06-08) v500
Show details
1f88a89d5bb7bada7c52ad89f910c6796d1340ed Tue Jun 2 12:26:10 2026 -0700
- Add note on quickLifted CCDS pages explaining the data is from the source assembly, refs #36125
When a user clicks the CCDS link on a quickLifted gene track, the CCDS page
necessarily loads from the source assembly (hg38), since CCDS tables exist
only there. Mark the click with a one-shot quickLiftCcds CGI var carrying
the destination assembly, and on the CCDS page print a note explaining that
the CCDS gene model and coordinates shown are from the source assembly, not
the destination assembly the user was browsing.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
- src/hg/hgc/ccdsClick.c - lines changed 17, context: html, text, full: html, text
874066eeba199bb09909de98bb8ba2d75b1b019c Tue Jun 2 18:10:38 2026 -0700
- Cache FreeType glyph advances and rendered bitmaps for faster label drawing
Drawing many long labels was dominated by FreeType reinterpreting each
glyph outline (FT_Load_Char) on every call, both to measure widths and to
render; profiling showed ~3/4 of the glyph loads were width measurement
alone. Cache the advance and the rendered GRAY coverage bitmap per
(pixel size, character). The cache hangs off face->generic.data (freed
via face->generic.finalizer), so it is private to each FT_Face and needs
no locking once the draw is multi-threaded with a per-thread face.
Caching covers single-byte chars on the default identity-transform text
path (ftText); ftTextInBox (transformed/scaled text) and Unicode fall
back to a direct FT_Load_Char. Output is pixel-identical to before
(verified AE=0/MAE=0 for both bitmap and FreeType fonts); roughly halves
the FreeType render time on label-heavy views.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
07e5a2c08f148d8bf31219af8c2218cd2cc893cf Wed Jun 3 09:16:15 2026 -0700
- hgTracks config: pair FreeType font names with their files in one table
The configure-page font list lived in two parallel arrays, freeTypeFontNames[]
and freeTypeFontFiles[], matched only by position. Nothing tied a name to its
file, and maybeNewFonts() looked a name up in the first array and then indexed
the second with no bounds check -- so any drift in order or count between the
two, or a selected name that matched nothing, silently rendered the wrong font
or read past the end of the array.
Merge the two arrays into a single struct freeTypeFont[] of {name, file} rows so
the two can no longer get out of sync, and make maybeNewFonts() fall back to the
bitmap engine when the selected font isn't one we know instead of indexing out
of bounds. Same fonts and same name-to-file mapping as before. Also fix
faceNames[] to size by element count (ArraySize) rather than byte count
(sizeof).
refs #37698
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/hgTracks/config.c - lines changed 65, context: html, text, full: html, text
60d8399ce8617bf31d27b7752576b66a9f29d9b2 Wed Jun 3 09:20:22 2026 -0700
- hgTracks config: document how to add a new FreeType font
Add a "HOW TO ADD A NEW FONT" comment block above the freeTypeFonts[] table
explaining the two steps (place the file under freeTypeDir, add a {name, file}
row), how freeTypeDir resolves relative to the CGI working directory (so it
finds the shared htdocs/urw-fonts even from a per-user sandbox), the
name/face/style convention used by the configure-page dropdown, and the
gotchas -- notably that variable fonts like InterVariable.ttf render only their
default master instance, so a static single-weight file should be used instead.
refs #37698
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- src/hg/hgTracks/config.c - lines changed 36, context: html, text, full: html, text
switch to files view, user index