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: CodePointAndVariant.java,v 21bfa7b63ab2 2008/09/11 14:08:48 maxberger $ */ 018 019 package net.sourceforge.jeuclid.elements.support.text; 020 021 import java.io.Serializable; 022 023 import net.sourceforge.jeuclid.elements.support.attributes.MathVariant; 024 025 /** 026 * @version $Revision: 21bfa7b63ab2 $ 027 */ 028 public class CodePointAndVariant implements Serializable { 029 /** 030 * 031 */ 032 private static final long serialVersionUID = 1L; 033 034 private final int codePoint; 035 036 private final MathVariant variant; 037 038 /** 039 * Create a new CodePointAndVariant. 040 * 041 * @param icodePoint 042 * the codepoint to use 043 * @param ivariant 044 * the MathVariant of the character. 045 */ 046 public CodePointAndVariant(final int icodePoint, 047 final MathVariant ivariant) { 048 assert ivariant != null; 049 this.codePoint = icodePoint; 050 this.variant = ivariant; 051 } 052 053 /** 054 * @return the codePoint 055 */ 056 public final int getCodePoint() { 057 return this.codePoint; 058 } 059 060 /** 061 * @return the variant 062 */ 063 public final MathVariant getVariant() { 064 return this.variant; 065 } 066 067 /** {@inheritDoc} */ 068 @Override 069 public int hashCode() { 070 final int prime = 31; 071 int result = 1; 072 result = prime * result + this.codePoint; 073 result = prime * result + this.variant.hashCode(); 074 return result; 075 } 076 077 /** {@inheritDoc} */ 078 @Override 079 public boolean equals(final Object obj) { 080 if (this == obj) { 081 return true; 082 } 083 if (obj == null) { 084 return false; 085 } 086 if (this.getClass() != obj.getClass()) { 087 return false; 088 } 089 final CodePointAndVariant other = (CodePointAndVariant) obj; 090 if (this.codePoint != other.codePoint) { 091 return false; 092 } 093 if (this.variant == null) { 094 if (other.variant != null) { 095 return false; 096 } 097 } else if (!this.variant.equals(other.variant)) { 098 return false; 099 } 100 return true; 101 } 102 103 /** {@inheritDoc} */ 104 @Override 105 public String toString() { 106 final StringBuilder b = new StringBuilder(); 107 b.append('['); 108 b.append("0x"); 109 b.append(Integer.toHexString(this.codePoint)); 110 b.append(' '); 111 b.append(this.variant.toString()); 112 b.append(']'); 113 return b.toString(); 114 } 115 }