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
friend class TViewNoCompositingCompatible;
00042
public:
00043 static CFStringRef
GetControlName() {
return CFSTR(
"popup"); }
00044
protected:
00045
00046
TImagePopup(HIViewRef inControl);
00047
virtual ~TImagePopup();
00048
00049
virtual ControlKind
GetKind();
00050
00051
virtual OSStatus Initialize(TCarbonEvent& inEvent);
00052
virtual ControlPartCode HitTest(
const HIPoint& inWhere);
00053
virtual void CompatibleDraw(RgnHandle inLimitRgn, CGContextRef inContext,
bool inCompositing);
00054
virtual OSStatus HiliteChanged(ControlPartCode inOriginalPart, ControlPartCode inCurrentPart, RgnHandle inInvalRgn);
00055
virtual OSStatus Track(TCarbonEvent& inEvent, ControlPartCode* outPart);
00056
virtual void TitleChanged();
00057
virtual void ValueChanged();
00058
virtual OSStatus GetRegion(ControlPartCode inPart, RgnHandle outRgn);
00059 virtual UInt32
GetBehaviors() {
return TViewNoCompositingCompatible::GetBehaviors() | kControlSupportsEmbedding | kControlHasSpecialBackground; }
00060
00061
virtual OSStatus SetData(OSType inTag, ControlPartCode inPart, Size inSize,
const void* inPtr);
00062
virtual OSStatus GetData(OSType inTag, ControlPartCode inPart, Size inSize, Size* outSize,
void* inPtr);
00063
00064
private:
00065 CGImageRef mBackImage;
00066 MenuRef mPopupMenu;
00067 CFStringRef mSelectedItemText;
00068 ControlFontStyleRec mTextStyle;
00069
float mLeftInset;
00070
float mRightInset;
00071 CFStringRef mFilenameBase;
00072
bool mUseValueImages;
00073 CFMutableDictionaryRef mValueImageCache;
00074
00075 CGImageRef GetImageForValue();
00076 };
00077
00078
#endif _TImagePopup_h_