/Users/airy/Sources/augui/AUGUIFramework/Controls/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         
00074         kTransparentEditTextFontDrawFrameTag = FOUR_CHAR_CODE('FRAM')
00075         
00076 };
00077 
00086 class TTransparentEditText : public TViewNoCompositingCompatible
00087 {
00088         AUGUIDefineControl(TTransparentEditText, TViewNoCompositingCompatible, "edittext");
00089 protected:
00090         // Constructor/Destructor
00091         TTransparentEditText(HIViewRef inControl);
00092         virtual ~TTransparentEditText();
00093         
00094         virtual ControlKind GetKind();
00095         
00096         virtual bool UseNonblockingTracking() { return true; }
00097         
00099 
00100         virtual OSStatus Initialize(TCarbonEvent& inEvent);
00101         virtual void TitleChanged();
00102         virtual void ActiveStateChanged();
00103         virtual OSStatus SetFocusPart(ControlPartCode inDesiredFocus, Boolean inFocusEverything, ControlPartCode* outActualFocus);
00104         virtual OSStatus BoundsChanged(UInt32 inOptions, const HIRect& inOriginalBounds, const HIRect& inCurrentBounds, RgnHandle inInvalRgn);
00105         virtual ControlPartCode HitTest(const HIPoint&  inWhere);
00106         virtual OSStatus StillTracking(TCarbonEvent& inEvent, HIPoint& from);
00107         virtual OSStatus StartTracking(TCarbonEvent& inEvent, HIPoint& from);
00108     virtual void                DrawStaticBackground(RgnHandle  inLimitRgn, CGContextRef inContext, bool  inCompositing );
00109         virtual void CompatibleDraw(RgnHandle inLimitRgn, CGContextRef inContext, bool inCompositing);
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         virtual void SetDrawFrame(bool draw) { mDrawFrame = draw; };
00120 
00121 private:
00122         ATSUStyle mTextStyle;   
00123         ATSUTextLayout mTextLayout;     
00124         TUnicodeTextStorage mTextStorage;       
00125         float mTextInset;       
00126         bool mIsActive; 
00127         bool mIsFocused;        
00128         bool mDrawFrame;        
00129         uint32_t mSelectionStart;
00130         uint32_t mSelectionEnd;
00131         bool mSelectionIsLeading;
00132         CFRunLoopTimerRef mCaretUpdateTimer;    
00133         bool mCaretIsVisible;   
00134         uint32_t mSelectionAnchor;      
00135         EventTime mLastClickTime;       
00136         HIPoint mLastClickPoint;        
00137         int mClickCount;        
00138         CGImageRef mFocusImage; 
00139         CGImageRef mBackImage;  
00140         bool mIsLocked; 
00141         ControlKeyFilterProcPtr mKeyFilter;     
00142         ControlRef mNextFocusControl;   
00143         ControlPartCode mNextFocusPart; 
00144         
00145         void UpdateTextLayout();
00146         void GetLineHeight(uint32_t lineStartOffset, float* outAscent, float* outDescent);
00147         float GetBaselineForLine(uint32_t lineStartOffset);
00148         void FindWordAtOffset(uint32_t offset, uint32_t* wordStart, uint32_t* wordEnd);
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 Sat Jul 8 13:02:20 2006 for AUGUI Framework by doxygen1.4.6

hosted on SourceForge.net Logo