001: /*
002: * Copyright (c) 2007, intarsys consulting GmbH
003: *
004: * Redistribution and use in source and binary forms, with or without
005: * modification, are permitted provided that the following conditions are met:
006: *
007: * - Redistributions of source code must retain the above copyright notice,
008: * this list of conditions and the following disclaimer.
009: *
010: * - Redistributions in binary form must reproduce the above copyright notice,
011: * this list of conditions and the following disclaimer in the documentation
012: * and/or other materials provided with the distribution.
013: *
014: * - Neither the name of intarsys nor the names of its contributors may be used
015: * to endorse or promote products derived from this software without specific
016: * prior written permission.
017: *
018: * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
019: * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
020: * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
021: * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
022: * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
023: * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
024: * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
025: * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
026: * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
027: * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
028: * POSSIBILITY OF SUCH DAMAGE.
029: */
030: package de.intarsys.font;
031:
032: /**
033: * docme
034: */
035: public class FontStyle {
036: /** The number of font styles */
037: public static final int COUNT = 4;
038:
039: /** The enumeration of supported font styles */
040: public static final FontStyle UNDEFINED = new FontStyle("?", -1); //$NON-NLS-1$
041:
042: public static final FontStyle REGULAR = new FontStyle("Regular", 0); //$NON-NLS-1$
043:
044: public static final FontStyle ITALIC = new FontStyle("Italic", 1); //$NON-NLS-1$
045:
046: public static final FontStyle BOLD = new FontStyle("Bold", 2); //$NON-NLS-1$
047:
048: public static final FontStyle BOLD_ITALIC = new FontStyle(
049: "BoldItalic", 3); //$NON-NLS-1$
050:
051: /** The external representation of the font style */
052: private final String label;
053:
054: private final int index;
055:
056: private FontStyle(String label, int index) {
057: this .label = label;
058: this .index = index;
059: }
060:
061: public static FontStyle getFontStyle(String name) {
062: if (name == null) {
063: return REGULAR;
064: }
065: name = name.trim().toLowerCase();
066: boolean bold = false;
067: boolean italic = false;
068: if (name.indexOf("bold") >= 0) { //$NON-NLS-1$
069: bold = true;
070: }
071: if (name.indexOf("italic") >= 0) { //$NON-NLS-1$
072: italic = true;
073: }
074: if (name.indexOf("oblique") >= 0) { //$NON-NLS-1$
075: italic = true;
076: }
077: if (bold) {
078: if (italic) {
079: return BOLD_ITALIC;
080: } else {
081: return BOLD;
082: }
083: } else {
084: if (italic) {
085: return ITALIC;
086: } else {
087: return REGULAR;
088: }
089: }
090: }
091:
092: public FontStyle getBoldFlavor() {
093: if (this == FontStyle.ITALIC) {
094: return FontStyle.BOLD_ITALIC;
095: } else {
096: return FontStyle.BOLD;
097: }
098: }
099:
100: public FontStyle getItalicFlavor() {
101: if (this == FontStyle.BOLD) {
102: return FontStyle.BOLD_ITALIC;
103: } else {
104: return FontStyle.ITALIC;
105: }
106: }
107:
108: public String getLabel() {
109: return label;
110: }
111:
112: public String toString() {
113: return getLabel();
114: }
115:
116: protected int getIndex() {
117: return index;
118: }
119: }
|