Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

55
LINES

< > BotCompany Repo | #1035626 // G22_RegionToSSIs backup (creates incoherent SSIs)

JavaX fragment (include)

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);
  }
}

Author comment

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: 54 / 57
Referenced in: [show references]