001 /* 002 * Copyright 2007 - 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: HAlign.java,v 8afef6dd0d58 2007/09/14 08:29:58 maxberger $ */ 018 019 package net.sourceforge.jeuclid.elements.support.attributes; 020 021 import net.sourceforge.jeuclid.layout.LayoutInfo; 022 import net.sourceforge.jeuclid.layout.LayoutStage; 023 024 /** 025 * @version $Revision: 8afef6dd0d58 $ 026 */ 027 public enum HAlign { 028 /** Left align. */ 029 LEFT, 030 /** Center align. */ 031 CENTER, 032 /** Right align. */ 033 RIGHT; 034 /** constant for center align. */ 035 public static final String ALIGN_CENTER = "center"; 036 037 /** constant for right align. */ 038 public static final String ALIGN_RIGHT = "right"; 039 040 /** 041 * Parse an Alignment String. 042 * 043 * @param alignString 044 * String to parse. 045 * @param defaultt 046 * default value. 047 * @return a HAlign value. 048 */ 049 public static HAlign parseString(final String alignString, 050 final HAlign defaultt) { 051 final HAlign retVal; 052 if (HAlign.ALIGN_CENTER.equalsIgnoreCase(alignString)) { 053 retVal = CENTER; 054 } else if ("left".equalsIgnoreCase(alignString)) { 055 retVal = LEFT; 056 } else if (HAlign.ALIGN_RIGHT.equalsIgnoreCase(alignString)) { 057 retVal = RIGHT; 058 } else { 059 retVal = defaultt; 060 } 061 return retVal; 062 } 063 064 /** 065 * Retrieve H-Align offset. 066 * 067 * @param stage 068 * current Layout Stage 069 * @param info 070 * Info object to examine 071 * @param width 072 * Total width 073 * @return Alignment offset to add to left. 074 */ 075 public float getHAlignOffset(final LayoutStage stage, 076 final LayoutInfo info, final float width) { 077 final float offset; 078 switch (this) { 079 case LEFT: 080 offset = 0.0f; 081 break; 082 case RIGHT: 083 offset = width - info.getWidth(stage); 084 break; 085 case CENTER: 086 offset = width / 2.0f - info.getHorizontalCenterOffset(stage); 087 break; 088 default: 089 assert false; 090 offset = 0.0f; 091 } 092 return offset; 093 } 094 095 }