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

50
LINES

< > BotCompany Repo | #1005517 // ImageSurfaceSelector - provide rectangular selection by mouse to ImageSurface

JavaX fragment (include) [tags: use-pretranspiled]

Libraryless. Click here for Pure Java version (19927L/123K).

1  
sclass ImageSurfaceSelector extends ImageSurfaceMouseHandler {
2  
  Point startingPoint;
3  
  bool enabled = true;
4  
  static bool verbose = false;
5  
6  
  *() {}
7  
  *(ImageSurface is) {
8  
    if (containsInstance(is.tools, ImageSurfaceSelector)) ret;
9  
    this.register(is);
10  
  }
11  
12  
  public void mousePressed(MouseEvent evt) {
13  
    if (verbose) print("mousePressed");
14  
    if (evt.getButton() != MouseEvent.BUTTON1) return;
15  
    if (enabled)
16  
      startingPoint = getPoint(evt);
17  
  }
18  
19  
  public void mouseDragged(MouseEvent e) {
20  
    if (verbose) print("mouseDragged");
21  
    if (startingPoint != null) {
22  
      Point endPoint = getPoint(e);
23  
      Rectangle r = new Rectangle(startingPoint, new Dimension(endPoint.x-startingPoint.x+1, endPoint.y-startingPoint.y+1));
24  
      normalize(r);
25  
      r.width = min(r.width, is.getImage().getWidth()-r.x);
26  
      r.height = min(r.height, is.getImage().getHeight()-r.y);
27  
      is.setSelection(r);
28  
    }
29  
    if (verbose) print("mouseDragged done");
30  
  }
31  
32  
  public static void normalize(Rectangle r) {
33  
    if (r.width < 0) {
34  
      r.x += r.width;
35  
      r.width = -r.width;
36  
    }
37  
    if (r.height < 0) {
38  
      r.y += r.height;
39  
      r.height = -r.height;
40  
    }
41  
  }
42  
43  
  public void mouseReleased(MouseEvent e) {
44  
    if (verbose) print("mouseReleased");
45  
    mouseDragged(e);
46  
    if (getPoint(e).equals(startingPoint))
47  
      is.setSelection((Rectangle) null);
48  
    startingPoint = null;
49  
  }
50  
}

download  show line numbers  debug dex  old transpilations   

Travelled to 19 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, ddnzoavkxhuk, gwrvuhgaqvyk, ishqpsrjomds, jtubtzbbkimh, lpdgvwnxivlt, mqqgnosmbjvj, onxytkatvevr, ppjhyzlbdabe, pyentgdyhuwx, pzhvpgtvlbxg, sawdedvomwva, tslmcundralx, tvejysmllsmz, vouqrxazstgt, xrpafgyirdlv

No comments. add comment

Snippet ID: #1005517
Snippet name: ImageSurfaceSelector - provide rectangular selection by mouse to ImageSurface
Eternal ID of this version: #1005517/9
Text MD5: 49351ddcebf4951997d6403b239f27c6
Transpilation MD5: 510bd6a86d5ef546af9039075cc9cb63
Author: stefan
Category: javax / gui
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2022-02-15 22:29:01
Source code size: 1444 bytes / 50 lines
Pitched / IR pitched: No / No
Views / Downloads: 632 / 6036
Version history: 8 change(s)
Referenced in: [show references]