//************************************************************************************** // 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 ); };