home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1999 January: Mac OS SDK / Dev.CD Jan 99 SDK2.toast / Development Kits / TEC 1.4 / SampleCode / UnicodeHub / UnicodeHub.h < prev    next >
Encoding:
Text File  |  1998-09-25  |  6.8 KB  |  203 lines  |  [TEXT/CWIE]

  1. // ===========================================================================
  2. //    <PP Starter Header>.h        ©1994-1995 Metrowerks Inc. All rights reserved.
  3. // ===========================================================================
  4.  
  5. #pragma once
  6.  
  7. #ifndef FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE
  8. #define FOR_SYSTEM7_AND_SYSTEM8_PREEMPTIVE 1
  9. #define FOR_SYSTEM8_PREEMPTIVE 0
  10. #define FOR_SYSTEM7_AND_SYSTEM8_COOPERATIVE 1
  11. #define FOR_SYSTEM7_AND_SYSTEM8_DEPRECATED 1
  12. #endif
  13.  
  14. #include <LApplication.h>
  15. #include <LWindow.h>
  16. #include <LStdControl.h>
  17. #include <LListener.h>
  18. #include <LTextEdit.h>
  19.  
  20. #include <TextCommon.h>
  21. #include <Unicode.h>
  22. #include <TextEncodingConverter.h>
  23.  
  24. typedef TextEncodingRun** TextEncodingRunHdl;
  25. typedef ScriptCodeRun** ScriptCodeRunHdl;
  26.  
  27. const UInt32 kMaxInput        = 128;
  28. const UInt32 kMaxOutput        = kMaxInput*4;
  29. const UInt32 kMaxMappings    = 128;
  30. const UInt32 kMaxLen        = 60;
  31. const UInt32 kMaxNameLen    = 61;
  32.  
  33. const short        kFileMenu = 129;
  34.  
  35.  
  36. const OSStatus  kUnicodeFirstError = -8789;
  37. const OSStatus  kUnicodeLastError = -8738;
  38. const OSStatus    kIllegalHexString = -8737;
  39.  
  40. const int        kIllegalConverter = 0;
  41. const int        kUnicodeConverter = 1;
  42. const int        kHighLevelConverter = 2;
  43.  
  44. #define USEHLC  1
  45.  
  46. class    CPPStarterApp : public LApplication {
  47. public:
  48.     TextEncoding        mAvailableMappings[kMaxMappings];
  49.     unsigned char        mAvailableMappingNames[kMaxMappings][kMaxNameLen+1];
  50.     UInt32                mNumMappings;
  51.     
  52.     
  53.                         CPPStarterApp();        // constructor registers all PPobs
  54.     virtual             ~CPPStarterApp();        // stub destructor
  55.     
  56.         // this overriding function performs application functions
  57.         
  58.     virtual Boolean        ObeyCommand(CommandT inCommand, void* ioParam);    
  59.     
  60.         // this overriding function returns the status of menu items
  61.         
  62.     virtual void        FindCommandStatus(CommandT inCommand,
  63.                             Boolean &outEnabled, Boolean &outUsesMark,
  64.                             Char16 &outMark, Str255 outName);
  65.                             
  66.     OSStatus GetMappings();    
  67.     
  68.     OSStatus DoConvert(    const Handle fromHexText, UInt32 fromLen, UInt32 fromEncoding,
  69.                             Handle toHexText, ByteCount &inputRead, ByteCount &outputLen, ByteCount &toLen, 
  70.                             UInt32 toEncoding, TextEncodingRunHdl &theRuns, UInt32    fromUnicodeFlags, UInt32 toUnicodeFlags, Boolean wantHexOutput);
  71.     
  72.     OSStatus DoConvertToUnicode(     TextEncoding unicodeMapping, UInt32 toUnicodeFlags, TextEncoding fromEncoding, Handle srcHLocked, ByteCount srcLen,
  73.                                     Handle destHLocked, ByteCount &inputRead, ByteCount &unicodeLen, ByteCount maxOutput);
  74.  
  75.     OSStatus DoConvertToEncoding(    TextEncoding fromEncoding, UInt32 fromUnicodeFlags, TextEncoding toEncoding, Handle srcHLocked, ByteCount srcLen,
  76.                                     Handle destHLocked, ByteCount &inputRead, ByteCount &outputLen, ByteCount maxOutput);
  77.     OSStatus ConvertFromMulti(    TextEncoding  unicodeEncoding, const Handle fromHexText, TEStyleHandle theStyle,UInt32 fromLen,
  78.                             Handle &toHexText, ByteCount &inputRead, ByteCount &outputLen, ByteCount &toLen, 
  79.                             ByteCount** &theRuns, UInt32 toUnicodeFlags);
  80.     OSStatus DoConvertToMultiple(    TextEncoding unicodeEncoding, UInt32 fromUnicodeFlags, TextEncodingRunHdl &theRuns, Handle srcHLocked, ByteCount srcLen,
  81.                                 Handle destHLocked, ByteCount &inputRead, ByteCount &outputLen, ByteCount maxOutput);
  82.     
  83.     OSStatus DoConvertUsingHLC(    TextEncoding fromTextEncoding, Handle srcHLocked, ByteCount fromTextLen,
  84.                                     TextEncoding toTextEncoding,  Handle destHLocked, ByteCount toTextLen,
  85.                                      ByteCount &inputRead, ByteCount &outputLen );
  86.  
  87.     virtual void ShowAboutBox();
  88.  
  89.     void ResolveConversionParams(    UInt32    fromEncodingIndex,  TextEncoding *fromTextEncoding,
  90.                                     UInt32     toEncoding,         TextEncoding *toTextEncoding, int *converterToUse );
  91.                                         
  92.     Boolean IsUnicode( TextEncoding encoding );
  93. protected:
  94.  
  95.     virtual void        StartUp();        // overriding startup functions
  96.  
  97. };
  98.  
  99.  
  100. class CUnicodeTablesPopup : public LStdPopupMenu {
  101. public:
  102.     enum { class_ID = 'CuPp' };
  103.  
  104.     static CUnicodeTablesPopup*    CreateUnicodeTablesPopupStream(LStream *inStream);
  105.                 CUnicodeTablesPopup(const SPaneInfo &inPaneInfo,
  106.                     MessageT inValueMessage, Int16 inTitleOptions,
  107.                     ResIDT inMENUid, Int16 inTitleWidth,
  108.                     Int16 inPopupVariation, ResIDT inTextTraitsID,
  109.                     Str255 inTitle, OSType inResTypeMENU,
  110.                     Int16 inInitialMenuItem);
  111.                 CUnicodeTablesPopup(const SPaneInfo &inPaneInfo,
  112.                     MessageT inValueMessage, Int32 inMaxValue,
  113.                     ResIDT inTextTraitsID, ControlHandle inMacControlH);
  114.                 CUnicodeTablesPopup(LStream *inStream);
  115.                 
  116.                 void FillMenuWithUnicodeTables(void);
  117.  
  118.     virtual    ~CUnicodeTablesPopup() ;
  119. };
  120.  
  121. class CFontMenuPopup : public LStdPopupMenu {
  122. public:
  123.     ScriptCode    mInstalledFonts[128];
  124.  
  125.     enum { class_ID = 'CsPp' };
  126.  
  127.     static CFontMenuPopup*    CreateFontMenuPopupStream(LStream *inStream);
  128.                 CFontMenuPopup(const SPaneInfo &inPaneInfo,
  129.                     MessageT inValueMessage, Int16 inTitleOptions,
  130.                     ResIDT inMENUid, Int16 inTitleWidth,
  131.                     Int16 inPopupVariation, ResIDT inTextTraitsID,
  132.                     Str255 inTitle, OSType inResTypeMENU,
  133.                     Int16 inInitialMenuItem);
  134.                 CFontMenuPopup(const SPaneInfo &inPaneInfo,
  135.                     MessageT inValueMessage, Int32 inMaxValue,
  136.                     ResIDT inTextTraitsID, ControlHandle inMacControlH);
  137.                 CFontMenuPopup(LStream *inStream);
  138.                 
  139.                 void FillFontMenu(void);
  140.                 ScriptCode GetSelectedScript(void);
  141.                 void SetMValue(ScriptCode theValue);
  142.                 void SetValueByFont(SInt16    font);
  143.  
  144.     virtual    ~CFontMenuPopup() ;
  145. };
  146.  
  147. class CUnicodeHubWindow : public LWindow, public LListener {
  148.     UInt32        mFromUnicodeFlags;
  149.     UInt32        mToUnicodeFlags;
  150.     
  151. public:
  152.     enum { class_ID = 'CuWi' };
  153.  
  154.     static            CUnicodeHubWindow*    CreateUnicodeHubWindowStream(LStream *inStream);
  155.                     
  156.                     void InitUnicodeHubWindow(void);
  157.                     CUnicodeHubWindow(LStream *inStream);
  158.                     CUnicodeHubWindow(
  159.                             const SWindowInfo    &inWindowInfo);
  160.                     CUnicodeHubWindow(
  161.                             ResIDT                inWINDid,
  162.                             Uint32                inAttributes,
  163.                             LCommander            *inSuperCommander);
  164.                     
  165.     virtual void    ListenToMessage( MessageT inMessage, void *ioParam );
  166.             void    ConvertButtonHit( MessageT    inMessage );
  167.             void    ConvertTextToHex( MessageT    inMessage );
  168.  
  169.  
  170. };
  171.  
  172. class CStyleText : public LTextEdit {
  173.     
  174. public:
  175.     short            mCurKeyScript;
  176.     enum { class_ID = 'texS' };
  177.  
  178.     static CStyleText*    CreateStyleTextEditStream(LStream *inStream);
  179.                         CStyleText(LStream *inStream);
  180.  
  181.                         CStyleText(const SPaneInfo &inPaneInfo,
  182.                                 const SViewInfo &inViewInfo,
  183.                                 Uint16 inTextAttributes,
  184.                                 ResIDT inTextTraitsID);
  185.     virtual Boolean        FocusDraw();
  186.     virtual    void        SpendTime(const EventRecord &inMacEvent);
  187.     virtual void         Click( SMouseDownEvent        &inMouseDown) ;
  188.     virtual Boolean        ObeyCommand(CommandT inCommand, void *ioParam);
  189.  
  190. protected:
  191.     virtual void        BeTarget();
  192. private:
  193.     void                InitStyleTextEdit(ResIDT inTextTraitsID);
  194.  
  195.                     
  196. };
  197.  
  198. Boolean FromHexToString( unsigned char* str, ByteCount length, unsigned char*    dest, ByteCount &actualLen);
  199. void BufToHex( const unsigned char* src, unsigned char* dest, ByteCount    srcLen, ByteCount &destLen, UInt8    clumpSize);
  200.  
  201.  
  202. extern CPPStarterApp*    gTheApp;
  203.