1 17 18 19 20 package org.apache.fop.layoutmgr; 21 22 import org.apache.fop.datatypes.PercentBaseContext; 23 import org.apache.fop.fo.Constants; 24 import org.apache.fop.fo.properties.LengthRangeProperty; 25 import org.apache.fop.traits.MinOptMax; 26 27 30 public class MinOptMaxUtil { 31 32 38 public static void restrict(MinOptMax mom, LengthRangeProperty lr, 39 PercentBaseContext context) { 40 if (lr.getEnum() != Constants.EN_AUTO) { 41 if (lr.getMinimum(context).getEnum() != Constants.EN_AUTO) { 42 int min = lr.getMinimum(context).getLength().getValue(context); 43 if (min > mom.min) { 44 mom.min = min; 45 fixAfterMinChanged(mom); 46 } 47 } 48 if (lr.getMaximum(context).getEnum() != Constants.EN_AUTO) { 49 int max = lr.getMaximum(context).getLength().getValue(context); 50 if (max < mom.max) { 51 mom.max = max; 52 if (mom.max < mom.opt) { 53 mom.opt = mom.max; 54 mom.min = mom.opt; 55 } 56 } 57 } 58 if (lr.getOptimum(context).getEnum() != Constants.EN_AUTO) { 59 int opt = lr.getOptimum(context).getLength().getValue(context); 60 if (opt > mom.min) { 61 mom.opt = opt; 62 if (mom.opt > mom.max) { 63 mom.max = mom.opt; 64 } 65 } 66 } 67 } 68 } 69 70 77 public static void extendMinimum(MinOptMax mom, int len, boolean optToLen) { 78 if (mom.min < len) { 79 mom.min = len; 80 mom.opt = Math.max(mom.min, mom.opt); 81 if (optToLen) { 82 mom.opt = Math.min(mom.min, len); 83 } 84 mom.max = Math.max(mom.opt, mom.max); 85 } 86 } 87 88 93 public static void fixAfterMinChanged(MinOptMax mom) { 94 if (mom.min > mom.opt) { 95 mom.opt = mom.min; 96 if (mom.opt > mom.max) { 97 mom.max = mom.opt; 98 } 99 } 100 } 101 102 108 public static MinOptMax toMinOptMax(LengthRangeProperty prop, PercentBaseContext context) { 109 MinOptMax mom = new MinOptMax( 110 (prop.getMinimum(context).isAuto() 111 ? 0 : prop.getMinimum(context).getLength().getValue(context)), 112 (prop.getOptimum(context).isAuto() 113 ? 0 : prop.getOptimum(context).getLength().getValue(context)), 114 (prop.getMinimum(context).isAuto() 115 ? Integer.MAX_VALUE 116 : prop.getMaximum(context).getLength().getValue(context))); 117 return mom; 118 } 119 120 } 121 | Popular Tags |