- private static LinearProgramming.Simplex lp_h = new LinearProgramming.Simplex(100, 100, 300);
- private static LinearProgramming.Simplex lp_v = new LinearProgramming.Simplex(100, 100, 300);
+ private static Simplex lp_h = new Simplex(100, 100, 300);
+ private static Simplex lp = new Simplex(100, 100, 300);
+
+ // FIXME: numboxes^2, and damn ugly to boot
+ private static int[] regions = new int[65535];
+ private static int[] regions_v = new int[65535];
+ private static int numregions = 0;
+ private static int numregions_v = 0;
+ //#repeat col/row colspan/rowspan contentwidth/contentheight width/height HSHRINK/VSHRINK numregions/numregions_v \
+ // maxwidth/maxheight cols/rows minwidth/minheight lp_h/lp lp_h/lp easy_width/easy_height regions/regions_v \
+ // computeRegions/computeRegions_v
+ private void computeRegions() {
+ numregions = 0;
+ for(Box c = firstPackedChild(); c != null; c = c.nextPackedSibling()) {
+ int target = c.col;
+ for(boolean stop = false;;) {
+ for(int i=0; i<=numregions; i++) {
+ if (i == numregions) { regions[numregions++] = target; break; }
+ if (target == regions[i]) break;
+ if (target < regions[i]) { int tmp = target; target = regions[i]; regions[i] = tmp; }
+ }
+ if (stop) break;
+ stop = true;
+ target = min(cols, c.col+c.colspan);
+ }
+ }
+ if (regions[numregions-1] == cols) numregions--;
+ else regions[numregions] = cols;
+ }
+ //#end