//**************************************************************************************// Filename:	CConverter.h// Copyright © 1998 _tk_. All rights reserved.//// Description:	////**************************************************************************************// Revision History:// Sunday, September 13, 1998 - Original//**************************************************************************************#pragma once#include "CycloneConstants.h"#include "ConverterConstants.h"enum{	kEncodingsBaseResID	= 1100,	kVariantsStartResID	= 3000,	kFormatsStartResID	= 5000};const Size kMinimumBufferSize	= 32;class LArray;class CConverter{public:static		OSStatus			DoConvertToUnicode( TextEncoding unicodeEncoding, TextEncoding fromEncoding, Handle srcH,									 				Handle destH, ByteCount &inputRead, ByteCount &unicodeLen);static		OSStatus			DoConvertToEncoding(	TextEncoding unicodeEncoding, TextEncoding	toEncoding, Handle srcH,													Handle destH, ByteCount &inputRead, ByteCount &outputLen);static		OSStatus			ConvertFromOneEncodingToAnother(TextEncoding inputEncoding, TextEncoding outputEncoding, Handle srcH, Handle destH);static		OSStatus			ConvertClipboard(TextEncoding inputEncoding, TextEncoding outputEncoding, UInt16 lineBreak);static		bool				IsTwoByteUnicode( TextEncoding inEnc );//static		UniChar				GuessByteOrder(UniCharPtr uniTextPtr, UniCharCount uniTextLen);//static		void				InvertByteOrder(UniCharPtr uniTextPtr, UniCharCount uniTextLen);static		Boolean				ImportTextToUnicode(FSSpec *inOriginalDocSpec, TextEncoding inOriginalEncoding, Handle &outHandle);static		Boolean				ExportUnicodeToEncodingText(Handle origHandle, Str255 defaultName, TextEncoding	textEncoding);static		Boolean				OpenConvertSave(TextEncoding inputEncoding, TextEncoding outputEncoding, FSSpec *inOrigSpec);static		Boolean				AskForConversionType(TextEncoding &inputEncoding, TextEncoding &outputEncoding, UInt16 &outLineBreak, Str255 inName);static		Boolean				GetAllEncodingMappings();static		void				DisposeAllEncodingMappings();static		Boolean				GetEncodingName(TextEncoding inEncoding, TextEncodingNameSelector inSelector, Str255 outName);static		Boolean				FindEncodingName(TextEncodingBase inBase, TextEncodingBase standardSelector, Str255 outName);static		Boolean				FindEncodingVariantName(TextEncodingBase inBase, TextEncodingVariant inVariant, Str255 outName);static		Boolean				FindEncodingFormatName(TextEncodingBase inBase, TextEncodingFormat inVariant, Str255 outName);static		SInt32				EncodingBinarySearch(TextEncoding inEncoding, TextEncoding *mapPtr, UInt32 itemCount);static		SInt32				EncodingBinarySearchByBase(TextEncoding inEncoding, TextEncoding *mapPtr, UInt32 itemCount);static		void				VerifyAndCleanBaseName(Str255 ioName, TextEncoding inEncoding);static		void				GetSpecifiedEncodingsRange(LArray *inEncArr, TextEncoding inStandard, UInt32 &outStart, UInt32 &outEnd);static		void				FindIndexRange(LArray *inEncArr, UInt32 &outStart, UInt32 &outEnd);static		Boolean				SniffFileContent(const FSRef &inRef, TextEncoding &suggestedEncoding);static		bool				SniffClipboardContent(TextEncoding &suggestedEncoding);static		bool				SniffContent( TextPtr inputBuffer, ByteCount inputBufferLength, TextEncoding &suggestedEncoding );static		LArray*				sAllTextEncodingsArr;static		void				AutoCorrectBreaks(TextPtr buf, ByteCount &len, ByteCount buffSize, TextEncoding inEncoding);static		void				ChangeBreaks(TextPtr buf, ByteCount &len, ByteCount buffSize, TextEncoding inEncoding, UInt16 inBreak);static		void				ChangeToMac(TextPtr outBuf, ByteCount &inLen);static		void				UniChangeToUnicode(TextPtr outBuf, ByteCount &inLen);static		void				ChangeToUnix(TextPtr outBuf, ByteCount &inLen);static		void				ChangeToWindows(TextPtr outBuf, ByteCount &inLen, ByteCount buffSize);static		void				UniChangeToMac(TextPtr outBuf, ByteCount &inLen);static		void				UniChangeToUnix(TextPtr outBuf, ByteCount &inLen);static		void				UniChangeToWindows(TextPtr outBuf, ByteCount &inLen, ByteCount buffSize);static		void				ResizeOutputHandle( Handle h, char** outputPtr, ByteCount resizeBy );};