ThreeB 1.1
|
This class deals with running the actual 3B code It should be run in a separate thread It will make calls back to a viewer, and accepts termination calls as well. More...
Public Member Functions | |
void | register (EControlPanel c) |
void | run () |
Static Public Member Functions | |
static void | addLibraryPath (String pathToAdd) throws Exception |
Package Functions | |
ThreeBRunner (ByteProcessor mask_, ImageStack s, String cfg_, String filename_, int firstfr, int lastfr) | |
void | stop_thread () |
boolean | has_stopped () |
void | send_message_string (String s) |
void | send_new_points (float[] points) |
void | die (String err) |
boolean | should_stop () |
native void | call (String cfg, float[][] images, byte[] mask, int n_images, int rows, int cols, String file) |
Static Package Functions | |
static String | get_plugin_dir () |
static UnsatisfiedLinkError | try_to_load_dlls (String[] s) |
[static initializer] | |
Package Attributes | |
ByteProcessor | mask |
float[][] | pixels |
EControlPanel | cp |
String | config |
String | filename |
long | start_time |
int | its |
Static Private Member Functions | |
static String | decodePercent (String str) |
Private Attributes | |
volatile boolean | stop = false |
volatile boolean | stopped = false |
boolean | fatal = false |
This class deals with running the actual 3B code It should be run in a separate thread It will make calls back to a viewer, and accepts termination calls as well.
Definition at line 1283 of file three_B.java.
ThreeBRunner::ThreeBRunner | ( | ByteProcessor | mask_, |
ImageStack | s, | ||
String | cfg_, | ||
String | filename_, | ||
int | firstfr, | ||
int | lastfr | ||
) | [inline, package] |
Definition at line 1296 of file three_B.java.
References config, filename, mask, and pixels.
{ config = cfg_; filename = filename_; //Take a copy of the mask to stop it getting trashed by other threads mask = (ByteProcessor)mask_.duplicate(); //Convert all the input images into float as a common //format. They will be scaled differently from float images //loaded by libcvd, but the later normalization will take care of that // //Oh, and ImageStack counts from 1, not 0 pixels = new float[lastfr - firstfr + 1][]; for(int i=firstfr; i <= lastfr; i++) pixels[i-firstfr] = (float[])s.getProcessor(i+1).convertToFloat().getPixels(); }
void ThreeBRunner::register | ( | EControlPanel | c | ) | [inline] |
Definition at line 1314 of file three_B.java.
References cp.
Referenced by EControlPanel::EControlPanel().
{ cp = c; }
void ThreeBRunner::stop_thread | ( | ) | [inline, package] |
Definition at line 1319 of file three_B.java.
References send_message_string(), and stop.
Referenced by EControlPanel::issue_stop(), and EControlPanel::windowClosing().
{ stop=true; send_message_string("stopping..."); }
boolean ThreeBRunner::has_stopped | ( | ) | [inline, package] |
Definition at line 1325 of file three_B.java.
References stopped.
Referenced by EControlPanel::windowClosing().
{ return stopped; }
void ThreeBRunner::send_message_string | ( | String | s | ) | [inline, package] |
Definition at line 1332 of file three_B.java.
References cp, and EControlPanel::send_status_text_message().
Referenced by stop_thread().
{ cp.send_status_text_message(s); }
void ThreeBRunner::send_new_points | ( | float[] | points | ) | [inline, package] |
Definition at line 1337 of file three_B.java.
References EControlPanel::append(), cp, ThreeBGlobalConstants::critical_iterations, its, EControlPanel::send_time_text_message(), EControlPanel::send_update_canvas_event(), start_time, Spot::x, and Spot::y.
{ //New points are sent in the form x, y, x, y ArrayList<Spot> tmp = new ArrayList<Spot>(); for(int i=0; i < points.length; i+=2) { Spot s = new Spot(); s.x = points[i]; s.y = points[i+1]; tmp.add(s); } cp.append(tmp, its); cp.send_update_canvas_event(); //This happens each "iteration", i.e. each pass. long current = (new java.util.Date()).getTime(); if(its > 0) { if(its < 8) cp.send_time_text_message("computing..."); else { long time_per_it = (current -start_time) / its; int target = (int)Math.ceil(its * 1.0 / ThreeBGlobalConstants.critical_iterations) * ThreeBGlobalConstants.critical_iterations; int its_remaining = target-its; System.out.println("Its = " + its); System.out.println("rem = " + its_remaining); System.out.println("time_per_it = " + time_per_it); long time_remaining_s = (its_remaining * time_per_it)/1000; long s = time_remaining_s % 60; long m = (time_remaining_s / 60)%60; long h = time_remaining_s / 3600; cp.send_time_text_message( h + "h" + m + "m (for " + target + " iterations)"); } } //Increment after, since it outputs the initial spots as well its++; }
void ThreeBRunner::die | ( | String | err | ) | [inline, package] |
Definition at line 1385 of file three_B.java.
References cp, EControlPanel::die(), and fatal.
boolean ThreeBRunner::should_stop | ( | ) | [inline, package] |
native void ThreeBRunner::call | ( | String | cfg, |
float | images[][], | ||
byte[] | mask, | ||
int | n_images, | ||
int | rows, | ||
int | cols, | ||
String | file | ||
) | [package] |
Referenced by run().
void ThreeBRunner::run | ( | ) | [inline] |
Definition at line 1398 of file three_B.java.
References call(), config, cp, fatal, filename, its, mask, pixels, EControlPanel::send_status_text_message(), start_time, and stopped.
{ System.out.println("About to call..."); start_time = (new java.util.Date()).getTime(); its=0; call(config, pixels, (byte[])mask.getPixels(), pixels.length, mask.getHeight(), mask.getWidth(), filename); System.out.println("Finished."); if(!fatal) { cp.send_status_text_message("Finished\n"); ij.IJ.showStatus("3B run terminated"); } stopped=true; }
static String ThreeBRunner::decodePercent | ( | String | str | ) | [inline, static, private] |
Definition at line 1420 of file three_B.java.
{ StringBuffer sb = new StringBuffer(); for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if(c == '+') sb.append(' '); else if(c == '%') { sb.append((char) Integer.parseInt(str.substring(i + 1, i + 3), 16)); i += 2; } else sb.append(c); } return sb.toString(); }
static void ThreeBRunner::addLibraryPath | ( | String | pathToAdd | ) | throws Exception [inline, static] |
Adds the specified path to the java library path.
pathToAdd | the path to add |
Exception |
Definition at line 1445 of file three_B.java.
{ final Field usrPathsField = ClassLoader.class.getDeclaredField("usr_paths"); usrPathsField.setAccessible(true); //get array of paths final String[] paths = (String[])usrPathsField.get(null); //check if the path to add is already present for(String path : paths) { if(path.equals(pathToAdd)) { return; } } //add the new path final String[] newPaths = Arrays.copyOf(paths, paths.length + 1); newPaths[newPaths.length-1] = pathToAdd; usrPathsField.set(null, newPaths); }
static String ThreeBRunner::get_plugin_dir | ( | ) | [inline, static, package] |
Definition at line 1489 of file three_B.java.
Referenced by try_to_load_dlls().
{ try{ String img_url = (new SPair()).getClass().getResource("img").getFile(); URI jar_url = null; jar_url= new URI(img_url.substring(0, img_url.length()-5)); File jar = new File(jar_url); System.out.println("File: " + jar.getCanonicalPath()); String dir = jar.getParentFile().getCanonicalPath() + File.separator; System.out.println("Dir: " + dir); return dir; } catch(Exception e){ return ""; } }
static UnsatisfiedLinkError ThreeBRunner::try_to_load_dlls | ( | String[] | s | ) | [inline, static, package] |
Definition at line 1514 of file three_B.java.
References get_plugin_dir().
{ String dir = get_plugin_dir(); try{ for(int i=0; i < s.length; i++) { System.out.println("Loading " + dir+s[i]); System.load(dir + s[i]); } return null; } catch(UnsatisfiedLinkError e) { System.out.println("Link error: " + e.getMessage()); return e; } }
ThreeBRunner::[static initializer] | ( | ) | [inline, static, package] |
ByteProcessor ThreeBRunner::mask [package] |
Definition at line 1285 of file three_B.java.
Referenced by run(), and ThreeBRunner().
float [][] ThreeBRunner::pixels [package] |
Definition at line 1286 of file three_B.java.
Referenced by run(), and ThreeBRunner().
volatile boolean ThreeBRunner::stop = false [private] |
Definition at line 1287 of file three_B.java.
Referenced by should_stop(), and stop_thread().
volatile boolean ThreeBRunner::stopped = false [private] |
Definition at line 1288 of file three_B.java.
Referenced by has_stopped(), and run().
boolean ThreeBRunner::fatal = false [private] |
Definition at line 1289 of file three_B.java.
EControlPanel ThreeBRunner::cp [package] |
Definition at line 1290 of file three_B.java.
Referenced by die(), register(), run(), send_message_string(), and send_new_points().
String ThreeBRunner::config [package] |
Definition at line 1291 of file three_B.java.
Referenced by run(), and ThreeBRunner().
String ThreeBRunner::filename [package] |
Definition at line 1292 of file three_B.java.
Referenced by run(), and ThreeBRunner().
long ThreeBRunner::start_time [package] |
Definition at line 1293 of file three_B.java.
Referenced by run(), and send_new_points().
int ThreeBRunner::its [package] |
Definition at line 1294 of file three_B.java.
Referenced by run(), and send_new_points().