Java tutorial
/* ==================================================================== Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. ==================================================================== */ package org.apache.poi.hssf.record; import org.apache.poi.ss.usermodel.PrintSetup; import org.apache.poi.util.LittleEndianOutput; import org.apache.poi.util.BitField; import org.apache.poi.util.BitFieldFactory; /** * Title: PAGESETUP (0x00A1)<p> * Description: Stores print setup options -- bogus for HSSF (and marked as such)<p> * REFERENCE: PG 385 Microsoft Excel 97 Developer's Kit (ISBN: 1-57231-498-2)<p> * REFERENCE: PG 412 Microsoft Excel Binary File Format Structure v20091214 * * @since 2.0-pre */ public final class PrintSetupRecord extends StandardRecord { public final static short sid = 0x00A1; /** Constants for this are held in {@link PrintSetup} */ private short field_1_paper_size; private short field_2_scale; private short field_3_page_start; private short field_4_fit_width; private short field_5_fit_height; private short field_6_options; static final private BitField lefttoright = BitFieldFactory.getInstance(0x01); // print over then down static final private BitField landscape = BitFieldFactory.getInstance(0x02); // landscape mode static final private BitField validsettings = BitFieldFactory.getInstance(0x04); // if papersize, scale, resolution, copies, landscape // weren't obtained from the print consider them // mere bunk static final private BitField nocolor = BitFieldFactory.getInstance(0x08); // print mono/b&w, colorless static final private BitField draft = BitFieldFactory.getInstance(0x10); // print draft quality static final private BitField notes = BitFieldFactory.getInstance(0x20); // print the notes static final private BitField noOrientation = BitFieldFactory.getInstance(0x40); // the orientation is not set static final private BitField usepage = BitFieldFactory.getInstance(0x80); // use a user set page no, instead of auto private short field_7_hresolution; private short field_8_vresolution; private double field_9_headermargin; private double field_10_footermargin; private short field_11_copies; public PrintSetupRecord() { } public PrintSetupRecord(RecordInputStream in) { field_1_paper_size = in.readShort(); field_2_scale = in.readShort(); field_3_page_start = in.readShort(); field_4_fit_width = in.readShort(); field_5_fit_height = in.readShort(); field_6_options = in.readShort(); field_7_hresolution = in.readShort(); field_8_vresolution = in.readShort(); field_9_headermargin = in.readDouble(); field_10_footermargin = in.readDouble(); field_11_copies = in.readShort(); } public void setPaperSize(short size) { field_1_paper_size = size; } public void setScale(short scale) { field_2_scale = scale; } public void setPageStart(short start) { field_3_page_start = start; } public void setFitWidth(short width) { field_4_fit_width = width; } public void setFitHeight(short height) { field_5_fit_height = height; } public void setOptions(short options) { field_6_options = options; } // option bitfields public void setLeftToRight(boolean ltor) { field_6_options = lefttoright.setShortBoolean(field_6_options, ltor); } public void setLandscape(boolean ls) { field_6_options = landscape.setShortBoolean(field_6_options, ls); } public void setValidSettings(boolean valid) { field_6_options = validsettings.setShortBoolean(field_6_options, valid); } public void setNoColor(boolean mono) { field_6_options = nocolor.setShortBoolean(field_6_options, mono); } public void setDraft(boolean d) { field_6_options = draft.setShortBoolean(field_6_options, d); } public void setNotes(boolean printnotes) { field_6_options = notes.setShortBoolean(field_6_options, printnotes); } public void setNoOrientation(boolean orientation) { field_6_options = noOrientation.setShortBoolean(field_6_options, orientation); } public void setUsePage(boolean page) { field_6_options = usepage.setShortBoolean(field_6_options, page); } // end option bitfields public void setHResolution(short resolution) { field_7_hresolution = resolution; } public void setVResolution(short resolution) { field_8_vresolution = resolution; } public void setHeaderMargin(double headermargin) { field_9_headermargin = headermargin; } public void setFooterMargin(double footermargin) { field_10_footermargin = footermargin; } public void setCopies(short copies) { field_11_copies = copies; } public short getPaperSize() { return field_1_paper_size; } public short getScale() { return field_2_scale; } public short getPageStart() { return field_3_page_start; } public short getFitWidth() { return field_4_fit_width; } public short getFitHeight() { return field_5_fit_height; } public short getOptions() { return field_6_options; } // option bitfields public boolean getLeftToRight() { return lefttoright.isSet(field_6_options); } public boolean getLandscape() { return landscape.isSet(field_6_options); } public boolean getValidSettings() { return validsettings.isSet(field_6_options); } public boolean getNoColor() { return nocolor.isSet(field_6_options); } public boolean getDraft() { return draft.isSet(field_6_options); } public boolean getNotes() { return notes.isSet(field_6_options); } public boolean getNoOrientation() { return noOrientation.isSet(field_6_options); } public boolean getUsePage() { return usepage.isSet(field_6_options); } // end option bitfields public short getHResolution() { return field_7_hresolution; } public short getVResolution() { return field_8_vresolution; } public double getHeaderMargin() { return field_9_headermargin; } public double getFooterMargin() { return field_10_footermargin; } public short getCopies() { return field_11_copies; } public String toString() { StringBuffer buffer = new StringBuffer(); buffer.append("[PRINTSETUP]\n"); buffer.append(" .papersize = ").append(getPaperSize()).append("\n"); buffer.append(" .scale = ").append(getScale()).append("\n"); buffer.append(" .pagestart = ").append(getPageStart()).append("\n"); buffer.append(" .fitwidth = ").append(getFitWidth()).append("\n"); buffer.append(" .fitheight = ").append(getFitHeight()).append("\n"); buffer.append(" .options = ").append(getOptions()).append("\n"); buffer.append(" .ltor = ").append(getLeftToRight()).append("\n"); buffer.append(" .landscape = ").append(getLandscape()).append("\n"); buffer.append(" .valid = ").append(getValidSettings()).append("\n"); buffer.append(" .mono = ").append(getNoColor()).append("\n"); buffer.append(" .draft = ").append(getDraft()).append("\n"); buffer.append(" .notes = ").append(getNotes()).append("\n"); buffer.append(" .noOrientat = ").append(getNoOrientation()).append("\n"); buffer.append(" .usepage = ").append(getUsePage()).append("\n"); buffer.append(" .hresolution = ").append(getHResolution()).append("\n"); buffer.append(" .vresolution = ").append(getVResolution()).append("\n"); buffer.append(" .headermargin = ").append(getHeaderMargin()).append("\n"); buffer.append(" .footermargin = ").append(getFooterMargin()).append("\n"); buffer.append(" .copies = ").append(getCopies()).append("\n"); buffer.append("[/PRINTSETUP]\n"); return buffer.toString(); } public void serialize(LittleEndianOutput out) { out.writeShort(getPaperSize()); out.writeShort(getScale()); out.writeShort(getPageStart()); out.writeShort(getFitWidth()); out.writeShort(getFitHeight()); out.writeShort(getOptions()); out.writeShort(getHResolution()); out.writeShort(getVResolution()); out.writeDouble(getHeaderMargin()); out.writeDouble(getFooterMargin()); out.writeShort(getCopies()); } protected int getDataSize() { return 34; } public short getSid() { return sid; } public Object clone() { PrintSetupRecord rec = new PrintSetupRecord(); rec.field_1_paper_size = field_1_paper_size; rec.field_2_scale = field_2_scale; rec.field_3_page_start = field_3_page_start; rec.field_4_fit_width = field_4_fit_width; rec.field_5_fit_height = field_5_fit_height; rec.field_6_options = field_6_options; rec.field_7_hresolution = field_7_hresolution; rec.field_8_vresolution = field_8_vresolution; rec.field_9_headermargin = field_9_headermargin; rec.field_10_footermargin = field_10_footermargin; rec.field_11_copies = field_11_copies; return rec; } }