summaryrefslogtreecommitdiff
path: root/common/quicktime_win32/MacTextEditor.h
diff options
context:
space:
mode:
Diffstat (limited to 'common/quicktime_win32/MacTextEditor.h')
-rw-r--r--common/quicktime_win32/MacTextEditor.h3472
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__ */
+