/******************************************************************************* * Copyright 2010 Simon Mieth * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package org.kabeja.dxf.parser.entities; import org.kabeja.dxf.parser.DXFValue; import org.kabeja.entities.Entity; import org.kabeja.entities.Leader; import org.kabeja.math.Point3D; import org.kabeja.util.Constants; /** * @author <a href="mailto:simon.mieth@gmx.de">Simon Mieth</a> * */ public class DXFLeaderHandler extends AbstractEntityHandler { public static final int GROUPCODE_ARROW_HEAD_FLAG = 71; public static final int GROUPCODE_LEADER_PATH_TYPE = 72; public static final int GROUPCODE_LEADER_CREATION_FLAG = 73; public static final int GROUPCODE_HOOKLINE_DIRECTION_FLAG = 74; public static final int GROUPCODE_HOOKLINE_FLAG = 75; public static final int GROUPCODE_TEXT_HEIGHT = 40; public static final int GROUPCODE_TEXT_WIDTH = 41; public static final int GROUPCODE_COLOR_LEADER = 77; public static final int GROUPCODE_TEXT_ENTITY_REFERENCE = 340; public static final int GROUPCODE_HORIZONTAL_DIRECTION_X = 211; public static final int GROUPCODE_HORIZONTAL_DIRECTION_Y = 221; public static final int GROUPCODE_HORIZONTAL_DIRECTION_Z = 231; public static final int GROUPCODE_OFFSET_LAST_VERTEX_INSERTPOINT_X = 212; public static final int GROUPCODE_OFFSET_LAST_VERTEX_INSERTPOINT_Y = 222; public static final int GROUPCODE_OFFSET_LAST_VERTEX_INSERTPOINT_Z = 232; public static final int GROUPCODE_OFFSET_LAST_VERTEX_PLACEMENT_POINT_X = 213; public static final int GROUPCODE_OFFSET_LAST_VERTEX_PLACEMENT_POINT_Y = 223; public static final int GROUPCODE_OFFSET_LAST_VERTEX_PLACEMENT_POINT_Z = 233; protected Leader leader; protected Point3D vertex; /* (non-Javadoc) * @see org.kabeja.parser.entities.AbstractEntityHandler#getDXFEntityName() */ public String getDXFEntityType() { return Constants.ENTITY_TYPE_LEADER; } /* (non-Javadoc) * @see org.kabeja.parser.entities.DXFEntityHandler#startDXFEntity() */ public void startDXFEntity() { leader = new Leader(); } /* (non-Javadoc) * @see org.kabeja.parser.entities.DXFEntityHandler#parseGroup(int, org.kabeja.parser.DXFValue) */ public void parseGroup(int groupCode, DXFValue value) { switch (groupCode) { case GROUPCODE_START_X: vertex = new Point3D(); leader.addCoordinate(vertex); vertex.setX(value.getDoubleValue()); break; case GROUPCODE_START_Y: vertex.setY(value.getDoubleValue()); break; case GROUPCODE_START_Z: vertex.setZ(value.getDoubleValue()); break; case GROUPCODE_STYLENAME: leader.setStyleNameID(value.getValue()); break; case GROUPCODE_ARROW_HEAD_FLAG: leader.setArrowEnabled(value.getBooleanValue()); break; case GROUPCODE_LEADER_PATH_TYPE: leader.setPathType(value.getIntegerValue()); break; case GROUPCODE_LEADER_CREATION_FLAG: leader.setCreationType(value.getIntegerValue()); break; case GROUPCODE_HOOKLINE_DIRECTION_FLAG: leader.setHooklineDirecton(value.getIntegerValue()); break; case GROUPCODE_HOOKLINE_FLAG: leader.setHookline(value.getBooleanValue()); break; case GROUPCODE_TEXT_HEIGHT: leader.setTextHeight(value.getDoubleValue()); break; case GROUPCODE_TEXT_WIDTH: leader.setTextWidth(value.getDoubleValue()); break; case GROUPCODE_HORIZONTAL_DIRECTION_X: leader.getHorizontalDirection().setX(value.getDoubleValue()); break; case GROUPCODE_HORIZONTAL_DIRECTION_Y: leader.getHorizontalDirection().setY(value.getDoubleValue()); break; case GROUPCODE_HORIZONTAL_DIRECTION_Z: leader.getHorizontalDirection().setZ(value.getDoubleValue()); break; case GROUPCODE_OFFSET_LAST_VERTEX_INSERTPOINT_X: leader.getLastOffsetInsertion().setX(value.getDoubleValue()); break; case GROUPCODE_OFFSET_LAST_VERTEX_INSERTPOINT_Y: leader.getLastOffsetInsertion().setY(value.getDoubleValue()); break; case GROUPCODE_OFFSET_LAST_VERTEX_INSERTPOINT_Z: leader.getLastOffsetInsertion().setZ(value.getDoubleValue()); break; case GROUPCODE_OFFSET_LAST_VERTEX_PLACEMENT_POINT_X: leader.getLastOffsetText().setX(value.getDoubleValue()); break; case GROUPCODE_OFFSET_LAST_VERTEX_PLACEMENT_POINT_Y: leader.getLastOffsetText().setY(value.getDoubleValue()); break; case GROUPCODE_OFFSET_LAST_VERTEX_PLACEMENT_POINT_Z: leader.getLastOffsetText().setZ(value.getDoubleValue()); break; case GROUPCODE_TEXT_ENTITY_REFERENCE: leader.setTextID(value.getValue()); break; case GROUPCODE_COLOR_LEADER: leader.setColor(value.getIntegerValue()); break; default: super.parseCommonProperty(groupCode, value, leader); } } /* (non-Javadoc) * @see org.kabeja.parser.entities.DXFEntityHandler#getDXFEntity() */ public Entity getDXFEntity() { return leader; } /* (non-Javadoc) * @see org.kabeja.parser.entities.DXFEntityHandler#endDXFEntity() */ public void endDXFEntity() { } /* (non-Javadoc) * @see org.kabeja.parser.entities.DXFEntityHandler#isFollowSequence() */ public boolean isFollowSequence() { return false; } }