diff options
Diffstat (limited to 'common/quicktime_win32/MacTextEditor.h')
| -rw-r--r-- | common/quicktime_win32/MacTextEditor.h | 3472 |
1 files changed, 3472 insertions, 0 deletions
diff --git a/common/quicktime_win32/MacTextEditor.h b/common/quicktime_win32/MacTextEditor.h new file mode 100644 index 0000000..040f9f6 --- /dev/null +++ b/common/quicktime_win32/MacTextEditor.h @@ -0,0 +1,3472 @@ +/* + File: MacTextEditor.h + + Contains: Interfaces for MLTE - TextEdit replacement + + Version: QuickTime 7.3 + + Copyright: (c) 2007 (c) 1996-2001 by Apple Computer, Inc., all rights reserved. + + Bugs?: For bug reports, consult the following page on + the World Wide Web: + + http://developer.apple.com/bugreporter/ + +*/ +#ifndef __MACTEXTEDITOR__ +#define __MACTEXTEDITOR__ + +#ifndef __CONDITIONALMACROS__ +#include <ConditionalMacros.h> +#endif + +#ifndef __MACTYPES__ +#include <MacTypes.h> +#endif + +#ifndef __FILES__ +#include <Files.h> +#endif + +#ifndef __MACERRORS__ +#include <MacErrors.h> +#endif + +#ifndef __CFSTRING__ +#include <CFString.h> +#endif + +#ifndef __CFDICTIONARY__ +#include <CFDictionary.h> +#endif + +#ifndef __ATSUNICODE__ +#include <ATSUnicode.h> +#endif + +#ifndef __DRAG__ +#include <Drag.h> +#endif + +#ifndef __MACWINDOWS__ +#include <MacWindows.h> +#endif + +#ifndef __EVENTS__ +#include <Events.h> +#endif + +#ifndef __CARBONEVENTS__ +#include <CarbonEvents.h> +#endif + + + + +#if PRAGMA_ONCE +#pragma once +#endif + +#ifdef __cplusplus +extern "C" { +#endif + +#if PRAGMA_IMPORT +#pragma import on +#endif + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=mac68k +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(push, 2) +#elif PRAGMA_STRUCT_PACK + #pragma pack(2) +#endif + + + +typedef struct OpaqueTXNObject* TXNObject; +typedef struct OpaqueTXNFontMenuObject* TXNFontMenuObject; +typedef UInt32 TXNFrameID; +typedef UInt32 TXNVersionValue; +enum { + kTXNWillDefaultToATSUIBit = 0, + kTXNWillDefaultToCarbonEventBit = 1 +}; + + +typedef OptionBits TXNFeatureBits; +enum { + kTXNWillDefaultToATSUIMask = 1L << kTXNWillDefaultToATSUIBit, + kTXNWillDefaultToCarbonEventMask = 1L << kTXNWillDefaultToCarbonEventBit +}; + +enum { + kTXNWantMoviesBit = 0, + kTXNWantSoundBit = 1, + kTXNWantGraphicsBit = 2, + kTXNAlwaysUseQuickDrawTextBit = 3, + kTXNUseTemporaryMemoryBit = 4 +}; + + +typedef OptionBits TXNInitOptions; +enum { + kTXNWantMoviesMask = 1L << kTXNWantMoviesBit, + kTXNWantSoundMask = 1L << kTXNWantSoundBit, + kTXNWantGraphicsMask = 1L << kTXNWantGraphicsBit, + kTXNAlwaysUseQuickDrawTextMask = 1L << kTXNAlwaysUseQuickDrawTextBit, + kTXNUseTemporaryMemoryMask = 1L << kTXNUseTemporaryMemoryBit +}; + +enum { + kTXNDrawGrowIconBit = 0, + kTXNShowWindowBit = 1, + kTXNWantHScrollBarBit = 2, + kTXNWantVScrollBarBit = 3, + kTXNNoTSMEverBit = 4, + kTXNReadOnlyBit = 5, + kTXNNoKeyboardSyncBit = 6, + kTXNNoSelectionBit = 7, + kTXNSaveStylesAsSTYLResourceBit = 8, + kOutputTextInUnicodeEncodingBit = 9, + kTXNDoNotInstallDragProcsBit = 10, + kTXNAlwaysWrapAtViewEdgeBit = 11, + kTXNDontDrawCaretWhenInactiveBit = 12, + kTXNDontDrawSelectionWhenInactiveBit = 13, + kTXNSingleLineOnlyBit = 14, + kTXNDisableDragAndDropBit = 15, + kTXNUseQDforImagingBit = 16, + kTXNMonostyledTextBit = 17 +}; + + + +/* + * TXNFrameOptions + * + * Summary: + * Defines the initial behavior of an MLTE object created with + * TXNNewObject. + * + * Discussion: + * These masks can be combined and passed to TXNNewObject to define + * the initial behavior of a new object. + */ +typedef OptionBits TXNFrameOptions; +enum { + + /* + * Indicates that the frame will have a size box. + */ + kTXNDrawGrowIconMask = 1L << kTXNDrawGrowIconBit, + + /* + * Indicates that the window associated with the text object will be + * displayed when the object is created. The application no longer + * needs to call the ShowWindow function from the Window Manager; + * MLTE will do this for you. + */ + kTXNShowWindowMask = 1L << kTXNShowWindowBit, + + /* + * Indicates that the frame will have a horizontal scrollbar. + */ + kTXNWantHScrollBarMask = 1L << kTXNWantHScrollBarBit, + + /* + * Indicates that the frame will have a vertical scrollbar. + */ + kTXNWantVScrollBarMask = 1L << kTXNWantVScrollBarBit, + + /* + * Indicates that the Text Services Manager will not be used. You + * cannot use this mask when your application accepts Unicode input. + */ + kTXNNoTSMEverMask = 1L << kTXNNoTSMEverBit, + + /* + * Indicates that the text object will be read-only. + */ + kTXNReadOnlyMask = 1L << kTXNReadOnlyBit, + + /* + * Indicates that keyboard synchronization will not occur. + */ + kTXNNoKeyboardSyncMask = 1L << kTXNNoKeyboardSyncBit, + + /* + * Indicates that the user shouldn't be able to set the insertion + * point or make a selection. + */ + kTXNNoSelectionMask = 1L << kTXNNoSelectionBit, + + /* + * Indicates that the text style will be saved as a + * kTXNMultipleStylesPerTextDocumentResType resource. You can set + * this to assure compatibility with SimpleText. If you use + * kTXNMultipleStylesPerTextDocumentResType resources to save style + * info, your documents can have as many styles as you'd like. + * However tabs are not saved. If you don't use this mask, plain + * text files are saved as kTXNSingleStylePerTextDocumentResType + * resources, and only the first style in the document is saved. + * (Your application is expected to apply all style changes to the + * entire document.) If you save files with a + * kTXNSingleStylePerTextDocumentResType resource, their output is + * similar to those output by CodeWarrior, BBEdit, and MPW. + */ + kTXNSaveStylesAsSTYLResourceMask = 1L << kTXNSaveStylesAsSTYLResourceBit, + + /* + * Indicates that plain text will be saved as Unicode. + */ + kOutputTextInUnicodeEncodingMask = 1L << kOutputTextInUnicodeEncodingBit, + + /* + * Indicates that MLTE will not install its own drag handler for the + * text object. This can be used if the client wants to install + * their own handler. + */ + kTXNDoNotInstallDragProcsMask = 1L << kTXNDoNotInstallDragProcsBit, + + /* + * Indicates that lines will wrap at the edge of the view rectangle. + */ + kTXNAlwaysWrapAtViewEdgeMask = 1L << kTXNAlwaysWrapAtViewEdgeBit, + + /* + * Indicates that the caret shouldn't be drawn when the text object + * doesn't have focus. + */ + kTXNDontDrawCaretWhenInactiveMask = 1L << kTXNDontDrawCaretWhenInactiveBit, + + /* + * Indicates that the selection (if one) shouldn't be drawn when the + * text object doesn't have focus. + */ + kTXNDontDrawSelectionWhenInactiveMask = 1L << kTXNDontDrawSelectionWhenInactiveBit, + + /* + * Indicates that the text object will not scroll vertically, + * horizontal scrolling will stop when the end of the text is visible + * (plus any right margin), and there will be no limit to the width + * of the text. + */ + kTXNSingleLineOnlyMask = 1L << kTXNSingleLineOnlyBit, + + /* + * Indicates that drag and drop will not be allowed in the text + * object. + */ + kTXNDisableDragAndDropMask = 1L << kTXNDisableDragAndDropBit, + + /* + * Indicates that QuickDraw will be used for imaging instead of the + * default CoreGraphics (Quartz). [X-only] + */ + kTXNUseQDforImagingMask = 1L << kTXNUseQDforImagingBit, + + /* + * Indicates that the text object will keep in single style no matter + * what kind of changes made to the object. + */ + kTXNMonostyledTextMask = 1L << kTXNMonostyledTextBit +}; + +enum { + kTXNSetFlushnessBit = 0, + kTXNSetJustificationBit = 1, + kTXNUseFontFallBackBit = 2, + kTXNRotateTextBit = 3, + kTXNUseVerticalTextBit = 4, + kTXNDontUpdateBoxRectBit = 5, + kTXNDontDrawTextBit = 6, + kTXNUseCGContextRefBit = 7, + kTXNImageWithQDBit = 8, + kTXNDontWrapTextBit = 9 +}; + + +/* + * TXNTextBoxOptions + * + * Summary: + * Defines how text will be drawn by one of the TXNxxxDrawTextBox + * API. + * + * Discussion: + * These masks can be combined and added to a TXNTextBoxOptionsData + * structure to be passed to a TXNxxxDrawTextBox API. + */ +typedef OptionBits TXNTextBoxOptions; +enum { + + /* + * Indicates that the text will be flush according to the line + * direction. + */ + kTXNSetFlushnessMask = 1L << kTXNSetFlushnessBit, + + /* + * Indicates that the text will be justified in the direction that + * the text is displayed. Horizontal text will be justified + * horizontally, but not vertically. Vertical text will be justified + * vertically, but not horizontally. + */ + kTXNSetJustificationMask = 1L << kTXNSetJustificationBit, + + /* + * Indicates that ATSUI transient font matching (that searches for a + * font that has a matching character) will be used. + */ + kTXNUseFontFallBackMask = 1L << kTXNUseFontFallBackBit, + + /* + * Indicates that the text will be rotated. The amount of rotation + * is given in the rotation field of the TXNTextBoxOptionsData + * structure and is in units of degrees (negative values indicate + * clockwise rotation). + */ + kTXNRotateTextMask = 1L << kTXNRotateTextBit, + + /* + * Indicates that the text will be displayed vertically from top to + * bottom. + */ + kTXNUseVerticalTextMask = 1L << kTXNUseVerticalTextBit, + + /* + * Indicates that the specified rectangle will not be updated. If + * you use this mask when you call a TXNDrawxxxTextBox function, the + * funtion does not update the right coordinate (bottom coordinate if + * kTXNUseVerticalTextMask is used) of the specified rectangle to + * accommodate the longest line for text. + */ + kTXNDontUpdateBoxRectMask = 1L << kTXNDontUpdateBoxRectBit, + + /* + * Indicates that the size of the text will be returned but the text + * box will not be drawn. + */ + kTXNDontDrawTextMask = 1L << kTXNDontDrawTextBit, + + /* + * Indicates that the client has provided a CGContext to be used for + * CG imaging inside the text box. [X-only] + */ + kTXNUseCGContextRefMask = 1L << kTXNUseCGContextRefBit, + + /* + * Indicates that imaging will be done using QuickDraw instead of the + * default CoreGraphics. [X-only] + */ + kTXNImageWithQDMask = 1L << kTXNImageWithQDBit, + + /* + * Indicates that text should not be wrapped. [X-only] + */ + kTXNDontWrapTextMask = 1L << kTXNDontWrapTextBit +}; + +struct TXNTextBoxOptionsData { + TXNTextBoxOptions optionTags; + Fract flushness; + Fract justification; + Fixed rotation; + void * options; /* for future use*/ +}; +typedef struct TXNTextBoxOptionsData TXNTextBoxOptionsData; +enum { + kTXNFontContinuousBit = 0, + kTXNSizeContinuousBit = 1, + kTXNStyleContinuousBit = 2, + kTXNColorContinuousBit = 3 +}; + +typedef OptionBits TXNContinuousFlags; +enum { + kTXNFontContinuousMask = 1L << kTXNFontContinuousBit, + kTXNSizeContinuousMask = 1L << kTXNSizeContinuousBit, + kTXNStyleContinuousMask = 1L << kTXNStyleContinuousBit, + kTXNColorContinuousMask = 1L << kTXNColorContinuousBit +}; + +enum { + kTXNIgnoreCaseBit = 0, + kTXNEntireWordBit = 1, + kTXNUseEncodingWordRulesBit = 31 +}; + +typedef OptionBits TXNMatchOptions; +enum { + kTXNIgnoreCaseMask = 1L << kTXNIgnoreCaseBit, + kTXNEntireWordMask = 1L << kTXNEntireWordBit, + kTXNUseEncodingWordRulesMask = (unsigned long)(1L << kTXNUseEncodingWordRulesBit) +}; + + +typedef OSType TXNFileType; +enum { + kTXNTextensionFile = FOUR_CHAR_CODE('txtn'), + kTXNTextFile = FOUR_CHAR_CODE('TEXT'), + kTXNPictureFile = FOUR_CHAR_CODE('PICT'), + kTXNMovieFile = FOUR_CHAR_CODE('MooV'), + kTXNSoundFile = FOUR_CHAR_CODE('sfil'), + kTXNAIFFFile = FOUR_CHAR_CODE('AIFF'), + kTXNUnicodeTextFile = FOUR_CHAR_CODE('utxt') +}; + +/* Only kTXNTextEditStyleFrameType is supported at this time */ +typedef UInt32 TXNFrameType; +enum { + kTXNTextEditStyleFrameType = 1, + kTXNPageFrameType = 2, /* not supported*/ + kTXNMultipleFrameType = 3 /* not supported*/ +}; + + +typedef OSType TXNDataType; +enum { + kTXNTextData = FOUR_CHAR_CODE('TEXT'), + kTXNPictureData = FOUR_CHAR_CODE('PICT'), + kTXNMovieData = FOUR_CHAR_CODE('moov'), + kTXNSoundData = FOUR_CHAR_CODE('snd '), + kTXNUnicodeTextData = FOUR_CHAR_CODE('utxt') +}; + + +typedef FourCharCode TXNControlTag; +enum { + kTXNLineDirectionTag = FOUR_CHAR_CODE('lndr'), + kTXNJustificationTag = FOUR_CHAR_CODE('just'), + kTXNIOPrivilegesTag = FOUR_CHAR_CODE('iopv'), + kTXNSelectionStateTag = FOUR_CHAR_CODE('slst'), + kTXNInlineStateTag = FOUR_CHAR_CODE('inst'), + kTXNWordWrapStateTag = FOUR_CHAR_CODE('wwrs'), + kTXNKeyboardSyncStateTag = FOUR_CHAR_CODE('kbsy'), + kTXNAutoIndentStateTag = FOUR_CHAR_CODE('auin'), + kTXNTabSettingsTag = FOUR_CHAR_CODE('tabs'), + kTXNRefConTag = FOUR_CHAR_CODE('rfcn'), + kTXNMarginsTag = FOUR_CHAR_CODE('marg'), + kTXNFlattenMoviesTag = FOUR_CHAR_CODE('flat'), + kTXNDoFontSubstitution = FOUR_CHAR_CODE('fSub'), /*note : this could degrade performance greatly in the case of large documents.*/ + kTXNNoUserIOTag = FOUR_CHAR_CODE('nuio'), + kTXNUseCarbonEvents = FOUR_CHAR_CODE('cbcb'), + kTXNDrawCaretWhenInactiveTag = FOUR_CHAR_CODE('dcrt'), + kTXNDrawSelectionWhenInactiveTag = FOUR_CHAR_CODE('dsln'), + kTXNDisableDragAndDropTag = FOUR_CHAR_CODE('drag'), + kTXNSingleLevelUndoTag = FOUR_CHAR_CODE('undo'), + kTXNVisibilityTag = FOUR_CHAR_CODE('visb') /*set the visibility state of the object*/ +}; + +typedef UInt32 TXNActionKey; +enum { + kTXNTypingAction = 0, + kTXNCutAction = 1, + kTXNPasteAction = 2, + kTXNClearAction = 3, + kTXNChangeFontAction = 4, + kTXNChangeFontColorAction = 5, + kTXNChangeFontSizeAction = 6, + kTXNChangeStyleAction = 7, + kTXNAlignLeftAction = 8, + kTXNAlignCenterAction = 9, + kTXNAlignRightAction = 10, + kTXNDropAction = 11, + kTXNMoveAction = 12, + kTXNFontFeatureAction = 13, + kTXNFontVariationAction = 14, + kTXNUndoLastAction = 1024 /*use if none of the above apply*/ +}; + +enum { + kTXNClearThisControl = (long)0xFFFFFFFF, + kTXNClearTheseFontFeatures = (long)0x80000000 +}; + +/* + convenience constants for TXNGet/SetTXNControls + kTXNIOPrivilegesTag +*/ +enum { + kTXNReadWrite = false, + kTXNReadOnly = true +}; + +/* kTXNSelectionStateTag*/ +enum { + kTXNSelectionOn = true, + kTXNSelectionOff = false +}; + +/* kTXNInlineStateTag*/ +enum { + kTXNUseInline = false, + kTXNUseBottomline = true +}; + + +/* kTXNWordWrapStateTag*/ +enum { + kTXNAutoWrap = false, + kTXNNoAutoWrap = true +}; + +/* kTXNKeyboardSyncStateTag*/ +enum { + kTXNSyncKeyboard = false, + kTXNNoSyncKeyboard = true +}; + +/* kTXNAutoIndentStateTag*/ +enum { + kTXNAutoIndentOff = false, + kTXNAutoIndentOn = true +}; + +/* kTXNDrawCaretWhenInactiveTag*/ +enum { + kTXNDontDrawCaretWhenInactive = false, + kTXNDrawCaretWhenInactive = true +}; + +/* kTXNDrawSelectionWhenInactiveTag*/ +enum { + kTXNDontDrawSelectionWhenInactive = false, + kTXNDrawSelectionWhenInactive = true +}; + +/* kTXNDisableDragAndDropTag*/ +enum { + kTXNEnableDragAndDrop = false, + kTXNDisableDragAndDrop = true +}; + +typedef SInt8 TXNTabType; +enum { + kTXNRightTab = -1, + kTXNLeftTab = 0, + kTXNCenterTab = 1 +}; + +struct TXNTab { + SInt16 value; + TXNTabType tabType; + UInt8 filler; +}; +typedef struct TXNTab TXNTab; +enum { + kTXNLeftToRight = 0, + kTXNRightToLeft = 1 +}; + +enum { + kTXNFlushDefault = 0, /*flush according to the line direction */ + kTXNFlushLeft = 1, + kTXNFlushRight = 2, + kTXNCenter = 4, + kTXNFullJust = 8, + kTXNForceFullJust = 16 /*flush left for all scripts */ +}; + +/* + In version 1.2 of MLTE and later you can change the top, left and right margins. + The bottom margin is a placeholder for possible future enhancements. +*/ +struct TXNMargins { + SInt16 topMargin; + SInt16 leftMargin; + SInt16 bottomMargin; + SInt16 rightMargin; +}; +typedef struct TXNMargins TXNMargins; +union TXNControlData { + UInt32 uValue; + SInt32 sValue; + TXNTab tabValue; + TXNMargins * marginsPtr; +}; +typedef union TXNControlData TXNControlData; +typedef Boolean TXNScrollBarState; +enum { + kScrollBarsAlwaysActive = true, + kScrollBarsSyncWithFocus = false +}; + +/* + kTXNNoFontVariations is returned in the dataValue field when the caller as asked + to see if the variation is continuous and there was no variation in the continuous range +*/ +enum { + kTXNDontCareTypeSize = (long)0xFFFFFFFF, + kTXNDontCareTypeStyle = 0xFF, + kTXNIncrementTypeSize = 0x00000001, + kTXNDecrementTypeSize = (long)0x80000000, + kTXNUseScriptDefaultValue = -1, + kTXNNoFontVariations = 0x7FFF +}; + +typedef UInt32 TXNOffset; +enum { + kTXNUseCurrentSelection = (unsigned long)0xFFFFFFFF, + kTXNStartOffset = 0, + kTXNEndOffset = 0x7FFFFFFF +}; + + +enum { + kTXNSingleStylePerTextDocumentResType = FOUR_CHAR_CODE('MPSR'), + kTXNMultipleStylesPerTextDocumentResType = FOUR_CHAR_CODE('styl') +}; + + +typedef void * TXNObjectRefcon; +/*constants for TXNShowSelection*/ +enum { + kTXNShowStart = false, + kTXNShowEnd = true +}; + +typedef OSStatus TXNErrors; +/*default constants for TXTNInit. */ +#define kTXNDefaultFontName ((StringPtr)NULL) +enum { + kTXNDefaultFontSize = 0x000C0000 +}; + +enum { + kTXNDefaultFontStyle = normal +}; + + +typedef UInt32 TXNHyperLinkState; +enum { + kTXNLinkNotPressed = 0, + kTXNLinkWasPressed = 1, + kTXNLinkTracking = 3 +}; + +typedef FourCharCode TXNTypeRunAttributes; +enum { + kTXNQDFontNameAttribute = FOUR_CHAR_CODE('fntn'), + kTXNQDFontFamilyIDAttribute = FOUR_CHAR_CODE('font'), + kTXNQDFontSizeAttribute = FOUR_CHAR_CODE('size'), + kTXNQDFontStyleAttribute = FOUR_CHAR_CODE('face'), + kTXNQDFontColorAttribute = FOUR_CHAR_CODE('klor'), + kTXNTextEncodingAttribute = FOUR_CHAR_CODE('encd'), + kTXNATSUIFontFeaturesAttribute = FOUR_CHAR_CODE('atfe'), + kTXNATSUIFontVariationsAttribute = FOUR_CHAR_CODE('atva'), + kTXNURLAttribute = FOUR_CHAR_CODE('urla') +}; + +/* + kTXNQDFontSizeAttributeSize is obsolete and incorrect + font sizes are always returned as a Fixed value, just as + they are passed to MLTE. Use kTXNFontSizeAttributeSize. +*/ +typedef ByteCount TXNTypeRunAttributeSizes; +enum { + kTXNQDFontNameAttributeSize = sizeof(Str255), + kTXNQDFontFamilyIDAttributeSize = sizeof(SInt16), + kTXNQDFontSizeAttributeSize = sizeof(SInt16), + kTXNQDFontStyleAttributeSize = sizeof(Style), + kTXNQDFontColorAttributeSize = sizeof(RGBColor), + kTXNTextEncodingAttributeSize = sizeof(TextEncoding), + kTXNFontSizeAttributeSize = sizeof(Fixed) +}; + +typedef UInt32 TXNPermanentTextEncodingType; +enum { + kTXNSystemDefaultEncoding = 0, + kTXNMacOSEncoding = 1, + kTXNUnicodeEncoding = 2 +}; + + + +typedef FourCharCode TXTNTag; +struct TXNATSUIFeatures { + ItemCount featureCount; + ATSUFontFeatureType * featureTypes; + ATSUFontFeatureSelector * featureSelectors; +}; +typedef struct TXNATSUIFeatures TXNATSUIFeatures; +struct TXNATSUIVariations { + ItemCount variationCount; + ATSUFontVariationAxis * variationAxis; + ATSUFontVariationValue * variationValues; +}; +typedef struct TXNATSUIVariations TXNATSUIVariations; +union TXNAttributeData { + void * dataPtr; + UInt32 dataValue; + TXNATSUIFeatures * atsuFeatures; + TXNATSUIVariations * atsuVariations; + CFURLRef urlReference; +}; +typedef union TXNAttributeData TXNAttributeData; +struct TXNTypeAttributes { + TXTNTag tag; + ByteCount size; + TXNAttributeData data; +}; +typedef struct TXNTypeAttributes TXNTypeAttributes; +struct TXNMacOSPreferredFontDescription { + UInt32 fontID; + Fixed pointSize; + TextEncoding encoding; + Style fontStyle; +}; +typedef struct TXNMacOSPreferredFontDescription TXNMacOSPreferredFontDescription; +struct TXNMatchTextRecord { + const void * iTextPtr; + SInt32 iTextToMatchLength; + TextEncoding iTextEncoding; +}; +typedef struct TXNMatchTextRecord TXNMatchTextRecord; +/*constants & typedefs for setting the background*/ +typedef UInt32 TXNBackgroundType; +enum { + kTXNBackgroundTypeRGB = 1 +}; + +/* + The TXNBackgroundData is left as a union so that it can be expanded + in the future to support other background types +*/ +union TXNBackgroundData { + RGBColor color; +}; +typedef union TXNBackgroundData TXNBackgroundData; +struct TXNBackground { + TXNBackgroundType bgType; + TXNBackgroundData bg; +}; +typedef struct TXNBackground TXNBackground; +struct TXNLongRect { + SInt32 top; + SInt32 left; + SInt32 bottom; + SInt32 right; +}; +typedef struct TXNLongRect TXNLongRect; +/* + options for TXNGet/ClearActionChangeCount to decide what type(s) of action + count to use +*/ +enum { + kTXNTextInputCountBit = 0, + kTXNRunCountBit = 1 +}; + +typedef OptionBits TXNCountOptions; +enum { + kTXNTextInputCountMask = 1L << kTXNTextInputCountBit, + kTXNRunCountMask = 1L << kTXNRunCountBit, + kTXNAllCountMask = kTXNTextInputCountMask | kTXNRunCountMask +}; + + +typedef UInt32 TXNScrollUnit; +enum { + kTXNScrollUnitsInPixels = 0, + kTXNScrollUnitsInLines = 1, + kTXNScrollUnitsInViewRects = 2 +}; + +typedef UInt32 TXNScrollBarOrientation; +enum { + kTXNHorizontal = 0, + kTXNVertical = 1 +}; + +typedef CALLBACK_API( OSStatus , TXNFindProcPtr )(const TXNMatchTextRecord *matchData, TXNDataType iDataType, TXNMatchOptions iMatchOptions, const void *iSearchTextPtr, TextEncoding encoding, TXNOffset absStartOffset, ByteCount searchTextLength, TXNOffset *oStartMatch, TXNOffset *oEndMatch, Boolean *ofound, UInt32 refCon); +typedef CALLBACK_API( CFStringRef , TXNActionKeyMapperProcPtr )(TXNActionKey actionKey, UInt32 commandID); + +typedef CALLBACK_API( void , TXNScrollInfoProcPtr )(SInt32 iValue, SInt32 iMaximumValue, TXNScrollBarOrientation iScrollBarOrientation, SInt32 iRefCon); +typedef STACK_UPP_TYPE(TXNFindProcPtr) TXNFindUPP; +typedef STACK_UPP_TYPE(TXNActionKeyMapperProcPtr) TXNActionKeyMapperUPP; +typedef STACK_UPP_TYPE(TXNScrollInfoProcPtr) TXNScrollInfoUPP; +/* + * NewTXNFindUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( TXNFindUPP ) +NewTXNFindUPP(TXNFindProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppTXNFindProcInfo = 0x0FFFFFF0 }; /* pascal 4_bytes Func(4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(TXNFindUPP) NewTXNFindUPP(TXNFindProcPtr userRoutine) { return (TXNFindUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppTXNFindProcInfo, GetCurrentArchitecture()); } + #else + #define NewTXNFindUPP(userRoutine) (TXNFindUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppTXNFindProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewTXNActionKeyMapperUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( TXNActionKeyMapperUPP ) +NewTXNActionKeyMapperUPP(TXNActionKeyMapperProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppTXNActionKeyMapperProcInfo = 0x000003F0 }; /* pascal 4_bytes Func(4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(TXNActionKeyMapperUPP) NewTXNActionKeyMapperUPP(TXNActionKeyMapperProcPtr userRoutine) { return (TXNActionKeyMapperUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppTXNActionKeyMapperProcInfo, GetCurrentArchitecture()); } + #else + #define NewTXNActionKeyMapperUPP(userRoutine) (TXNActionKeyMapperUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppTXNActionKeyMapperProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * NewTXNScrollInfoUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( TXNScrollInfoUPP ) +NewTXNScrollInfoUPP(TXNScrollInfoProcPtr userRoutine); +#if !OPAQUE_UPP_TYPES + enum { uppTXNScrollInfoProcInfo = 0x00003FC0 }; /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */ + #ifdef __cplusplus + inline DEFINE_API_C(TXNScrollInfoUPP) NewTXNScrollInfoUPP(TXNScrollInfoProcPtr userRoutine) { return (TXNScrollInfoUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppTXNScrollInfoProcInfo, GetCurrentArchitecture()); } + #else + #define NewTXNScrollInfoUPP(userRoutine) (TXNScrollInfoUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppTXNScrollInfoProcInfo, GetCurrentArchitecture()) + #endif +#endif + +/* + * DisposeTXNFindUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeTXNFindUPP(TXNFindUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeTXNFindUPP(TXNFindUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeTXNFindUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeTXNActionKeyMapperUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +DisposeTXNActionKeyMapperUPP(TXNActionKeyMapperUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeTXNActionKeyMapperUPP(TXNActionKeyMapperUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeTXNActionKeyMapperUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * DisposeTXNScrollInfoUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( void ) +DisposeTXNScrollInfoUPP(TXNScrollInfoUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) DisposeTXNScrollInfoUPP(TXNScrollInfoUPP userUPP) { DisposeRoutineDescriptor((UniversalProcPtr)userUPP); } + #else + #define DisposeTXNScrollInfoUPP(userUPP) DisposeRoutineDescriptor(userUPP) + #endif +#endif + +/* + * InvokeTXNFindUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +InvokeTXNFindUPP( + const TXNMatchTextRecord * matchData, + TXNDataType iDataType, + TXNMatchOptions iMatchOptions, + const void * iSearchTextPtr, + TextEncoding encoding, + TXNOffset absStartOffset, + ByteCount searchTextLength, + TXNOffset * oStartMatch, + TXNOffset * oEndMatch, + Boolean * ofound, + UInt32 refCon, + TXNFindUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(OSStatus) InvokeTXNFindUPP(const TXNMatchTextRecord * matchData, TXNDataType iDataType, TXNMatchOptions iMatchOptions, const void * iSearchTextPtr, TextEncoding encoding, TXNOffset absStartOffset, ByteCount searchTextLength, TXNOffset * oStartMatch, TXNOffset * oEndMatch, Boolean * ofound, UInt32 refCon, TXNFindUPP userUPP) { return (OSStatus)CALL_ELEVEN_PARAMETER_UPP(userUPP, uppTXNFindProcInfo, matchData, iDataType, iMatchOptions, iSearchTextPtr, encoding, absStartOffset, searchTextLength, oStartMatch, oEndMatch, ofound, refCon); } + #else + #define InvokeTXNFindUPP(matchData, iDataType, iMatchOptions, iSearchTextPtr, encoding, absStartOffset, searchTextLength, oStartMatch, oEndMatch, ofound, refCon, userUPP) (OSStatus)CALL_ELEVEN_PARAMETER_UPP((userUPP), uppTXNFindProcInfo, (matchData), (iDataType), (iMatchOptions), (iSearchTextPtr), (encoding), (absStartOffset), (searchTextLength), (oStartMatch), (oEndMatch), (ofound), (refCon)) + #endif +#endif + +/* + * InvokeTXNActionKeyMapperUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( CFStringRef ) +InvokeTXNActionKeyMapperUPP( + TXNActionKey actionKey, + UInt32 commandID, + TXNActionKeyMapperUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(CFStringRef) InvokeTXNActionKeyMapperUPP(TXNActionKey actionKey, UInt32 commandID, TXNActionKeyMapperUPP userUPP) { return (CFStringRef)CALL_TWO_PARAMETER_UPP(userUPP, uppTXNActionKeyMapperProcInfo, actionKey, commandID); } + #else + #define InvokeTXNActionKeyMapperUPP(actionKey, commandID, userUPP) (CFStringRef)CALL_TWO_PARAMETER_UPP((userUPP), uppTXNActionKeyMapperProcInfo, (actionKey), (commandID)) + #endif +#endif + +/* + * InvokeTXNScrollInfoUPP() + * + * Availability: + * Non-Carbon CFM: available as macro/inline + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.1 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( void ) +InvokeTXNScrollInfoUPP( + SInt32 iValue, + SInt32 iMaximumValue, + TXNScrollBarOrientation iScrollBarOrientation, + SInt32 iRefCon, + TXNScrollInfoUPP userUPP); +#if !OPAQUE_UPP_TYPES + #ifdef __cplusplus + inline DEFINE_API_C(void) InvokeTXNScrollInfoUPP(SInt32 iValue, SInt32 iMaximumValue, TXNScrollBarOrientation iScrollBarOrientation, SInt32 iRefCon, TXNScrollInfoUPP userUPP) { CALL_FOUR_PARAMETER_UPP(userUPP, uppTXNScrollInfoProcInfo, iValue, iMaximumValue, iScrollBarOrientation, iRefCon); } + #else + #define InvokeTXNScrollInfoUPP(iValue, iMaximumValue, iScrollBarOrientation, iRefCon, userUPP) CALL_FOUR_PARAMETER_UPP((userUPP), uppTXNScrollInfoProcInfo, (iValue), (iMaximumValue), (iScrollBarOrientation), (iRefCon)) + #endif +#endif + +#if CALL_NOT_IN_CARBON || OLDROUTINENAMES + /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */ + #define NewTXNFindProc(userRoutine) NewTXNFindUPP(userRoutine) + #define NewTXNActionKeyMapperProc(userRoutine) NewTXNActionKeyMapperUPP(userRoutine) + #define NewTXNScrollInfoProc(userRoutine) NewTXNScrollInfoUPP(userRoutine) + #define CallTXNFindProc(userRoutine, matchData, iDataType, iMatchOptions, iSearchTextPtr, encoding, absStartOffset, searchTextLength, oStartMatch, oEndMatch, ofound, refCon) InvokeTXNFindUPP(matchData, iDataType, iMatchOptions, iSearchTextPtr, encoding, absStartOffset, searchTextLength, oStartMatch, oEndMatch, ofound, refCon, userRoutine) + #define CallTXNActionKeyMapperProc(userRoutine, actionKey, commandID) InvokeTXNActionKeyMapperUPP(actionKey, commandID, userRoutine) + #define CallTXNScrollInfoProc(userRoutine, iValue, iMaximumValue, iScrollBarOrientation, iRefCon) InvokeTXNScrollInfoUPP(iValue, iMaximumValue, iScrollBarOrientation, iRefCon, userRoutine) +#endif /* CALL_NOT_IN_CARBON */ + + + + +/* + These are currently the only settings for the flags field of TXNCarbonEventInfo + If you want the AppleEventHandlers removed use kTXNNoAppleEventHandlersMask. + If you want to subsequently restart AppleEvent Handlers after removing + your Texthandlers. Use kTXNRestartAppleEventHandlersMask. +*/ + +enum { + kTXNNoAppleEventHandlersBit = 0, + kTXNRestartAppleEventHandlersBit = 1 +}; + +enum { + kTXNNoAppleEventHandlersMask = 1 << kTXNNoAppleEventHandlersBit, + kTXNRestartAppleEventHandlersMask = 1 << kTXNRestartAppleEventHandlersBit +}; + +/*dictionary keys currently supported in the TXNCarbonEventInfo dictionary*/ +#define kTXNTextHandlerKey CFSTR("TextInput") +#define kTXNWindowEventHandlerKey CFSTR("WindowEvent") +#define kTXNWindowResizeEventHandlerKey CFSTR("WindowResize") +#define kTXNCommandTargetKey CFSTR("CommandTarget") +#define kTXNCommandUpdateKey CFSTR("CommandUpdate") +#define kTXNFontMenuRefKey CFSTR("FontMenuRef") +#define kTXNFontMenuObjectKey CFSTR("FontMenuObject") +#define kTXNActionKeyMapperKey CFSTR("ActionKeyMapper") +#define kTXNWheelMouseEventHandlerKey CFSTR("WheelMouseEvent") + +/* use this to pass an EventTargetRef to MLTE via the TXNSetTXNControl... call*/ +struct TXNCarbonEventInfo { + Boolean useCarbonEvents; + UInt8 filler; + UInt16 flags; + CFDictionaryRef fDictionary; +}; +typedef struct TXNCarbonEventInfo TXNCarbonEventInfo; + +/* + ***************************************************************************************************** + Allocates a new frame (i.e. new is called to allocate a TXNObject) and returns a pointer to the object + in the newDoc parameter. + Input: + + iFileSpec: If not NULL the file is read to obtain the document contents after the object is + successfully allocated. If NULL you start with an empty document. + + iWindow: Required. The window in which the document is going to be displayed. + + iFrame: If text-area does not fill the entire window. This specifies the area to fill. Can be NULL. + In which case, the window's portRect is used as the frame. + + iFrameOptions: Specify the options to be supported by this frame. The available options are support + for cutting and pasting movies and sound, handle scrollbars and handle grow box in the + frame. + iFrameType: Specify the type of frame to be used. In MLTE version 1.1 and earlier, only + kTXNTextEditStyleFrameType is supported. + + iFileType: Specify the primary file type. If you use kTextensionTextFile files will be saved + in a private format (see xxx). If you want saved files to be plain text files you should + specify 'TEXT' here. If you specify 'TEXT' here you can use the frameOptions parameter to + specify whether the TEXT files should be saved with 'MPSR' resources or 'styl' resources. + These are resources which contain style information for a file, and they both have there + own limitations. If you use 'styl' resources to save style info your documents can have as + many styles as you like however tabs will not be saved. If you use 'MPSR' resources only the + first style in the document will be saved (you as client are expected to apply all style + changes to the entire document). If you truly want rich documents which can potentially + contain graphics and sound you should specify kTextensionTextFileOutput. If you want a plain + text editor like SimpleText specify that style information by saved via 'styl' resources. + If you want files similar to those output by CW IDE, BBEdit, and MPW specify that style + information be saved in a 'MPSR' resource. + + Output: + + OSStatus: function result. If anything goes wrong the error is returned. Success must be complete. + That is if everything works, but there is a failure reading a specified file the object + is freed. + oTXNObject: Pointer to the opaque datastructure allocated by the function. Most of the subsequent + functions require that such a pointer be passed in. + + oTXNFrameID: Unique ID for the frame. <Note in version 1.0 this value is always set to 0> + iRefCon: Caller can set this to any value. It is retained by the + TXNNewObject which can later be asked to return it. + ************************************************************************************************************** +*/ +/* + * TXNNewObject() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNNewObject( + const FSSpec * iFileSpec, /* can be NULL */ + WindowRef iWindow, + const Rect * iFrame, /* can be NULL */ + TXNFrameOptions iFrameOptions, + TXNFrameType iFrameType, + TXNFileType iFileType, + TXNPermanentTextEncodingType iPermanentEncoding, + TXNObject * oTXNObject, + TXNFrameID * oTXNFrameID, + TXNObjectRefcon iRefCon); + + + +/* + ************************************************************************************************* + Delete a previously allocated TXNObject and all associated data structures. If the frameType is + multiple frames all frames are released. + + Input: + iTXNObject: opaque structure to free. + ************************************************************************************************** +*/ +/* + * TXNDeleteObject() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNDeleteObject(TXNObject iTXNObject); + + + +/* + ************************************************************************************************* + Changes the frame's size to match the new width and height. + Input: + + iTXNObject: opaque Textension structure. + + iWidth: New width in pixels. + + iHeight: New height in pixels. + + iTXNFrameID: FrameID that specifies the frame to move. + ************************************************************************************************* +*/ +/* + * TXNResizeFrame() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNResizeFrame( + TXNObject iTXNObject, + UInt32 iWidth, + UInt32 iHeight, + TXNFrameID iTXNFrameID); + + + +/* + ************************************************************************************************* + Changes the frame's bounds to match the Rect. + Input: + iTXNObject : opaque Textension structure. + + (iTop, iLeft, iBottom, iRight): Rect of the view + + + iTXNFrameID: FrameID that specifies the frame to move. + ************************************************************************************************* +*/ +/* + * TXNSetFrameBounds() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNSetFrameBounds( + TXNObject iTXNObject, + SInt32 iTop, + SInt32 iLeft, + SInt32 iBottom, + SInt32 iRight, + TXNFrameID iTXNFrameID); + + + +/* + **************************************************************************************************** + Initialize the Textension library. Should be called as soon as possible after the Macintosh toolbox + is initialized. + Input: + iDefaultFonts: A table of font information including fontFamily ID, point size, + style, and script code. The table can be NULL or can have + an entry for any script for which you would like to to + designate a default font. Only a valid script number is + required. You can designate that Textension should use + the default for a give script by setting the field to kTXNUseScriptDefaultValue (-1). + + For example, if you wanted to specify New York as the default + font to use for Roman scripts, but were happy with the + default style and size you would call the function like this: + + TXNMacOSPreferredFontDescription defaults; + GetFNum( "\pNew York", &defaults.fontFamilyID ); + defaults.pointSize = kTXNDefaultFontSize; + defaults.fontStyle = kTXNDefaultFontStyle; + defaults.script = smRoman; + status = TXNInitTextension( &defaults, 1, 0 ); + iCountDefaultFonts: Count of entries in the iDefaultFonts parameter. + + + + iUsageFlags: Specify whether sound and movies should be supported. + Output: + OSStatus: Function result. NoErr if everything initialized correctly. Variety of + possible MacOS errors if something goes wrong. + *********************************************************************************************| +*/ +/* + * TXNInitTextension() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNInitTextension( + const TXNMacOSPreferredFontDescription iDefaultFonts[], /* can be NULL */ + ItemCount iCountDefaultFonts, + TXNInitOptions iUsageFlags); + + + +/* + ************************************************************************************* + Close the Textension library. It is necessary to call this function so that Textension + can correctly close down any TSM connections and do other clean up. + ************************************************************************************** +*/ +/* + * TXNTerminateTextension() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNTerminateTextension(void); + + + +/* + ************************************************************************************** + Process a keydown event. Note that if CJK script is installed and current font is + CJK inline input will take place. This is always the case unless the application has + requested the bottomline window or has turned off TSM (see initialization options above). + + Input: + iTXNObject: opaque struct to apply keydown to. + + iEvent: the keydown event. + *************************************************************************************** +*/ +/* + * TXNKeyDown() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNKeyDown( + TXNObject iTXNObject, + const EventRecord * iEvent); + + +/* + *************************************************************************************** + Handle switching the cursor. If over text area set to i-beam. Over graphics, sound, + movie, scrollbar or outside of window set to arrow. + + Input: + iTXNObject: Opaque struct obtained from TXNNewObject. + ioCursorRgn: Region to be passed to WaitNextEvent. Resized accordingly by + TXNAdjustCursor. + *************************************************************************************** +*/ +/* + * TXNAdjustCursor() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNAdjustCursor( + TXNObject iTXNObject, + RgnHandle ioCursorRgn); + + + +/* + **************************************************************************************** + Process click in content region. Takes care of scrolling, selecting text, playing + sound and movies, drag & drop, and double-clicks. + Input: + iTXNObject: Opaque struct obtained from TXNNewObject. + iEvent: the mousedown event + ***************************************************************************************** +*/ +/* + * TXNClick() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNClick( + TXNObject iTXNObject, + const EventRecord * iEvent); + + + +/* + ******************************************************************************************** + + Call this when WaitNextEvent returns false or there is no active TSNObject . + The TXNObject parameter can be NULL which allows a client to call this function at any + time. This is necessary to insure input methods enough time to be reasonably responsive. + NOTE : You do not need to call this when working on Carbon, TSM events are passed directly + to the text object. + Input: + iTXNObject: The currently active TXNObject or NULL. + ioEvent: The event record. Usually a NULL event. If the + event is not an NULL event on entry, and an input + method consumes the event the event should return + as a NULL event. + Output: + Boolean: True if TSM handled this event. False if TSM did not handle this event. + ********************************************************************************************** +*/ +#if CALL_NOT_IN_CARBON +/* + * TXNTSMCheck() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: not available + * Mac OS X: not available + */ +EXTERN_API_C( Boolean ) +TXNTSMCheck( + TXNObject iTXNObject, /* can be NULL */ + EventRecord * ioEvent); + + + +/* + *********************************************************************************************** + Selects everything in a frame. + Input: + iTXNObject: opaque TXNObject + *********************************************************************************************** +*/ +#endif /* CALL_NOT_IN_CARBON */ + +/* + * TXNSelectAll() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNSelectAll(TXNObject iTXNObject); + + + + +/* + *********************************************************************************************** + Focues the TXNObject. Scrollbars and insertion point are made active if iBecomingFocused + is true, and inactive if false. + + Input: + iTXNObject: opaque TXNObject + + iBecomingFocused: true if becoming active. false otherwise. + ************************************************************************************************ +*/ +/* + * TXNFocus() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNFocus( + TXNObject iTXNObject, + Boolean iBecomingFocused); + + +/* + ************************************************************************************************ + Handle update event (i.e. draw everything in a frame.) This function calls the Toolbox + BeginUpdate - EndUpdate functions for the window that was passed to TXNNewObject. This + makes it inappropriate for windows that contain something else besides the TXNObject. + Input: + iTXNObject: opaque TXNObject + ************************************************************************************************ +*/ +/* + * TXNUpdate() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNUpdate(TXNObject iTXNObject); + + +/* + ************************************************************************************************* + Redraw the TXNObject including any scrollbars associated with the text frame. Call this function + in response to an update event for a window that contains multiple TXNObjects or some other graphic + element. The caller is responsible for calling BeginUpdate/EndUpdate in response to the update + event. + Input: + iTXNObject: opaque TXNObject to draw + iDrawPort: Can be NULL. If NULL the port is drawn to the port currently attached to the + iTXNObject. If not NULL drawing goes to the iDrawPort. If drawing is done + to the iDrawPort selection is not updated. This works this way so that it + is possible to Draw a TXNObject to a static port (i.e. print the thing without + reflowing the text to match the paper size which is what TXNPrint does) + and not have a line drawn where the selection would be. If you pass an + iDrawPort to an active TXNObject (i.e. editable) the selection will not be updated. In + this case the selection will behave oddly until text is typed which will serve + to realign the selection. Bottom-line don't pass a port in unless you want + static text (printed or non-editable) + ************************************************************************************************* +*/ +/* + * TXNDraw() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNDraw( + TXNObject iTXNObject, + GWorldPtr iDrawPort); /* can be NULL */ + + +/* + ************************************************************************************************* + Force a frame to be updated. Very much like toolbox call InvalRect. + + Input: + iTXNObject: opaque TXNObject + ************************************************************************************************** +*/ +/* + * TXNForceUpdate() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNForceUpdate(TXNObject iTXNObject); + + + +/* + ************************************************************************************************** + Depending on state of window get the appropriate sleep time to be passed to WaitNextEvent. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject + + Output: + + UInt32: function result appropriate sleep time. + *************************************************************************************************** +*/ +/* + * TXNGetSleepTicks() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( UInt32 ) +TXNGetSleepTicks(TXNObject iTXNObject); + + +/* + *************************************************************************************************** + Do necessary Idle time processing. Typically flash the cursor. If a TextService is active + pass a NULL event to the Text Service so it gets time. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject + **************************************************************************************************** +*/ +/* + * TXNIdle() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNIdle(TXNObject iTXNObject); + + + +/* + ********************************************************************************************************* + Handle mouse-down in grow region. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject + iEvent: The mousedown event + ********************************************************************************************************* +*/ +/* + * TXNGrowWindow() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNGrowWindow( + TXNObject iTXNObject, + const EventRecord * iEvent); + + + +/* + ******************************************************************************************************** + Handle mousedown in zoom. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject + iPart: Value returned by FindWindow + ********************************************************************************************************* +*/ +/* + * TXNZoomWindow() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNZoomWindow( + TXNObject iTXNObject, + SInt16 iPart); + + + +/* + ******************************************************************************************************* + Use this to determine if the Undo item in Edit menu should be highlighted or not. Tells you if last + command was undoable. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject + Output: + Boolean function result. If True the last command is undoable and the undo item in the menu + should be active. If false last command cannot be undone and undo should be grayed + in the menu. + oTXNActionKey The key code that the caller can use to pick a string to describe the undoable + action in the undo item. Pass in NULL if the string isn't needed. + ********************************************************************************************************* +*/ +/* + * TXNCanUndo() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( Boolean ) +TXNCanUndo( + TXNObject iTXNObject, + TXNActionKey * oTXNActionKey); /* can be NULL */ + + +/* + ******************************************************************************************************** + Undo the last command. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject + ********************************************************************************************************* +*/ +/* + * TXNUndo() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNUndo(TXNObject iTXNObject); + + + +/* + ********************************************************************************************************* + Use this to determine if the current item on the undo stack is redoable. If it returns true. + than the redo item in the edit menu should be active. + + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject. + oTXNActionKey The key code that the caller can use to pick a string to describe the redoable + action in the redo item. Pass in NULL if the string isn't needed. +*/ + +/***********************************************************************************************************/ +/* + * TXNCanRedo() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( Boolean ) +TXNCanRedo( + TXNObject iTXNObject, + TXNActionKey * oTXNActionKey); /* can be NULL */ + + + +/* + ******************************************************************************************************** + Redo the last command. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject + ********************************************************************************************************* +*/ +/* + * TXNRedo() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNRedo(TXNObject iTXNObject); + + + +/* + ********************************************************************************************************* + Cut the current selection to the clipboard. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject + Output: + OSStatus: function result. Variety of memory or scrap MacOS errors. + ********************************************************************************************************** +*/ +/* + * TXNCut() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNCut(TXNObject iTXNObject); + + + +/* + ********************************************************************************************************* + TXNCopy + Copy current selection + + Input: + iTXNObject: current document + + ********************************************************************************************************** +*/ +/* + * TXNCopy() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNCopy(TXNObject iTXNObject); + + + +/* + *********************************************************************************************************** + TXNPaste + Paste the clipboard + + Input: + iTXNObject: current document + + ********************************************************************************************************** +*/ +/* + * TXNPaste() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNPaste(TXNObject iTXNObject); + + + +/* + ********************************************************************************************************** + TXNClear + clear the current selection + + Input: + iTXNObject: current document + + ********************************************************************************************************** +*/ +/* + * TXNClear() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNClear(TXNObject iTXNObject); + + + +/* + ********************************************************************************************************* + TXNGetSelection + Get the absolute offsets of the current selection. + Embedded graphics, sound, etc. each count as one character. + + Input: + iTXNObject: current document + + Output: + oStartOffset: absolute beginning of the current selection. + oEndOffset: end of current selection. + ********************************************************************************************************* +*/ +/* + * TXNGetSelection() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNGetSelection( + TXNObject iTXNObject, + TXNOffset * oStartOffset, + TXNOffset * oEndOffset); + + + +/* + ***************************************************************************************************** + Scroll the current selection into view. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject + iShowEnd: If true the end of the selection is scrolled into view. If false the + beginning of selection is scrolled into view. + **************************************************************************************************** +*/ +/* + * TXNShowSelection() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNShowSelection( + TXNObject iTXNObject, + Boolean iShowEnd); + + + +/* + ***************************************************************************************************** + Call to find out if the current selection is empty. Use this to determine if Paste, Cut, Copy, + Clear should be highlighted in Edit menu. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject + Output: + Boolean: function result. True if current selection is empty (i.e. start offset == end offset). + False if selection is not empty. + ******************************************************************************************************** +*/ +/* + * TXNIsSelectionEmpty() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( Boolean ) +TXNIsSelectionEmpty(TXNObject iTXNObject); + + + +/* + ******************************************************************************************************** + Set the current selection. + + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject + iStartOffset: new beginning + iEndOffset: new end + ******************************************************************************************************** +*/ +/* + * TXNSetSelection() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNSetSelection( + TXNObject iTXNObject, + TXNOffset iStartOffset, + TXNOffset iEndOffset); + + + +/* + ******************************************************************************************************* + TXNGetContinuousTypeAttributes + Test the current selection to see if type size, style, color and/or font are continuous. + That is is the current selection made up of one font, one font size, one Style, and/or one color. + On return examine the flags to see if the attributes specified were continuous. If an attribute + is continuous then the dataValue field in the TXNTypeAttributes can be examined to get the continous + value. Remember that for color you pass a ptr to an RGBColor in attr[0].data.dataPtr. + Input: + iTXNObject: current document + oContinuousFlags: Bits which can be examined to see if type size, style, color, and/or font are continuous + + e.g + if ( TXNGetContinuousTypeAttributes( txnObject, &flags, 1, &attr ) == noErr ) + { + if ( flags & kTXNFontContinuousMask ) + ....check a font name + ioCount: Count of TXNTypeAttributes records in the ioTypeAttributes array. + ioTypeAttributes: Array of TXNTypeAttributes that indicate the type attributes the + caller is interested in. For example, if you wanted to know if + the current selection was continuous in terms of being all + one same font size you could do something like this. + + TXNTypeAttributes attr[1] = { TXNFontSizeAttribute, sizeof(Fixed),{ 0 } } + + on return from the function if size is continuous (i.e. if the bit 3 of flags is set) + then the third field (attr[0].data.dataValue) will contain the size of the font as a Fixed value. + + + *********************************************************************************************************** +*/ +/* + * TXNGetContinuousTypeAttributes() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNGetContinuousTypeAttributes( + TXNObject iTxnObject, + TXNContinuousFlags * oContinuousFlags, + ItemCount iCount, + TXNTypeAttributes ioTypeAttributes[]); /* can be NULL */ + + + +/* + ************************************************************************************************* + TXNSetTypeAttributes + Set the current ranges font information. Values are passed + in the attributes array. Values <= sizeof(UInt32) are passed + by value. > sizeof(UInt32) are passed as a pointer. That is + the TXNTypeAttributes' 3rd field is a union that servers as + either a 32-bit integer where values can be written or a 32-bit pointer + a value. + Input: + iTXNObject: current document + iAttrCount: Count of type attributes in the TXNTypeAttributes array. + iAttributes: Attributes that caller would like to set. + iStartOffset: Start of the range where text attributes should be changed. + iEndOffset: End of the range. + + Output: + OSStatus: various MacOS errs. Notably memory manager and paramErrs. + ************************************************************************************************* +*/ +/* + * TXNSetTypeAttributes() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNSetTypeAttributes( + TXNObject iTXNObject, + ItemCount iAttrCount, + const TXNTypeAttributes iAttributes[], + TXNOffset iStartOffset, + TXNOffset iEndOffset); + + + +/* + * TXNSetTXNObjectControls() + * + * Summary: + * Sets formatting and privileges attributes (such as justification, + * line direction, tab values, and read-only status) that apply to + * the entire text object. + * + * Discussion: + * On systems that use Apple Type Services for Unicode Imaging + * (ATSUI), the ATSUI line control attribute tags can be passed to + * this function in the iControlTag parameter. This is the case for + * all the ATSUI tags except kATSULineRotationTag. ATSUI tags are + * applied to the entire text object. + * + * Parameters: + * + * iTXNObject: + * The text object that identifies the document for which you want + * to set formatting and privileges attributes. + * + * iClearAll: + * A Boolean value. If you set this to true, all formatting and + * privileges attributes are reset to their default value. That + * is, true clears existing tags and resets each to its default + * value. + * + * iControlCount: + * The number of items in the iControlTags array. + * + * iControlTags: + * An array of values that specifies kind of data that is passed + * in the iControlData parameter. See "Formatting and Privileges + * Settings" for a description of possible values. On systems that + * use Apple Type Services for Unicode Imaging (ATSUI), you can + * also pass ATSUI attribute tag constants. See the ATSUI + * documentation for a description of the ATSUI constants. Can be + * NULL if iClearAll is true. + * + * iControlData: + * An array of TXNControlData unions that contain the information + * your application wants to set. The value you supply to the + * iControlTags parameter specifies how the union of type + * TXNControlData is treated. You must make sure that the value + * you assign to the iControlData parameter is the appropriate + * type implied by the value you passed in the iControlTags + * parameter. Can be NULL if iClearAll is true. + * + * Result: + * An operating system status code. + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNSetTXNObjectControls( + TXNObject iTXNObject, + Boolean iClearAll, + ItemCount iControlCount, + const TXNControlTag iControlTags[], /* can be NULL */ + const TXNControlData iControlData[]); /* can be NULL */ + + + +/* + * TXNGetTXNObjectControls() + * + * Summary: + * Gets the current formatting and privileges attributes (such as + * justification, line direction, tab values, and read-only status) + * for a text object. + * + * Parameters: + * + * iTXNObject: + * The text object that identifies the document to be activated. + * + * iControlCount: + * The number of items in the iControlTags array. + * + * iControlTags: + * An array of values that specify the kind of formatting + * information you want returned in the oControlData array. See + * "Formatting and Privileges Settings" for a description of + * possible values. + * + * oControlData: + * An array of TXNControlData unions. On return, the array + * contains the information that was requested through the + * iControlTags array. Your application must allocate the + * oControlData array. + * + * Result: + * An operating system status code. + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNGetTXNObjectControls( + TXNObject iTXNObject, /* can be NULL */ + ItemCount iControlCount, + const TXNControlTag iControlTags[], + TXNControlData oControlData[]); + + + +/* + ****************************************************************************************************** + TXNCountRunsInRange + Given a range specified by the starting and ending offset return a count of the runs in that + range. Run in this case means changes in TextSyles or a graphic or sound. + Result: + OSStatus: paramerr mostly + Input: + iTXNObject The TXNObject you are interested in. + iStartOffset start of range + iEndOffset end of range + + Output: + oRunCount count of runs in the range + ******************************************************************************************************* +*/ +/* + * TXNCountRunsInRange() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNCountRunsInRange( + TXNObject iTXNObject, + TXNOffset iStartOffset, + TXNOffset iEndOffset, + ItemCount * oRunCount); + + + +/* + * TXNGetIndexedRunInfoFromRange() + * + * Summary: + * Gets information about a run in a range of data. + * + * Discussion: + * You should first call the TXNCountRunsInRange function to get the + * count. The TXNTypeAttributes structure must specify the text + * attribute in which the application is interested. In other words, + * the tag field must be set. + * + * Parameters: + * + * iTXNObject: + * The text object for the current text area. + * + * iIndex: + * The value that corresponds to the run for which you want to get + * information. You call the TXNCountRunsInRange function to get + * the number of runs in a range. The iIndex parameter is + * zero-based, so its possible values are from 0 to the number of + * runs in a range minus 1. + * + * iStartOffset: + * The offset at which you want to start to obtain run information. + * + * iEndOffset: + * The offset at which you want run information to end. + * + * oRunStartOffset: + * On return, a pointer to a value that identifies the start of + * run relative to the beginning of the text, not the beginning of + * the range you specified in the iStartOffset parameter. + * + * oRunEndOffset: + * On return, a pointer to a value that identifies the end of the + * run relative to the beginning of the text, not the beginning of + * the range you specified in the iStartOffset parameter. + * + * oRunDataType: + * On return, a pointer to a value that identifies the type of + * data in the run. See "Supported Data Types" for a description + * of possible values. + * + * iTypeAttributeCount: + * The number of font attributes. + * + * ioTypeAttributes: + * A pointer to a structure of type TXNTypeAttributes. On input, + * you specify the attribute (such as color) in the tag field and + * the attribute size in the size field. You can pass NULL for the + * data field. On return, the data field contains the attribute + * data. The data field is a union that serves either as a 32-bit + * integer or a 32-bit pointer, depending on the size field. + * + * Result: + * An operating system status code. + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNGetIndexedRunInfoFromRange( + TXNObject iTXNObject, + ItemCount iIndex, + TXNOffset iStartOffset, + TXNOffset iEndOffset, + TXNOffset * oRunStartOffset, /* can be NULL */ + TXNOffset * oRunEndOffset, /* can be NULL */ + TXNDataType * oRunDataType, /* can be NULL */ + ItemCount iTypeAttributeCount, + TXNTypeAttributes * ioTypeAttributes); /* can be NULL */ + + + +/* + ********************************************************************************************************** + TXNDataSize + Return the size in bytes of the characters in a given TXNObject. + Result: + ByteCount: The bytes required to hold the characters + Input: + iTXNObject: The TXNObject + + ********************************************************************************************************** +*/ +/* + * TXNDataSize() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ByteCount ) +TXNDataSize(TXNObject iTXNObject); + + + +/* + *********************************************************************************************************** + Copy the data in the range specified by startOffset and endOffset. This function should be used + in conjunction with TXNNextDataRun. The client would call TXNCountRunsInRange to the number of data + runs in a given range. The client can then walk the runs with the function TXNGetIndexedRunInfoFromRange. + TXNGetIndexedRunInfoFromRange lets you examine each runs type and text attributes. + For each data run of interest (i.e. one whose data the caller wanted to look at) + the client would call TXNGetData. The handle passed to TXNGetData should not be allocated. + TXNGetData takes care of allocating the dataHandle as necessary. However, the caller is responsible + for disposing the handle. + No effort is made to insure that data copies align on a word boundary. Data is simply copied as + specified in the offsets. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject. + iStartOffset: absolute offset from which data copy should begin. + iEndOffset: absolute offset at which data copy should end. + + Output: + OSStatus Memory errors or TXN_IllegalToCrossDataBoundaries if offsets specify a range that + crosses a data type boundary. + oDataHandle: If noErr a new handle containing the requested data. The caller is responsible + for disposing the handle. Note that the handle is a copy so it can be safely + disposed at any time. + ********************************************************************************************************** +*/ +/* + * TXNGetData() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNGetData( + TXNObject iTXNObject, + TXNOffset iStartOffset, + TXNOffset iEndOffset, + Handle * oDataHandle); + + + +/* + *********************************************************************************************************** + Copy the data in the range specified by startOffset and endOffset. + The handle passed to TXNGetDataEncoded should not be allocated. + TXNGetData takes care of allocating the dataHandle as necessary. However, the caller is responsible + for disposing the handle. + No effort is made to insure that data copies align on a word boundary. Data is simply copied as + specified in the offsets. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject. + iStartOffset: absolute offset from which data copy should begin. + iEndOffset: absolute offset at which data copy should end. + iEncoding : should be kTXNTextData or kTXNUnicodeTextData + Output: + OSStatus Memory errors or TXN_IllegalToCrossDataBoundaries if offsets specify a range that + crosses a data type boundary. + oDataHandle: If noErr a new handle containing the requested data. + ********************************************************************************************************** +*/ +/* + * TXNGetDataEncoded() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNGetDataEncoded( + TXNObject iTXNObject, + TXNOffset iStartOffset, + TXNOffset iEndOffset, + Handle * oDataHandle, + TXNDataType iEncoding); + + + +/* + ********************************************************************************************************* + Replace the specified range with the contents of the specified file. The data fork of the file + must be opened by the caller. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject + fileSpec: HFS file reference obtained when file is opened. + fileType: files type. + iFileLength: The length of data in the file that should be considered data. This + parameter is available to enable callers to embed text inside their + own private data structures. Note that if the data is in the Textension(txtn) + format this parameter is ignored since length, etc. information is + part of the format. Further note that if you you just want Textension + to read a file and you are not interested in embedding you can just pass + kTXNEndOffset(0x7FFFFFFF), and Textension will use the file manager to + determine the files length. + iStartOffset: start position at which to insert the file into the document. + iEndOffset: end position of range being replaced by the file. + Output: + OSStatus: File manager error or noErr. + *********************************************************************************************************** +*/ +/* + * TXNSetDataFromFile() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNSetDataFromFile( + TXNObject iTXNObject, + SInt16 iFileRefNum, + OSType iFileType, + ByteCount iFileLength, + TXNOffset iStartOffset, + TXNOffset iEndOffset); + + + +/* + * TXNSetData() + * + * Summary: + * Replaces a range of data (text, graphics, and so forth). + * + * Parameters: + * + * iTXNObject: + * The text object that identifies the document in which you want + * to replace data. + * + * iDataType: + * The type of the replacement data. See "Supported Data Types" + * for a description of possible values. + * + * iDataPtr: + * A pointer to the data that will replace the data that is in the + * range specified by the iStartOffset and iEndOffset parameters. + * Can be NULL if the start and end offsets are different. + * + * iDataSize: + * The size of the data to which iDataPtr points. + * + * iStartOffset: + * The beginning of the range of data to replace. You can use the + * TXNGetSelection function to get the absolute offsets of the + * current selection. + * + * iEndOffset: + * The end of the range to replace. You can use the + * TXNGetSelection function to get the absolute offsets of the + * current selection. If you want to insert text, the ending and + * starting offsets should be the same value. + * + * Result: + * An operating system status code. + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNSetData( + TXNObject iTXNObject, + TXNDataType iDataType, + const void * iDataPtr, /* can be NULL */ + ByteCount iDataSize, + TXNOffset iStartOffset, + TXNOffset iEndOffset); + + +/* + ************************************************************************************************************ + Retrieve number of times document has been changed. That is for every committed command + (keydown, cut, copy) the value returned is count of those. This is useful for deciding if the Save + item in the File menu should be active. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject + + Output: + ItemCount: count of changes. This is total changes since document was created or last saved. + Not count since this routine was last called or anything like that. + *********************************************************************************************************** +*/ +/* + * TXNGetChangeCount() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( ItemCount ) +TXNGetChangeCount(TXNObject iTXNObject); + + + +/* + ********************************************************************************************************* + Save the contents of the document as the given type. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject. + iType: The type of file to create. + iResType: When saving file as plain TEXT the type of resource to + save style information. Use kTXNMultipleStylesPerTextDocumentResType + if your document contains multiple styles and you want a SimpleText + like document. Use kTXNSingleStylePerTextDocumentResType if the + document has a single style and you would like a BBEdit, MPW, CW type + of document. + iPermanentEncoding: The encoding in which the document should be saved (Unicode, Text or System + default). + iFileSpecification: The file specification to which the document should be saved. The + file must have been opened by the caller. The file specification is remembered by the TXNObject + and is used for any subsequent calls to TXNRevert. + iDataReference: The data fork ref num. This is used to write data to the data fork of the + file. The data is written beginning at the current mark. + iResourceReference: The resource fork ref num. If the caller has specified that style information be + saved as a resource (MPW or SimpleText) than this should be a valid reference to + an open resource fork. If the txtn format is being used than this input value + is ignored. + Output: + OSStatus The result of writing the file. + ********************************************************************************************************** +*/ +/* + * TXNSave() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNSave( + TXNObject iTXNObject, + TXNFileType iType, + OSType iResType, + TXNPermanentTextEncodingType iPermanentEncoding, + const FSSpec * iFileSpecification, + SInt16 iDataReference, + SInt16 iResourceReference); + + + +/* + *********************************************************************************************************** + Revert to the last saved version of this document. If the file was not previously saved the document + is reverted to an empty document. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject + Output: + OSStatus: File manager errors, paramErr, or noErr. + ********************************************************************************************************** +*/ +/* + * TXNRevert() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNRevert(TXNObject iTXNObject); + + + +/* + ********************************************************************************************************* + Display the Page Setup dialog of the current default printer and react to any changes + (i.e. Reformat the text if the page layout changes.) + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject. + + Output: + OSStatus: Print Manager errors, paramErr, noErr. + ********************************************************************************************************** +*/ +/* + * TXNPageSetup() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNPageSetup(TXNObject iTXNObject); + + + +/* + ********************************************************************************************************** + Print the document. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject. + Output: + OSStatus: Print Manager errors, paramErr, noErr. + ********************************************************************************************************** +*/ +/* + * TXNPrint() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNPrint(TXNObject iTXNObject); + + + +/* + *********************************************************************************************************** + Test to see if the current scrap contains data that is supported by Textension. Used to determine + if Paste item in Edit menu should be active or inactive. The types of data supported depends on what + data types were specified in the TXNInitTextension options. + Output: + Boolean: function result. True if data type in Clipboard is supported. False if + not a supported data type. If result is True the Paste item in the menu can + be highlighted. + ********************************************************************************************************** +*/ +/* + * TXNIsScrapPastable() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( Boolean ) +TXNIsScrapPastable(void); + + + +/* + *********************************************************************************************************** + Convert the Textension private scrap to the public clipboard. This should be called on suspend + events and before the application displays a dialog that might support cut and paste. Or more + generally, whenever someone other than the Textension Shared Library needs access to the scrap data. + Output: + OSStatus: Function result. Memory Manager errors, Scrap Manager errors, noErr. + ************************************************************************************************************ +*/ +/* + * TXNConvertToPublicScrap() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNConvertToPublicScrap(void); + + + +/* + *********************************************************************************************************** + Convert the public clipboard to our private scrap . This should be called on resume + events and after an application has modified the scrap. Before doing work we check the validity of the public + scrap (date modification and type) + Output: + OSStatus: Function result. Memory Manager errors, Scrap Manager errors, noErr. + ************************************************************************************************************ +*/ +/* + * TXNConvertFromPublicScrap() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNConvertFromPublicScrap(void); + + + +/* + ************************************************************************************************************ + Get the rectangle describing the current view into the document. The coordinates of this rectangle will be + local to the the window. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject. + Output: + oViewRect: the requested view rectangle. + ************************************************************************************************************* +*/ +/* + * TXNGetViewRect() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNGetViewRect( + TXNObject iTXNObject, + Rect * oViewRect); + + + +/* + !! TXNSetViewRect is now deprecated for 10.2 and later. Please use TXNSetFrameBounds or TXNSetRectBounds API !! + ************************************************************************************************* + Set the rectangle describing the current view into the document. This + will change how much text is viewable. Not where a line of text wraps. + That is controlled by TXNSetFrameBoundsSize. + Input: + iTXNObject : opaque Textension structure. + + iViewRect: Rect of the view + + + ************************************************************************************************* +*/ +/* + * TXNSetViewRect() + * + * Availability: + * Non-Carbon CFM: in Textension 1.3 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( void ) +TXNSetViewRect( + TXNObject iTXNObject, + const Rect * iViewRect); + + + +/* + *********************************************************************************************************** + Find a piece of text or a graphics object. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject. + iMatchTextDataPtr ptr to a MatchTextRecord which contains the text to match, the length of that text + and the TextEncoding the text is encoded in. This must be there if you are looking + for Text, but can be NULL if you are looking for a graphics object. + iDataType The type of data to find. This can be any of the types defined in TXNDataType enum + (TEXT, PICT, moov, snd ). However, if PICT, moov, or snd is passed then the default + behavior is to match on any non-Text object. If you really want to find a specific + type you can provide a custom find callback or ignore matches which aren't the precise + type you are interested in. + iStartSearchOffset The offset at which a search should begin. The constant kTXNStartOffset specifies the start + of the objects data. + iEndSearchOffset The offset at which the search should end. The constant kTXNEndOffset specifies the end + of the objects data. + iFindProc A custom callback. If will be called to match things rather than the default matching + behavior. + iRefCon This can be use for whatever the caller likes. It is passed to the FindProc (if a FindProc + is provided. + Output: + oStartMatchOffset absolute offset to start of match. set to 0xFFFFFFFF if not match. + oEndMatchOffset absolute offset to end of match. Set to 0xFFFFFFFF is no match. + The default matching behavior is pretty simple for Text a basic binary compare is done. If the matchOptions say + to ignore case the characters to be searched are duplicated and case neutralized. This naturally can fail due + to lack of memory if there is a large amount of text. It also slows things down. If MatchOptions say + find an entire word that once a match is found an effort is made to determine if the match is a word. The default + behavior is to test the character before and after the to see if it is White space. If the kTXNUseEncodingWordRulesBit + is set than the Script Manager's FindWord function is called to make this determination. + If the caller is looking for a non-text type than each non-text type in the document is returned. + If more elaborate ( a regular expression processor or whatever ) is what you want then that is what the FindProc is + for. + ******************************************************************************************************************* +*/ +/* + * TXNFind() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNFind( + TXNObject iTXNObject, + const TXNMatchTextRecord * iMatchTextDataPtr, /* can be NULL */ + TXNDataType iDataType, + TXNMatchOptions iMatchOptions, + TXNOffset iStartSearchOffset, + TXNOffset iEndSearchOffset, + TXNFindUPP iFindProc, + SInt32 iRefCon, + TXNOffset * oStartMatchOffset, + TXNOffset * oEndMatchOffset); + + + +/* + *************************************************************************************************************** + TXNSetFontDefaults + + For a given TXNObject specify the font defaults for each script. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject. + iCount: count of FontDescriptions. + iFontDefaults: array of FontDescriptions. + Output: + OSStatus: function result ( memory error, paramErr ) + **************************************************************************************************************** +*/ +/* + * TXNSetFontDefaults() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNSetFontDefaults( + TXNObject iTXNObject, + ItemCount iCount, + const TXNMacOSPreferredFontDescription iFontDefaults[]); + + + +/* + *************************************************************************************************************** + TXNGetFontDefaults + + For a given TXNObject make a copy of the font defaults. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject. + iCount: count of FontDescriptions in the array. + iFontDefaults: array of FontDescriptins to be filled out. + Output: + OSStatus: function result ( memory error, paramErr ) + To determine how many font descriptions need to be in the array you should call this function with + a NULL for the array. iCount will return with the number of font defaults currently stored. + **************************************************************************************************************** +*/ +/* + * TXNGetFontDefaults() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNGetFontDefaults( + TXNObject iTXNObject, + ItemCount * ioCount, + TXNMacOSPreferredFontDescription ioFontDefaults[]); /* can be NULL */ + + + +/* + **************************************************************************************************************** + TXNAttachObjectToWindow + If a TXNObject was initialized with a NULL window pointer use this function to attach a window + to that object. In version 1.0 of Textension attaching a TXNObject to more than one window + is not supported. Note that if a CGContextRef was passed to the TXNObject previously thru the + API TXNSetTXNObjectControls, that CGContextRef will be ignored. The CGContextRef associated with + the iWindow will be used instead. You may revert back to the previous CGContextRef by calling the + API TXNSetTXNObjectControls with the desired CGContextRef again after calling TXNAttachObjectToWindow. + + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject. + iWindow: GWorldPtr that the object should be attached to + iIsActualWindow: Let the library know if the GWorldPtr is actually + a WindowRef or actually a GWorldPtr. This is important + if the client is taking advantage of the editing packages + scrollbar support. + Output: + OSStatus: function result. paramErrs. + **************************************************************************************************************** +*/ +/* + * TXNAttachObjectToWindow() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNAttachObjectToWindow( + TXNObject iTXNObject, + GWorldPtr iWindow, + Boolean iIsActualWindow); + + + +/* + **************************************************************************************************************** + TXNIsObjectAttachedToWindow + A utility function that allows a caller to check a TXNObject to see if it is attached + to a window. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject. + Output: + Boolean: function result. True is object is attached. + False if TXNObject is not attached. + **************************************************************************************************************** +*/ +/* + * TXNIsObjectAttachedToWindow() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( Boolean ) +TXNIsObjectAttachedToWindow(TXNObject iTXNObject); + + + +/* + **************************************************************************************************************** + TXNDragTracker + If you ask that Drag handling procs not be installed. Call this when your drag tracker is called + and you want Textension to take over + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject. + iTXNFrameID: TXNFrameID obtained from TXNNewObject + iMessage: drag message obtained from Drag Manager + iWindow : WindowRef obtained from Drag Manager + iDragReference: dragReference obtained from Drag Manager + iDifferentObjectSameWindow: Pass true if the drag is still in the same window + that it started in. False if the drag has moved into + a different window. + Output: + OSErr: function result. OSErr is used over + OSStatus so that it matches the Drag Manager definition of Tracking callback + **************************************************************************************************************** +*/ +/* + * TXNDragTracker() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSErr ) +TXNDragTracker( + TXNObject iTXNObject, + TXNFrameID iTXNFrameID, + DragTrackingMessage iMessage, + WindowRef iWindow, + DragReference iDragReference, + Boolean iDifferentObjectSameWindow); + + + +/* + **************************************************************************************************************** + TXNDragReceiver + If you ask that Drag handling procs not be installed. Call this when your drag receiver is called + and you want Textension to take over + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject. + iTXNFrameID TXNFrameID obtained from TXNNewObject + iWindow WindowRef obtained from Drag Manager + iDragReference dragReference obtained from Drag Manager + iDifferentObjectSameWindow: Pass true if the drag is still in the same window + that it started in. False if the drag has moved into + a different window. + Output: + OSErr: function result. OSErr is used over + OSStatus so that it matches the Drag Manager definition of Tracking callback + **************************************************************************************************************** +*/ +/* + * TXNDragReceiver() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSErr ) +TXNDragReceiver( + TXNObject iTXNObject, + TXNFrameID iTXNFrameID, + WindowRef iWindow, + DragReference iDragReference, + Boolean iDifferentObjectSameWindow); + + + +/* + **************************************************************************************************************** + TXNActivate + Make the TXNObject object active in the sense that it can be scrolled if it has scrollbars. If the TXNScrollBarState parameter + is true than the scrollbars will be active even when the TXNObject is not focused (i.e. insertion point not active) + + This function should be used if you have multiple TXNObjects in a window, and you want them all to be scrollable + even though only one at a time can have the keyboard focus. + Input: + iTXNObject: opaque TXNObject obtained from TXNNewObject. + iTXNFrameID TXNFrameID obtained from TXNNewObject + iActiveState Boolean if true Scrollbars active even though TXNObject does not have the keyboard focus. + if false scrollbars are synced with active state (i.e. a focused object has an + active insertion point or selection and active scrollbars. An unfocused object has inactive + selection (grayed or framed selection) and inactive scrollbars. The latter state is the + default and usually the one you use if you have one TXNObject in a window. + Output: + OSStatus: function result. ParamErr if bad iTXNObject or frame ID. + **************************************************************************************************************** +*/ +/* + * TXNActivate() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNActivate( + TXNObject iTXNObject, + TXNFrameID iTXNFrameID, + TXNScrollBarState iActiveState); + + + +/* + ***************************************************************************************************************** + TXNSetBackgound + Set the type of background the TXNObject's text, etc. is drawn onto. At this point the background + can be a color or a picture. + + Input: + iTXNObject: opaque TXNObject obtained from IncomingDataFilter callback. + iBackgroundInfo: struct containing information that describes the background + Output: + OSStatus: function result. paramErrs. + ******************************************************************************************************************** +*/ +/* + * TXNSetBackground() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNSetBackground( + TXNObject iTXNObject, + const TXNBackground * iBackgroundInfo); + + + +/* + ***************************************************************************************************************** + TXNEchoMode + Put the TXNObject into echo mode. What that means is that all characters in the TXNObject have the character + 'echoCharacter' substituted for the actual glyph when drawing occurs. Note that the echoCharacter is typed + as a UniChar, but this is done merely to facilitate passing any 2 byte character. The encoding parameter + actually determines the encoding used to locate a font and display a character. Thus if you wanted to + display the diamond found in the Shift-JIS encoding for MacOS you would pass in 0x86A6 for the character + but an encoding that was built to represent the MacOS Japanese encoding. + + Input: + iTXNObject: opaque TXNObject obtained from IncomingDataFilter callback. + iEchoCharacter: character to use in substitution + iEncoding: encoding from which character is drawn. + iOn: true if turning EchoMode on. False if turning it off. + Output: + OSStatus: function result. paramErrs. + ******************************************************************************************************************** +*/ +/* + * TXNEchoMode() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNEchoMode( + TXNObject iTXNObject, + UniChar iEchoCharacter, + TextEncoding iEncoding, + Boolean iOn); + + + +/* + ******************************************************************************************************************** + TXNNewFontMenuObject + Get a FontMenuObject. Caller can extract a fontmenu from this object and pass this object to the active + TXNObject to handle events in the font menu. + Input: + iFontMenuHandle: An empty menu handle (well the title is there) that the caller created via + NewMenu or GetNewMenu. This menu handle should not be disposed before + the returned TXNFontMenuObject has been disposed via TXNDisposeFontMenuObject. + iMenuID: The MenuID for iFontMenuHandle. + iStartHierMenuID: The first MenuID to use if any hierarchical menus need to be created. TXNNewFontMenuObject + uses SetMenuItemHierarchicalID when creating hierarchial menus. The iStartHierMenuID must + therefor follow the rules for this function. On systems less than system 8.5 the submenuID + must be less than 255. For systems above system 8.5 the range can be as large can be as large + 32767. However, it is important to remember that TXNNewFontMenuObject only uses iStartHierMenuID + as a starting id when adding hierarchical menus. Therefore provide plenty of room to increment + this value. For example, on a system less than 8.5 it would be good to start at 175. On systems greater + than 8.5 it is probably a good idea to not use a value higher than 32000. + + Output: + OSStatus: function result. memory, parameter errors. + TXNFontMenuObject: A font menu object + ********************************************************************************************************************* +*/ +/* + * TXNNewFontMenuObject() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNNewFontMenuObject( + MenuRef iFontMenuHandle, + SInt16 iMenuID, + SInt16 iStartHierMenuID, + TXNFontMenuObject * oTXNFontMenuObject); + + + +/* + ********************************************************************************************************************* + TXNGetFontMenuHandle + Get the MenuRef from the TXNFontMenuObject. + Input: + iTXNFontMenuObject: A Font Menu Object obtained from TXNNewFontMenuObject. + Output: + OSStatus: function result. parameter errors. + oFontMenuHandle: The returned font menu. (returned value could be NULL) + ********************************************************************************************************************* +*/ +/* + * TXNGetFontMenuHandle() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNGetFontMenuHandle( + TXNFontMenuObject iTXNFontMenuObject, + MenuRef * oFontMenuHandle); + + +#define TXNGetFontMenuRef TXNGetFontMenuHandle + +/* + ********************************************************************************************************************* + TXNDisposeFontMenuObject + Dispose a TXNFontMenuObject and its font menu handle + Input: + iTXNFontMenuObject: A Font Menu Object obtained from TXNNewFontMenuObject. + Output: + OSStatus: function result. parameter errors. + ********************************************************************************************************************* +*/ +/* + * TXNDisposeFontMenuObject() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNDisposeFontMenuObject(TXNFontMenuObject iTXNFontMenuObject); + + + +/* + ********************************************************************************************************************* + TXNDoFontMenuSelection + Given the menuID and menu item returned by MenuSelect determine the selected font + and change the current selection to be that Font. If the input TXNObject is + not active a parameter error is returned. + Input: + iTXNObject: An opaque TXNObject obtained from TXNNewObject. + iTXNFontMenuObject: A Font Menu Object obtained from TXNNewFontMenuObject. + iMenuID: SInt16 the ID of the selected menu. + iMenuItem: The item that was selected. + Output: + OSStatus: ParamErr and memory errors are possible. + ********************************************************************************************************************** +*/ +/* + * TXNDoFontMenuSelection() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNDoFontMenuSelection( + TXNObject iTXNObject, + TXNFontMenuObject iTXNFontMenuObject, + SInt16 iMenuID, + SInt16 iMenuItem); + + + +/* + * TXNPrepareFontMenu() + * + * Summary: + * Prepares a Font menu for display. + * + * Discussion: + * You should call the TXNPrepareFontMenu function just before your + * application opens the Font menu for your user. If the text + * object's current selection is a single font, MLTE places a + * checkmark next to the menu item for that font. + * + * Parameters: + * + * iTXNObject: + * The text object that identifies the document with the Font menu + * you want to prepare. Pass NULL to display an inactive menu + * (dimmed). + * + * iTXNFontMenuObject: + * A Font menu object. + * + * Result: + * An operating system status code. + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNPrepareFontMenu( + TXNObject iTXNObject, /* can be NULL */ + TXNFontMenuObject iTXNFontMenuObject); + + + +/* + ********************************************************************************************************************** + TXNVersionValue + Get the version number and a set of feature bits. TXNVersionValue uses a NumVersion structure. + See MacTypes.h for the format of the version. Currently there are two feature bits: one for + ATSUI default, another one for CarbonEvent default. + Input: + NONE + + Output: + TXNVersionValue: Current version. + TXNFeatureBits*: Pointer to a bit mask. See TXNFeatureMask enum above. If kTXNWillDefaultToATSUIBit + is set it means that by default MLTE will use ATSUI to image and measure text and will + default to using Unicode to store characters. If kTXNWillDefaultToCarbonEventBit is set, + then MLTE will use carbon events by default and apple event will not be supported. + ********************************************************************************************************************** +*/ +/* + * TXNVersionInformation() + * + * Availability: + * Non-Carbon CFM: in Textension 1.0 and later + * CarbonLib: in CarbonLib 1.0 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( TXNVersionValue ) +TXNVersionInformation(TXNFeatureBits * oFeatureFlags); + + + +/* + * TXNIsObjectAttachedToSpecificWindow() + * + * Summary: + * Determines whether the given object is attached to the given + * window. + * + * Parameters: + * + * iTXNObject: + * Opaque TXNObject obtained from TXNNewObject. + * + * iWindow: + * The window to check attachment against. + * + * oAttached: + * true if the object is attached to the given window, false + * otherwise. + * + * Result: + * An operating system status code. + * + * Availability: + * Non-Carbon CFM: in Textension 1.2 and later + * CarbonLib: in CarbonLib 1.3 and later + * Mac OS X: in version 10.0 and later + */ +EXTERN_API_C( OSStatus ) +TXNIsObjectAttachedToSpecificWindow( + TXNObject iTXNObject, + WindowRef iWindow, + Boolean * oAttached); + + +/* + * TXNSetRectBounds() + * + * Summary: + * Set the View rectangle and or the Destination rectangle. + * + * Discussion: + * The View rectangle controls the text you see. The Destination + * rectangle controls how text is laid out. The Scrollbar is drawn + * inside the View rectangle. You only need to pass in pointers for + * the rectangles you want to set. + * + * Parameters: + * + * iTXNObject: + * Opaque TXNObject obtained from TXNNewObject. + * + * iViewRect: + * The new view rectangle. If you do not want to change the view + * rectangle pass NULL. + * + * iDestinationRect: + * The new destination rectangle. Pass NULL if you don't want to + * change the destination retangle. + * + * iUpdate: + * If you would like the the text and where the scrollbars are + * placed recalculated and redrawn pass true. If you prefer to + * wait on this pass false. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.5 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( void ) +TXNSetRectBounds( + TXNObject iTXNObject, + const Rect * iViewRect, /* can be NULL */ + const TXNLongRect * iDestinationRect, /* can be NULL */ + Boolean iUpdate); + + +/* + * TXNGetRectBounds() + * + * Summary: + * Get the values for the current View rectangle, Destination + * rectangle and Text rectangle. + * + * Discussion: + * You only need to pass in pointers for the rectangles you're + * interested in. + * + * Parameters: + * + * iTXNObject: + * Opaque TXNObject obtained from TXNNewObject. + * + * oViewRect: + * The current view rectangle + * + * oDestinationRect: + * The current destination rectangle + * + * oTextRect: + * The smallest rectangle needed to contain the current text. + * This rectangle is calculated by walking the lines of text and + * measuring each line. So this can be expensive. The width of + * this rectangle will be the width of the longest line in the + * text. + * + * Result: + * An operating system status code. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.5 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( OSStatus ) +TXNGetRectBounds( + TXNObject iTXNObject, + Rect * oViewRect, /* can be NULL */ + TXNLongRect * oDestinationRect, /* can be NULL */ + TXNLongRect * oTextRect); /* can be NULL */ + + + +/* + * TXNRecalcTextLayout() + * + * Summary: + * Recalculates the text layout based on the new View and + * Destination rectangles. + * + * Discussion: + * Call this if you called TXNSetRectBounds with the iUpdate + * parameter set to false. It will also recalcuate where the + * scrollbars, if any, should be placed. Finally an update event + * will be generated so that the TXNObject is redrawn. + * + * Parameters: + * + * iTXNObject: + * Opaque TXNObject obtained from TXNNewObject. + * + * Availability: + * Non-Carbon CFM: not available + * CarbonLib: in CarbonLib 1.5 and later + * Mac OS X: in version 10.1 and later + */ +EXTERN_API_C( void ) +TXNRecalcTextLayout(TXNObject iTXNObject); + + + + +/* + * TXNScroll() + * + * Discussion: + * TXNScroll scrolls the text within a view rectangle of the + * specified object by the designated number of units. For example, + * you might want to scroll the text in an object in response to + * user input in a control other than the standard scrollbars that + * MLTE supplies. + * + * Parameters: + * + * iTXNObject: + * Opaque TXNObject obtained from TXNNewObject. + * + * iVerticalScrollUnit: + * Specifies what units the values in ioVerticalDelta are in. If + * iVerticalScrollUnit is equal to kTXNScrollUnitsArePixels the + * value is treated as pixels. If the value is + * kTXNScrollUnitsAreLines the value is treated as a count of + * lines. Note that using this value is the slowest because each + * line must be measured before it scrolls. Finally if + * kTXNScrollUnitsAreViewRects the value is treated as the height + * of the current viewRect. + * + * iHorizontalScrollUnit: + * Specifies what units the values in iDh are in. If + * iHorizontalScrollUnit is equal to kTXNScrollUnitsArePixels the + * value is treated as pixels. If the value is + * kTXNScrollUnitsAreLines the value is treated as a count of + * lines. Note that using this value for horizontal scrolling + * means that 16 pixels will be used to represent a line. Finally + * if kTXNScrollUnitsAreViewRects the value is treated as the + * width of the current viewRect. + * + * ioVerticalDelta: + * The vertical amount to scroll. The values in ioVerticalDelta + * can be treated as pixels, lines or viewrects. See the + * discussion of the TXNScrollUnit parameters for more information + * for this. On return this will contain the number of pixels + * actually scrolled in the vertical direction. A positive value + * moves the text down. + * + * ioHorizontalDelta: + * The horizontal amount to scroll. The values in + * ioHorizontalDelta can specify a scroll amount that is pixels, + * lines or view rects. Set TXNScrollUnit discussion for more + * information. On return this will contain the number of pixels + * actually scrolled in the horizontal direction. A positive value + * moves the text to the right. + * + * Availability: + * Non-Carbon CFM: in Textension not yet available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSStatus ) +TXNScroll( + TXNObject iTXNObject, + TXNScrollUnit iVerticalScrollUnit, + TXNScrollUnit iHorizontalScrollUnit, + SInt32 * ioVerticalDelta, + SInt32 * ioHorizontalDelta); + + + +/* + * TXNRegisterScrollInfoProc() + * + * Discussion: + * If your application is drawing and handling its own scrolling + * widgets use this function to register a TXNScrollInfoUPP. If you + * register a TXNScrollInfoUPP it will be called every time MLTE + * would normally update the values and maximum values of an MLTE + * scrollbar. For example when the user types the return key to add + * a new line at the end of their text MLTE will calculate a new + * maximum value. If you have registered a TXNScrollInfoUPP it will + * be called with this nex maximum value. To turn off the callbacks + * call TXNRegisterScrollInfoProc with a value of NULL for the + * iTXNScrollInfoUPP. + * + * Parameters: + * + * iTXNObject: + * Opaque TXNObject obtained from TXNNewObject. + * + * iTXNScrollInfoUPP: + * A universal procedure pointer. + * + * iRefCon: + * A refcon that is passed to the callback. + * + * Availability: + * Non-Carbon CFM: in Textension not yet available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( void ) +TXNRegisterScrollInfoProc( + TXNObject iTXNObject, + TXNScrollInfoUPP iTXNScrollInfoUPP, + SInt32 iRefCon); + + + + + +/* + * TXNClearUndo() + * + * Summary: + * Purge the undo stack + * + * Parameters: + * + * iTXNObject: + * Opaque TXNObject obtained from TXNNewObject. + * + * Availability: + * Non-Carbon CFM: in Textension not yet available + * CarbonLib: not available in CarbonLib 1.x, is available on Mac OS X version 10.2 and later + * Mac OS X: in version 10.2 and later + */ +EXTERN_API_C( OSStatus ) +TXNClearUndo(TXNObject iTXNObject); + + + +#if PRAGMA_STRUCT_ALIGN + #pragma options align=reset +#elif PRAGMA_STRUCT_PACKPUSH + #pragma pack(pop) +#elif PRAGMA_STRUCT_PACK + #pragma pack() +#endif + +#ifdef PRAGMA_IMPORT_OFF +#pragma import off +#elif PRAGMA_IMPORT +#pragma import reset +#endif + +#ifdef __cplusplus +} +#endif + +#endif /* __MACTEXTEDITOR__ */ + |