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

📄 icon.cpp

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 CPP
字号:
/////////////////////////////////////////////////////////////////////////////// Name:        src/mac/carbon/icon.cpp// Purpose:     wxIcon class// Author:      Stefan Csomor// Modified by:// Created:     1998-01-01// RCS-ID:      $Id: icon.cpp,v 1.29 2006/10/08 21:56:36 VZ Exp $// Copyright:   (c) Stefan Csomor// Licence:     wxWindows licence/////////////////////////////////////////////////////////////////////////////#include "wx/wxprec.h"#include "wx/icon.h"#ifndef WX_PRECOMP    #include "wx/image.h"#endif#include "wx/mac/private.h"IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap)#define M_ICONDATA ((wxIconRefData *)m_refData)wxIcon::wxIcon(){}wxIcon::wxIcon( const char bits[], int width, int height ){    wxBitmap bmp( bits, width, height ) ;    CopyFromBitmap( bmp ) ;}wxIcon::wxIcon( const char **bits ){    wxBitmap bmp( bits ) ;    CopyFromBitmap( bmp ) ;}wxIcon::wxIcon( char **bits ){    wxBitmap bmp( bits ) ;    CopyFromBitmap( bmp ) ;}wxIcon::wxIcon(    const wxString& icon_file, int flags,    int desiredWidth, int desiredHeight ){    LoadFile( icon_file, (wxBitmapType) flags, desiredWidth, desiredHeight );}wxIcon::~wxIcon(){}WXHICON wxIcon::GetHICON() const{    wxASSERT( Ok() ) ;    return (WXHICON) ((wxIconRefData*)m_refData)->GetHICON() ;}int wxIcon::GetWidth() const{   wxCHECK_MSG( Ok(), -1, wxT("invalid icon") );   return M_ICONDATA->GetWidth();}int wxIcon::GetHeight() const{   wxCHECK_MSG( Ok(), -1, wxT("invalid icon") );   return M_ICONDATA->GetHeight();}int wxIcon::GetDepth() const{    return 32;}void wxIcon::SetDepth( int depth ){}void wxIcon::SetWidth( int width ){}void wxIcon::SetHeight( int height ){}bool wxIcon::IsOk() const{    return m_refData != NULL ;}bool wxIcon::LoadFile(    const wxString& filename, wxBitmapType type,    int desiredWidth, int desiredHeight ){    UnRef();    if ( type == wxBITMAP_TYPE_ICON_RESOURCE )    {        OSType theId = 0 ;        if ( filename == wxT("wxICON_INFORMATION") )        {            theId = kAlertNoteIcon ;        }        else if ( filename == wxT("wxICON_QUESTION") )        {            theId = kAlertCautionIcon ;        }        else if ( filename == wxT("wxICON_WARNING") )        {            theId = kAlertCautionIcon ;        }        else if ( filename == wxT("wxICON_ERROR") )        {            theId = kAlertStopIcon ;        }        else        {#if 0            Str255 theName ;            OSType theType ;            wxMacStringToPascal( name , theName ) ;            Handle resHandle = GetNamedResource( 'cicn' , theName ) ;            if ( resHandle != 0L )            {                GetResInfo( resHandle , &theId , &theType , theName ) ;                ReleaseResource( resHandle ) ;            }#endif        }        if ( theId != 0 )        {            IconRef iconRef = NULL ;            verify_noerr( GetIconRef( kOnSystemDisk, kSystemIconsCreator, theId, &iconRef ) ) ;            if ( iconRef )            {                m_refData = new wxIconRefData( (WXHICON) iconRef ) ;                return true ;            }        }        return false ;    }    else    {        wxBitmapHandler *handler = wxBitmap::FindHandler( type );        if ( handler )        {            wxBitmap bmp ;            if ( handler->LoadFile( &bmp , filename, type, desiredWidth, desiredHeight ))            {                CopyFromBitmap( bmp ) ;                return true ;            }            return false ;        }        else        {#if wxUSE_IMAGE            wxImage loadimage( filename, type );            if (loadimage.Ok())            {                if ( desiredWidth == -1 )                    desiredWidth = loadimage.GetWidth() ;                if ( desiredHeight == -1 )                    desiredHeight = loadimage.GetHeight() ;                if ( desiredWidth != loadimage.GetWidth() || desiredHeight != loadimage.GetHeight() )                    loadimage.Rescale( desiredWidth , desiredHeight ) ;                wxBitmap bmp( loadimage );                CopyFromBitmap( bmp ) ;                return true;            }#endif        }    }    return true ;}void wxIcon::CopyFromBitmap( const wxBitmap& bmp ){    UnRef() ;    // as the bitmap owns that ref, we have to acquire it as well    IconRef iconRef = bmp.GetBitmapData()->GetIconRef() ;    AcquireIconRef( iconRef ) ;    m_refData = new wxIconRefData( (WXHICON) iconRef ) ;    M_ICONDATA->SetWidth( bmp.GetWidth() ) ;    M_ICONDATA->SetHeight( bmp.GetHeight() ) ;}wxIconRefData::wxIconRefData( WXHICON icon ){    m_iconRef = MAC_WXHICON( icon ) ;    // Standard sizes    SetWidth( 32 ) ;    SetHeight( 32 ) ;}void wxIconRefData::Init(){    m_iconRef = NULL ;}void wxIconRefData::Free(){    if ( m_iconRef )    {        ReleaseIconRef( m_iconRef ) ;        m_iconRef = NULL ;    }}IMPLEMENT_DYNAMIC_CLASS(wxICONResourceHandler, wxBitmapHandler)bool  wxICONResourceHandler::LoadFile(    wxBitmap *bitmap, const wxString& name, long flags,    int desiredWidth, int desiredHeight ){    wxIcon icon ;    icon.LoadFile( name , wxBITMAP_TYPE_ICON_RESOURCE , desiredWidth , desiredHeight ) ;    bitmap->CopyFromIcon( icon ) ;    return bitmap->Ok() ;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -