📄 private.h
字号:
DataBrowserItemDataRef itemData ) const;
};
typedef wxMacDataItem* wxMacDataItemPtr;
const wxMacDataItemPtr wxMacDataBrowserRootContainer = NULL;
WX_DEFINE_USER_EXPORTED_ARRAY_PTR(wxMacDataItemPtr, wxArrayMacDataItemPtr, class WXDLLIMPEXP_CORE);
class wxMacDataItemBrowserControl : public wxMacDataBrowserControl
{
public :
wxMacDataItemBrowserControl( wxWindow* peer , const wxPoint& pos, const wxSize& size, long style);
unsigned int GetItemCount(const wxMacDataItem* container, bool recurse , DataBrowserItemState state) const;
void GetItems(const wxMacDataItem* container, bool recurse ,
DataBrowserItemState state, wxArrayMacDataItemPtr &items ) const;
unsigned int GetLineFromItem(const wxMacDataItem *item) const;
wxMacDataItem * GetItemFromLine(unsigned int n) const;
void UpdateItem(const wxMacDataItem *container, const wxMacDataItem *item,
DataBrowserPropertyID property) const;
void UpdateItems(const wxMacDataItem *container, wxArrayMacDataItemPtr &items,
DataBrowserPropertyID property) const;
void AddItem(wxMacDataItem *container, wxMacDataItem *item);
void AddItems(wxMacDataItem *container, wxArrayMacDataItemPtr &items );
void RemoveAllItems(wxMacDataItem *container);
void RemoveItem(wxMacDataItem *container, wxMacDataItem* item);
void RemoveItems(wxMacDataItem *container, wxArrayMacDataItemPtr &items);
void SetSelectedItem( wxMacDataItem* item , DataBrowserSetOption option);
void SetSelectedItems( wxArrayMacDataItemPtr &items , DataBrowserSetOption option);
void SetSelectedAllItems( DataBrowserSetOption option);
Boolean IsItemSelected( const wxMacDataItem* item) const;
void RevealItem( wxMacDataItem* item, DataBrowserRevealOptions options);
void GetSelectionAnchor( wxMacDataItemPtr* first , wxMacDataItemPtr* last) const;
// item aware methods, to be used in subclasses
virtual Boolean CompareItems(const wxMacDataItem* itemOneID,
const wxMacDataItem* itemTwoID,
DataBrowserPropertyID sortProperty);
virtual OSStatus GetSetItemData(wxMacDataItem* itemID,
DataBrowserPropertyID property,
DataBrowserItemDataRef itemData,
Boolean changeValue );
virtual void ItemNotification(
const wxMacDataItem* itemID,
DataBrowserItemNotification message,
DataBrowserItemDataRef itemData);
// as we are getting the same events for human and API selection we have to suppress
// events in the latter case, since this will be used from many subclasses we keep it here
bool IsSelectionSuppressed() const { return m_suppressSelection; }
bool SuppressSelection( bool suppress );
protected:
// ID aware base methods, should be 'final' ie not changed in subclasses
virtual Boolean CompareItems(DataBrowserItemID itemOneID,
DataBrowserItemID itemTwoID,
DataBrowserPropertyID sortProperty);
virtual OSStatus GetSetItemData(DataBrowserItemID itemID,
DataBrowserPropertyID property,
DataBrowserItemDataRef itemData,
Boolean changeValue );
virtual void ItemNotification(
DataBrowserItemID itemID,
DataBrowserItemNotification message,
DataBrowserItemDataRef itemData);
private :
bool m_suppressSelection;
};
class wxMacDataItemBrowserSelectionSuppressor
{
public :
wxMacDataItemBrowserSelectionSuppressor(wxMacDataItemBrowserControl *browser);
~wxMacDataItemBrowserSelectionSuppressor();
private :
bool m_former;
wxMacDataItemBrowserControl* m_browser;
};
// ============================================================================
// platform listbox implementation
// ============================================================================
//
// exposed for reuse in wxCheckListBox
class wxMacListBoxItem : public wxMacDataItem
{
public :
wxMacListBoxItem();
virtual ~wxMacListBoxItem();
void SetLabel( const wxString& str);
const wxString& GetLabel() const;
virtual bool IsLessThan(wxMacDataItemBrowserControl *owner ,
const wxMacDataItem* rhs,
DataBrowserPropertyID sortProperty) const;
virtual OSStatus GetSetData( wxMacDataItemBrowserControl *owner ,
DataBrowserPropertyID property,
DataBrowserItemDataRef itemData,
bool changeValue );
virtual void Notification(wxMacDataItemBrowserControl *owner ,
DataBrowserItemNotification message,
DataBrowserItemDataRef itemData ) const;
void SetOrder( SInt32 order );
SInt32 GetOrder() const;
void SetData( void* data);
void* GetData() const;
private :
wxString m_label;
wxMacCFStringHolder m_cfLabel;
void * m_data;
SInt32 m_order;
};
class wxMacDataBrowserListControl : public wxMacDataItemBrowserControl , public wxMacListControl
{
public:
wxMacDataBrowserListControl( wxListBox *peer, const wxPoint& pos, const wxSize& size, long style );
~wxMacDataBrowserListControl();
// create a list item (can be a subclass of wxMacListBoxItem)
virtual wxMacListBoxItem* CreateItem();
// add and remove
void MacDelete( unsigned int n );
void MacInsert( unsigned int n, const wxString& item );
void MacInsert( unsigned int n, const wxArrayString& items );
int MacAppend( const wxString& item );
void MacClear();
// selecting
void MacDeselectAll();
void MacSetSelection( unsigned int n, bool select );
int MacGetSelection() const;
int MacGetSelections( wxArrayInt& aSelections ) const;
bool MacIsSelected( unsigned int n ) const;
// display
void MacScrollTo( unsigned int n );
// accessing content
void MacSetString( unsigned int n, const wxString& item );
void MacSetClientData( unsigned int n, void * data);
wxString MacGetString( unsigned int n) const;
void * MacGetClientData( unsigned int) const;
unsigned int MacGetCount() const;
// client data
wxClientDataType GetClientDataType() const;
void SetClientDataType(wxClientDataType clientDataItemsType);
// pointing back
wxListBox * GetPeer() const;
private :
bool m_stringSorted;
wxClientDataType m_clientDataItemsType;
};
// ============================================================================
// graphics implementation
// ============================================================================
#if wxMAC_USE_CORE_GRAPHICS
class WXDLLEXPORT wxMacCGPath : public wxGraphicPath
{
DECLARE_NO_COPY_CLASS(wxMacCGPath)
public :
wxMacCGPath();
~wxMacCGPath();
// Starts a new subpath at
void MoveToPoint( wxCoord x1 , wxCoord y1 );
void AddLineToPoint( wxCoord x1 , wxCoord y1 );
void AddQuadCurveToPoint( wxCoord cx1, wxCoord cy1, wxCoord x1, wxCoord y1 );
void AddRectangle( wxCoord x, wxCoord y, wxCoord w, wxCoord h );
void AddCircle( wxCoord x, wxCoord y , wxCoord r );
// closes the current subpath
void CloseSubpath();
CGPathRef GetPath() const;
private :
CGMutablePathRef m_path;
};
class WXDLLEXPORT wxMacCGContext : public wxGraphicContext
{
DECLARE_NO_COPY_CLASS(wxMacCGContext)
public:
wxMacCGContext( CGrafPtr port );
wxMacCGContext( CGContextRef cgcontext );
wxMacCGContext();
~wxMacCGContext();
virtual void Clip( const wxRegion ®ion );
virtual void StrokePath( const wxGraphicPath *p );
virtual void DrawPath( const wxGraphicPath *p , int fillStyle = wxWINDING_RULE );
virtual void FillPath( const wxGraphicPath *p , const wxColor &fillColor , int fillStyle = wxWINDING_RULE );
virtual wxGraphicPath* CreatePath();
virtual void SetPen( const wxPen &pen ) ;
virtual void SetBrush( const wxBrush &brush );
CGContextRef GetNativeContext();
void SetNativeContext( CGContextRef cg );
CGPathDrawingMode GetDrawingMode() const { return m_mode; }
private:
CGContextRef m_cgContext;
CGrafPtr m_qdPort;
CGPathDrawingMode m_mode;
wxPen m_pen;
wxBrush m_brush;
};
#endif // wxMAC_USE_CORE_GRAPHICS
#ifdef __WXMAC_OSX__
CGColorSpaceRef wxMacGetGenericRGBColorSpace(void);
void wxMacMemoryBufferReleaseProc(void *info, const void *data, size_t size);
#endif
class WXDLLEXPORT wxBitmapRefData: public wxGDIRefData
{
DECLARE_NO_COPY_CLASS(wxBitmapRefData)
friend class WXDLLEXPORT wxIcon;
friend class WXDLLEXPORT wxCursor;
public:
wxBitmapRefData(int width , int height , int depth);
wxBitmapRefData();
~wxBitmapRefData();
void Free();
bool Ok() const { return m_ok; }
void SetOk( bool isOk) { m_ok = isOk; }
void SetWidth( int width ) { m_width = width; }
void SetHeight( int height ) { m_height = height; }
void SetDepth( int depth ) { m_depth = depth; }
int GetWidth() const { return m_width; }
int GetHeight() const { return m_height; }
int GetDepth() const { return m_depth; }
void *GetRawAccess() const;
void *BeginRawAccess();
void EndRawAccess();
bool HasAlpha() const { return m_hasAlpha; }
void UseAlpha( bool useAlpha );
public:
#if wxUSE_PALETTE
wxPalette m_bitmapPalette;
#endif // wxUSE_PALETTE
wxMask * m_bitmapMask; // Optional mask
#ifdef __WXMAC_OSX__
CGImageRef CGImageCreate() const;
#endif
// returns true if the bitmap has a size that
// can be natively transferred into a true icon
// if no is returned GetIconRef will still produce
// an icon but it will be generated via a PICT and
// rescaled to 16 x 16
bool HasNativeSize();
// caller should increase ref count if needed longer
// than the bitmap exists
IconRef GetIconRef();
// returns a Pict from the bitmap content
PicHandle GetPictHandle();
GWorldPtr GetHBITMAP(GWorldPtr * mask = NULL ) const;
void UpdateAlphaMask() const;
private :
bool Create(int width , int height , int depth);
void Init();
int m_width;
int m_height;
int m_bytesPerRow;
int m_depth;
bool m_hasAlpha;
wxMemoryBuffer m_memBuf;
int m_rawAccessCount;
bool m_ok;
#ifdef __WXMAC_OSX__
mutable CGImageRef m_cgImageRef;
#endif
IconRef m_iconRef;
PicHandle m_pictHandle;
GWorldPtr m_hBitmap;
GWorldPtr m_hMaskBitmap;
wxMemoryBuffer m_maskMemBuf;
int m_maskBytesPerRow;
};
class WXDLLEXPORT wxIconRefData : public wxGDIRefData
{
public:
wxIconRefData();
wxIconRefData( WXHICON );
virtual ~wxIconRefData() { Free(); }
void Init();
virtual void Free();
void SetWidth( int width ) { m_width = width; }
void SetHeight( int height ) { m_height = height; }
int GetWidth() const { return m_width; }
int GetHeight() const { return m_height; }
WXHICON GetHICON() const { return (WXHICON) m_iconRef; }
private :
IconRef m_iconRef;
int m_width;
int m_height;
};
// toplevel.cpp
ControlRef wxMacFindControlUnderMouse( wxTopLevelWindowMac* toplevelWindow, const Point& location , WindowRef window , ControlPartCode *outPart );
#ifdef WORDS_BIGENDIAN
inline Rect* wxMacGetPictureBounds( PicHandle pict , Rect* rect )
{
*rect = (**pict).picFrame;
return rect;
}
#else
inline Rect* wxMacGetPictureBounds( PicHandle pict , Rect* rect )
{
return QDGetPictureBounds( pict , rect );
}
#endif
#endif // wxUSE_GUI
#define wxMAC_DEFINE_PROC_GETTER( UPP , x ) \
UPP Get##x() \
{ \
static UPP sHandler = NULL; \
if ( sHandler == NULL ) \
sHandler = New##UPP( x ); \
return sHandler; \
}
//---------------------------------------------------------------------------
// wxMac string conversions
//---------------------------------------------------------------------------
void wxMacSetupConverters();
void wxMacCleanupConverters();
void wxMacStringToPascal( const wxString&from , StringPtr to );
wxString wxMacMakeStringFromPascal( ConstStringPtr from );
// filefn.cpp
wxString wxMacFSRefToPath( const FSRef *fsRef , CFStringRef additionalPathComponent = NULL );
OSStatus wxMacPathToFSRef( const wxString&path , FSRef *fsRef );
wxString wxMacHFSUniStrToString( ConstHFSUniStr255Param uniname );
#endif
// _WX_PRIVATE_H_
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -