All pastes #262041 Raw Edit

Anonymous

public text v1 · immutable
#262041 ·published 2006-11-30 02:46 UTC
rendered paste body
    public void computeComponentSize() {
        // get our newly dragged out frame size
        Rectangle rFrameSize = this.getBounds();
        
        // the following is true if going to or coming from a maximized state
        if ((this.getExtendedState() & Frame.MAXIMIZED_BOTH) == Frame.MAXIMIZED_BOTH) {
            //e we determine if we ae going to or coming from
            if ((previousFrameState & Frame.MAXIMIZED_BOTH) == Frame.MAXIMIZED_BOTH) {
                rFrameSize = savedFrameSize;
                previousFrameState = 0;
            } else {
                previousFrameState = this.getExtendedState();
            }
        } else {
            previousFrameState = 0;
            savedFrameSize.height = rFrameSize.height;
            savedFrameSize.width = rFrameSize.width;
            savedFrameSize.x = MainWindow.pUpperLeftCorner.x;
            savedFrameSize.y = MainWindow.pUpperLeftCorner.y;
        }

        // this is the amount of space we can fill with images
        Dimension dPanelSize = new Dimension(rFrameSize.width - dOccupiedSpace.width,
                rFrameSize.height - dOccupiedSpace.height);

        long lArea = dPanelSize.width * dPanelSize.height;

        if (lArea <= 0)
            return;

        /* this computation is used to get a starting point for determing what the size of our
           images should be:
           namely, Area = Height * Width, h=w *(3/4), a = w^2 * (3/4),
           w = sqrt((4/3) a), so w = w * sqrt(a/3)
         */
        int iWidth = (new Double(2 * Math.sqrt(lArea / (MainWindow.iNbrImages * 3)))).intValue();
        int iHeight = iWidth * 3 / 4;

        int iNbrAcross = dPanelSize.width / iWidth;

        if (iNbrAcross == 0)
            ++iNbrAcross;

        int iNbrDown = MainWindow.iNbrImages / iNbrAcross; // might be even

        if (iNbrDown * iNbrAcross != MainWindow.iNbrImages)
            ++iNbrDown;

        while (((iNbrAcross * iWidth) > dPanelSize.width)
                || ((iNbrDown * iHeight) > dPanelSize.height)
                ) {
            iHeight = --iWidth * 3 / 4;
            iNbrAcross = dPanelSize.width / iWidth;

            if (iNbrAcross == 0)
                ++iNbrAcross;
            else if (iNbrAcross > MainWindow.iNbrImages)
                iNbrAcross = MainWindow.iNbrImages;

            iNbrDown = MainWindow.iNbrImages / iNbrAcross;

            if (iNbrDown * iNbrAcross != MainWindow.iNbrImages)
                ++iNbrDown;
        }

        nd.setSize(iWidth * iNbrAcross, iHeight * iNbrDown);
        CameraImage.dimension = new Dimension(iWidth, iHeight);

        this.setBounds(rFrameSize.x, rFrameSize.y,
                nd.width + dOccupiedSpace.width, nd.height + dOccupiedSpace.height);
    }