View Javadoc

1   // Copyright 2001, FreeHEP.
2   package org.freehep.graphicsio.swf;
3   
4   import java.awt.Color;
5   import java.awt.geom.Rectangle2D;
6   import java.io.IOException;
7   
8   /**
9    * DefineEditText TAG.
10   * 
11   * @author Mark Donszelmann
12   * @author Charles Loomis
13   * @version $Id: DefineEditText.java 8584 2006-08-10 23:06:37Z duns $
14   */
15  public class DefineEditText extends DefinitionTag {
16  
17      private int character;
18  
19      private Rectangle2D bounds;
20  
21      private boolean disableEditting;
22  
23      private boolean password;
24  
25      private boolean multiLine;
26  
27      private boolean wordWrap;
28  
29      private boolean drawBox;
30  
31      private boolean disableSelection;
32  
33      private int fontID;
34  
35      private int height;
36  
37      private Color color;
38  
39      private int maxLength = -1;
40  
41      private int alignment;
42  
43      private int leftMargin;
44  
45      private int rightMargin;
46  
47      private int indent;
48  
49      private int lineSpace;
50  
51      private String variable;
52  
53      private String initialText;
54  
55      // FIXME: constructor
56  
57      public DefineEditText() {
58          super(37, 4);
59      }
60  
61      public SWFTag read(int tagID, SWFInputStream swf, int len)
62              throws IOException {
63  
64          DefineEditText tag = new DefineEditText();
65          tag.character = swf.readUnsignedShort();
66          swf.getDictionary().put(tag.character, tag);
67          tag.bounds = swf.readRect();
68  
69          int flags = swf.readUnsignedShort();
70          boolean hasLength = ((flags & 0x0002) > 0);
71          tag.disableEditting = ((flags & 0x0008) > 0);
72          tag.password = ((flags & 0x0010) > 0);
73          tag.multiLine = ((flags & 0x0020) > 0);
74          tag.wordWrap = ((flags & 0x0040) > 0);
75          boolean hasText = ((flags & 0x0080) > 0);
76          tag.drawBox = ((flags & 0x0800) > 0);
77          tag.disableSelection = ((flags & 0x1000) > 0);
78  
79          tag.fontID = swf.readUnsignedShort();
80          tag.height = swf.readUnsignedShort();
81          tag.color = swf.readColor(true);
82          if (hasLength)
83              tag.maxLength = swf.readUnsignedShort();
84          tag.alignment = swf.readUnsignedByte();
85          tag.leftMargin = swf.readUnsignedShort();
86          tag.rightMargin = swf.readUnsignedShort();
87          tag.indent = swf.readUnsignedShort();
88          tag.lineSpace = swf.readUnsignedShort();
89          tag.variable = swf.readString();
90          if (hasText)
91              tag.initialText = swf.readString();
92  
93          return tag;
94      }
95  
96      public void write(int tagID, SWFOutputStream swf) throws IOException {
97          swf.writeUnsignedShort(character);
98          swf.writeRect(bounds);
99          int flags = 0;
100         if (maxLength >= 0)
101             flags |= 0x0002;
102         if (disableEditting)
103             flags |= 0x0008;
104         if (password)
105             flags |= 0x0010;
106         if (multiLine)
107             flags |= 0x0020;
108         if (wordWrap)
109             flags |= 0x0040;
110         if (initialText != null)
111             flags |= 0x0080;
112         if (drawBox)
113             flags |= 0x0800;
114         if (disableSelection)
115             flags |= 0x1000;
116         swf.writeUnsignedShort(flags);
117 
118         swf.writeUnsignedShort(fontID);
119         swf.writeUnsignedShort(height);
120         swf.writeColor(color, true);
121         if (maxLength >= 0)
122             swf.writeUnsignedShort(maxLength);
123         swf.writeUnsignedByte(alignment);
124         swf.writeUnsignedShort(leftMargin);
125         swf.writeUnsignedShort(rightMargin);
126         swf.writeUnsignedShort(indent);
127         swf.writeUnsignedShort(lineSpace);
128         swf.writeString(variable);
129         if (initialText != null)
130             swf.writeString(initialText);
131     }
132 
133     public String toString() {
134         // FIXME: add other stuff...
135         StringBuffer s = new StringBuffer();
136         s.append(super.toString() + "\n");
137         s.append("  character:  " + character + "\n");
138         s.append("  ...\n");
139         return s.toString();
140     }
141 
142 }