001 /*
002 * Copyright 2002 - 2007 JEuclid, http://jeuclid.sf.net
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.apache.org/licenses/LICENSE-2.0
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016
017 /* $Id: LayoutInfoImpl.java,v 88b901bf20fb 2008/06/07 14:12:27 maxberger $ */
018
019 package net.sourceforge.jeuclid.layout;
020
021 import java.util.ArrayList;
022 import java.util.List;
023
024 /**
025 * @version $Revision: 88b901bf20fb $
026 */
027 public class LayoutInfoImpl implements LayoutInfo {
028
029 private LayoutStage layoutStage;
030
031 private float ascentHeightS1;
032
033 private float ascentHeightS2;
034
035 private float descentHeightS1;
036
037 private float descentHeightS2;
038
039 private float horizontalS1;
040
041 private float horizontalS2;
042
043 private float widthS1;
044
045 private float widthS2;
046
047 private float posXS1;
048
049 private float posXS2;
050
051 private float posYS1;
052
053 private float posYS2;
054
055 private float stretchAscent = -1.0f;
056
057 private float stretchDescent = -1.0f;
058
059 private float stretchWidth = -1.0f;
060
061 private final List<GraphicsObject> graphicObjects;
062
063 /**
064 * Default Constructor.
065 */
066 public LayoutInfoImpl() {
067 this.layoutStage = LayoutStage.NONE;
068 this.graphicObjects = new ArrayList<GraphicsObject>();
069 }
070
071 /** {@inheritDoc} */
072 public LayoutStage getLayoutStage() {
073 return this.layoutStage;
074 }
075
076 /** {@inheritDoc} */
077 public void setLayoutStage(final LayoutStage newStage) {
078 this.layoutStage = newStage;
079 }
080
081 /** {@inheritDoc} */
082 public float getAscentHeight(final LayoutStage stage) {
083 if (LayoutStage.STAGE1.equals(stage)) {
084 return this.ascentHeightS1;
085 } else {
086 return this.ascentHeightS2;
087 }
088 }
089
090 /** {@inheritDoc} */
091 public float getDescentHeight(final LayoutStage stage) {
092 if (LayoutStage.STAGE1.equals(stage)) {
093 return this.descentHeightS1;
094 } else {
095 return this.descentHeightS2;
096 }
097 }
098
099 /** {@inheritDoc} */
100 public float getHorizontalCenterOffset(final LayoutStage stage) {
101 if (LayoutStage.STAGE1.equals(stage)) {
102 return this.horizontalS1;
103 } else {
104 return this.horizontalS2;
105 }
106 }
107
108 /** {@inheritDoc} */
109 public float getPosX(final LayoutStage stage) {
110 if (LayoutStage.STAGE1.equals(stage)) {
111 return this.posXS1;
112 } else {
113 return this.posXS2;
114 }
115 }
116
117 /** {@inheritDoc} */
118 public float getPosY(final LayoutStage stage) {
119 if (LayoutStage.STAGE1.equals(stage)) {
120 return this.posYS1;
121 } else {
122 return this.posYS2;
123 }
124 }
125
126 /** {@inheritDoc} */
127 public float getWidth(final LayoutStage stage) {
128 if (LayoutStage.STAGE1.equals(stage)) {
129 return this.widthS1;
130 } else {
131 return this.widthS2;
132 }
133 }
134
135 /** {@inheritDoc} */
136 public void moveTo(final float x, final float y, final LayoutStage stage) {
137 this.posXS2 = x;
138 this.posYS2 = y;
139 if (LayoutStage.STAGE1.equals(stage)) {
140 this.posXS1 = x;
141 this.posYS1 = y;
142 }
143
144 }
145
146 /** {@inheritDoc} */
147 public void setAscentHeight(final float ascentHeight,
148 final LayoutStage stage) {
149 this.ascentHeightS2 = ascentHeight;
150 if (LayoutStage.STAGE1.equals(stage)) {
151 this.ascentHeightS1 = ascentHeight;
152 }
153 }
154
155 /** {@inheritDoc} */
156 public void setDescentHeight(final float descentHeight,
157 final LayoutStage stage) {
158 this.descentHeightS2 = descentHeight;
159 if (LayoutStage.STAGE1.equals(stage)) {
160 this.descentHeightS1 = descentHeight;
161 }
162 }
163
164 /** {@inheritDoc} */
165 public void setHorizontalCenterOffset(final float newOffset,
166 final LayoutStage stage) {
167 this.horizontalS2 = newOffset;
168 if (LayoutStage.STAGE1.equals(stage)) {
169 this.horizontalS1 = newOffset;
170 }
171 }
172
173 /** {@inheritDoc} */
174 public void setWidth(final float width, final LayoutStage stage) {
175 this.widthS2 = width;
176 if (LayoutStage.STAGE1.equals(stage)) {
177 this.widthS1 = width;
178 }
179 }
180
181 /** {@inheritDoc} */
182 public void setGraphicsObject(final GraphicsObject graphicsObject) {
183 this.graphicObjects.clear();
184 this.graphicObjects.add(graphicsObject);
185 }
186
187 /** {@inheritDoc} */
188 public List<GraphicsObject> getGraphicObjects() {
189 return this.graphicObjects;
190 }
191
192 /** {@inheritDoc} */
193 public float getStretchWidth() {
194 return this.stretchWidth;
195 }
196
197 /** {@inheritDoc} */
198 public void setStretchWidth(final float newStretchWidth) {
199 this.stretchWidth = newStretchWidth;
200 }
201
202 /** {@inheritDoc} */
203 public float getStretchAscent() {
204 if (this.stretchAscent < 0.0f) {
205 return this.ascentHeightS1;
206 } else {
207 return this.stretchAscent;
208 }
209 }
210
211 /** {@inheritDoc} */
212 public float getStretchDescent() {
213 if (this.stretchDescent < 0.0f) {
214 return this.descentHeightS1;
215 } else {
216 return this.stretchDescent;
217 }
218 }
219
220 /** {@inheritDoc} */
221 public void setStretchAscent(final float newStretchAscent) {
222 this.stretchAscent = newStretchAscent;
223
224 }
225
226 /** {@inheritDoc} */
227 public void setStretchDescent(final float newStretchDescent) {
228 this.stretchDescent = newStretchDescent;
229 }
230
231 /** {@inheritDoc} */
232 public void shiftVertically(final float offsetY, final LayoutStage stage) {
233 this.posYS2 += offsetY;
234 if (LayoutStage.STAGE1.equals(stage)) {
235 this.posYS1 += offsetY;
236 }
237 }
238 }