📄 taftb.java
字号:
package javazoom.jlGui.skin;
/**
* taftb.
*
*-----------------------------------------------------------------------
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*----------------------------------------------------------------------
*/
import java.awt.*;
import java.awt.image.*;
/**
* taftb is used to build gif image from graphical fonts.
*
* @author E.B from JavaZOOM
*
* Homepage : http://www.javazoom.net
*/
public class taftb extends Panel
{
public Image theFonts;
private int imageW;
private int imageH;
private int fontWidth;
private int fontHeight;
private int Yspacing;
protected Image theBanner;
protected int pixels[];
private PixelGrabber pg;
private String theText;
/**
* Text banner building according to the alphabet index, font size and Y spacing.
*/
public taftb(String alphaIndex, Image fontFile, int fontW, int fontH, int Yspc, String theTxt/*, Color BgValue*/)
{
fontWidth = fontW;
fontHeight = fontH;
Yspacing = Yspc;
theText = theTxt;
theFonts = fontFile;
imageW = theFonts.getWidth(this);
imageH = theFonts.getHeight(this);
/*-- We create the TextBanner by grabbing font letters in the image fonts --*/
pixels = new int[theText.length() * fontW * fontH];
int SpacePosition = 0;
int offsetSp = 0;
/*-- We search the space position in the Alphabet index --*/
while ( (offsetSp < alphaIndex.length()) && (alphaIndex.charAt(offsetSp) != ' ') )
{offsetSp++;}
if (offsetSp < alphaIndex.length()) SpacePosition = offsetSp;
for (int offsetT = 0;offsetT < theText.length(); offsetT++)
{
int xPos = 0;
int yPos = 0;
int reste = 0;
int entie = 0;
int offsetA = 0;
int FontPerLine = (int) Math.rint((imageW/fontW));
/*-- We search the letter's position in the Alphabet index --*/
while ( (offsetA < alphaIndex.length()) && (theText.charAt(offsetT) != alphaIndex.charAt(offsetA)) )
{
offsetA++;
}
/*-- We deduce its image's position (Int forced) --*/
if (offsetA < alphaIndex.length())
{
reste = offsetA % FontPerLine;
entie = (offsetA - reste);
xPos = reste * fontW;
yPos = ((entie/FontPerLine) * fontH) + ((entie/FontPerLine)*Yspacing);
}
else
/*-- If the letter is not indexed the space (if available) is selected --*/
{
reste = SpacePosition % FontPerLine;
entie = (SpacePosition- reste);
xPos = reste * fontW;
yPos = ((entie/FontPerLine) * fontH) + ((entie/FontPerLine)*Yspacing);
}
/*-- We grab the letter in the font image and put it in a pixel array --*/
pg = new PixelGrabber(theFonts, xPos, yPos, fontW, fontH, pixels, offsetT*fontW, theText.length()*fontW);
try
{
pg.grabPixels();
} catch (InterruptedException e)
{
}
}
/*-- We create the final Image Banner throught an Image --*/
theBanner = createImage(new MemoryImageSource(theText.length()*fontW, fontH, pixels, 0, theText.length()*fontW));
}
/**
* Returns final banner as an image.
*/
public Image getBanner()
{
return theBanner;
}
/**
* Returns final banner as cropped image.
*/
public Image getBanner(int x, int y, int sx, int sy)
{
Image cropBanner = null;
CropImageFilter cif = new CropImageFilter(x,y,sx,sy);
cropBanner = createImage(new FilteredImageSource(theBanner.getSource(),cif));
return cropBanner;
}
/**
* Returns final banner as a pixels array.
*/
public int[] getPixels()
{
return pixels;
}
/**
* Returns banner's length.
*/
public int getPixelsW()
{
return theText.length()*fontWidth;
}
/**
* Returns banner's height.
*/
public int getPixelsH()
{
return fontHeight;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -