This is PictConverter.h in view mode; [Download] [Up]
/***********************************************************************\
Converter class for Convert PICT which converts graphics from PICT to eps formats.
Copyright (C) 1993 David John Burrowes
This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 1, or (at your option) any later version.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
The author, David John Burrowes, can be reached at:
davidjohn@kira.net.netcom.com
David John Burrowes
1926 Ivy #10
San Mateo, CA 94403-1367
\***********************************************************************/
/*
====================================================================
This is $Revision: 1.10 $ of this file
It was last modified by $Author: death $ on $Date: 93/04/04 23:29:53 $
Note that this file was created while using the New Century Schoolbook Roman typeface. You may find that some things line up strangely if you don't use that family.
History:
93.07.18 djb Added PicCommentOperation type, and instance variable for the same.
$Log: PictConverter.h,v $
* Revision 1.10 93/04/04 23:29:53 death
* Sun Apr 4 23:29:53 PDT 1993
*
* Revision 1.9 93/01/09 21:07:07 death
* Sat Jan 9 21:07:07 PST 1993
*
* Revision 1.8 93/01/01 11:51:16 death
* Fri Jan 1 11:51:16 PST 1993
*
* Revision 1.7 92/12/31 15:33:53 death
* Thu Dec 31 15:33:53 PST 1992
*
* Revision 1.6 92/12/05 23:06:26 death
* Sat Dec 5 23:06:25 PST 1992
*
====================================================================
*/
#import "AbstractConverter.h"
#import "PICTFile.h"
//
// type styles
//
#define boldBit 1
#define italicBit 2
#define underlineBit 4
#define outlineBit 8
#define shadowBit 0x10
#define condenseBit 0x20
#define extendBit 0x40
//
// PICT modes
//
#define macSrcCopy 0
#define macSrcOr 1
#define macSrcXor 2
#define macSrcBic 3
#define macNotSrcCopy 4
#define macNotSrcOr 5
#define macNotSrcXor 6
#define macNotSrcBic 7
#define macPatCopy 8
#define macPatOr 9
#define macPatXor 10
#define macPatBic 11
#define macNotPatCopy 12
#define macNotPatOr 13
#define macNotPatXor 14
#define macNotPatBic 15
// Arithmetic modes defined in Inide Mac V.
#define blend 32
#define addPin 33
#define addOver 34
#define subPin 35
#define addMax 37
#define subOver 38
#define adMin 39
// a transparent mode
#define transparent 36
//
// 93.07.18 djb added.
// A mysterious pen mode defined in a tech note.
// It's effect is, it seems, to be to cause QuickDraw to process stuff, but not
// actually draw anything.
//
#define magicMode 23
//
// Old style colors (what space are those numbers in?
//
#define oldBlackColor 0x0021
#define oldWhiteColor 0x001E
#define oldRedColor 0x00D1
#define oldGreenColor 0x0149
#define oldBlueColor 0x0185
#define oldCyanColor 0x010D
#define oldMagentaColor 0x0095
#define oldYellowColor 0x0059
//
// Pixmap stuff
//
struct PixMap {
PICTRect bounds; /*encloses bitmap*/
INTEGER pmVersion; /*pixMap version number*/
INTEGER packType; /*defines packing format*/
LONGINT packSize; /*length of pixel data*/
FIXED hRes; /*horiz. resolution (ppi)*/
FIXED vRes; /*vert. resolution (ppi)*/
INTEGER pixelType; /*defines pixel type*/
INTEGER pixelSize; /*# bits in pixel*/
INTEGER cmpCount; /*# components in pixel*/
INTEGER cmpSize; /*# bits per component*/
LONGINT planeBytes; /*offset to next plane*/
LONGINT pmTable; /*color map for this pixMap*/
LONGINT pmReserved; /*for future use. MUST BE 0*/
};
typedef struct PixMap modPixMap;
typedef enum piccommentoptype
{
ConvertPicComments,
DiscardPicComments
}
PicCommentOpType;
@interface PictConverter:AbstractConverter
{
Instance sourceFile,
destFile;
Instance textConverter;
Boolean UsedPatterns,
UsedColors,
UsedLines,
UsedText,
UsedRectangles,
UsedRoundRectangles,
UsedOvals,
UsedArcs,
UsedPolygons,
UsedRegions,
UsedBitmaps,
UsedComments,
UsedMiscellaneous;
CString CodeDir;
Boolean PackingSetting;
Boolean UsersCharConvertChoice;
Boolean ConvertCurrentCharacters;
PicCommentOpType PicCommentOperation;
}
//
// Administrative/ setup
//
- init;
- free;
- SetImagePacking: (Boolean) packimages UsingPSIn: (CString) newCodeDirectory;
- SetConvertAllChars: (Boolean) convertAll;
- SetPicCommentConversion: (PicCommentOpType) picConversion;
- (Boolean) isThisAGoodFile: theFile;
- (CString) SimpleStringConvert: (CString) theString;
- BuildHeaderInto: thisFile;
- AppendFile: (CString) codeFile To: thisFile;
- BuildPrologInto: thisFile;
- ConvertPICTfile: pictfile ToEPSfile: epsfile;
//
// High level opcode parsers
//
- (Boolean) ParseOpcode: (PICTOpcode) opCode;
//
// Opcode processing.
//
- (Boolean) ParseMiscOpcode: (PICTOpcode) opcode;
- (Boolean) ParseLineOpcode: (PICTOpcode) opcode;
- (Boolean) ParseTextOpcode: (PICTOpcode) opcode;
- (Boolean) ParseRectangleOpcode: (PICTOpcode) opcode;
- (Boolean) ParseRoundRectangleOpcode: (PICTOpcode) opcode;
- (Boolean) ParseOvalOpcode: (PICTOpcode) opcode;
- (Boolean) ParseArcOpcode: (PICTOpcode) opcode;
- (Boolean) ParsePolygonOpcode: (PICTOpcode) opcode;
- (Boolean) ParseRegionOpcode: (PICTOpcode) opcode;
- (Boolean) ParseBitmapOpcode: (PICTOpcode) opcode;
- (Boolean) ParseCommentOpcode: (PICTOpcode) opcode;
- ParseShortComment: (Integer) kind;
//
// Processing utilities
//
- Skip2PlusData;
- Skip4PlusData;
- SkipSizedObject;
- ConvertHexBytes: (PositiveInteger) theBytes;
- WritePoint: (PICTPoint*) thePoint;
- WriteRect: (PICTRect*) theRect;
- WritePSProcedureName: (CString) theName;
//
// Primary data conversion routines
//
- ConvertArc;
- ConvertAngles;
- ConvertPolygon;
- ConvertRegion;
- ConvertMode;
- ConvertFamily;
- ConvertFace;
- WriteString: (CString) theString;
- ConvertOldColor;
- ConvertRGBColor;
//
// Bitmap and pattern processing
//
- ConvertInvertedHexBytes: (PositiveInteger) theBytes;
- ConvertPict1Pattern;
- ConvertPict2Pattern;
- GetPixMapFrom: SourceFile Into: (modPixMap*) nativeMap;
- ConvertBitmapWithRegion: (Boolean) hasRegion PackedData: (Boolean) isPacked;
- ConvertDirectBitmapWithRegion: (Boolean) hasRegion; // new with 1.2
- ConvertPackType1WithHeight: (Integer) dataHigh
AndWidth: (Integer) rowBytes
AndOffiset: (Integer) bitmapOffset; // New with 1.2
- ConvertPackType2WithHeight: (Integer) dataHigh
AndWidth: (Integer) rowBytes
AndOffiset: (Integer) bitmapOffset; // New with 1.2
- ConvertPackType4WithHeight: (Integer) dataHigh
AndWidth: (Integer) rowBytes
AndOffiset: (Integer) bitmapOffset; // New with 1.2
- ExtractImageDataUsingDataWidth: (PositiveInteger) rawWidth
Scanlines: (Integer) numLines
ScanlineLength: (Integer) bytesPerScanline
ScanlineStart: (Integer) bitOffset
AndPixelDepth: (Integer) numBits
IsCompressed: (Boolean) sourcePacked
UsesColor: (Boolean) ColorUsed;
- ConvertColorTable;
- Unpack: (PositiveInteger) numBytes
BytesFrom: (ByteString) sourceLine
Into: (ByteString) destLine;
-(PositiveInteger) Pack: (PositiveInteger) numBytes
BytesFrom: (ByteString) source
Into: (ByteString) dest;
- Invert: (Integer) numBytes In: (ByteString) theBuffer;
- (ByteString) Copy: (PositiveInteger) sourceSize
BitsAtOffset: (PositiveInteger) offset
From: (ByteString) source
Into: (ByteString) dest;
@end
#define ERR_APPENDFAILED -30
#define ERR_BADSOURCESIZE 201
#define ERR_UNKNOWNPACK -1000
#define ERR_BADPACK 1001
#define ERR_NOSIXTEEN -1002
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.