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

📄 dcmemory.cpp

📁 很牛的GUI源码wxWidgets-2.8.0.zip 可在多种平台下运行.
💻 CPP
字号:
/////////////////////////////////////////////////////////////////////////////// Name:        src/mac/carbon/dcmemory.cpp// Purpose:     wxMemoryDC class// Author:      Stefan Csomor// Modified by:// Created:     01/02/97// RCS-ID:      $Id: dcmemory.cpp,v 1.29 2006/11/04 07:49:10 SC Exp $// Copyright:   (c) Stefan Csomor// Licence:     wxWindows licence/////////////////////////////////////////////////////////////////////////////#include "wx/wxprec.h"#include "wx/dcmemory.h"#include "wx/graphics.h"#include "wx/mac/private.h"//-----------------------------------------------------------------------------// wxMemoryDC//-----------------------------------------------------------------------------IMPLEMENT_DYNAMIC_CLASS(wxMemoryDC,wxPaintDC)void wxMemoryDC::Init(){    m_ok = true;    SetBackground(*wxWHITE_BRUSH);    SetBrush(*wxWHITE_BRUSH);    SetPen(*wxBLACK_PEN);    SetFont(*wxNORMAL_FONT);    m_ok = false;}wxMemoryDC::wxMemoryDC( wxDC *WXUNUSED(dc) ): m_selected(){    Init();}wxMemoryDC::~wxMemoryDC(){    if ( m_selected.Ok() )    {#if wxMAC_USE_CORE_GRAPHICS        m_selected.EndRawAccess() ;        CGContextRef bmCtx = (CGContextRef) m_graphicContext->GetNativeContext() ;        delete m_graphicContext ;        m_graphicContext = NULL ;        CGContextRelease( bmCtx ) ;#else// TODO: UnlockPixels( GetGWorldPixMap(MAC_WXHBITMAP(m_selected.GetHBITMAP())) );#endif    }}void wxMemoryDC::DoSelect( const wxBitmap& bitmap ){    if ( m_selected.Ok() )    {#if wxMAC_USE_CORE_GRAPHICS        m_selected.EndRawAccess() ;        CGContextRef bmCtx = (CGContextRef) m_graphicContext->GetNativeContext() ;        delete m_graphicContext ;        m_graphicContext = NULL ;        CGContextRelease( bmCtx ) ;#else// TODO: UnlockPixels( GetGWorldPixMap(MAC_WXHBITMAP(m_selected.GetHBITMAP())) );#endif    }    m_selected = bitmap;    if (m_selected.Ok())    {#if wxMAC_USE_CORE_GRAPHICS        if ( m_selected.GetDepth() != 1 )            m_selected.UseAlpha() ;        void * data = m_selected.BeginRawAccess() ;        int bitsPerComp = 8 ;        int bytesPerPixel = 4 ;        int w = bitmap.GetWidth() ;        int h = bitmap.GetHeight() ;		m_width = w;		m_height = h;        // TODO: should this be kCGImageAlphaPremultiplied[First,Last] ?        CGImageAlphaInfo a = kCGImageAlphaNoneSkipFirst ;        CGColorSpaceRef genericColorSpace  = wxMacGetGenericRGBColorSpace();        CGContextRef bmCtx = CGBitmapContextCreate( data , w, h, bitsPerComp , bytesPerPixel * w , genericColorSpace, a );        wxASSERT_MSG( bmCtx , wxT("Unable to create bitmap context") ) ;        if ( bmCtx )        {            CGContextSetFillColorSpace( bmCtx, genericColorSpace );            CGContextSetStrokeColorSpace( bmCtx, genericColorSpace );            CGContextTranslateCTM( bmCtx , 0 ,  m_selected.GetHeight() ) ;            CGContextScaleCTM( bmCtx , 1 , -1 ) ;			SetGraphicsContext( wxGraphicsContext::CreateFromNative( bmCtx ) );        }        m_ok = (m_graphicContext != NULL) ;#else        m_macPort = m_selected.GetHBITMAP( &m_macMask ) ;        m_ok = (m_macPort != NULL) ;        if (m_ok)        {            LockPixels( GetGWorldPixMap( (CGrafPtr) m_macPort ) ) ;            SetRectRgn( (RgnHandle) m_macBoundaryClipRgn , 0 , 0 , m_selected.GetWidth() , m_selected.GetHeight() ) ;            CopyRgn( (RgnHandle) m_macBoundaryClipRgn , (RgnHandle) m_macCurrentClipRgn ) ;        }#endif    }    else    {        m_ok = false;    }}void wxMemoryDC::DoGetSize( int *width, int *height ) const{    if (m_selected.Ok())    {        if (width)            (*width) = m_selected.GetWidth();        if (height)            (*height) = m_selected.GetHeight();    }    else    {        if (width)            (*width) = 0;        if (height)            (*height) = 0;    }}

⌨️ 快捷键说明

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