• src/syncterm/ripper.c

    From Deucе@VERT to Git commit to main/sbbs/master on Wed Apr 1 23:54:25 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/679e5bae93abe08984256ab6
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    With the help of Claude, exactly match RIPTERM ellipses

    I had assumed they used McIlroy for Ellipses, so could only get
    close... they had actually used the two-region Bresenham, the reason
    I didn't get that to match was that they apparently scale by 100 to
    "avoid rounding", so my truncation was wildly different.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Thu Apr 2 01:31:45 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/d1c27d856bf669d666f637a8
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    And fix arcs too!

    We actually needed to extract the trig tables BGI uses to get this
    to work out right... fighting with floating point was not the way.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Thu Apr 2 15:55:01 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/7e79e2c43826ac8dedb24347
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Much better bezier match

    replace per-iteration step/cnt division with accumulated
    t += 1.0/cnt.

    This produces the SAME ERROR I see from the RIPterm across obvious
    test vectors.

    The old code was "too correct", RIPterm appears to accumulate error
    and never correct for it.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Thu Apr 2 18:19:25 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/81b7dd81d2a640500ae7961f
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Mostly cleanup stuff...

    Clean up old use of a hack bit, use the new polyfill for the RIP
    command, clean up some comments, and get XOR working properly
    everywhere.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Thu Apr 2 19:20:37 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/179725429e08522795487d5f
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Some more button fixups.

    1. !|1U missing <res> field - no longer draws the button (per RIPterm)
    2. Recessed inner corner pixels - removed explicit cc-colored corner
    pixels on inner recess border (RIPterm lets the bg lines overlap naturally) 3. Chisel inset height off-by-one — y2 - y1 + 1 → y2 - y1 since box.y2 is
    exclusive

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Thu Apr 2 22:12:09 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/fadd8eb62fe426eee68a0964
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Handle thick ellipses better.

    It looks like when drawing a thick ellipse, it draws multiple thick
    line segments. Now that we have the Borland cos/sin tables, we can
    do that ourselves as a special case.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Fri Apr 3 08:52:32 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/9684acff780621441b3c1194
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix parse_mega() buffer overreads

    Many places were calling parse_mega() without checking the return
    value, then calling parse_mega() on the string AFTER the previous
    one. This means that on truncated invalid RIP sequences, ripper
    would read past the end of the allocation.

    This fix was complicated by the fact that the "last" item in a
    parameter list can be truncated as long as it has at least one
    valid byte in it.

    This now uses a vararg function and parses them all at once (mostly).

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Mon Apr 13 01:14:04 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/87ddc4046f27a9c51592941d
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    More fixes.

    RIPterm doesn't render \x0e or \x0f at all. (perseid.rip)
    Fixed size is ALWAYS used for plain buttons.
    Fix stroked-font tabs.
    The actual movement after a glyph is drawn comes from the stroke
    data, NOT the width data. In SANS.CHR at least, the table has TAB
    with a width of 0, but it's actually 24 based on the stroke.
    Only use npoints for |p, |P, and |l

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Mon Apr 13 20:15:12 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/2b59a74912e34419e35217eb
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    More RIP tweaks

    Correctly handle the "selected" flag.
    This also makes selecting buttons match the RIPterm rendering.

    Support "highlight icon" buttons.
    This is what you're expected to use with radio buttons and checkboxen

    Fix paste clipping
    It clips at the bottom of the screen, rejects at the right.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Tue Apr 14 00:49:52 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/412fcb168c8a5e4a7854d93c
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Add support for justified text.

    Bug-compatible with RIPterm as usual.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Tue Apr 14 01:03:08 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/3c9429e9b886b357504661bb
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix whitespace

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Tue Apr 14 01:04:49 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/3f3da7f1f946bc833f8c5763
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Remove segment/offset references from comments.

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net
  • From Deucе@VERT to Git commit to main/sbbs/master on Wed Apr 15 11:09:13 2026
    https://gitlab.synchro.net/main/sbbs/-/commit/d00fb8a5a903062bed9355bb
    Modified Files:
    src/syncterm/ripper.c
    Log Message:
    Fix build for SyncVIEW

    ---
    ■ Synchronet ■ Vertrauen ■ Home of Synchronet ■ [vert/cvs/bbs].synchro.net