00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include <Carbon/Carbon.h>
00011
00012 #if !defined(_TImagePopup_h_)
00013 #define _TImagePopup_h_
00014
00015 #include "TViewNoCompositingCompatible.h"
00016
00019 #define kImagePopupControlValueImageDictTag FOUR_CHAR_CODE('VImg')
00020
00023 #define kImagePopupControlValueImageFilenameDictTag FOUR_CHAR_CODE('VImF')
00024
00027 #define kImagePopupControlUseImagesNotTextTag FOUR_CHAR_CODE('I!Tx')
00028
00039 class TImagePopup : public TViewNoCompositingCompatible
00040 {
00041 AUGUIDefineControl(TImagePopup, TViewNoCompositingCompatible, "popup");
00042 protected:
00043
00044 TImagePopup(HIViewRef inControl);
00045 virtual ~TImagePopup();
00046
00047 virtual ControlKind GetKind();
00048
00049 virtual OSStatus Initialize(TCarbonEvent& inEvent);
00050 virtual ControlPartCode HitTest(const HIPoint& inWhere);
00051 virtual void CompatibleDraw(RgnHandle inLimitRgn, CGContextRef inContext, bool inCompositing);
00052 virtual OSStatus HiliteChanged(ControlPartCode inOriginalPart, ControlPartCode inCurrentPart, RgnHandle inInvalRgn);
00053 virtual OSStatus Track(TCarbonEvent& inEvent, ControlPartCode* outPart);
00054 virtual void TitleChanged();
00055 virtual void ValueChanged();
00056
00057 virtual OSStatus SetData(OSType inTag, ControlPartCode inPart, Size inSize, const void* inPtr);
00058 virtual OSStatus GetData(OSType inTag, ControlPartCode inPart, Size inSize, Size* outSize, void* inPtr);
00059
00060 private:
00061 CGImageRef mBackImage;
00062 MenuRef mPopupMenu;
00063 CFStringRef mSelectedItemText;
00064 ControlFontStyleRec mTextStyle;
00065 float mLeftInset;
00066 float mRightInset;
00067 CFStringRef mFilenameBase;
00068 bool mUseValueImages;
00069 CFMutableDictionaryRef mValueImageCache;
00070
00071 CGImageRef GetImageForValue();
00072 };
00073
00074 #endif _TImagePopup_h_