com.ibm.as400.access.SCS3812Writer Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jt400 Show documentation
Show all versions of jt400 Show documentation
The Open Source version of the IBM Toolbox for Java
///////////////////////////////////////////////////////////////////////////////
//
// JTOpen (IBM Toolbox for Java - OSS version)
//
// Filename: SCS3812Writer.java
//
// The source code contained herein is licensed under the IBM Public License
// Version 1.0, which has been approved by the Open Source Initiative.
// Copyright (C) 1997-2000 International Business Machines Corporation and
// others. All rights reserved.
//
///////////////////////////////////////////////////////////////////////////////
package com.ibm.as400.access;
import java.io.OutputStream;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
/**
* The SCS3812Writer class writes an SCS 3812 data stream to an output stream,
* translating characters into bytes of the specified CCSID.
* SCS3812Writer extends the SCS5219Writer and adds support for Bold (Emphasis),
* fonts, duplex printing and text orientation.
*
* @see SCS5219Writer
**/
/* @A1C
* Moved Bold support from 5219.
*/
public class SCS3812Writer extends SCS5219Writer
{
static final String copyright = "Copyright (C) 1997-2000 International Business Machines Corporation and others.";
/** Constant value for duplex printing. **/
public static final int DUPLEX_DUPLEX = 2;
/** Constant value for simplex printing. **/
public static final int DUPLEX_SIMPLEX = 1;
/** Constant value for tumble duplex printing. **/
public static final int DUPLEX_TUMBLE = 3;
/** Constant value for a Courier, 10 pitch font. **/
public static final int FONT_COURIER_10 = 0;
/** Constant value for a Courier, 12 pitch font. **/
public static final int FONT_COURIER_12 = 1;
/** Constant value for a Courier, 15 pitch font. **/
public static final int FONT_COURIER_15 = 2;
/** Constant value for a Courier, 17 pitch font. **/
public static final int FONT_COURIER_17 = 3;
/** Constant value for a Courier, 5 pitch font. **/
public static final int FONT_COURIER_5 = 4;
/** Constant value for a Courier, bold, 10 pitch font. **/
public static final int FONT_COURIER_BOLD_10 = 5;
/** Constant value for a Courier, bold, 17 pitch font. **/
public static final int FONT_COURIER_BOLD_17 = 6;
/** Constant value for a Courier, bold, 5 pitch font. **/
public static final int FONT_COURIER_BOLD_5 = 7;
/** Constant value for a Courier, italic, 10 pitch font. **/
public static final int FONT_COURIER_ITALIC_10 = 8;
/** Constant value for a Courier, italic, 12 pitch font. **/
public static final int FONT_COURIER_ITALIC_12 = 9;
/** Constant value for a Gothic, 10 pitch font. **/
public static final int FONT_GOTHIC_10 = 10;
/** Constant value for a Gothic, 12 pitch font. **/
public static final int FONT_GOTHIC_12 = 11;
/** Constant value for a Gothic, 13 pitch font. **/
public static final int FONT_GOTHIC_13 = 12;
/** Constant value for a Gothic, 15 pitch font. **/
public static final int FONT_GOTHIC_15 = 13;
/** Constant value for a Gothic, 20 pitch font. **/
public static final int FONT_GOTHIC_20 = 14;
/** Constant value for a Gothic, 27 pitch font. **/
public static final int FONT_GOTHIC_27 = 15;
/** Constant value for a Gothic, bold, 10 pitch font. **/
public static final int FONT_GOTHIC_BOLD_10 = 16;
/** Constant value for a Gothic, bold, 12 pitch font. **/
public static final int FONT_GOTHIC_BOLD_12 = 17;
/** Constant value for a Gothic, italic, 12 pitch font. **/
public static final int FONT_GOTHIC_ITALIC_12 = 18;
/** Constant value for a letter Gothic, 12 pitch font. **/
public static final int FONT_LETTER_GOTHIC_12 = 19;
/** Constant value for a letter Gothic, bold, 12 pitch font. **/
public static final int FONT_LETTER_GOTHIC_BOLD_12 = 20;
/** Constant value for an OCR A, 10 pitch font. **/
public static final int FONT_OCR_A_10 = 21;
/** Constant value for an OCR B, 10 pitch font. **/
public static final int FONT_OCR_B_10 = 22;
/** Constant value for an Oritor, 10 pitch font. **/
public static final int FONT_ORATOR_10 = 23;
/** Constant value for an Oritor, bold, 10 pitch font. **/
public static final int FONT_ORATOR_BOLD_10 = 24;
/** Constant value for a Prestige, 10 pitch font. **/
public static final int FONT_PRESTIGE_10 = 25;
/** Constant value for a Prestige, 12 pitch font. **/
public static final int FONT_PRESTIGE_12 = 26;
/** Constant value for a Prestige, 15 pitch font. **/
public static final int FONT_PRESTIGE_15 = 27;
/** Constant value for a Prestige, bold, 12 pitch font. **/
public static final int FONT_PRESTIGE_BOLD_12 = 28;
/** Constant value for a Prestige, italic, 12 pitch font. **/
public static final int FONT_PRESTIGE_ITALIC_12 = 29;
/** Constant value for a Roman, 10 pitch font. **/
public static final int FONT_ROMAN_10 = 30;
/** Constant value for a script, 12 pitch font. **/
public static final int FONT_SCRIPT_12 = 31;
/** Constant value for a Serif, 10 pitch font. **/
public static final int FONT_SERIF_10 = 32;
/** Constant value for a Serif, 12 pitch font. **/
public static final int FONT_SERIF_12 = 33;
/** Constant value for a Serif, 15 pitch font **/
public static final int FONT_SERIF_15 = 34;
/** Constant value for a Serif, bold, 12 pitch font. **/
public static final int FONT_SERIF_BOLD_12 = 35;
/** Constant value for a Serif, italic, 10 pitch font. **/
public static final int FONT_SERIF_ITALIC_10 = 36;
/** Constant value for a Serif, italic, 12 pitch font. **/
public static final int FONT_SERIF_ITALIC_12 = 37;
private static final byte [] SCG = {0x2B, (byte)0xD1, 0x06,
0x01, 0x00, 0x00, 0x00, 0x00};
private static final byte [] SFID = {0x2B, (byte)0xD1, 0x07,
0x05, 0x00, 0x00, 0x00, 0x00,
0x01};
private static final byte [] STO = {0x2B, (byte)0xD3, 0x06,
(byte)0xF6, 0x00, 0x00, 0, 0};
private static final byte [] BES = {0x2B, (byte)0xD1, 0x03, //@A1M - from 5219 class
(byte)0x8A, 0x00};
private static final byte [] EES = {0x2B, (byte)0xD1, 0x03, //@A1M - from 5219 class
(byte)0x8E, 0x00};
private byte [] orientation_ = {(byte)0xFF, (byte)0xFF};
private int font_ = 0;
private boolean bold_ = false; //@A1M - from 5219 class
/**
* Constructs a SCS3812Writer. The default encoding will be used.
*
* @param out An OutputStream.
*
* @deprecated Replaced by SCS3812Writer(OutputStream, int, AS400).
Any SCS3812Writer object that is created without
specifying an AS400 system object on its constructor may
not behave as expected in certain environments.
**/
public SCS3812Writer(OutputStream out)
{
super(out);
}
/**
* Constructs a SCS3812Writer.
*
* @param out An OutputStream.
* @param ccsid The name of the target CCSID to be used.
*
* @exception UnsupportedEncodingException If ccsid is invalid.
* @deprecated Replaced by SCS3812Writer(OutputStream, int, AS400).
Any SCS3812Writer object that is created without
specifying an AS400 system object on its constructor may
not behave as expected in certain environments.
**/
public SCS3812Writer(OutputStream out,
int ccsid)
throws UnsupportedEncodingException
{
super(out, ccsid);
}
// @B1A
/**
* Constructs a SCS3812Writer.
*
* @param out An OutputStream.
* @param ccsid The name of the target CCSID to be used.
* @param system The system
*
* @exception UnsupportedEncodingException If ccsid is invalid.
**/
public SCS3812Writer(OutputStream out,
int ccsid,
AS400 system)
throws UnsupportedEncodingException
{
super(out, ccsid, system);
}
/**
* Constructs a SCS3812Writer.
*
* @param out An OutputStream.
* @param encoding The name of the target encoding to be used.
*
* @exception UnsupportedEncodingException If encoding is invalid.
* @deprecated Replaced by SCS3812Writer(OutputStream, int, AS400).
Any SCS3812Writer object that is created without
specifying an AS400 system object on its constructor may
not behave as expected in certain environments.
**/
public SCS3812Writer(OutputStream out,
String encoding)
throws UnsupportedEncodingException
{
super(out, encoding);
}
/** Ends current page.
*
* @exception IOException If an error occurs while communicating
* with the system.
**/
public void endPage()
throws IOException
{
/* Don't want to leave the printer in a bad state. If bold */
/* is on, turn it off before ending the page. The superclass (5219)*/
/* will handle the underline command. */
if (bold_ == true) addToBuffer(EES);
super.endPage();
}
/* Sends out controls to initialize the start of a page.
*
* @exception IOException If an error occurs while communicating with the
* system.
*/
void initPage()
throws IOException
{
super.initPage();
setBold(bold_); //@A1M (from 5219 class)
sendSTO(); //@A1M (from first line of method)
if (fontOrCPI == FONT_) setFont(font_);
}
/* Outputs the Set Text Orientation command.
*
*/
private void sendSTO()
throws IOException
{
byte [] cmd = STO;
cmd[6] = orientation_[0];
cmd[7] = orientation_[1];
addToBuffer(cmd);
}
/** Sets bold text on or off.
*
* @param bold If true, turns bold on; if false, turns bold off.
*4
* @exception IOException If an error occurs while communicating
* with the system.
**/
public void setBold(boolean bold)
throws IOException
{
bold_ = bold;
if (pageStarted_ == true) {
if (bold_ == true) {
addToBuffer(BES);
} else {
addToBuffer(EES);
} /* endif */
} /* endif */
}
/** Sets duplex printing mode. This is set once at the start of each
* page. Changes in duplex print mode will not take effect until the
* next new page.
*
* @param duplex The duplex setting. Valid values are DUPLEX_DUPLEX,
* DUPLEX_SIMPLEX, or DUPLEX_TUMBLE.
*
**/
public void setDuplex(int duplex)
{
switch (duplex) {
case DUPLEX_DUPLEX:
case DUPLEX_SIMPLEX:
case DUPLEX_TUMBLE:
plex_ = (byte)duplex;
break;
default:
String arg = "Duplex (" + String.valueOf(duplex) + ")";
throw new ExtendedIllegalArgumentException(arg, 2);
}
}
/** Sets the current font. This method will override the setCPI function.
*
* @param font The current font. Constant values are defined for the
* valid values.
*
* @exception IOException If an error occurs while communicating
* with the system.
**/
public void setFont(int font)
throws IOException
{
byte [] cmd = SFID;
int[] fontIDs = SCSFontData.fontIDs;
/* Make sure font value is valid */
if ((font < 0) || (font > fontIDs.length))
{
String arg = "Font (" + String.valueOf(font) + ")";
throw new ExtendedIllegalArgumentException(arg, 2);
}
font_ = font;
fontOrCPI = FONT_;
if (pageStarted_ == false) initPage(); //@A2C - was "true"
// { //@A2D
/* Get font ID and width */
int fgid = SCSFontData.fontIDs[font];
int width = SCSFontData.fontWidths[font];
/* Update command string. */
cmd[4] = (byte)(fgid >> 8);
cmd[5] = (byte)fgid;
cmd[6] = (byte)(width >> 8);
cmd[7] = (byte)width;
addToBuffer(cmd);
// } //@A2D
}
/** Sets text orientation. This is set once at the start of each page.
* Changes in text orientation will not take effect until the next
* new page.
*
* @param orientation The text orientation on the paper. Valid values
* are 0, 90, 180 and 270.
*
**/
public void setTextOrientation(int orientation)
{
switch (orientation) {
case 0:
orientation_[0] = 0x00;
orientation_[1] = 0x00;
break;
case 90:
orientation_[0] = 0x2D;
orientation_[1] = 0x00;
break;
case 180:
orientation_[0] = 0x5A;
orientation_[1] = 0x00;
break;
case 270:
orientation_[0] = (byte)0x87;
orientation_[1] = 0x00;
break;
default:
String arg = "Orientation (" + String.valueOf(orientation) + ")";
throw new ExtendedIllegalArgumentException(arg, 2);
} /* endswitch */
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy