|  |
KG-Group Internet Start Pages
JR貨物/日本通運連盟 おもしろWebより
DownLoad carouselblit.lzh(ソースコード付き)
////////////////////////////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////
// Carousel_VerticalViewer Applet / I-ichirow Suzuki
// carousel_verttext.java
//
import java.applet.Applet;
import java.applet.AppletContext;
import java.awt.*;
import java.awt.image.MemoryImageSource;
import java.io.PrintStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.StringTokenizer;
//-------------------------------------------------------------------------------------------------
public class carousel_verttext extends Applet implements Runnable
{
Image Picture[];
carouselimage My2DImage[];
Image HandPicture;
carouselimage My2DHand;
int HandFrameLimit;
Image Picture2[];
carouselimage My2DImage2[];
String PicName[];
String URLName[];
String FrameName[];
String Header[];
String Text[];
byte URLKind[];
carouselscreen Screen;
Color ScreenColor;
private URL theURL;
Thread runner;
int ytable[];
int xtable[];
int WheelHeight;
int WheelHeightXTwo;
float WheelTilt;
int ShadeMult;
int MaxRamp;
int NumImages;
int TopOffset;
int BigAccum;
int IncAmount;
int URLNum;
int LastURL;
int mousex;
int mousey;
int lastmousey;
boolean TransparentImage;
int LastImage;
boolean WheelGrabbed;
int WheelGrabAmount;
float GrabScale;
short AbortCode;
int ImageError;
int LargestImageX;
int AddedTiltWidth;
int TextLeader;
int FontSize1;
int FontSize2;
Color FontColor1;
Color FontColor2;
String Font1Name;
String Font2Name;
boolean ShowHand;
String ErrorMess;
//--------------------------------------------------------------------
public carousel_verttext()
{
HandFrameLimit = 2;
ScreenColor = new Color(255, 255, 255);
WheelHeight = 250;
WheelHeightXTwo = WheelHeight * 2;
WheelTilt = 0.04F;
ShadeMult = 600;
MaxRamp = 235;
NumImages = 5;
TopOffset = 2;
IncAmount = 6;
TransparentImage = true;
LastImage = -1;
WheelGrabbed = false;
GrabScale = 1.0F;
TextLeader = 5;
FontSize1 = 13;
FontSize2 = 12;
FontColor1 = new Color(0, 127, 0);
FontColor2 = new Color(0, 0, 0);
Font1Name = new String("Serif");
Font2Name = new String("Serif");
ShowHand = true;
ErrorMess = new String();
}
//--------------------------------------------------------------------
public void DoErrorMessage(String s)
{
setForeground(new Color(0, 0, 0));
System.out.println(s);
showStatus(s);
ErrorMess = s;
}
//--------------------------------------------------------------------
public void ParseError(Graphics g, String s)
{
g.setFont(new Font("", 1, 12));
int i = 12;
String s1 = new String();
String s2 = new String();
StringTokenizer stringtokenizer = new StringTokenizer(s, " ");
int j;
if(stringtokenizer != null)
j = stringtokenizer.countTokens();
else
j = 0;
if(j > 0)
{
for(int k = 0; k < j; k++)
{
String s3 = (String)stringtokenizer.nextElement();
if(g.getFontMetrics().stringWidth(s1 + s3) + 5 < size().width)
{
s1 = s1 + s3 + " ";
} else
{
i += 12;
g.drawString(s1, 5, i);
s1 = s3 + " ";
}
}
i += 12;
g.drawString(s1, 5, i);
}
}
//--------------------------------------------------------------------
public void NewCheeseWheel()
{
int l1 = -999;
String s = new String();
LastURL = URLNum = mousex = mousey = 0;
LastImage = -1;
if(size().width * size().height < 60000)
{
AbortCode = 4;
return;
}
if(getParameter("numimages") != null)
{
NumImages = Integer.parseInt(getParameter("numimages"), 10);
} else
{
AbortCode = 1;
return;
}
if(NumImages < 2)
{
AbortCode = 5;
return;
}
if(getParameter("headerfontsize") != null)
FontSize1 = Integer.parseInt(getParameter("headerfontsize"), 10);
if(getParameter("textfontsize") != null)
FontSize2 = Integer.parseInt(getParameter("textfontsize"), 10);
if(getParameter("headerfontcolor") != null)
FontColor1 = new Color(Integer.parseInt(getParameter("headerfontcolor"), 16));
if(getParameter("textfontcolor") != null)
FontColor2 = new Color(Integer.parseInt(getParameter("textfontcolor"), 16));
if(getParameter("headerfontname") != null)
Font1Name = getParameter("headerfontname");
if(getParameter("textfontname") != null)
Font2Name = getParameter("textfontname");
if(getParameter("backcolor") != null)
ScreenColor = new Color(Integer.parseInt(getParameter("backcolor"), 16));
if(getParameter("speed") != null)
{
String s1 = new String(getParameter("speed"));
if(s1.compareTo("low") == 0)
IncAmount = 1;
else
if(s1.compareTo("medium") == 0)
IncAmount = 3;
else
if(s1.compareTo("high") == 0)
IncAmount = 5;
}
if(getParameter("showhand") != null)
{
String s2 = new String(getParameter("showhand"));
if(s2.compareTo("no") == 0)
ShowHand = false;
}
if(getParameter("tilt") != null)
{
String s3 = new String(getParameter("tilt"));
if(s3.compareTo("none") == 0)
WheelTilt = 0.0F;
else
if(s3.compareTo("low") == 0)
WheelTilt = 0.01F;
else
if(s3.compareTo("medium") == 0)
WheelTilt = 0.04F;
else
if(s3.compareTo("high") == 0)
WheelTilt = 0.08F;
else
if(s3.compareTo("max") == 0)
WheelTilt = 0.5F;
}
if(getParameter("washout") != null)
{
String s4 = new String(getParameter("washout"));
if(s4.compareTo("none") == 0)
{
ShadeMult = 0;
MaxRamp = 0;
}
if(s4.compareTo("low") == 0)
{
ShadeMult = 400;
MaxRamp = 175;
}
if(s4.compareTo("medium") == 0)
{
ShadeMult = 600;
MaxRamp = 235;
}
if(s4.compareTo("high") == 0)
{
ShadeMult = 1000;
MaxRamp = 255;
}
}
PicName = new String[NumImages];
URLName = new String[NumImages];
FrameName = new String[NumImages];
URLKind = new byte[NumImages];
Header = new String[NumImages];
Text = new String[NumImages];
for(int i = 0; i < NumImages; i++)
{
if(getParameter("image" + (i + 1)) != null)
{
StringTokenizer stringtokenizer = new StringTokenizer(getParameter("image" + (i + 1)), ",");
PicName[i] = (String)stringtokenizer.nextElement();
try
{
URLName[i] = (String)stringtokenizer.nextElement();
}
catch(Exception _ex)
{
AbortCode = 2;
ImageError = i + 1;
return;
}
try
{
String s5 = new String((String)stringtokenizer.nextElement());
if(s5.compareTo("page") == 0)
URLKind[i] = 1;
else
if(s5.compareTo("frame") == 0)
URLKind[i] = 2;
if(s5.compareTo("window") == 0)
URLKind[i] = 3;
}
catch(Exception _ex)
{
AbortCode = 2;
ImageError = i + 1;
return;
}
try
{
if(URLKind[i] > 1)
FrameName[i] = new String((String)stringtokenizer.nextElement());
}
catch(Exception _ex)
{
AbortCode = 2;
ImageError = i + 1;
return;
}
} else
{
AbortCode = 3;
return;
}
if(getParameter("header" + (i + 1)) != null)
Header[i] = getParameter("header" + (i + 1));
else
Header[i] = " ";
if(getParameter("text" + (i + 1)) != null)
Text[i] = getParameter("text" + (i + 1));
else
Text[i] = " ";
}
Screen = new carouselscreen(size().width, size().height, ScreenColor);
Screen.setBackgroundColor(ScreenColor);
Picture = new Image[NumImages];
My2DImage = new carouselimage[NumImages];
Picture2 = new Image[NumImages];
My2DImage2 = new carouselimage[NumImages];
WheelHeight = size().height - 32;
WheelHeightXTwo = WheelHeight * 2;
int j2 = WheelHeightXTwo / NumImages;
int i2 = 0;
for(int j = 0; j < NumImages; j++)
{
Picture[j] = getImage(getCodeBase(), PicName[j]);
My2DImage[j] = new carouselimage(this, Picture[j], 0, i2, j + 1);
Picture2[j] = createImage(My2DImage[j].SizeX, My2DImage[j].SizeY);
Graphics g = Picture2[j].getGraphics();
g.setFont(new Font(Font1Name, 1, FontSize1));
g.setColor(ScreenColor);
int ai[] = new int[My2DImage[j].SizeX * My2DImage[j].SizeY];
int l2 = 0;
for(int i3 = 0; i3 < My2DImage[j].SizeY; i3++)
{
for(int j3 = 0; j3 < My2DImage[j].SizeX; j3++)
ai[l2++] = ScreenColor.getRGB();
}
Image image = createImage(new MemoryImageSource(My2DImage[j].SizeX, My2DImage[j].SizeY, ai, 0, My2DImage[j].SizeX));
g.drawImage(image, 0, 0, null);
int k2 = FontSize1 + 2;
g.setColor(FontColor1);
g.drawString(Header[j], TextLeader, k2);
String s6 = new String();
String s7 = new String();
StringTokenizer stringtokenizer1 = new StringTokenizer(Text[j], " ");
int j1;
if(stringtokenizer1 != null)
j1 = stringtokenizer1.countTokens();
else
j1 = 0;
if(j1 > 0)
{
g.setFont(new Font(Font2Name, 0, FontSize2));
g.setColor(FontColor2);
for(int k3 = 0; k3 < j1; k3++)
{
String s8 = (String)stringtokenizer1.nextElement();
if(g.getFontMetrics().stringWidth(s6 + s8) + TextLeader < My2DImage[j].SizeX)
{
s6 = s6 + s8 + " ";
} else
{
k2 += FontSize2;
g.drawString(s6, TextLeader, k2);
s6 = s8 + " ";
}
}
k2 += FontSize2;
g.drawString(s6, TextLeader, k2);
}
My2DImage2[j] = new carouselimage(this, Picture2[j], 0, i2 - (int)((float)My2DImage[j].SizeX - (float)My2DImage[j].SizeX), j + 1);
i2 += j2;
if(My2DImage[j].SizeX >= size().width || My2DImage[j].SizeY >= size().height)
{
AbortCode = 6;
return;
}
if(My2DImage[j].SizeX > LargestImageX)
LargestImageX = My2DImage[j].SizeX + 5;
}
HandPicture = getImage(getCodeBase(), "handv.gif");
My2DHand = new carouselimage(this, HandPicture, 0, 0, 0);
ytable = new int[WheelHeightXTwo];
xtable = new int[WheelHeightXTwo];
for(int k = 0; k < WheelHeight; k++)
{
xtable[k] = (int)(-Math.sqrt((((double)WheelHeight / 2D) * ((double)WheelHeight / 2D) - ((double)k - (double)WheelHeight / 2D) * ((double)k - (double)WheelHeight / 2D)) * (double)WheelTilt));
if(Math.abs(xtable[k]) > AddedTiltWidth)
AddedTiltWidth = Math.abs(xtable[k]);
ytable[k] = k + 1 + 10;
}
int k1 = WheelHeight - 1;
for(int l = WheelHeight; l < WheelHeightXTwo; l++)
{
xtable[l] = -xtable[l - WheelHeight];
ytable[l] = ytable[k1];
k1--;
if(xtable[l] > l1)
l1 = xtable[l];
}
for(int i1 = 0; i1 < WheelHeightXTwo; i1++)
xtable[i1] += l1 + TopOffset;
if(LargestImageX + 5 + AddedTiltWidth * 2 + TopOffset + 2 > size().width)
AbortCode = 7;
}
//--------------------------------------------------------------------
public void start()
{
showStatus("");
AbortCode = 0;
ImageError = lastmousey = LargestImageX = AddedTiltWidth = 0;
NewCheeseWheel();
setBackground(ScreenColor);
runner = new Thread(this);
runner.start();
if(AbortCode != 0)
switch(AbortCode)
{
case 1: // '\001'
DoErrorMessage("Error 1: Number of images NOT specified!");
return;
case 2: // '\002'
DoErrorMessage("Error 2: Bad format on image,url,type parameter! Error on image line# " + ImageError);
return;
case 3: // '\003'
DoErrorMessage("Error 3: Number of images found in directory does not match number of images specified!");
return;
case 4: // '\004'
DoErrorMessage("Error 4: This applet's minimum size is 200 pixels wide and 300 pixels tall, or any multiple thereof that is greater than 200 x 300. Please re-size the applet.");
return;
case 5: // '\005'
DoErrorMessage("Error 5: You must use at least 2 images in this applet!");
return;
case 6: // '\006'
DoErrorMessage("Error 6: Images cannot be larger than the specified size of the applet!");
return;
case 7: // '\007'
DoErrorMessage("Error 7: One or more images is too large when combined with the tilt factor. Increase the width of the applet by at least " + ((LargestImageX + AddedTiltWidth * 2 + TopOffset + 2) - size().width) + " pixels.");
return;
}
}
//--------------------------------------------------------------------
public boolean mouseMove(Event event, int i, int j)
{
if(AbortCode != 0 || runner == null)
return true;
if(!WheelGrabbed)
{
URLNum = Screen.GetXY(i, j);
if(URLNum != 0)
showStatus("Click To Connect To: " + URLName[URLNum - 1]);
else
showStatus("");
LastURL = URLNum;
mousex = i;
mousey = j;
}
return true;
}
//--------------------------------------------------------------------
public boolean mouseDrag(Event event, int i, int j)
{
if(AbortCode != 0 || runner == null)
return true;
if(WheelGrabbed)
{
WheelGrabAmount = (int)((float)(mousey - j) * GrabScale);
mousex = i;
mousey = j;
if(mousey - lastmousey > 0)
{
IncAmount = -Math.abs(IncAmount);
BigAccum = 0;
} else
if(mousey - lastmousey < 0)
{
IncAmount = Math.abs(IncAmount);
BigAccum = 0;
}
lastmousey = mousey;
}
return true;
}
//--------------------------------------------------------------------
public boolean mouseDown(Event event, int i, int j)
{
if(AbortCode != 0 || runner == null)
return true;
URLNum = Screen.GetXY(i, j);
if(URLNum != 0)
{
try
{
theURL = new URL(getCodeBase(), URLName[URLNum - 1]);
}
catch(MalformedURLException _ex)
{
showStatus("Bad URL!");
}
if(URLKind[URLNum - 1] == 1)
getAppletContext().showDocument(theURL);
else
getAppletContext().showDocument(theURL, FrameName[URLNum - 1]);
if(URLKind[URLNum - 1] == 1)
{
runner.stop();
runner = null;
}
} else
{
WheelGrabbed = true;
WheelGrabAmount = 0;
}
return true;
}
//--------------------------------------------------------------------
public boolean mouseUp(Event event, int i, int j)
{
WheelGrabbed = false;
return true;
}
//--------------------------------------------------------------------
public void stop()
{
if(runner != null)
runner.stop();
runner = null;
PicName = URLName = FrameName = null;
URLKind = null;
Picture = null;
My2DImage = null;
Screen = null;
ytable = xtable = null;
}
//--------------------------------------------------------------------
public void run()
{
while(runner != null)
if(AbortCode == 0)
{
synchronized(Screen)
{
repaint();
try
{
Screen.wait(20L);
}
catch(Exception _ex) { }
}
} else
{
ParseError(getGraphics(), ErrorMess);
stop();
}
}
//--------------------------------------------------------------------
public void update(Graphics g)
{
paint(g);
}
//--------------------------------------------------------------------
public void drawImageOnWheel(int i, carouselimage carouselimage1, int j, boolean flag, boolean flag1)
{
if(i < WheelHeight)
{
for(int k = carouselimage1.SizeY - 1; k >= 0; k--)
{
if(i < WheelHeight)
{
float f = (float)Math.abs(WheelHeight / 2 - i) * 2.0F;
f = (float)ShadeMult - (float)ShadeMult * (f / (float)WheelHeight);
if(f > (float)MaxRamp)
f = MaxRamp;
Screen.BlastSingleLineHorz(carouselimage1.TextureBits, xtable[i] + j, ytable[i], carouselimage1.SizeX, carouselimage1.SizeY, k, carouselimage1.ImageNum, flag, true, (int)f, flag1);
} else
{
Screen.BlastSingleLineHorz(carouselimage1.TextureBits, xtable[i] + j, ytable[i], carouselimage1.SizeX, carouselimage1.SizeY, k, carouselimage1.ImageNum, flag, false, 0, flag1);
}
if(++i >= WheelHeightXTwo)
i -= WheelHeightXTwo;
}
return;
}
i += carouselimage1.SizeY;
if(i >= WheelHeightXTwo)
i -= WheelHeightXTwo;
for(int l = 0; l < carouselimage1.SizeY; l++)
{
if(i < WheelHeight)
{
float f1 = (float)Math.abs(WheelHeight / 2 - i) * 2.0F;
f1 = (float)ShadeMult - (float)ShadeMult * (f1 / (float)WheelHeight);
if(f1 > (float)MaxRamp)
f1 = MaxRamp;
Screen.BlastSingleLineHorz(carouselimage1.TextureBits, xtable[i] + j, ytable[i], carouselimage1.SizeX, carouselimage1.SizeY, l, carouselimage1.ImageNum, flag, true, (int)f1, flag1);
} else
{
Screen.BlastSingleLineHorz(carouselimage1.TextureBits, xtable[i] + j, ytable[i], carouselimage1.SizeX, carouselimage1.SizeY, l, carouselimage1.ImageNum, flag, false, 0, flag1);
}
if(--i < 0)
i += WheelHeightXTwo;
}
}
//--------------------------------------------------------------------
public void drawHand(carouselimage carouselimage1)
{
for(int i = 0; i < carouselimage1.SizeY; i++)
if((mousey + i) - carouselimage1.SizeY / 2 > 0 && (mousey + i) - carouselimage1.SizeY / 2 < size().height && mousex - carouselimage1.SizeX > 0 && mousex < size().width)
Screen.BlastSingleLineHorz(carouselimage1.TextureBits, mousex - carouselimage1.SizeX, (mousey + i) - carouselimage1.SizeY / 2, carouselimage1.SizeX, carouselimage1.SizeY, i, (byte)0, false, false, 0, true);
}
//--------------------------------------------------------------------
public synchronized void paint(Graphics g)
{
if(AbortCode != 0 || Screen == null)
return;
synchronized(Screen)
{
URLNum = Screen.GetXY(mousex, mousey);
if(URLNum != 0 && URLNum != LastURL)
showStatus("Click To Connect To: " + URLName[URLNum - 1]);
else
if(URLNum == 0)
showStatus("");
LastURL = URLNum;
if(!WheelGrabbed)
{
BigAccum += Math.abs(IncAmount);
if(BigAccum >= WheelHeightXTwo)
{
IncAmount *= -1D;
BigAccum = 0;
}
}
Screen.clearDisplay();
int i2 = WheelHeight;
if(!WheelGrabbed)
{
for(int i = 0; i < NumImages; i++)
{
My2DImage[i].WheelPos += IncAmount;
My2DImage2[i].WheelPos += IncAmount;
if(My2DImage[i].WheelPos >= WheelHeightXTwo - 1)
My2DImage[i].WheelPos -= WheelHeightXTwo;
if(My2DImage[i].WheelPos < 0)
My2DImage[i].WheelPos = WheelHeightXTwo + My2DImage[i].WheelPos;
if(My2DImage2[i].WheelPos >= WheelHeightXTwo - 1)
My2DImage2[i].WheelPos -= WheelHeightXTwo;
if(My2DImage2[i].WheelPos < 0)
My2DImage2[i].WheelPos = WheelHeightXTwo + My2DImage2[i].WheelPos;
}
} else
if(WheelGrabAmount != 0)
{
for(int j = 0; j < NumImages; j++)
{
My2DImage[j].WheelPos += WheelGrabAmount;
My2DImage2[j].WheelPos += WheelGrabAmount;
if(My2DImage[j].WheelPos >= WheelHeightXTwo - 1)
My2DImage[j].WheelPos -= WheelHeightXTwo;
if(My2DImage[j].WheelPos < 0)
My2DImage[j].WheelPos = WheelHeightXTwo + My2DImage[j].WheelPos;
if(My2DImage[j].WheelPos >= WheelHeight)
{
int j2 = Math.abs((My2DImage[j].WheelPos + (My2DImage[j].SizeX >> 1)) - (int)((double)(float)WheelHeightXTwo * 0.75D));
if(j2 < i2)
{
i2 = j2;
int l2 = j;
}
}
if(My2DImage2[j].WheelPos >= WheelHeightXTwo - 1)
My2DImage2[j].WheelPos -= WheelHeightXTwo;
if(My2DImage2[j].WheelPos < 0)
My2DImage2[j].WheelPos = WheelHeightXTwo + My2DImage2[j].WheelPos;
if(My2DImage2[j].WheelPos >= WheelHeight)
{
int k2 = Math.abs((My2DImage2[j].WheelPos + (My2DImage2[j].SizeX >> 1)) - (int)((double)(float)WheelHeightXTwo * 0.75D));
if(k2 < i2)
{
i2 = k2;
int i3 = j;
}
}
}
}
for(int k = 0; k < NumImages; k++)
{
int j1 = My2DImage[k].WheelPos + My2DImage[k].SizeY;
if(My2DImage[k].WheelPos < WheelHeight && j1 <= WheelHeightXTwo - 1 && j1 <= WheelHeight - 1)
{
drawImageOnWheel(My2DImage[k].WheelPos, My2DImage[k], 0, true, TransparentImage);
drawImageOnWheel(My2DImage2[k].WheelPos, My2DImage2[k], LargestImageX, false, false);
}
}
for(int l = 0; l < NumImages; l++)
{
int k1 = My2DImage[l].WheelPos + My2DImage[l].SizeY;
if(k1 > WheelHeightXTwo - 1 || k1 > WheelHeight - 1 && My2DImage[l].WheelPos < WheelHeight)
{
drawImageOnWheel(My2DImage2[l].WheelPos, My2DImage2[l], LargestImageX, false, false);
drawImageOnWheel(My2DImage[l].WheelPos, My2DImage[l], 0, true, TransparentImage);
}
}
for(int i1 = 0; i1 < NumImages; i1++)
{
int l1 = My2DImage[i1].WheelPos + My2DImage[i1].SizeY;
if(My2DImage[i1].WheelPos >= WheelHeight && l1 <= WheelHeightXTwo - 1)
{
drawImageOnWheel(My2DImage[i1].WheelPos, My2DImage[i1], 0, true, TransparentImage);
drawImageOnWheel(My2DImage2[i1].WheelPos, My2DImage2[i1], LargestImageX, false, false);
}
}
if(ShowHand && (URLNum == 0 || WheelGrabbed))
drawHand(My2DHand);
Image image = createImage(Screen.Fis);
g.drawImage(image, 0, 0, null);
image.flush();
getToolkit().sync();
}
WheelGrabAmount = 0;
try
{
Screen.notify();
return;
}
catch(Exception _ex)
{
return;
}
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////
// carouselscreen.java
//
import java.awt.Color;
import java.awt.image.*;
import java.io.PrintStream;
//---------------------------------------------------------------------------------------------------
public class carouselscreen
{
public int PixBlit[];
public int BPixBlit[];
public int ArraySize;
public byte IBlit[];
public byte BIBlit[];
public FilteredImageSource Fis;
public int Height;
public int Width;
int BackColor;
int tr;
int tg;
int tb;
//------------------------------------------------------------------
public carouselscreen(int i, int j, Color color)
{
ArraySize = i * j;
PixBlit = new int[ArraySize];
BPixBlit = new int[ArraySize];
IBlit = new byte[ArraySize];
BIBlit = new byte[ArraySize];
Height = j;
Width = i;
synchronized(this)
{
DirectColorModel directcolormodel = new DirectColorModel(24, 0xff0000, 65280, 255);
for(int k = 0; k < ArraySize; k++)
{
PixBlit[k] = BPixBlit[k] = BackColor;
IBlit[k] = BIBlit[k] = 0;
}
MemoryImageSource memoryimagesource = new MemoryImageSource(Width, Height, directcolormodel, PixBlit, 0, Width);
Fis = new FilteredImageSource(memoryimagesource, new carouselblit(directcolormodel, PixBlit));
}
tr = color.getRed();
tg = color.getGreen();
tb = color.getBlue();
}
//------------------------------------------------------------------
public void clearDisplay()
{
System.arraycopy(BPixBlit, 0, PixBlit, 0, ArraySize);
System.arraycopy(BIBlit, 0, IBlit, 0, ArraySize);
}
//------------------------------------------------------------------
public void setBackgroundColor(Color color)
{
BackColor = (color.getRed() << 16) + (color.getGreen() << 8) + color.getBlue();
for(int i = 0; i < ArraySize; i++)
BPixBlit[i] = BackColor;
}
//------------------------------------------------------------------
public void BlastSingleLineVert(int ai[], int i, int j, int k, int l, int i1, byte byte0,
boolean flag, int j1, boolean flag1)
{
int j2 = i + j * Width;
int i2 = i1;
if(!flag)
{
for(int k1 = 0; k1 < l; k1++)
{
int j3 = ai[i2] & 0xff000000;
if(!flag1 || j3 != 0)
PixBlit[j2] = ai[i2];
IBlit[j2] = byte0;
i2 += k;
j2 += Width;
}
return;
}
for(int l1 = 0; l1 < l; l1++)
{
int k3 = ai[i2] & 0xff000000;
if(!flag1 || k3 != 0)
{
int k2 = ai[i2] & 0xff0000;
int l2 = ai[i2] & 0xff00;
int i3 = ai[i2] & 0xff;
k2 >>= 16;
l2 >>= 8;
float f = k2 - tr;
f *= (float)j1 / 255F;
k2 -= (int)f;
float f1 = l2 - tg;
f1 *= (float)j1 / 255F;
l2 -= (int)f1;
float f2 = i3 - tb;
f2 *= (float)j1 / 255F;
i3 -= (int)f2;
if(k2 > 255)
k2 = 255;
else
if(k2 < 0)
k2 = 0;
if(l2 > 255)
l2 = 255;
else
if(l2 < 0)
l2 = 0;
if(i3 > 255)
i3 = 255;
else
if(i3 < 0)
i3 = 0;
PixBlit[j2] = (k2 << 16) + (l2 << 8) + i3;
}
IBlit[j2] = byte0;
i2 += k;
j2 += Width;
}
}
//------------------------------------------------------------------
public void BlastSingleLineHorz(int ai[], int i, int j, int k, int l, int i1, byte byte0, boolean flag, boolean flag1, int j1, boolean flag2)
{
int j2 = i + j * Width;
int i2 = i1 * k;
for(int l3 = 0; l3 < k; l3++)
IBlit[j2 + l3] = byte0;
if(!flag1)
{
for(int k1 = 0; k1 < k; k1++)
{
int j3 = ai[i2] & 0xff000000;
if(!flag2 || j3 != 0)
PixBlit[j2] = ai[i2];
if(flag)
IBlit[j2] = byte0;
i2++;
j2++;
}
return;
}
for(int l1 = 0; l1 < k; l1++)
{
int k3 = ai[i2] & 0xff000000;
if(!flag2 || k3 != 0)
{
int k2 = ai[i2] & 0xff0000;
int l2 = ai[i2] & 0xff00;
int i3 = ai[i2] & 0xff;
k2 >>= 16;
l2 >>= 8;
float f = k2 - tr;
f *= (float)j1 / 255F;
k2 -= (int)f;
float f1 = l2 - tg;
f1 *= (float)j1 / 255F;
l2 -= (int)f1;
float f2 = i3 - tb;
f2 *= (float)j1 / 255F;
i3 -= (int)f2;
if(k2 > 255)
k2 = 255;
else
if(k2 < 0)
k2 = 0;
if(l2 > 255)
l2 = 255;
else
if(l2 < 0)
l2 = 0;
if(i3 > 255)
i3 = 255;
else
if(i3 < 0)
i3 = 0;
PixBlit[j2] = (k2 << 16) + (l2 << 8) + i3;
}
if(flag)
IBlit[j2] = byte0;
i2++;
j2++;
}
}
//------------------------------------------------------------------
public void BlastSinglePix(int i, int j, int k, int l, int i1)
{
if(l >= 0 && l < Width && i1 >= 0 && i1 < Height)
PixBlit[l + i1 * Width] = (i << 16) + (j << 8) + k;
}
//------------------------------------------------------------------
public int GetXY(int i, int j)
{
if(i >= 0 && i < Width && j >= 0 && j < Height)
return IBlit[i + j * Width];
else
return 0;
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////
// carouselimage.java
//
import java.awt.*;
import java.awt.image.ImageConsumer;
import java.awt.image.PixelGrabber;
import java.io.PrintStream;
//----------------------------------------------------------------------------------------------------
public class carouselimage
{
public int TextureBits[];
public long TotalSize;
public short SizeX;
public short SizeY;
public int WheelPos;
public byte ImageNum;
//------------------------------------------------------------
public carouselimage(Component component, Image image, int i, int j, int k)
{
MediaTracker mediatracker = new MediaTracker(component);
mediatracker.addImage(image, 0);
try
{
mediatracker.waitForID(0, 60000L);
}
catch(Exception _ex) {}
SizeX = (short)image.getWidth(null);
SizeY = (short)image.getHeight(null);
int ai[] = new int[SizeX * SizeY];
PixelGrabber pixelgrabber = new PixelGrabber(image, 0, 0, SizeX, SizeY, ai, 0, SizeX);
pixelgrabber.setHints(12);
try
{
pixelgrabber.grabPixels();
}
catch(InterruptedException _ex) {}
TextureBits = new int[SizeX * SizeY];
TotalSize = (long)SizeX * (long)SizeY;
WheelPos = j;
ImageNum = (byte)k;
for(int l = 0; (long)l < TotalSize; l++)
{
TextureBits[l] = ai[l];
}
}
}
/////////////////////////////////////////////////////////////////////////////////////////////////////////
// carouselblit.java
//
import java.awt.image.*;
import java.io.PrintStream;
//-------------------------------------------------------------------------------------------------------
public class carouselblit extends ImageFilter
{
DirectColorModel cm;
int pix[];
int Height;
int Width;
//--------------------------------------------------------------
public carouselblit(DirectColorModel directcolormodel, int ai[])
{
cm = directcolormodel;
pix = ai;
}
//--------------------------------------------------------------
public void setDimensions(int i, int j)
{
Height = j;
Width = i;
consumer.setDimensions(i, j);
}
//--------------------------------------------------------------
public void setHints(int i)
{
consumer.setHints(12);
}
//--------------------------------------------------------------
public void imageComplete(int i)
{
consumer.setPixels(0, 0, Width, Height, cm, pix, 0, Width);
consumer.imageComplete(3);
}
}
インターネットスタートページ 鈴木維一郎 石橋三重子
|
|
|
|
|
|