Internet Start Page  TOP  
 Road of Developers
 
   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);
    }
}



インターネットスタートページ 鈴木維一郎 石橋三重子
        
         
               
                   


©2000 kg-group Inc.