srecord noeq G22_RegionToSSIs(IImageRegion region) { RGB color; L<SSI> ssis; new L<GrowingSSI> growingSSIs; class GrowingSSI { settable int y1; new ShortBuffer data; int y2() { ret y1+l(data)/2; } SSI finish() { ret new SSI(y1, y2()).data(data.toArray()) .color(color); } } L<SSI> get() { if (region == null) null; color = region.color(); ssis = new L; Rect r = region.bounds(); int x1 = r.x1(), y1 = r.y1(), y2 = r.y2(), h = y2-y1, w = r.w; for (int y = y1; y < y2; y++) { reMutable y; L<IntRange> streaks = genericStreaks(w, x -> region.contains(x1+x, y)); // finish SSIs while (longerThan(growingSSIs, streaks)) ssis.add(popLast(growingSSIs).finish()); // now we know that l(growingSSIs) <= l(streaks) // start new SSIs for (int i = l(growingSSIs); i < l(streaks); i++) growingSSIs.add(new GrowingSSI().y1(y)); // continue SSIs for (ssi, range : unpair zipTwoLists(growingSSIs, streaks)) { ssi.data.add(toShort_enforce(x1+range.start)); ssi.data.add(toShort_enforce(x1+range.end)); } } for (ssi : cloneAndClear(growingSSIs)) ssis.add(ssi.finish()); ret ssis; } swappable IntRange selectHorizontalPart(L<IntRange> parts) { ret first(parts); } }
Began life as a copy of #1035608
download show line numbers debug dex old transpilations
Travelled to 1 computer(s): mqqgnosmbjvj
No comments. add comment
Snippet ID: | #1035626 |
Snippet name: | G22_RegionToSSIs backup (creates incoherent SSIs) |
Eternal ID of this version: | #1035626/1 |
Text MD5: | 8eb8608ef0c7b5954a1b78edfe4d4f77 |
Author: | stefan |
Category: | javax / gazelle 22 |
Type: | JavaX fragment (include) |
Public (visible to everyone): | Yes |
Archived (hidden from active list): | No |
Created/modified: | 2022-06-26 23:31:12 |
Source code size: | 1454 bytes / 55 lines |
Pitched / IR pitched: | No / No |
Views / Downloads: | 147 / 136 |
Referenced in: | [show references] |