Re: Scintilla GTK 4 port
Neil Hodgson <[email protected]> Thu, 11 Dec 2025 15:40:18 +1100
| Newsgroups | gmane.comp.lib.scintilla.devel |
|---|---|
| Message-ID | <CACWkrTix5WWFFvdM=62Xk6W3Bu60-SK+jw_GqPkYsayYDX8M1Q@mail.gmail.com> |
--00000000000093db0a0645a5be4d Content-Type: text/plain; charset="UTF-8" Me: > wrote some code that coalesced adjacent background rectangles and only drew when the background changed Attached an implementation of this. It doesn't optimize all cases but should reduce vertical seams within a line. The GTK4 demo doesn't lex the file so there is only one lexeme per line and the benefit can't yet be seen. For debugging, see the spans by uncommenting the line (near the end of the patch) that shades every second span on a line. Neil -- You received this message because you are subscribed to the Google Groups "scintilla-interest" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To view this discussion visit https://groups.google.com/d/msgid/scintilla-interest/CACWkrTix5WWFFvdM%3D62Xk6W3Bu60-SK%2Bjw_GqPkYsayYDX8M1Q%40mail.gmail.com. --00000000000093db0a0645a5be4d Content-Type: text/plain; charset="US-ASCII"; name="CoalesceStrips.patch" Content-Disposition: attachment; filename="CoalesceStrips.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mj0y8nrq0> X-Attachment-Id: f_mj0y8nrq0 ZGlmZiAtciBhYzZhMmQzNzlmMjUgc3JjL0VkaXRWaWV3LmN4eAotLS0gYS9zcmMvRWRpdFZpZXcu Y3h4CU1vbiBEZWMgMDggMTQ6Mzg6MDcgMjAyNSArMTEwMAorKysgYi9zcmMvRWRpdFZpZXcuY3h4 CVRodSBEZWMgMTEgMTU6MjQ6MTIgMjAyNSArMTEwMApAQCAtMTY1NCw2ICsxNjU0LDM2IEBACiAJ cmV0dXJuIChjYXJldEF0U3RhcnQgfHwgY2FyZXRBdEVuZCkgPyBJblNlbGVjdGlvbjo6aW5Ob25l IDogSW5TZWxlY3Rpb246OmluTWFpbjsKIH0KIAorbmFtZXNwYWNlIHsKKworc3RydWN0IFN0cmlw IHsKKwlJbnRlcnZhbCBzcGFuOworCUNvbG91clJHQkEgY29sb3VyOwkvLyBBc3N1bWVkIG9wYXF1 ZQorCVtbbm9kaXNjYXJkXV0gYm9vbCBBZGQoY29uc3QgU3RyaXAgJm5leHQpIG5vZXhjZXB0IHsK KwkJaWYgKChjb2xvdXIgPT0gbmV4dC5jb2xvdXIpICYmCisJCQkoc3Bhbi5yaWdodCA9PSBuZXh0 LnNwYW4ubGVmdCkpIHsKKwkJCXNwYW4ucmlnaHQgPSBuZXh0LnNwYW4ucmlnaHQ7CisJCQlyZXR1 cm4gdHJ1ZTsKKwkJfQorCQlyZXR1cm4gZmFsc2U7CisJfQorfTsKKworc3RydWN0IFN0cmlwcyB7 CisJc3RkOjp2ZWN0b3I8U3RyaXA+IHN0cmlwczsKKwl2b2lkIEFwcGVuZChJbnRlcnZhbCBzcGFu LCBDb2xvdXJSR0JBIGNvbG91cikgeworCQljb25zdCBTdHJpcCBuZXh0eyBzcGFuLCBjb2xvdXIg fTsKKwkJaWYgKHN0cmlwcy5lbXB0eSgpIHx8ICFzdHJpcHMuYmFjaygpLkFkZChuZXh0KSkgewor CQkJLy8gRG9lcyBub3QgaGFuZGxlIGNhc2Ugb2YgdmlzaWJsZSB3aGl0ZXNwYWNlIGJhY2tncm91 bmQuCisJCQkvLyBDb3VsZCBpbnNlcnQgYSBzdHJpcCBpbnNpZGUgdGhlIGxhc3Qgc3BhbiwgbGVh ZGluZyB0byBlaXRoZXIgMyAoaW50ZXJpb3IpIG9yIDIgKHNpZGUpCisJCQkvLyBzcGFucyB3aGVy ZSB0aGVyZSBoYWQgYmVlbiBqdXN0IDEuCisJCQlzdHJpcHMucHVzaF9iYWNrKG5leHQpOworCQl9 CisJfQorfTsKKworfQorCiB2b2lkIERyYXdCYWNrZ3JvdW5kKFN1cmZhY2UgKnN1cmZhY2UsIGNv bnN0IEVkaXRNb2RlbCAmbW9kZWwsIGNvbnN0IFZpZXdTdHlsZSAmdnNEcmF3LCBjb25zdCBMaW5l TGF5b3V0ICpsbCwKIAlpbnQgeFN0YXJ0LCBQUmVjdGFuZ2xlIHJjTGluZSwgaW50IHN1YkxpbmUs IFJhbmdlIGxpbmVSYW5nZSwgU2NpOjpQb3NpdGlvbiBwb3NMaW5lU3RhcnQsCiAJQ29sb3VyT3B0 aW9uYWwgYmFja2dyb3VuZCkgewpAQCAtMTY3MCw2ICsxNzAwLDggQEAKIAogCWNvbnN0IGJvb2wg ZHJhd1doaXRlc3BhY2VCYWNrZ3JvdW5kID0gdnNEcmF3LldoaXRlc3BhY2VCYWNrZ3JvdW5kRHJh d24oKSAmJiAhYmFja2dyb3VuZDsKIAorCVN0cmlwcyBzdHJpcHM7CisKIAkvLyBCYWNrZ3JvdW5k IGRyYXdpbmcgbG9vcAogCXdoaWxlIChiZkJhY2suTW9yZSgpKSB7CiAKQEAgLTE2OTksMTcgKzE3 MzEsMTcgQEAKIAkJCQkJLy8gQmxvYiBkaXNwbGF5CiAJCQkJCWluSW5kZW50YXRpb24gPSBmYWxz ZTsKIAkJCQl9Ci0JCQkJc3VyZmFjZS0+RmlsbFJlY3RhbmdsZUFsaWduZWQocmNTZWdtZW50LCBG aWxsKHRleHRCYWNrKSk7CisJCQkJc3RyaXBzLkFwcGVuZChIb3Jpem9udGFsQm91bmRzKHJjU2Vn bWVudCksIHRleHRCYWNrKTsKIAkJCX0gZWxzZSB7CiAJCQkJLy8gTm9ybWFsIHRleHQgZGlzcGxh eQotCQkJCXN1cmZhY2UtPkZpbGxSZWN0YW5nbGVBbGlnbmVkKHJjU2VnbWVudCwgRmlsbCh0ZXh0 QmFjaykpOworCQkJCXN0cmlwcy5BcHBlbmQoSG9yaXpvbnRhbEJvdW5kcyhyY1NlZ21lbnQpLCB0 ZXh0QmFjayk7CiAJCQkJaWYgKHZzRHJhdy52aWV3V2hpdGVzcGFjZSAhPSBXaGl0ZVNwYWNlOjpJ bnZpc2libGUpIHsKIAkJCQkJZm9yIChpbnQgY3BvcyA9IDA7IGNwb3MgPD0gaSAtIHRzLnN0YXJ0 OyBjcG9zKyspIHsKIAkJCQkJCWlmIChsbC0+Y2hhcnNbY3BvcyArIHRzLnN0YXJ0XSA9PSAnICcp IHsKIAkJCQkJCQlpZiAoZHJhd1doaXRlc3BhY2VCYWNrZ3JvdW5kICYmIHZzRHJhdy5XaGl0ZVNw YWNlVmlzaWJsZShpbkluZGVudGF0aW9uKSkgewogCQkJCQkJCQljb25zdCBQUmVjdGFuZ2xlIHJj U3BhY2UgPSBJbnRlcnNlY3Rpb24ocmNMaW5lLAogCQkJCQkJCQkJbGwtPlNwYW5CeXRlKGNwb3Mg KyB0cy5zdGFydCkuT2Zmc2V0KGhvcml6b250YWxPZmZzZXQpKTsKLQkJCQkJCQkJc3VyZmFjZS0+ RmlsbFJlY3RhbmdsZUFsaWduZWQocmNTcGFjZSwKKwkJCQkJCQkJc3RyaXBzLkFwcGVuZChIb3Jp em9udGFsQm91bmRzKHJjU3BhY2UpLAogCQkJCQkJCQkJdnNEcmF3LkVsZW1lbnRDb2xvdXJGb3Jj ZWQoRWxlbWVudDo6V2hpdGVTcGFjZUJhY2spLk9wYXF1ZSgpKTsKIAkJCQkJCQl9CiAJCQkJCQl9 IGVsc2UgewpAQCAtMTcyMiw2ICsxNzU0LDE1IEBACiAJCQlicmVhazsKIAkJfQogCX0KKwlib29s IHBoYXNlID0gZmFsc2U7CS8vIEp1c3QgZm9yIGRlYnVnZ2luZyB0byBtYWtlIHRoZSBjb2FsZXNj aW5nIHZpc2libGUKKwlmb3IgKGNvbnN0IFN0cmlwICZzdHJpcDogc3RyaXBzLnN0cmlwcykgewor CQlzdXJmYWNlLT5GaWxsUmVjdGFuZ2xlQWxpZ25lZChJbnRlcnNlY3Rpb24ocmNMaW5lLCBzdHJp cC5zcGFuKSwgRmlsbChzdHJpcC5jb2xvdXIpKTsKKwkJaWYgKHBoYXNlKSB7CisJCQkvLyBNYWtl IHRoZSBzcGFucyB2aXNpYmxlCisJCQkvL3N1cmZhY2UtPkZpbGxSZWN0YW5nbGVBbGlnbmVkKElu dGVyc2VjdGlvbihyY0xpbmUsIHN0cmlwLnNwYW4pLCBGaWxsKENvbG91clJHQkEoMCwgMHg4MCwg MCwgNTApKSk7CisJCX0KKwkJcGhhc2UgPSAhcGhhc2U7CisJfQogfQogCiB2b2lkIERyYXdFZGdl TGluZShTdXJmYWNlICpzdXJmYWNlLCBjb25zdCBWaWV3U3R5bGUgJnZzRHJhdywgY29uc3QgTGlu ZUxheW91dCAqbGwsCg== --00000000000093db0a0645a5be4d--