⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 private.h

📁 Wxpython Implemented on Windows CE, Source code
💻 H
📖 第 1 页 / 共 3 页
字号:
        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 &region );
    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 + -