Package flash.swf.builder.tags

Source Code of flash.swf.builder.tags.EditTextBuilder

/*
*
*  Licensed to the Apache Software Foundation (ASF) under one or more
*  contributor license agreements.  See the NOTICE file distributed with
*  this work for additional information regarding copyright ownership.
*  The ASF licenses this file to You 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 flash.swf.builder.tags;

import flash.swf.tags.DefineEditText;
import flash.swf.tags.DefineTag;
import flash.swf.types.Rect;
import flash.swf.SwfConstants;
import flash.swf.SwfUtils;

import java.io.IOException;
import java.awt.Color;

/**
* This class is used to construct a DefineEditText SWF tag from a
* FontBuilder.
*
* @author Peter Farland
*/
public class EditTextBuilder implements TagBuilder
{
  public EditTextBuilder(FontBuilder builder, float height, boolean useOutlines, boolean readOnly, boolean noSelect)
  {
    tag = new DefineEditText();
        tag.height = (int)Math.rint(height*SwfConstants.TWIPS_PER_PIXEL);

    if (builder != null)
    {
      fontBuilder = builder;
      tag.hasFont = true;
    }

    tag.useOutlines = useOutlines;
    tag.readOnly = readOnly;
    tag.noSelect = noSelect;
  }

  public DefineTag build()
  {
    tag.font = fontBuilder.tag;
    if (tag.varName == null)
      tag.varName = "";

    if (tag.initialText == null)
      tag.initialText = "";

    if (tag.bounds == null)
      tag.bounds = new Rect();

    return tag;
  }

  public void setAutoSize(boolean b)
  {
    tag.autoSize = b;
  }

  public void setBorder(boolean b)
  {
    tag.border = b;
  }

  public void setVarName(String var)
  {
    tag.varName = var;
  }

  public void setMaxLength(int max)
  {
    tag.hasMaxLength = true;
    tag.maxLength = max;
  }

  public void setHtml(boolean b)
  {
    tag.html = b;
  }

  public void setColor(Color color)
  {
    if (color != null)
    {
      tag.hasTextColor = true;
      tag.color = SwfUtils.colorToInt(color);
    }
  }

    public void setLayout(int align, int leftMargin, int rightMargin, int indent, int leading)
  {
    tag.hasLayout = true;
    if (align < 0 || align > 3)
      throw new RuntimeException("Invalid alignment.");
    tag.align = align;
    tag.leftMargin = leftMargin;
    tag.rightMargin = rightMargin;
    tag.ident = indent;
    tag.leading = leading;
  }

  public void setBounds(Rect r)
  {
    tag.bounds = r;
  }


  public void setInitialText(String text) throws IOException
  {
    if (text != null)
    {
      tag.hasText = true;
      tag.initialText = text;

      if (tag.bounds == null)
      {
/*
        Font font = fontBuilder.getFont().deriveFont((float)tag.height/20);
        TextLayout layout = new TextLayout(text, font, fontBuilder.getFontRenderContext());
        Rectangle2D bs = layout.getBounds();
        tag.bounds = new Rect(SwfUtils.toTwips(bs.getMinX()),
                    SwfUtils.toTwips(bs.getMaxX()),
                    SwfUtils.toTwips(bs.getMinY()),
                    SwfUtils.toTwips(bs.getMaxY()));
*/


        //TODO: need to find a better way to set the text bounds
        tag.bounds.yMax = tag.bounds.yMax * 3; //The logical bounds includes padding above and below of the actual bounding box
        tag.bounds.xMax = tag.bounds.xMax * 2;
      }
    }
  }

  private DefineEditText tag;
  private FontBuilder fontBuilder;
}
TOP

Related Classes of flash.swf.builder.tags.EditTextBuilder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.