⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sheetdrawingwriter.java

📁 实现JAVA界面的代码GWT
💻 JAVA
字号:
// Decompiled by Jad v1.5.7g. Copyright 2000 Pavel Kouznetsov.
// Jad home page: http://www.geocities.com/SiliconValley/Bridge/8617/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi 
// Source File Name:   SheetDrawingWriter.java

package jxl.biff.drawing;

import common.Logger;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import jxl.WorkbookSettings;
import jxl.biff.IntegerHelper;
import jxl.write.biff.File;

// Referenced classes of package jxl.biff.drawing:
//            Chart, DrawingGroupObject, DgContainer, Dg, 
//            SpgrContainer, SpContainer, Spgr, Sp, 
//            MsoDrawingRecord, EscherContainer, Origin, ShapeType

public class SheetDrawingWriter
{

    private static Logger logger;
    private ArrayList drawings;
    private boolean drawingsModified;
    private Chart charts[];
    private WorkbookSettings workbookSettings;
    static Class class$jxl$biff$drawing$SheetDrawingWriter; /* synthetic field */

    public SheetDrawingWriter(WorkbookSettings ws)
    {
        charts = new Chart[0];
    }

    public void setDrawings(ArrayList dr, boolean mod)
    {
        drawings = dr;
        drawingsModified = mod;
    }

    public void write(File outputFile)
        throws IOException
    {
        if(drawings.size() == 0 && charts.length == 0)
            return;
        boolean modified = drawingsModified;
        int numImages = drawings.size();
        Iterator i = drawings.iterator();
        do
        {
            if(!i.hasNext() || modified)
                break;
            DrawingGroupObject d = (DrawingGroupObject)i.next();
            if(d.getOrigin() != Origin.READ)
                modified = true;
        } while(true);
        if(numImages > 0 && !modified)
        {
            DrawingGroupObject d2 = (DrawingGroupObject)drawings.get(0);
            if(!d2.isFirst())
                modified = true;
        }
        if(numImages == 0 && charts.length == 1 && charts[0].getMsoDrawingRecord() == null)
            modified = false;
        if(!modified)
        {
            writeUnmodified(outputFile);
            return;
        }
        Object spContainerData[] = new Object[numImages + charts.length];
        int length = 0;
        EscherContainer firstSpContainer = null;
        for(int i = 0; i < numImages; i++)
        {
            DrawingGroupObject drawing = (DrawingGroupObject)drawings.get(i);
            EscherContainer spc = drawing.getSpContainer();
            if(spc == null)
                continue;
            byte data[] = spc.getData();
            spContainerData[i] = data;
            if(i == 0)
                firstSpContainer = spc;
            else
                length += data.length;
        }

        for(int i = 0; i < charts.length; i++)
        {
            EscherContainer spContainer = charts[i].getSpContainer();
            byte data[] = spContainer.getBytes();
            data = spContainer.setHeaderData(data);
            spContainerData[i + numImages] = data;
            if(i == 0 && numImages == 0)
                firstSpContainer = spContainer;
            else
                length += data.length;
        }

        DgContainer dgContainer = new DgContainer();
        Dg dg = new Dg(numImages + charts.length);
        dgContainer.add(dg);
        SpgrContainer spgrContainer = new SpgrContainer();
        SpContainer spContainer = new SpContainer();
        Spgr spgr = new Spgr();
        spContainer.add(spgr);
        Sp sp = new Sp(ShapeType.MIN, 1024, 5);
        spContainer.add(sp);
        spgrContainer.add(spContainer);
        spgrContainer.add(firstSpContainer);
        dgContainer.add(spgrContainer);
        byte firstMsoData[] = dgContainer.getData();
        int len = IntegerHelper.getInt(firstMsoData[4], firstMsoData[5], firstMsoData[6], firstMsoData[7]);
        IntegerHelper.getFourBytes(len + length, firstMsoData, 4);
        len = IntegerHelper.getInt(firstMsoData[28], firstMsoData[29], firstMsoData[30], firstMsoData[31]);
        IntegerHelper.getFourBytes(len + length, firstMsoData, 28);
        if(numImages > 0 && ((DrawingGroupObject)drawings.get(0)).isFormObject())
        {
            byte msodata2[] = new byte[firstMsoData.length - 8];
            System.arraycopy(firstMsoData, 0, msodata2, 0, msodata2.length);
            firstMsoData = msodata2;
        }
        MsoDrawingRecord msoDrawingRecord = new MsoDrawingRecord(firstMsoData);
        outputFile.write(msoDrawingRecord);
        if(numImages > 0)
        {
            DrawingGroupObject firstDrawing = (DrawingGroupObject)drawings.get(0);
            firstDrawing.writeAdditionalRecords(outputFile);
        } else
        {
            Chart chart = charts[0];
            ObjRecord objRecord = chart.getObjRecord();
            outputFile.write(objRecord);
            outputFile.write(chart);
        }
        for(int i = 1; i < spContainerData.length; i++)
        {
            byte bytes[] = (byte[])spContainerData[i];
            if(i < numImages && ((DrawingGroupObject)drawings.get(i)).isFormObject())
            {
                byte bytes2[] = new byte[bytes.length - 8];
                System.arraycopy(bytes, 0, bytes2, 0, bytes2.length);
                bytes = bytes2;
            }
            msoDrawingRecord = new MsoDrawingRecord(bytes);
            outputFile.write(msoDrawingRecord);
            if(i < numImages)
            {
                DrawingGroupObject d = (DrawingGroupObject)drawings.get(i);
                d.writeAdditionalRecords(outputFile);
            } else
            {
                Chart chart = charts[i - numImages];
                ObjRecord objRecord = chart.getObjRecord();
                outputFile.write(objRecord);
                outputFile.write(chart);
            }
        }

        DrawingGroupObject dgo2;
        for(Iterator i = drawings.iterator(); i.hasNext(); dgo2.writeTailRecords(outputFile))
            dgo2 = (DrawingGroupObject)i.next();

    }

    private void writeUnmodified(File outputFile)
        throws IOException
    {
        if(charts.length == 0 && drawings.size() == 0)
            return;
        if(charts.length == 0 && drawings.size() != 0)
        {
            DrawingGroupObject d;
            for(Iterator i = drawings.iterator(); i.hasNext(); d.writeAdditionalRecords(outputFile))
            {
                d = (DrawingGroupObject)i.next();
                outputFile.write(d.getMsoDrawingRecord());
            }

            DrawingGroupObject d;
            for(Iterator i = drawings.iterator(); i.hasNext(); d.writeTailRecords(outputFile))
                d = (DrawingGroupObject)i.next();

            return;
        }
        if(drawings.size() == 0 && charts.length != 0)
        {
            Chart curChart = null;
            for(int i = 0; i < charts.length; i++)
            {
                curChart = charts[i];
                if(curChart.getMsoDrawingRecord() != null)
                    outputFile.write(curChart.getMsoDrawingRecord());
                if(curChart.getObjRecord() != null)
                    outputFile.write(curChart.getObjRecord());
                outputFile.write(curChart);
            }

            return;
        }
        int numDrawings = drawings.size();
        int length = 0;
        EscherContainer spContainers[] = new EscherContainer[numDrawings + charts.length];
        boolean isFormObject[] = new boolean[numDrawings + charts.length];
        for(int i = 0; i < numDrawings; i++)
        {
            DrawingGroupObject d = (DrawingGroupObject)drawings.get(i);
            spContainers[i] = d.getSpContainer();
            if(i > 0)
                length += spContainers[i].getLength();
            if(d.isFormObject())
                isFormObject[i] = true;
        }

        for(int i = 0; i < charts.length; i++)
        {
            spContainers[i + numDrawings] = charts[i].getSpContainer();
            length += spContainers[i + numDrawings].getLength();
        }

        DgContainer dgContainer = new DgContainer();
        Dg dg = new Dg(numDrawings + charts.length);
        dgContainer.add(dg);
        SpgrContainer spgrContainer = new SpgrContainer();
        SpContainer spContainer = new SpContainer();
        Spgr spgr = new Spgr();
        spContainer.add(spgr);
        Sp sp = new Sp(ShapeType.MIN, 1024, 5);
        spContainer.add(sp);
        spgrContainer.add(spContainer);
        spgrContainer.add(spContainers[0]);
        dgContainer.add(spgrContainer);
        byte firstMsoData[] = dgContainer.getData();
        int len = IntegerHelper.getInt(firstMsoData[4], firstMsoData[5], firstMsoData[6], firstMsoData[7]);
        IntegerHelper.getFourBytes(len + length, firstMsoData, 4);
        len = IntegerHelper.getInt(firstMsoData[28], firstMsoData[29], firstMsoData[30], firstMsoData[31]);
        IntegerHelper.getFourBytes(len + length, firstMsoData, 28);
        if(isFormObject[0])
        {
            byte cbytes[] = new byte[firstMsoData.length - 8];
            System.arraycopy(firstMsoData, 0, cbytes, 0, cbytes.length);
            firstMsoData = cbytes;
        }
        MsoDrawingRecord msoDrawingRecord = new MsoDrawingRecord(firstMsoData);
        outputFile.write(msoDrawingRecord);
        DrawingGroupObject dgo = (DrawingGroupObject)drawings.get(0);
        dgo.writeAdditionalRecords(outputFile);
        for(int i = 1; i < spContainers.length; i++)
        {
            byte bytes[] = spContainers[i].getBytes();
            byte bytes2[] = spContainers[i].setHeaderData(bytes);
            if(isFormObject[i])
            {
                byte cbytes[] = new byte[bytes2.length - 8];
                System.arraycopy(bytes2, 0, cbytes, 0, cbytes.length);
                bytes2 = cbytes;
            }
            msoDrawingRecord = new MsoDrawingRecord(bytes2);
            outputFile.write(msoDrawingRecord);
            if(i < numDrawings)
            {
                dgo = (DrawingGroupObject)drawings.get(i);
                dgo.writeAdditionalRecords(outputFile);
            } else
            {
                Chart chart = charts[i - numDrawings];
                ObjRecord objRecord = chart.getObjRecord();
                outputFile.write(objRecord);
                outputFile.write(chart);
            }
        }

        DrawingGroupObject dgo2;
        for(Iterator i = drawings.iterator(); i.hasNext(); dgo2.writeTailRecords(outputFile))
            dgo2 = (DrawingGroupObject)i.next();

    }

    public void setCharts(Chart ch[])
    {
        charts = ch;
    }

    public Chart[] getCharts()
    {
        return charts;
    }

    static Class class$(String x0)
    {
        return Class.forName(x0);
        ClassNotFoundException x1;
        x1;
        throw new NoClassDefFoundError(x1.getMessage());
    }

    static 
    {
        logger = Logger.getLogger(class$jxl$biff$drawing$SheetDrawingWriter != null ? class$jxl$biff$drawing$SheetDrawingWriter : (class$jxl$biff$drawing$SheetDrawingWriter = class$("jxl.biff.drawing.SheetDrawingWriter")));
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -