01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * http://www.apache.org/licenses/LICENSE-2.0
10: *
11: * Unless required by applicable law or agreed to in writing, software
12: * distributed under the License is distributed on an "AS IS" BASIS,
13: * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14: * See the License for the specific language governing permissions and
15: * limitations under the License.
16: */
17:
18: /* $Id: SimplePercentBaseContext.java 426576 2006-07-28 15:44:37Z jeremias $ */
19:
20: package org.apache.fop.datatypes;
21:
22: import org.apache.fop.fo.FObj;
23:
24: /**
25: * Class to implement a simple lookup context for a single percent base value.
26: */
27: public class SimplePercentBaseContext implements PercentBaseContext {
28:
29: private PercentBaseContext parentContext;
30: private int lengthBase;
31: private int lengthBaseValue;
32:
33: /**
34: * @param parentContext the context to be used for all percentages other than lengthBase
35: * @param lengthBase the particular percentage length base for which this context provides
36: * a value
37: * @param lengthBaseValue the value to be returned for requests to the given lengthBase
38: */
39: public SimplePercentBaseContext(PercentBaseContext parentContext,
40: int lengthBase, int lengthBaseValue) {
41: this .parentContext = parentContext;
42: this .lengthBase = lengthBase;
43: this .lengthBaseValue = lengthBaseValue;
44: }
45:
46: /**
47: * Returns the value for the given lengthBase.
48: * @see org.apache.fop.datatypes.PercentBaseContext#getBaseLength(int, FObj)
49: */
50: public int getBaseLength(int lengthBase, FObj fobj) {
51: // if its for us return our value otherwise delegate to parent context
52: if (lengthBase == this .lengthBase) {
53: return lengthBaseValue;
54: } else if (parentContext != null) {
55: return parentContext.getBaseLength(lengthBase, fobj);
56: }
57: return -1;
58: }
59:
60: }
|