01: /**
02: * ===========================================
03: * JFreeReport : a free Java reporting library
04: * ===========================================
05: *
06: * Project Info: http://reporting.pentaho.org/
07: *
08: * (C) Copyright 2001-2007, by Object Refinery Ltd, Pentaho Corporation and Contributors.
09: *
10: * This library is free software; you can redistribute it and/or modify it under the terms
11: * of the GNU Lesser General Public License as published by the Free Software Foundation;
12: * either version 2.1 of the License, or (at your option) any later version.
13: *
14: * This library is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
15: * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
16: * See the GNU Lesser General Public License for more details.
17: *
18: * You should have received a copy of the GNU Lesser General Public License along with this
19: * library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
20: * Boston, MA 02111-1307, USA.
21: *
22: * [Java is a trademark or registered trademark of Sun Microsystems, Inc.
23: * in the United States and other countries.]
24: *
25: * ------------
26: * AlignContext.java
27: * ------------
28: * (C) Copyright 2001-2007, by Object Refinery Ltd, Pentaho Corporation and Contributors.
29: */package org.jfree.report.layout.process.valign;
30:
31: import org.jfree.report.layout.model.RenderNode;
32:
33: /**
34: * To position an element inside an box, we need the following data:
35: * <p/>
36: * (1) Offset. The distance between the parent's top-edge and the child's top
37: * edge.
38: * <p/>
39: * (2) Dominant baseline. The childs alignment point is defined by that one.
40: * <p/>
41: * (3) Ascent. The distance from the baseline to the top edge.
42: * <p/>
43: * (4) descent. The distance from the baseline to the bottom edge.
44: *
45: * @author Thomas Morgner
46: */
47: public abstract class AlignContext {
48: private int dominantBaseline;
49: private RenderNode node;
50: private AlignContext next;
51:
52: protected AlignContext(final RenderNode node) {
53: this .node = node;
54: }
55:
56: public RenderNode getNode() {
57: return node;
58: }
59:
60: public AlignContext getNext() {
61: return next;
62: }
63:
64: public void setNext(final AlignContext next) {
65: this .next = next;
66: }
67:
68: public abstract void shift(final long delta);
69:
70: public abstract long getAfterEdge();
71:
72: public abstract long getBeforeEdge();
73:
74: public void setDominantBaseline(final int dominantBaseline) {
75: this .dominantBaseline = dominantBaseline;
76: }
77:
78: public int getDominantBaseline() {
79: return dominantBaseline;
80: }
81:
82: public abstract long getBaselineDistance(int baseline);
83: }
|