Mac OS 9
TextEdit.h
Go to the documentation of this file.
1 
19 #ifndef __TEXTEDIT__
20 #define __TEXTEDIT__
21 
22 #ifndef __MACTYPES__
23 #include <MacTypes.h>
24 #endif
25 
26 #ifndef __QUICKDRAW__
27 #include <Quickdraw.h>
28 #endif
29 
30 #ifndef __MIXEDMODE__
31 #include <MixedMode.h>
32 #endif
33 
34 #if PRAGMA_ONCE
35 #pragma once
36 #endif
37 
38 #ifdef __cplusplus
39 extern "C"
40 {
41 #endif
42 
43 #if PRAGMA_IMPORT
44 #pragma import on
45 #endif
46 
47 #if PRAGMA_STRUCT_ALIGN
48 #pragma options align = mac68k
49 #elif PRAGMA_STRUCT_PACKPUSH
50 #pragma pack(push, 2)
51 #elif PRAGMA_STRUCT_PACK
52 #pragma pack(2)
53 #endif
54 
55  typedef struct TERec TERec;
56  typedef TERec *TEPtr;
57  typedef TEPtr *TEHandle;
58  typedef CALLBACK_API_REGISTER68K(void, HighHookProcPtr,
59  (const Rect *r, TEPtr pTE));
60  typedef CALLBACK_API_REGISTER68K(Boolean, EOLHookProcPtr,
61  (char theChar, TEPtr pTE, TEHandle hTE));
62  typedef CALLBACK_API_REGISTER68K(void, CaretHookProcPtr,
63  (const Rect *r, TEPtr pTE));
64  typedef CALLBACK_API_REGISTER68K(unsigned short, WidthHookProcPtr,
65  (unsigned short textLen,
66  unsigned short textOffset,
67  void *textBufferPtr, TEPtr pTE,
68  TEHandle hTE));
69  typedef CALLBACK_API_REGISTER68K(unsigned short, TextWidthHookProcPtr,
70  (unsigned short textLen,
71  unsigned short textOffset,
72  void *textBufferPtr, TEPtr pTE,
73  TEHandle hTE));
74  typedef CALLBACK_API_REGISTER68K(unsigned short, NWidthHookProcPtr,
75  (unsigned short styleRunLen,
76  unsigned short styleRunOffset, short slop,
77  short direction, void *textBufferPtr,
78  short *lineStart, TEPtr pTE, TEHandle hTE));
79  typedef CALLBACK_API_REGISTER68K(void, DrawHookProcPtr,
80  (unsigned short textOffset,
81  unsigned short drawLen, void *textBufferPtr,
82  TEPtr pTE, TEHandle hTE));
84  Boolean, HitTestHookProcPtr,
85  (unsigned short styleRunLen, unsigned short styleRunOffset,
86  unsigned short slop, void *textBufferPtr, TEPtr pTE, TEHandle hTE,
87  unsigned short *pixelWidth, unsigned short *charOffset,
88  Boolean *pixelInChar));
89  typedef CALLBACK_API_REGISTER68K(void, TEFindWordProcPtr,
90  (unsigned short currentPos, short caller,
91  TEPtr pTE, TEHandle hTE,
92  unsigned short *wordStart,
93  unsigned short *wordEnd));
94  typedef CALLBACK_API_REGISTER68K(void, TERecalcProcPtr,
95  (TEPtr pTE, unsigned short changeLength,
96  unsigned short *lineStart,
97  unsigned short *firstChar,
98  unsigned short *lastChar));
99  typedef CALLBACK_API_REGISTER68K(void, TEDoTextProcPtr,
100  (TEPtr pTE, unsigned short firstChar,
101  unsigned short lastChar, short selector,
102  GrafPtr *currentGrafPort,
103  short *charPosition));
104  typedef CALLBACK_API_REGISTER68K(Boolean, TEClickLoopProcPtr, (TEPtr pTE));
105  typedef CALLBACK_API_REGISTER68K(Boolean, WordBreakProcPtr,
106  (Ptr text, short charPos));
258  typedef REGISTER_UPP_TYPE(HighHookProcPtr) HighHookUPP;
259  typedef REGISTER_UPP_TYPE(EOLHookProcPtr) EOLHookUPP;
260  typedef REGISTER_UPP_TYPE(CaretHookProcPtr) CaretHookUPP;
261  typedef REGISTER_UPP_TYPE(WidthHookProcPtr) WidthHookUPP;
262  typedef REGISTER_UPP_TYPE(TextWidthHookProcPtr) TextWidthHookUPP;
263  typedef REGISTER_UPP_TYPE(NWidthHookProcPtr) NWidthHookUPP;
264  typedef REGISTER_UPP_TYPE(DrawHookProcPtr) DrawHookUPP;
265  typedef REGISTER_UPP_TYPE(HitTestHookProcPtr) HitTestHookUPP;
266  typedef REGISTER_UPP_TYPE(TEFindWordProcPtr) TEFindWordUPP;
267  typedef REGISTER_UPP_TYPE(TERecalcProcPtr) TERecalcUPP;
268  typedef REGISTER_UPP_TYPE(TEDoTextProcPtr) TEDoTextUPP;
269  typedef REGISTER_UPP_TYPE(TEClickLoopProcPtr) TEClickLoopUPP;
270  typedef REGISTER_UPP_TYPE(WordBreakProcPtr) WordBreakUPP;
271  struct TERec
272  {
273  Rect destRect;
274  Rect viewRect;
275  Rect selRect;
276  short lineHeight;
277  short fontAscent;
278  Point selPoint;
279  short selStart;
280  short selEnd;
281  short active;
282  WordBreakUPP wordBreak; /* NOTE: This field is ignored on non-Roman systems
283  and on Carbon (see IM-Text 2-60) */
284  TEClickLoopUPP clickLoop;
285  long clickTime;
286  short clickLoc;
287  long caretTime;
288  short caretState;
289  short just;
290  short teLength;
291  Handle hText;
292  long hDispatchRec; /* added to replace recalBack & recalLines. it's a handle
293  anyway */
294  short clikStuff;
295  short crOnly;
296  short txFont;
297  StyleField
298  txFace; /*StyleField occupies 16-bits, but only first 8-bits are used*/
299  short txMode;
300  short txSize;
301  GrafPtr inPort;
302  HighHookUPP highHook;
303  CaretHookUPP caretHook;
304  short nLines;
305  short lineStarts[16001];
306  };
307 
308  enum
309  {
310  /* Justification (word alignment) styles */
311  teJustLeft = 0,
312  teJustCenter = 1,
313  teJustRight = -1,
314  teForceLeft =
315  -2, /* new names for the Justification (word alignment) styles */
316  teFlushDefault = 0, /*flush according to the line direction */
317  teCenter = 1, /*center justify (word alignment) */
318  teFlushRight = -1, /*flush right for all scripts */
319  teFlushLeft = -2 /*flush left for all scripts */
320  };
321 
322  enum
323  {
324  /* Set/Replace style modes */
325  fontBit = 0, /*set font*/
326  faceBit = 1, /*set face*/
327  sizeBit = 2, /*set size*/
328  clrBit = 3, /*set color*/
329  addSizeBit = 4, /*add size mode*/
330  toggleBit = 5 /*set faces in toggle mode*/
331  };
332 
333  enum
334  {
335  /* TESetStyle/TEContinuousStyle modes */
336  doFont = 1, /* set font (family) number*/
337  doFace = 2, /*set character style*/
338  doSize = 4, /*set type size*/
339  doColor = 8, /*set color*/
340  doAll = 15, /*set all attributes*/
341  addSize = 16, /*adjust type size*/
342  doToggle = 32 /*toggle mode for TESetStyle*/
343  };
344 
345  enum
346  {
347  /* offsets into TEDispatchRec */
348  EOLHook = 0, /*[UniversalProcPtr] TEEOLHook*/
349  DRAWHook = 4, /*[UniversalProcPtr] TEWidthHook*/
350  WIDTHHook = 8, /*[UniversalProcPtr] TEDrawHook*/
351  HITTESTHook = 12, /*[UniversalProcPtr] TEHitTestHook*/
352  nWIDTHHook = 24, /*[UniversalProcPtr] nTEWidthHook*/
353  TextWidthHook = 28 /*[UniversalProcPtr] TETextWidthHook*/
354  };
355 
356  enum
357  {
358  /* selectors for TECustomHook */
359  intEOLHook = 0, /*TEIntHook value*/
360  intDrawHook = 1, /*TEIntHook value*/
361  intWidthHook = 2, /*TEIntHook value*/
362  intHitTestHook = 3, /*TEIntHook value*/
363  intNWidthHook = 6, /*TEIntHook value for new version of WidthHook*/
364  intTextWidthHook = 7, /*TEIntHook value for new TextWidthHook*/
365  intInlineInputTSMTEPreUpdateHook =
366  8, /*TEIntHook value for TSMTEPreUpdateProcPtr callback*/
367  intInlineInputTSMTEPostUpdateHook =
368  9 /*TEIntHook value for TSMTEPostUpdateProcPtr callback*/
369  };
370 
371  enum
372  {
373  /* feature or bit definitions for TEFeatureFlag */
374  teFAutoScroll = 0, /*00000001b*/
375  teFTextBuffering = 1, /*00000010b*/
376  teFOutlineHilite = 2, /*00000100b*/
377  teFInlineInput = 3, /*00001000b */
378  teFUseWhiteBackground = 4, /*00010000b */
379  teFUseInlineInput = 5, /*00100000b */
380  teFInlineInputAutoScroll = 6 /*01000000b */
381  };
382 
383  enum
384  {
385  /* feature or bit definitions for TEFeatureFlag -- Carbon only */
386  /* To avoid having to call TEIdle in Carbon apps, automatic idling can be
387  activated */
388  /* via the following feature flag, but you must ensure that the destRect
389  and/or */
390  /* GrafPort's origin be setup properly for drawing in a given TERec when */
391  /* the timer fires. When this feature flag is set, TEIdle is a noop. */
392  /* Activate this feature flag before calling TEActivate. */
393  teFIdleWithEventLoopTimer = 7 /*10000000b */
394  };
395 
396  enum
397  {
398  /* action for the new "bit (un)set" interface, TEFeatureFlag */
399  teBitClear = 0,
400  teBitSet = 1, /*set the selector bit*/
401  teBitTest = -1 /*no change; just return the current setting*/
402  };
403 
404  enum
405  {
406  /*constants for identifying the routine that called FindWord */
407  teWordSelect = 4, /*clickExpand to select word*/
408  teWordDrag = 8, /*clickExpand to drag new word*/
409  teFromFind = 12, /*FindLine called it ($0C)*/
410  teFromRecal = 16 /*RecalLines called it ($10) obsolete */
411  };
412 
413  enum
414  {
415  /*constants for identifying TEDoText selectors */
416  teFind = 0, /*TEDoText called for searching*/
417  teHighlight = 1, /*TEDoText called for highlighting*/
418  teDraw = -1, /*TEDoText called for drawing text*/
419  teCaret = -2 /*TEDoText called for drawing the caret*/
420  };
421 
422  typedef char Chars[32001];
423  typedef char *CharsPtr;
424  typedef CharsPtr *CharsHandle;
425  struct StyleRun
426  {
427  short startChar; /*starting character position*/
428  short styleIndex; /*index in style table*/
429  };
430  typedef struct StyleRun StyleRun;
431  struct STElement
432  {
433  short stCount; /*number of runs in this style*/
434  short stHeight; /*line height*/
435  short stAscent; /*font ascent*/
436  short stFont; /*font (family) number*/
437  StyleField
438  stFace; /*StyleField occupies 16-bits, but only first 8-bits are used */
439  short stSize; /*size in points*/
440  RGBColor stColor; /*absolute (RGB) color*/
441  };
442  typedef struct STElement STElement;
443  typedef STElement TEStyleTable[1777];
444  typedef STElement *STPtr;
445  typedef STPtr *STHandle;
446  struct LHElement
447  {
448  short lhHeight; /*maximum height in line*/
449  short lhAscent; /*maximum ascent in line*/
450  };
451  typedef struct LHElement LHElement;
452  typedef LHElement LHTable[8001];
453  typedef LHElement *LHPtr;
454  typedef LHPtr *LHHandle;
456  {
457  long scrpStartChar; /*starting character position*/
458  short scrpHeight;
459  short scrpAscent;
460  short scrpFont;
461  StyleField
462  scrpFace; /*StyleField occupies 16-bits, but only first 8-bits are used*/
463  short scrpSize;
464  RGBColor scrpColor;
465  };
466  typedef struct ScrpSTElement ScrpSTElement;
467  // ARRAY [0..1600] OF ScrpSTElement
468  typedef ScrpSTElement ScrpSTTable[1601];
469  struct StScrpRec
470  {
471  short scrpNStyles; /*number of styles in scrap*/
472  ScrpSTTable scrpStyleTab; /*table of styles for scrap*/
473  };
474  typedef struct StScrpRec StScrpRec;
475  typedef StScrpRec *StScrpPtr;
476  typedef StScrpPtr *StScrpHandle;
477  struct NullStRec
478  {
479  long teReserved; /*reserved for future expansion*/
480  StScrpHandle nullScrap; /*handle to scrap style table*/
481  };
482  typedef struct NullStRec NullStRec;
483  typedef NullStRec *NullStPtr;
484  typedef NullStPtr *NullStHandle;
485  struct TEStyleRec
486  {
487  short nRuns; /*number of style runs*/
488  short nStyles; /*size of style table*/
489  STHandle styleTab; /*handle to style table*/
490  LHHandle lhTab; /*handle to line-height table*/
491  long teRefCon; /*reserved for application use*/
492  NullStHandle nullStyle; /*Handle to style set at null selection*/
493  StyleRun runs[8001]; /*ARRAY [0..8000] OF StyleRun*/
494  };
495  typedef struct TEStyleRec TEStyleRec;
496  typedef TEStyleRec *TEStylePtr;
497  typedef TEStylePtr *TEStyleHandle;
498  struct TextStyle
499  {
500  short tsFont; /*font (family) number*/
501  StyleField
502  tsFace; /*StyleField occupies 16-bits, but only first 8-bits are used*/
503  short tsSize; /*size in point*/
504  RGBColor tsColor; /*absolute (RGB) color*/
505  };
506  typedef struct TextStyle TextStyle;
507  typedef TextStyle *TextStylePtr;
508  typedef TextStylePtr *TextStyleHandle;
509  typedef short TEIntHook;
518  HighHookUPP
519  NewHighHookUPP(HighHookProcPtr userRoutine);
520 #if !OPAQUE_UPP_TYPES
521  enum
522  {
523  uppHighHookProcInfo = 0x0000000F
524  }; /* SPECIAL_CASE_PROCINFO(0) */
525 #ifdef __cplusplus
526  inline HighHookUPP NewHighHookUPP(HighHookProcPtr userRoutine)
527  {
528  return (HighHookUPP)NewRoutineDescriptor(
529  (ProcPtr)(userRoutine), uppHighHookProcInfo, GetCurrentArchitecture());
530  }
531 #else
532 #define NewHighHookUPP(userRoutine) \
533  (HighHookUPP) NewRoutineDescriptor( \
534  (ProcPtr)(userRoutine), uppHighHookProcInfo, GetCurrentArchitecture())
535 #endif
536 #endif
537 
546  EOLHookUPP
547  NewEOLHookUPP(EOLHookProcPtr userRoutine);
548 #if !OPAQUE_UPP_TYPES
549  enum
550  {
551  uppEOLHookProcInfo = 0x0000001F
552  }; /* SPECIAL_CASE_PROCINFO(1) */
553 #ifdef __cplusplus
554  inline EOLHookUPP NewEOLHookUPP(EOLHookProcPtr userRoutine)
555  {
556  return (EOLHookUPP)NewRoutineDescriptor(
557  (ProcPtr)(userRoutine), uppEOLHookProcInfo, GetCurrentArchitecture());
558  }
559 #else
560 #define NewEOLHookUPP(userRoutine) \
561  (EOLHookUPP) NewRoutineDescriptor( \
562  (ProcPtr)(userRoutine), uppEOLHookProcInfo, GetCurrentArchitecture())
563 #endif
564 #endif
565 
574  CaretHookUPP
575  NewCaretHookUPP(CaretHookProcPtr userRoutine);
576 #if !OPAQUE_UPP_TYPES
577  enum
578  {
579  uppCaretHookProcInfo = 0x0000000F
580  }; /* SPECIAL_CASE_PROCINFO(0) */
581 #ifdef __cplusplus
582  inline CaretHookUPP NewCaretHookUPP(CaretHookProcPtr userRoutine)
583  {
584  return (CaretHookUPP)NewRoutineDescriptor(
585  (ProcPtr)(userRoutine), uppCaretHookProcInfo, GetCurrentArchitecture());
586  }
587 #else
588 #define NewCaretHookUPP(userRoutine) \
589  (CaretHookUPP) NewRoutineDescriptor( \
590  (ProcPtr)(userRoutine), uppCaretHookProcInfo, GetCurrentArchitecture())
591 #endif
592 #endif
593 
602  WidthHookUPP
603  NewWidthHookUPP(WidthHookProcPtr userRoutine);
604 #if !OPAQUE_UPP_TYPES
605  enum
606  {
607  uppWidthHookProcInfo = 0x0000002F
608  }; /* SPECIAL_CASE_PROCINFO(2) */
609 #ifdef __cplusplus
610  inline WidthHookUPP NewWidthHookUPP(WidthHookProcPtr userRoutine)
611  {
612  return (WidthHookUPP)NewRoutineDescriptor(
613  (ProcPtr)(userRoutine), uppWidthHookProcInfo, GetCurrentArchitecture());
614  }
615 #else
616 #define NewWidthHookUPP(userRoutine) \
617  (WidthHookUPP) NewRoutineDescriptor( \
618  (ProcPtr)(userRoutine), uppWidthHookProcInfo, GetCurrentArchitecture())
619 #endif
620 #endif
621 
630  TextWidthHookUPP
631  NewTextWidthHookUPP(TextWidthHookProcPtr userRoutine);
632 #if !OPAQUE_UPP_TYPES
633  enum
634  {
635  uppTextWidthHookProcInfo = 0x0000002F
636  }; /* SPECIAL_CASE_PROCINFO(2) */
637 #ifdef __cplusplus
638  inline TextWidthHookUPP NewTextWidthHookUPP(TextWidthHookProcPtr userRoutine)
639  {
640  return (TextWidthHookUPP)NewRoutineDescriptor((ProcPtr)(userRoutine),
641  uppTextWidthHookProcInfo,
642  GetCurrentArchitecture());
643  }
644 #else
645 #define NewTextWidthHookUPP(userRoutine) \
646  (TextWidthHookUPP) \
647  NewRoutineDescriptor((ProcPtr)(userRoutine), uppTextWidthHookProcInfo, \
648  GetCurrentArchitecture())
649 #endif
650 #endif
651 
660  NWidthHookUPP
661  NewNWidthHookUPP(NWidthHookProcPtr userRoutine);
662 #if !OPAQUE_UPP_TYPES
663  enum
664  {
665  uppNWidthHookProcInfo = 0x0000003F
666  }; /* SPECIAL_CASE_PROCINFO(3) */
667 #ifdef __cplusplus
668  inline NWidthHookUPP NewNWidthHookUPP(NWidthHookProcPtr userRoutine)
669  {
670  return (NWidthHookUPP)NewRoutineDescriptor(
671  (ProcPtr)(userRoutine), uppNWidthHookProcInfo, GetCurrentArchitecture());
672  }
673 #else
674 #define NewNWidthHookUPP(userRoutine) \
675  (NWidthHookUPP) NewRoutineDescriptor( \
676  (ProcPtr)(userRoutine), uppNWidthHookProcInfo, GetCurrentArchitecture())
677 #endif
678 #endif
679 
688  DrawHookUPP
689  NewDrawHookUPP(DrawHookProcPtr userRoutine);
690 #if !OPAQUE_UPP_TYPES
691  enum
692  {
693  uppDrawHookProcInfo = 0x0000004F
694  }; /* SPECIAL_CASE_PROCINFO(4) */
695 #ifdef __cplusplus
696  inline DrawHookUPP NewDrawHookUPP(DrawHookProcPtr userRoutine)
697  {
698  return (DrawHookUPP)NewRoutineDescriptor(
699  (ProcPtr)(userRoutine), uppDrawHookProcInfo, GetCurrentArchitecture());
700  }
701 #else
702 #define NewDrawHookUPP(userRoutine) \
703  (DrawHookUPP) NewRoutineDescriptor( \
704  (ProcPtr)(userRoutine), uppDrawHookProcInfo, GetCurrentArchitecture())
705 #endif
706 #endif
707 
716  HitTestHookUPP
717  NewHitTestHookUPP(HitTestHookProcPtr userRoutine);
718 #if !OPAQUE_UPP_TYPES
719  enum
720  {
721  uppHitTestHookProcInfo = 0x0000005F
722  }; /* SPECIAL_CASE_PROCINFO(5) */
723 #ifdef __cplusplus
724  inline HitTestHookUPP NewHitTestHookUPP(HitTestHookProcPtr userRoutine)
725  {
726  return (HitTestHookUPP)NewRoutineDescriptor(
727  (ProcPtr)(userRoutine), uppHitTestHookProcInfo, GetCurrentArchitecture());
728  }
729 #else
730 #define NewHitTestHookUPP(userRoutine) \
731  (HitTestHookUPP) \
732  NewRoutineDescriptor((ProcPtr)(userRoutine), uppHitTestHookProcInfo, \
733  GetCurrentArchitecture())
734 #endif
735 #endif
736 
745  TEFindWordUPP
746  NewTEFindWordUPP(TEFindWordProcPtr userRoutine);
747 #if !OPAQUE_UPP_TYPES
748  enum
749  {
750  uppTEFindWordProcInfo = 0x0000006F
751  }; /* SPECIAL_CASE_PROCINFO(6) */
752 #ifdef __cplusplus
753  inline TEFindWordUPP NewTEFindWordUPP(TEFindWordProcPtr userRoutine)
754  {
755  return (TEFindWordUPP)NewRoutineDescriptor(
756  (ProcPtr)(userRoutine), uppTEFindWordProcInfo, GetCurrentArchitecture());
757  }
758 #else
759 #define NewTEFindWordUPP(userRoutine) \
760  (TEFindWordUPP) NewRoutineDescriptor( \
761  (ProcPtr)(userRoutine), uppTEFindWordProcInfo, GetCurrentArchitecture())
762 #endif
763 #endif
764 
773  TERecalcUPP
774  NewTERecalcUPP(TERecalcProcPtr userRoutine);
775 #if !OPAQUE_UPP_TYPES
776  enum
777  {
778  uppTERecalcProcInfo = 0x0000009F
779  }; /* SPECIAL_CASE_PROCINFO(9) */
780 #ifdef __cplusplus
781  inline TERecalcUPP NewTERecalcUPP(TERecalcProcPtr userRoutine)
782  {
783  return (TERecalcUPP)NewRoutineDescriptor(
784  (ProcPtr)(userRoutine), uppTERecalcProcInfo, GetCurrentArchitecture());
785  }
786 #else
787 #define NewTERecalcUPP(userRoutine) \
788  (TERecalcUPP) NewRoutineDescriptor( \
789  (ProcPtr)(userRoutine), uppTERecalcProcInfo, GetCurrentArchitecture())
790 #endif
791 #endif
792 
801  TEDoTextUPP
802  NewTEDoTextUPP(TEDoTextProcPtr userRoutine);
803 #if !OPAQUE_UPP_TYPES
804  enum
805  {
806  uppTEDoTextProcInfo = 0x000000AF
807  }; /* SPECIAL_CASE_PROCINFO(10) */
808 #ifdef __cplusplus
809  inline TEDoTextUPP NewTEDoTextUPP(TEDoTextProcPtr userRoutine)
810  {
811  return (TEDoTextUPP)NewRoutineDescriptor(
812  (ProcPtr)(userRoutine), uppTEDoTextProcInfo, GetCurrentArchitecture());
813  }
814 #else
815 #define NewTEDoTextUPP(userRoutine) \
816  (TEDoTextUPP) NewRoutineDescriptor( \
817  (ProcPtr)(userRoutine), uppTEDoTextProcInfo, GetCurrentArchitecture())
818 #endif
819 #endif
820 
829  TEClickLoopUPP
830  NewTEClickLoopUPP(TEClickLoopProcPtr userRoutine);
831 #if !OPAQUE_UPP_TYPES
832  enum
833  {
834  uppTEClickLoopProcInfo = 0x0000F812
835  }; /* register 1_byte:D0 Func(4_bytes:A3) */
836 #ifdef __cplusplus
837  inline TEClickLoopUPP NewTEClickLoopUPP(TEClickLoopProcPtr userRoutine)
838  {
839  return (TEClickLoopUPP)NewRoutineDescriptor(
840  (ProcPtr)(userRoutine), uppTEClickLoopProcInfo, GetCurrentArchitecture());
841  }
842 #else
843 #define NewTEClickLoopUPP(userRoutine) \
844  (TEClickLoopUPP) \
845  NewRoutineDescriptor((ProcPtr)(userRoutine), uppTEClickLoopProcInfo, \
846  GetCurrentArchitecture())
847 #endif
848 #endif
849 
850 #if CALL_NOT_IN_CARBON
859  WordBreakUPP
860  NewWordBreakUPP(WordBreakProcPtr userRoutine);
861 #if !OPAQUE_UPP_TYPES
862  enum
863  {
864  uppWordBreakProcInfo = 0x00029812
865  }; /* register 1_byte:D0 Func(4_bytes:A0, 2_bytes:D0) */
866 #ifdef __cplusplus
867  inline WordBreakUPP NewWordBreakUPP(WordBreakProcPtr userRoutine)
868  {
869  return (WordBreakUPP)NewRoutineDescriptor(
870  (ProcPtr)(userRoutine), uppWordBreakProcInfo, GetCurrentArchitecture());
871  }
872 #else
873 #define NewWordBreakUPP(userRoutine) \
874  (WordBreakUPP) NewRoutineDescriptor( \
875  (ProcPtr)(userRoutine), uppWordBreakProcInfo, GetCurrentArchitecture())
876 #endif
877 #endif
878 
879 #endif /* CALL_NOT_IN_CARBON */
880 
889  void
890  DisposeHighHookUPP(HighHookUPP userUPP);
891 #if !OPAQUE_UPP_TYPES
892 #ifdef __cplusplus
893  inline void DisposeHighHookUPP(HighHookUPP userUPP)
894  {
895  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
896  }
897 #else
898 #define DisposeHighHookUPP(userUPP) DisposeRoutineDescriptor(userUPP)
899 #endif
900 #endif
901 
910  void
911  DisposeEOLHookUPP(EOLHookUPP userUPP);
912 #if !OPAQUE_UPP_TYPES
913 #ifdef __cplusplus
914  inline void DisposeEOLHookUPP(EOLHookUPP userUPP)
915  {
916  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
917  }
918 #else
919 #define DisposeEOLHookUPP(userUPP) DisposeRoutineDescriptor(userUPP)
920 #endif
921 #endif
922 
931  void
932  DisposeCaretHookUPP(CaretHookUPP userUPP);
933 #if !OPAQUE_UPP_TYPES
934 #ifdef __cplusplus
935  inline void DisposeCaretHookUPP(CaretHookUPP userUPP)
936  {
937  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
938  }
939 #else
940 #define DisposeCaretHookUPP(userUPP) DisposeRoutineDescriptor(userUPP)
941 #endif
942 #endif
943 
952  void
953  DisposeWidthHookUPP(WidthHookUPP userUPP);
954 #if !OPAQUE_UPP_TYPES
955 #ifdef __cplusplus
956  inline void DisposeWidthHookUPP(WidthHookUPP userUPP)
957  {
958  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
959  }
960 #else
961 #define DisposeWidthHookUPP(userUPP) DisposeRoutineDescriptor(userUPP)
962 #endif
963 #endif
964 
973  void
974  DisposeTextWidthHookUPP(TextWidthHookUPP userUPP);
975 #if !OPAQUE_UPP_TYPES
976 #ifdef __cplusplus
977  inline void DisposeTextWidthHookUPP(TextWidthHookUPP userUPP)
978  {
979  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
980  }
981 #else
982 #define DisposeTextWidthHookUPP(userUPP) DisposeRoutineDescriptor(userUPP)
983 #endif
984 #endif
985 
994  void
995  DisposeNWidthHookUPP(NWidthHookUPP userUPP);
996 #if !OPAQUE_UPP_TYPES
997 #ifdef __cplusplus
998  inline void DisposeNWidthHookUPP(NWidthHookUPP userUPP)
999  {
1000  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1001  }
1002 #else
1003 #define DisposeNWidthHookUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1004 #endif
1005 #endif
1006 
1015  void
1016  DisposeDrawHookUPP(DrawHookUPP userUPP);
1017 #if !OPAQUE_UPP_TYPES
1018 #ifdef __cplusplus
1019  inline void DisposeDrawHookUPP(DrawHookUPP userUPP)
1020  {
1021  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1022  }
1023 #else
1024 #define DisposeDrawHookUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1025 #endif
1026 #endif
1027 
1036  void
1037  DisposeHitTestHookUPP(HitTestHookUPP userUPP);
1038 #if !OPAQUE_UPP_TYPES
1039 #ifdef __cplusplus
1040  inline void DisposeHitTestHookUPP(HitTestHookUPP userUPP)
1041  {
1042  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1043  }
1044 #else
1045 #define DisposeHitTestHookUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1046 #endif
1047 #endif
1048 
1057  void
1058  DisposeTEFindWordUPP(TEFindWordUPP userUPP);
1059 #if !OPAQUE_UPP_TYPES
1060 #ifdef __cplusplus
1061  inline void DisposeTEFindWordUPP(TEFindWordUPP userUPP)
1062  {
1063  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1064  }
1065 #else
1066 #define DisposeTEFindWordUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1067 #endif
1068 #endif
1069 
1078  void
1079  DisposeTERecalcUPP(TERecalcUPP userUPP);
1080 #if !OPAQUE_UPP_TYPES
1081 #ifdef __cplusplus
1082  inline void DisposeTERecalcUPP(TERecalcUPP userUPP)
1083  {
1084  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1085  }
1086 #else
1087 #define DisposeTERecalcUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1088 #endif
1089 #endif
1090 
1099  void
1100  DisposeTEDoTextUPP(TEDoTextUPP userUPP);
1101 #if !OPAQUE_UPP_TYPES
1102 #ifdef __cplusplus
1103  inline void DisposeTEDoTextUPP(TEDoTextUPP userUPP)
1104  {
1105  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1106  }
1107 #else
1108 #define DisposeTEDoTextUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1109 #endif
1110 #endif
1111 
1120  void
1121  DisposeTEClickLoopUPP(TEClickLoopUPP userUPP);
1122 #if !OPAQUE_UPP_TYPES
1123 #ifdef __cplusplus
1124  inline void DisposeTEClickLoopUPP(TEClickLoopUPP userUPP)
1125  {
1126  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1127  }
1128 #else
1129 #define DisposeTEClickLoopUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1130 #endif
1131 #endif
1132 
1133 #if CALL_NOT_IN_CARBON
1142  void
1143  DisposeWordBreakUPP(WordBreakUPP userUPP);
1144 #if !OPAQUE_UPP_TYPES
1145 #ifdef __cplusplus
1146  inline void DisposeWordBreakUPP(WordBreakUPP userUPP)
1147  {
1148  DisposeRoutineDescriptor((UniversalProcPtr)userUPP);
1149  }
1150 #else
1151 #define DisposeWordBreakUPP(userUPP) DisposeRoutineDescriptor(userUPP)
1152 #endif
1153 #endif
1154 
1155 #endif /* CALL_NOT_IN_CARBON */
1156 
1165  void
1166  InvokeHighHookUPP(const Rect *r, TEPtr pTE, HighHookUPP userUPP);
1167 #if !OPAQUE_UPP_TYPES && \
1168  (!TARGET_OS_MAC || !TARGET_CPU_68K || TARGET_RT_MAC_CFM)
1169 #ifdef __cplusplus
1170  inline void InvokeHighHookUPP(const Rect *r, TEPtr pTE, HighHookUPP userUPP)
1171  {
1172  CALL_TWO_PARAMETER_UPP(userUPP, uppHighHookProcInfo, r, pTE);
1173  }
1174 #else
1175 #define InvokeHighHookUPP(r, pTE, userUPP) \
1176  CALL_TWO_PARAMETER_UPP((userUPP), uppHighHookProcInfo, (r), (pTE))
1177 #endif
1178 #endif
1179 
1188  Boolean
1189  InvokeEOLHookUPP(char theChar, TEPtr pTE, TEHandle hTE, EOLHookUPP userUPP);
1190 #if !OPAQUE_UPP_TYPES && \
1191  (!TARGET_OS_MAC || !TARGET_CPU_68K || TARGET_RT_MAC_CFM)
1192 #ifdef __cplusplus
1193  inline Boolean InvokeEOLHookUPP(char theChar, TEPtr pTE, TEHandle hTE,
1194  EOLHookUPP userUPP)
1195  {
1196  return (Boolean)CALL_THREE_PARAMETER_UPP(userUPP, uppEOLHookProcInfo, theChar,
1197  pTE, hTE);
1198  }
1199 #else
1200 #define InvokeEOLHookUPP(theChar, pTE, hTE, userUPP) \
1201  (Boolean) CALL_THREE_PARAMETER_UPP((userUPP), uppEOLHookProcInfo, (theChar), \
1202  (pTE), (hTE))
1203 #endif
1204 #endif
1205 
1214  void
1215  InvokeCaretHookUPP(const Rect *r, TEPtr pTE, CaretHookUPP userUPP);
1216 #if !OPAQUE_UPP_TYPES && \
1217  (!TARGET_OS_MAC || !TARGET_CPU_68K || TARGET_RT_MAC_CFM)
1218 #ifdef __cplusplus
1219  inline void InvokeCaretHookUPP(const Rect *r, TEPtr pTE, CaretHookUPP userUPP)
1220  {
1221  CALL_TWO_PARAMETER_UPP(userUPP, uppCaretHookProcInfo, r, pTE);
1222  }
1223 #else
1224 #define InvokeCaretHookUPP(r, pTE, userUPP) \
1225  CALL_TWO_PARAMETER_UPP((userUPP), uppCaretHookProcInfo, (r), (pTE))
1226 #endif
1227 #endif
1228 
1237  unsigned short
1238  InvokeWidthHookUPP(unsigned short textLen, unsigned short textOffset,
1239  void *textBufferPtr, TEPtr pTE, TEHandle hTE,
1240  WidthHookUPP userUPP);
1241 #if !OPAQUE_UPP_TYPES && \
1242  (!TARGET_OS_MAC || !TARGET_CPU_68K || TARGET_RT_MAC_CFM)
1243 #ifdef __cplusplus
1244  inline unsigned short InvokeWidthHookUPP(unsigned short textLen,
1245  unsigned short textOffset,
1246  void *textBufferPtr, TEPtr pTE,
1247  TEHandle hTE, WidthHookUPP userUPP)
1248  {
1249  return (unsigned short)CALL_FIVE_PARAMETER_UPP(userUPP, uppWidthHookProcInfo,
1250  textLen, textOffset,
1251  textBufferPtr, pTE, hTE);
1252  }
1253 #else
1254 #define InvokeWidthHookUPP(textLen, textOffset, textBufferPtr, pTE, hTE, \
1255  userUPP) \
1256  (unsigned short)CALL_FIVE_PARAMETER_UPP((userUPP), uppWidthHookProcInfo, \
1257  (textLen), (textOffset), \
1258  (textBufferPtr), (pTE), (hTE))
1259 #endif
1260 #endif
1261 
1270  unsigned short
1271  InvokeTextWidthHookUPP(unsigned short textLen, unsigned short textOffset,
1272  void *textBufferPtr, TEPtr pTE, TEHandle hTE,
1273  TextWidthHookUPP userUPP);
1274 #if !OPAQUE_UPP_TYPES && \
1275  (!TARGET_OS_MAC || !TARGET_CPU_68K || TARGET_RT_MAC_CFM)
1276 #ifdef __cplusplus
1277  inline unsigned short InvokeTextWidthHookUPP(unsigned short textLen,
1278  unsigned short textOffset,
1279  void *textBufferPtr, TEPtr pTE,
1280  TEHandle hTE,
1281  TextWidthHookUPP userUPP)
1282  {
1283  return (unsigned short)CALL_FIVE_PARAMETER_UPP(
1284  userUPP, uppTextWidthHookProcInfo, textLen, textOffset, textBufferPtr,
1285  pTE, hTE);
1286  }
1287 #else
1288 #define InvokeTextWidthHookUPP(textLen, textOffset, textBufferPtr, pTE, hTE, \
1289  userUPP) \
1290  (unsigned short)CALL_FIVE_PARAMETER_UPP((userUPP), uppTextWidthHookProcInfo, \
1291  (textLen), (textOffset), \
1292  (textBufferPtr), (pTE), (hTE))
1293 #endif
1294 #endif
1295 
1304  unsigned short
1305  InvokeNWidthHookUPP(unsigned short styleRunLen, unsigned short styleRunOffset,
1306  short slop, short direction, void *textBufferPtr,
1307  short *lineStart, TEPtr pTE, TEHandle hTE,
1308  NWidthHookUPP userUPP);
1309 #if !OPAQUE_UPP_TYPES && \
1310  (!TARGET_OS_MAC || !TARGET_CPU_68K || TARGET_RT_MAC_CFM)
1311 #ifdef __cplusplus
1312  inline unsigned short InvokeNWidthHookUPP(unsigned short styleRunLen,
1313  unsigned short styleRunOffset,
1314  short slop, short direction,
1315  void *textBufferPtr, short *lineStart,
1316  TEPtr pTE, TEHandle hTE,
1317  NWidthHookUPP userUPP)
1318  {
1319  return (unsigned short)CALL_EIGHT_PARAMETER_UPP(
1320  userUPP, uppNWidthHookProcInfo, styleRunLen, styleRunOffset, slop,
1321  direction, textBufferPtr, lineStart, pTE, hTE);
1322  }
1323 #else
1324 #define InvokeNWidthHookUPP(styleRunLen, styleRunOffset, slop, direction, \
1325  textBufferPtr, lineStart, pTE, hTE, userUPP) \
1326  (unsigned short)CALL_EIGHT_PARAMETER_UPP( \
1327  (userUPP), uppNWidthHookProcInfo, (styleRunLen), (styleRunOffset), \
1328  (slop), (direction), (textBufferPtr), (lineStart), (pTE), (hTE))
1329 #endif
1330 #endif
1331 
1340  void
1341  InvokeDrawHookUPP(unsigned short textOffset, unsigned short drawLen,
1342  void *textBufferPtr, TEPtr pTE, TEHandle hTE,
1343  DrawHookUPP userUPP);
1344 #if !OPAQUE_UPP_TYPES && \
1345  (!TARGET_OS_MAC || !TARGET_CPU_68K || TARGET_RT_MAC_CFM)
1346 #ifdef __cplusplus
1347  inline void InvokeDrawHookUPP(unsigned short textOffset, unsigned short drawLen,
1348  void *textBufferPtr, TEPtr pTE, TEHandle hTE,
1349  DrawHookUPP userUPP)
1350  {
1351  CALL_FIVE_PARAMETER_UPP(userUPP, uppDrawHookProcInfo, textOffset, drawLen,
1352  textBufferPtr, pTE, hTE);
1353  }
1354 #else
1355 #define InvokeDrawHookUPP(textOffset, drawLen, textBufferPtr, pTE, hTE, \
1356  userUPP) \
1357  CALL_FIVE_PARAMETER_UPP((userUPP), uppDrawHookProcInfo, (textOffset), \
1358  (drawLen), (textBufferPtr), (pTE), (hTE))
1359 #endif
1360 #endif
1361 
1370  Boolean
1371  InvokeHitTestHookUPP(unsigned short styleRunLen, unsigned short styleRunOffset,
1372  unsigned short slop, void *textBufferPtr, TEPtr pTE,
1373  TEHandle hTE, unsigned short *pixelWidth,
1374  unsigned short *charOffset, Boolean *pixelInChar,
1375  HitTestHookUPP userUPP);
1376 #if !OPAQUE_UPP_TYPES && \
1377  (!TARGET_OS_MAC || !TARGET_CPU_68K || TARGET_RT_MAC_CFM)
1378 #ifdef __cplusplus
1379  inline Boolean
1380  InvokeHitTestHookUPP(unsigned short styleRunLen, unsigned short styleRunOffset,
1381  unsigned short slop, void *textBufferPtr, TEPtr pTE,
1382  TEHandle hTE, unsigned short *pixelWidth,
1383  unsigned short *charOffset, Boolean *pixelInChar,
1384  HitTestHookUPP userUPP)
1385  {
1386  return (Boolean)CALL_NINE_PARAMETER_UPP(
1387  userUPP, uppHitTestHookProcInfo, styleRunLen, styleRunOffset, slop,
1388  textBufferPtr, pTE, hTE, pixelWidth, charOffset, pixelInChar);
1389  }
1390 #else
1391 #define InvokeHitTestHookUPP(styleRunLen, styleRunOffset, slop, textBufferPtr, \
1392  pTE, hTE, pixelWidth, charOffset, pixelInChar, \
1393  userUPP) \
1394  (Boolean) CALL_NINE_PARAMETER_UPP((userUPP), uppHitTestHookProcInfo, \
1395  (styleRunLen), (styleRunOffset), (slop), \
1396  (textBufferPtr), (pTE), (hTE), \
1397  (pixelWidth), (charOffset), (pixelInChar))
1398 #endif
1399 #endif
1400 
1409  void
1410  InvokeTEFindWordUPP(unsigned short currentPos, short caller, TEPtr pTE,
1411  TEHandle hTE, unsigned short *wordStart,
1412  unsigned short *wordEnd, TEFindWordUPP userUPP);
1413 #if !OPAQUE_UPP_TYPES && \
1414  (!TARGET_OS_MAC || !TARGET_CPU_68K || TARGET_RT_MAC_CFM)
1415 #ifdef __cplusplus
1416  inline void InvokeTEFindWordUPP(unsigned short currentPos, short caller,
1417  TEPtr pTE, TEHandle hTE,
1418  unsigned short *wordStart,
1419  unsigned short *wordEnd,
1420  TEFindWordUPP userUPP)
1421  {
1422  CALL_SIX_PARAMETER_UPP(userUPP, uppTEFindWordProcInfo, currentPos, caller,
1423  pTE, hTE, wordStart, wordEnd);
1424  }
1425 #else
1426 #define InvokeTEFindWordUPP(currentPos, caller, pTE, hTE, wordStart, wordEnd, \
1427  userUPP) \
1428  CALL_SIX_PARAMETER_UPP((userUPP), uppTEFindWordProcInfo, (currentPos), \
1429  (caller), (pTE), (hTE), (wordStart), (wordEnd))
1430 #endif
1431 #endif
1432 
1441  void
1442  InvokeTERecalcUPP(TEPtr pTE, unsigned short changeLength,
1443  unsigned short *lineStart, unsigned short *firstChar,
1444  unsigned short *lastChar, TERecalcUPP userUPP);
1445 #if !OPAQUE_UPP_TYPES && \
1446  (!TARGET_OS_MAC || !TARGET_CPU_68K || TARGET_RT_MAC_CFM)
1447 #ifdef __cplusplus
1448  inline void InvokeTERecalcUPP(TEPtr pTE, unsigned short changeLength,
1449  unsigned short *lineStart,
1450  unsigned short *firstChar,
1451  unsigned short *lastChar, TERecalcUPP userUPP)
1452  {
1453  CALL_FIVE_PARAMETER_UPP(userUPP, uppTERecalcProcInfo, pTE, changeLength,
1454  lineStart, firstChar, lastChar);
1455  }
1456 #else
1457 #define InvokeTERecalcUPP(pTE, changeLength, lineStart, firstChar, lastChar, \
1458  userUPP) \
1459  CALL_FIVE_PARAMETER_UPP((userUPP), uppTERecalcProcInfo, (pTE), \
1460  (changeLength), (lineStart), (firstChar), \
1461  (lastChar))
1462 #endif
1463 #endif
1464 
1473  void
1474  InvokeTEDoTextUPP(TEPtr pTE, unsigned short firstChar, unsigned short lastChar,
1475  short selector, GrafPtr *currentGrafPort, short *charPosition,
1476  TEDoTextUPP userUPP);
1477 #if !OPAQUE_UPP_TYPES && \
1478  (!TARGET_OS_MAC || !TARGET_CPU_68K || TARGET_RT_MAC_CFM)
1479 #ifdef __cplusplus
1480  inline void InvokeTEDoTextUPP(TEPtr pTE, unsigned short firstChar,
1481  unsigned short lastChar, short selector,
1482  GrafPtr *currentGrafPort, short *charPosition,
1483  TEDoTextUPP userUPP)
1484  {
1485  CALL_SIX_PARAMETER_UPP(userUPP, uppTEDoTextProcInfo, pTE, firstChar, lastChar,
1486  selector, currentGrafPort, charPosition);
1487  }
1488 #else
1489 #define InvokeTEDoTextUPP(pTE, firstChar, lastChar, selector, currentGrafPort, \
1490  charPosition, userUPP) \
1491  CALL_SIX_PARAMETER_UPP((userUPP), uppTEDoTextProcInfo, (pTE), (firstChar), \
1492  (lastChar), (selector), (currentGrafPort), \
1493  (charPosition))
1494 #endif
1495 #endif
1496 
1505  Boolean
1506  InvokeTEClickLoopUPP(TEPtr pTE, TEClickLoopUPP userUPP);
1507 #if !OPAQUE_UPP_TYPES && \
1508  (!TARGET_OS_MAC || !TARGET_CPU_68K || TARGET_RT_MAC_CFM)
1509 #ifdef __cplusplus
1510  inline Boolean InvokeTEClickLoopUPP(TEPtr pTE, TEClickLoopUPP userUPP)
1511  {
1512  return (Boolean)CALL_ONE_PARAMETER_UPP(userUPP, uppTEClickLoopProcInfo, pTE);
1513  }
1514 #else
1515 #define InvokeTEClickLoopUPP(pTE, userUPP) \
1516  (Boolean) CALL_ONE_PARAMETER_UPP((userUPP), uppTEClickLoopProcInfo, (pTE))
1517 #endif
1518 #endif
1519 
1520 #if CALL_NOT_IN_CARBON
1529 #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
1530 #pragma parameter __D0 InvokeWordBreakUPP(__A0, __D0, __A1)
1531 #endif
1532  Boolean
1533  InvokeWordBreakUPP(Ptr text, short charPos, WordBreakUPP userUPP);
1534 #if !OPAQUE_UPP_TYPES && \
1535  (!TARGET_OS_MAC || !TARGET_CPU_68K || TARGET_RT_MAC_CFM)
1536 #ifdef __cplusplus
1537  inline Boolean InvokeWordBreakUPP(Ptr text, short charPos,
1538  WordBreakUPP userUPP)
1539  {
1540  return (Boolean)CALL_TWO_PARAMETER_UPP(userUPP, uppWordBreakProcInfo, text,
1541  charPos);
1542  }
1543 #else
1544 #define InvokeWordBreakUPP(text, charPos, userUPP) \
1545  (Boolean) CALL_TWO_PARAMETER_UPP((userUPP), uppWordBreakProcInfo, (text), \
1546  (charPos))
1547 #endif
1548 #endif
1549 
1550 #endif /* CALL_NOT_IN_CARBON */
1551 
1552 #if CALL_NOT_IN_CARBON || OLDROUTINENAMES
1553 /* support for pre-Carbon UPP routines: New...Proc and Call...Proc */
1554 #define NewHighHookProc(userRoutine) NewHighHookUPP(userRoutine)
1555 #define NewEOLHookProc(userRoutine) NewEOLHookUPP(userRoutine)
1556 #define NewCaretHookProc(userRoutine) NewCaretHookUPP(userRoutine)
1557 #define NewWidthHookProc(userRoutine) NewWidthHookUPP(userRoutine)
1558 #define NewTextWidthHookProc(userRoutine) NewTextWidthHookUPP(userRoutine)
1559 #define NewNWidthHookProc(userRoutine) NewNWidthHookUPP(userRoutine)
1560 #define NewDrawHookProc(userRoutine) NewDrawHookUPP(userRoutine)
1561 #define NewHitTestHookProc(userRoutine) NewHitTestHookUPP(userRoutine)
1562 #define NewTEFindWordProc(userRoutine) NewTEFindWordUPP(userRoutine)
1563 #define NewTERecalcProc(userRoutine) NewTERecalcUPP(userRoutine)
1564 #define NewTEDoTextProc(userRoutine) NewTEDoTextUPP(userRoutine)
1565 #define NewTEClickLoopProc(userRoutine) NewTEClickLoopUPP(userRoutine)
1566 #define NewWordBreakProc(userRoutine) NewWordBreakUPP(userRoutine)
1567 #define CallHighHookProc(userRoutine, r, pTE) \
1568  InvokeHighHookUPP(r, pTE, userRoutine)
1569 #define CallEOLHookProc(userRoutine, theChar, pTE, hTE) \
1570  InvokeEOLHookUPP(theChar, pTE, hTE, userRoutine)
1571 #define CallCaretHookProc(userRoutine, r, pTE) \
1572  InvokeCaretHookUPP(r, pTE, userRoutine)
1573 #define CallWidthHookProc(userRoutine, textLen, textOffset, textBufferPtr, \
1574  pTE, hTE) \
1575  InvokeWidthHookUPP(textLen, textOffset, textBufferPtr, pTE, hTE, userRoutine)
1576 #define CallTextWidthHookProc(userRoutine, textLen, textOffset, textBufferPtr, \
1577  pTE, hTE) \
1578  InvokeTextWidthHookUPP(textLen, textOffset, textBufferPtr, pTE, hTE, \
1579  userRoutine)
1580 #define CallNWidthHookProc(userRoutine, styleRunLen, styleRunOffset, slop, \
1581  direction, textBufferPtr, lineStart, pTE, hTE) \
1582  InvokeNWidthHookUPP(styleRunLen, styleRunOffset, slop, direction, \
1583  textBufferPtr, lineStart, pTE, hTE, userRoutine)
1584 #define CallDrawHookProc(userRoutine, textOffset, drawLen, textBufferPtr, pTE, \
1585  hTE) \
1586  InvokeDrawHookUPP(textOffset, drawLen, textBufferPtr, pTE, hTE, userRoutine)
1587 #define CallHitTestHookProc(userRoutine, styleRunLen, styleRunOffset, slop, \
1588  textBufferPtr, pTE, hTE, pixelWidth, charOffset, \
1589  pixelInChar) \
1590  InvokeHitTestHookUPP(styleRunLen, styleRunOffset, slop, textBufferPtr, pTE, \
1591  hTE, pixelWidth, charOffset, pixelInChar, userRoutine)
1592 #define CallTEFindWordProc(userRoutine, currentPos, caller, pTE, hTE, \
1593  wordStart, wordEnd) \
1594  InvokeTEFindWordUPP(currentPos, caller, pTE, hTE, wordStart, wordEnd, \
1595  userRoutine)
1596 #define CallTERecalcProc(userRoutine, pTE, changeLength, lineStart, firstChar, \
1597  lastChar) \
1598  InvokeTERecalcUPP(pTE, changeLength, lineStart, firstChar, lastChar, \
1599  userRoutine)
1600 #define CallTEDoTextProc(userRoutine, pTE, firstChar, lastChar, selector, \
1601  currentGrafPort, charPosition) \
1602  InvokeTEDoTextUPP(pTE, firstChar, lastChar, selector, currentGrafPort, \
1603  charPosition, userRoutine)
1604 #define CallTEClickLoopProc(userRoutine, pTE) \
1605  InvokeTEClickLoopUPP(pTE, userRoutine)
1606 #define CallWordBreakProc(userRoutine, text, charPos) \
1607  InvokeWordBreakUPP(text, charPos, userRoutine)
1608 #endif /* CALL_NOT_IN_CARBON */
1609 
1610  enum
1611  {
1612  /* feature bit 4 for TEFeatureFlag no longer in use */
1613  teFUseTextServices = 4 /*00010000b */
1614  };
1615 
1616 #if OLDROUTINENAMES
1617 /* action for the old C "bit (un)set" interface, TEFeatureFlag */
1618 #define TEBitClear teBitClear
1619 #define TEBitSet teBitSet
1620 #define TEBitTest teBitTest
1621 #define teFAutoScr teFAutoScroll
1622 #define toglBit toggleBit
1623 #endif /* OLDROUTINENAMES */
1624 
1643  Handle
1645 
1654  long
1656 
1657 #if TARGET_CPU_68K && !TARGET_RT_MAC_CFM
1658 #define TEGetScrapLength() ((long)*(unsigned short *)0x0AB0)
1659 #endif
1660 #if CALL_NOT_IN_CARBON
1669  void
1670  TEInit(void);
1671 
1672 #endif /* CALL_NOT_IN_CARBON */
1673 
1682  TEHandle
1683  TENew(const Rect *destRect, const Rect *viewRect);
1684 
1693  void
1695 
1704  void
1705  TESetText(const void *text, long length, TEHandle hTE);
1706 
1715  CharsHandle
1717 
1726  void
1728 
1737  void
1738  TESetSelect(long selStart, long selEnd, TEHandle hTE);
1739 
1748  void
1750 
1759  void
1761 
1770  void
1771  TEKey(CharParameter key, TEHandle hTE);
1772 
1781  void
1783 
1792  void
1794 
1803  void
1805 
1814  void
1816 
1825  void
1826  TEInsert(const void *text, long length, TEHandle hTE);
1827 
1836  void
1837  TESetAlignment(short just, TEHandle hTE);
1838 
1847  void
1848  TEUpdate(const Rect *rUpdate, TEHandle hTE);
1849 
1858  void
1859  TETextBox(const void *text, long length, const Rect *box, short just);
1860 
1869  void
1870  TEScroll(short dh, short dv, TEHandle hTE);
1871 
1880  void
1882 
1891  void
1892  TEPinScroll(short dh, short dv, TEHandle hTE);
1893 
1902  void
1904 
1913  void
1915 
1924  short
1926 
1935  Point
1936  TEGetPoint(short offset, TEHandle hTE);
1937 
1946  void
1947  TEClick(Point pt, Boolean fExtend, TEHandle h);
1948 
1957  TEHandle
1958  TEStyleNew(const Rect *destRect, const Rect *viewRect);
1959 
1968  void
1970 
1981 
1990  void
1991  TEGetStyle(short offset, TextStyle *theStyle, short *lineHeight,
1992  short *fontAscent, TEHandle hTE);
1993 
2002  void
2004 
2013  void
2014  TESetStyle(short mode, const TextStyle *newStyle, Boolean fRedraw, TEHandle hTE);
2015 
2024  void
2025  TEReplaceStyle(short mode, const TextStyle *oldStyle, const TextStyle *newStyle,
2026  Boolean fRedraw, TEHandle hTE);
2027 
2036  StScrpHandle
2038 
2047  void
2048  TEStyleInsert(const void *text, long length, StScrpHandle hST, TEHandle hTE);
2049 
2058  long
2059  TEGetHeight(long endLine, long startLine, TEHandle hTE);
2060 
2102  Boolean
2103  TEContinuousStyle(short *mode, TextStyle *aStyle, TEHandle hTE);
2104 
2113  void
2114  TEUseStyleScrap(long rangeStart, long rangeEnd, StScrpHandle newStyles,
2115  Boolean fRedraw, TEHandle hTE);
2116 
2163  void
2164  TECustomHook(TEIntHook which, UniversalProcPtr *addr, TEHandle hTE);
2165 
2200  long
2201  TENumStyles(long rangeStart, long rangeEnd, TEHandle hTE);
2202 
2233 teFTextBuffering = 1, /*00000010b*/
2234 teFOutlineHilite = 2, /*00000100b*/
2235 teFInlineInput = 3, /*00001000b*/
2236 teFUseTextServices = 4, /*00010000b*/
2237 The action for the new "bit (un)set" interface, TEFeatureFlag is:
2238 TEBitClear = 0,
2239 TEBitSet = 1/*set the selector bit*/
2240 </pre>
2241  * \copyright THINK Reference © 1991-1992 Symantec Corporation
2242  * \non_carbon_cfm in InterfaceLib 7.1 and later
2243  * \carbon_lib in CarbonLib 1.0 and later
2244  * \mac_os_x in version 10.0 and later
2245  */
2246 short
2247 TEFeatureFlag(short feature, short action, TEHandle hTE);
2248 
2257 OSErr TEGetHiliteRgn(RgnHandle region, TEHandle hTE);
2258 
2267 void TESetScrapLength(long length);
2268 
2277 OSErr TEFromScrap(void);
2278 
2287 OSErr TEToScrap(void);
2288 
2297 void TESetClickLoop(TEClickLoopUPP clikProc, TEHandle hTE);
2298 
2299 #if CALL_NOT_IN_CARBON
2308 void TESetWordBreak(WordBreakUPP wBrkProc, TEHandle hTE);
2309 
2310 #endif /* CALL_NOT_IN_CARBON */
2311 
2320 TEDoTextUPP
2322 
2331 void TESetDoTextHook(TEDoTextUPP value);
2332 
2341 TERecalcUPP
2343 
2352 void TESetRecalcHook(TERecalcUPP value);
2353 
2362 TEFindWordUPP
2364 
2373 void TESetFindWordHook(TEFindWordUPP value);
2374 
2383 Handle
2385 
2394 void TESetScrapHandle(Handle value);
2395 
2396 /* LMGetWordRedraw and LMSetWordRedraw were previously in LowMem.h */
2397 /* Deprecated for Carbon on MacOS X */
2398 /* This lomem is no longer used by the implementation of TextEdit */
2399 /* on MacOS X, so setting it will have no effect. */
2408 UInt8 LMGetWordRedraw(void);
2409 
2418 void LMSetWordRedraw(UInt8 value);
2419 
2420 #if CALL_NOT_IN_CARBON
2429 void teclick(Point *pt, Boolean fExtend, TEHandle h);
2430 
2431 #endif /* CALL_NOT_IN_CARBON */
2432 
2433 #if OLDROUTINENAMES
2434 #if CALL_NOT_IN_CARBON
2435 #define TESetJust(just, hTE) TESetAlignment(just, hTE)
2436 #define TextBox(text, length, box, just) TETextBox(text, length, box, just)
2437 #define TEStylNew(destRect, viewRect) TEStyleNew(destRect, viewRect)
2438 #define SetStylHandle(theHandle, hTE) TESetStyleHandle(theHandle, hTE)
2439 #define SetStyleHandle(theHandle, hTE) TESetStyleHandle(theHandle, hTE)
2440 #define GetStylHandle(hTE) TEGetStyleHandle(hTE)
2441 #define GetStyleHandle(hTE) TEGetStyleHandle(hTE)
2442 #define TEStylPaste(hTE) TEStylePaste(hTE)
2443 #define GetStylScrap(hTE) TEGetStyleScrapHandle(hTE)
2444 #define GetStyleScrap(hTE) TEGetStyleScrapHandle(hTE)
2445 #define SetStylScrap(rangeStart, rangeEnd, newStyles, redraw, hTE) \
2446 TEUseStyleScrap(rangeStart, rangeEnd, newStyles, redraw, hTE)
2447 #define SetStyleScrap(rangeStart, rangeEnd, newStyles, redraw, hTE) \
2448 TEUseStyleScrap(rangeStart, rangeEnd, newStyles, redraw, hTE)
2449 #define TEStylInsert(text, length, hST, hTE) \
2450 TEStyleInsert(text, length, hST, hTE)
2451 #define TESetScrapLen(length) TESetScrapLength(length)
2452 #define TEGetScrapLen() TEGetScrapLength()
2453 #define SetClikLoop(clikProc, hTE) TESetClickLoop(clikProc, hTE)
2454 #define SetWordBreak(wBrkProc, hTE) TESetWordBreak(wBrkProc, hTE)
2455 #endif /* CALL_NOT_IN_CARBON */
2456 #endif /* OLDROUTINENAMES */
2457 
2458 #if PRAGMA_STRUCT_ALIGN
2459 #pragma options align = reset
2460 #elif PRAGMA_STRUCT_PACKPUSH
2461 #pragma pack(pop)
2462 #elif PRAGMA_STRUCT_PACK
2463 #pragma pack()
2464 #endif
2465 
2466 #ifdef PRAGMA_IMPORT_OFF
2467 #pragma import off
2468 #elif PRAGMA_IMPORT
2469 #pragma import reset
2470 #endif
2471 
2472 #ifdef __cplusplus
2473 }
2474 #endif
2475 
2476 #endif /* __TEXTEDIT__ */
2477 * /*/*/ */*/
Basic Macintosh data types.
unsigned char Boolean
Definition: MacTypes.h:318
Mixed Mode Manager Interfaces.
void DisposeRoutineDescriptor(UniversalProcPtr theUPP)
UniversalProcPtr NewRoutineDescriptor(ProcPtr theProc, ProcInfoType theProcInfo, ISAType theISA)
Interface to Quickdraw Graphics.
dv
Calculate slope given an angle.
Definition: Quickdraw.h:6941
typedef CALLBACK_API_REGISTER68K(void, SIInterruptProcPtr,(SPBPtr inParamPtr, Ptr dataBuffer, short peakAmplitude, long sampleSize))
void TESetText(const void *text, long length, TEHandle hTE)
Point TEGetPoint(short offset, TEHandle hTE)
TEFindWordUPP TEGetFindWordHook(void)
void TEPinScroll(short dh, short dv, TEHandle hTE)
TEDoTextUPP TEGetDoTextHook(void)
OSErr TEToScrap(void)
Boolean InvokeEOLHookUPP(char theChar, TEPtr pTE, TEHandle hTE, EOLHookUPP userUPP)
void TESetDoTextHook(TEDoTextUPP value)
TEFindWordUPP NewTEFindWordUPP(TEFindWordProcPtr userRoutine)
void TEInsert(const void *text, long length, TEHandle hTE)
void TECut(TEHandle hTE)
WidthHookUPP NewWidthHookUPP(WidthHookProcPtr userRoutine)
void TEReplaceStyle(short mode, const TextStyle *oldStyle, const TextStyle *newStyle, Boolean fRedraw, TEHandle hTE)
void TEStylePaste(TEHandle hTE)
unsigned short InvokeNWidthHookUPP(unsigned short styleRunLen, unsigned short styleRunOffset, short slop, short direction, void *textBufferPtr, short *lineStart, TEPtr pTE, TEHandle hTE, NWidthHookUPP userUPP)
DrawHookUPP NewDrawHookUPP(DrawHookProcPtr userRoutine)
TERecalcUPP NewTERecalcUPP(TERecalcProcPtr userRoutine)
long TEGetScrapLength(void)
void TETextBox(const void *text, long length, const Rect *box, short just)
TEHandle TENew(const Rect *destRect, const Rect *viewRect)
void TESetAlignment(short just, TEHandle hTE)
void InvokeCaretHookUPP(const Rect *r, TEPtr pTE, CaretHookUPP userUPP)
void TEUpdate(const Rect *rUpdate, TEHandle hTE)
void DisposeWidthHookUPP(WidthHookUPP userUPP)
void TESetSelect(long selStart, long selEnd, TEHandle hTE)
void TESelView(TEHandle hTE)
void TEUseStyleScrap(long rangeStart, long rangeEnd, StScrpHandle newStyles, Boolean fRedraw, TEHandle hTE)
void TEClick(Point pt, Boolean fExtend, TEHandle h)
void TEAutoView(Boolean fAuto, TEHandle hTE)
long TENumStyles(long rangeStart, long rangeEnd, TEHandle hTE)
Obtains a count of style runs in a range of text.
TEDoTextUPP NewTEDoTextUPP(TEDoTextProcPtr userRoutine)
Boolean InvokeHitTestHookUPP(unsigned short styleRunLen, unsigned short styleRunOffset, unsigned short slop, void *textBufferPtr, TEPtr pTE, TEHandle hTE, unsigned short *pixelWidth, unsigned short *charOffset, Boolean *pixelInChar, HitTestHookUPP userUPP)
typedef REGISTER_UPP_TYPE(HighHookProcPtr) HighHookUPP
Handle TEScrapHandle(void)
Obtain handle leading to TextEdit scrap.
void LMSetWordRedraw(UInt8 value)
long TEGetHeight(long endLine, long startLine, TEHandle hTE)
void DisposeEOLHookUPP(EOLHookUPP userUPP)
void DisposeTEDoTextUPP(TEDoTextUPP userUPP)
void TEDelete(TEHandle hTE)
void DisposeWordBreakUPP(WordBreakUPP userUPP)
Handle TEGetScrapHandle(void)
void TEGetStyle(short offset, TextStyle *theStyle, short *lineHeight, short *fontAscent, TEHandle hTE)
void TECalText(TEHandle hTE)
TERecalcUPP TEGetRecalcHook(void)
void TESetScrapHandle(Handle value)
void DisposeTEFindWordUPP(TEFindWordUPP userUPP)
void TEInit(void)
void TESetRecalcHook(TERecalcUPP value)
teFTextBuffering
Return last setting of a specified feature's bit.
Definition: TextEdit.h:2233
void TESetScrapLength(long length)
TEClickLoopUPP NewTEClickLoopUPP(TEClickLoopProcPtr userRoutine)
unsigned short InvokeWidthHookUPP(unsigned short textLen, unsigned short textOffset, void *textBufferPtr, TEPtr pTE, TEHandle hTE, WidthHookUPP userUPP)
void DisposeDrawHookUPP(DrawHookUPP userUPP)
void TEActivate(TEHandle hTE)
void DisposeTERecalcUPP(TERecalcUPP userUPP)
void TEStyleInsert(const void *text, long length, StScrpHandle hST, TEHandle hTE)
Boolean TEContinuousStyle(short *mode, TextStyle *aStyle, TEHandle hTE)
TEContinuousStyle Check if a style element is continuous across selection.
void DisposeTEClickLoopUPP(TEClickLoopUPP userUPP)
void TEScroll(short dh, short dv, TEHandle hTE)
Boolean InvokeTEClickLoopUPP(TEPtr pTE, TEClickLoopUPP userUPP)
void teclick(Point *pt, Boolean fExtend, TEHandle h)
short TEGetOffset(Point pt, TEHandle hTE)
TextWidthHookUPP NewTextWidthHookUPP(TextWidthHookProcPtr userRoutine)
void TEIdle(TEHandle hTE)
void TESetClickLoop(TEClickLoopUPP clikProc, TEHandle hTE)
void TESetStyle(short mode, const TextStyle *newStyle, Boolean fRedraw, TEHandle hTE)
void InvokeTEFindWordUPP(unsigned short currentPos, short caller, TEPtr pTE, TEHandle hTE, unsigned short *wordStart, unsigned short *wordEnd, TEFindWordUPP userUPP)
CaretHookUPP NewCaretHookUPP(CaretHookProcPtr userRoutine)
void TEPaste(TEHandle hTE)
void TEKey(CharParameter key, TEHandle hTE)
HighHookUPP NewHighHookUPP(HighHookProcPtr userRoutine)
void DisposeCaretHookUPP(CaretHookUPP userUPP)
EOLHookUPP NewEOLHookUPP(EOLHookProcPtr userRoutine)
void InvokeDrawHookUPP(unsigned short textOffset, unsigned short drawLen, void *textBufferPtr, TEPtr pTE, TEHandle hTE, DrawHookUPP userUPP)
void InvokeHighHookUPP(const Rect *r, TEPtr pTE, HighHookUPP userUPP)
void TESetStyleHandle(TEStyleHandle theHandle, TEHandle hTE)
HitTestHookUPP NewHitTestHookUPP(HitTestHookProcPtr userRoutine)
TEHandle TEStyleNew(const Rect *destRect, const Rect *viewRect)
void TESetFindWordHook(TEFindWordUPP value)
void InvokeTERecalcUPP(TEPtr pTE, unsigned short changeLength, unsigned short *lineStart, unsigned short *firstChar, unsigned short *lastChar, TERecalcUPP userUPP)
void DisposeTextWidthHookUPP(TextWidthHookUPP userUPP)
unsigned short InvokeTextWidthHookUPP(unsigned short textLen, unsigned short textOffset, void *textBufferPtr, TEPtr pTE, TEHandle hTE, TextWidthHookUPP userUPP)
void TECopy(TEHandle hTE)
UInt8 LMGetWordRedraw(void)
void TEDeactivate(TEHandle hTE)
void DisposeNWidthHookUPP(NWidthHookUPP userUPP)
void DisposeHighHookUPP(HighHookUPP userUPP)
CharsHandle TEGetText(TEHandle hTE)
void DisposeHitTestHookUPP(HitTestHookUPP userUPP)
NWidthHookUPP NewNWidthHookUPP(NWidthHookProcPtr userRoutine)
OSErr TEFromScrap(void)
WordBreakUPP NewWordBreakUPP(WordBreakProcPtr userRoutine)
TEStyleHandle TEGetStyleHandle(TEHandle hTE)
OSErr TEGetHiliteRgn(RgnHandle region, TEHandle hTE)
void TESetWordBreak(WordBreakUPP wBrkProc, TEHandle hTE)
Boolean InvokeWordBreakUPP(Ptr text, short charPos, WordBreakUPP userUPP)
StScrpHandle TEGetStyleScrapHandle(TEHandle hTE)
void InvokeTEDoTextUPP(TEPtr pTE, unsigned short firstChar, unsigned short lastChar, short selector, GrafPtr *currentGrafPort, short *charPosition, TEDoTextUPP userUPP)
void TECustomHook(TEIntHook which, UniversalProcPtr *addr, TEHandle hTE)
Install custom handlers for TextEdit bottleneck routines.
void TEDispose(TEHandle hTE)
Definition: Quickdraw.h:1648
Definition: TextEdit.h:447
Definition: Quickdraw.h:306
Definition: TextEdit.h:478
Definition: MacTypes.h:520
Definition: Quickdraw.h:1710
Definition: MacTypes.h:527
Definition: TextEdit.h:432
Definition: TextEdit.h:456
Definition: TextEdit.h:470
Definition: TextEdit.h:426
Definition: TextEdit.h:272
Definition: TextEdit.h:486
Definition: TextEdit.h:499