Main Page | Namespace List | Class Hierarchy | Class List | File List | Namespace Members | Class Members | File Members | Related Pages

TTransparentEditText.h

Go to the documentation of this file.
00001 /* 00002 * TTransparentEditText.h 00003 * Ritmo 00004 * 00005 * Created by Chris Reed on Wed Feb 26 2003. 00006 * Copyright (c) 2003 Chris Reed. All rights reserved. 00007 * 00008 */ 00009 00010 #if !defined(_TTransparentEditText_h_) 00011 #define _TTransparentEditText_h_ 00012 00013 #include "TViewNoCompositingCompatible.h" 00014 #include "TUnicodeTextStorage.h" 00015 00016 enum { 00019 kTransparentEditTextCFStringTag = kControlEditTextCFStringTag, 00020 00023 kTransparentEditTextFontStyleTag = kControlFontStyleTag, 00024 00028 kTransparentEditTextKeyFilterTag = kControlEditTextKeyFilterTag, 00029 00031 kTransparentEditTextSelectionTag = kControlEditTextSelectionTag, 00032 00035 kTransparentEditTextLockedTag = kControlEditTextLockedTag, 00036 00045 kTransparentEditTextFocusCGImageRefTag = FOUR_CHAR_CODE('Fimg'), 00046 00054 kTransparentEditTextFocusImageURLTag = FOUR_CHAR_CODE('Furl'), 00055 00058 kTransparentEditTextNextKeyboardFocusControlIDTag = FOUR_CHAR_CODE('NFID'), 00059 00062 kTransparentEditTextNextKeyboardFocusControlRefTag = FOUR_CHAR_CODE('NFCR'), 00063 00065 kTransparentEditTextNextKeyboardFocusPartTag = FOUR_CHAR_CODE('NFPC'), 00066 00068 kTransparentEditTextBackgroundImageTag = FOUR_CHAR_CODE('BKIM'), 00069 00071 kTransparentEditTextFontATSUStyleTag = FOUR_CHAR_CODE('ATSU') 00072 00073 }; 00074 00083 class TTransparentEditText : public TViewNoCompositingCompatible 00084 { 00085 friend class TViewNoCompositingCompatible; 00086 public: 00087 static CFStringRef GetControlName() { return CFSTR("edittext"); } 00088 protected: 00089 // Contstructor/Destructor 00090 TTransparentEditText(HIViewRef inControl); 00091 virtual ~TTransparentEditText(); 00092 00093 virtual ControlKind GetKind(); 00094 00095 virtual bool UseNonblockingTracking() { return true; } 00096 00098 00099 virtual OSStatus Initialize(TCarbonEvent& inEvent); 00100 virtual void TitleChanged(); 00101 virtual void ActiveStateChanged(); 00102 virtual OSStatus SetFocusPart(ControlPartCode inDesiredFocus, Boolean inFocusEverything, ControlPartCode* outActualFocus); 00103 virtual OSStatus BoundsChanged(UInt32 inOptions, const HIRect& inOriginalBounds, const HIRect& inCurrentBounds, RgnHandle inInvalRgn); 00104 virtual ControlPartCode HitTest(const HIPoint& inWhere); 00105 virtual OSStatus StillTracking(TCarbonEvent& inEvent, HIPoint& from); 00106 virtual OSStatus StartTracking(TCarbonEvent& inEvent, HIPoint& from); 00107 virtual void DrawStaticBackground(RgnHandle inLimitRgn, CGContextRef inContext, bool inCompositing ); 00108 virtual void CompatibleDraw(RgnHandle inLimitRgn, CGContextRef inContext, bool inCompositing); 00109 virtual OSStatus GetRegion(ControlPartCode inPart, RgnHandle outRgn ); 00110 virtual UInt32 GetBehaviors() { return TViewNoCompositingCompatible::GetBehaviors() | kControlSupportsEmbedding | kControlSupportsFocus | kControlGetsFocusOnClick; } 00111 virtual OSStatus SetData(OSType inTag, ControlPartCode inPart, Size inSize, const void* inPtr); 00112 virtual OSStatus GetData(OSType inTag, ControlPartCode inPart, Size inSize, Size* outSize, void* inPtr); 00113 virtual OSStatus TextInput(TCarbonEvent& inEvent); 00115 00117 virtual void ProcessTextInput(UniChar* text, uint32_t count, uint32_t modifiers); 00118 00119 private: 00120 ATSUStyle mTextStyle; 00121 ATSUTextLayout mTextLayout; 00122 TUnicodeTextStorage mTextStorage; 00123 float mTextInset; 00124 bool mIsActive; 00125 bool mIsFocused; 00126 bool mDrawFrame; 00127 uint32_t mSelectionStart; 00128 uint32_t mSelectionEnd; 00129 bool mSelectionIsLeading; 00130 CFRunLoopTimerRef mCaretUpdateTimer; 00131 bool mCaretIsVisible; 00132 uint32_t mSelectionAnchor; 00133 EventTime mLastClickTime; 00134 HIPoint mLastClickPoint; 00135 int mClickCount; 00136 CGImageRef mFocusImage; 00137 CGImageRef mBackImage; 00138 bool mIsLocked; 00139 ControlKeyFilterProcPtr mKeyFilter; 00140 ControlRef mNextFocusControl; 00141 ControlPartCode mNextFocusPart; 00142 00143 void UpdateTextLayout(); 00144 void GetLineHeight(uint32_t lineStartOffset, float* outAscent, float* outDescent); 00145 float GetBaselineForLine(uint32_t lineStartOffset); 00146 void FindWordAtOffset(uint32_t offset, uint32_t* wordStart, uint32_t* wordEnd); 00147 00148 void ForceRedraw(); 00149 00150 void InstallCaretUpdateTimer(); 00151 void RemoveCaretUpdateTimer(); 00152 00153 void UpdateCaret(); 00154 00155 static void CaretUpdateTimerCallback(CFRunLoopTimerRef timer, void *info); 00156 }; 00157 00158 #endif //_TTransparentEditText_h_





Generated on Sun May 23 19:32:00 2004 for AUGUI Framework by doxygen1.3.7

hosted on SourceForge.net Logo