X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/757302fda3b02d52bbc499fefe9c66c19af618e9..2f0b521ea64bf15d1ed0978f062aef10c2342c81:/src/mac/carbon/dc.cpp diff --git a/src/mac/carbon/dc.cpp b/src/mac/carbon/dc.cpp index 6f8ecf23df..9bc9f204b5 100644 --- a/src/mac/carbon/dc.cpp +++ b/src/mac/carbon/dc.cpp @@ -21,10 +21,10 @@ #include "wx/dcmemory.h" #include "wx/dcprint.h" #include "wx/region.h" + #include "wx/image.h" #endif #include "wx/mac/uma.h" -#include "wx/image.h" #ifdef __MSL__ #if __MSL__ >= 0x6000 @@ -55,9 +55,6 @@ const double RAD2DEG = 180.0 / M_PI; const short kEmulatedMode = -1 ; const short kUnsupportedMode = -2 ; -extern TECObjectRef s_TECNativeCToUnicode ; - - wxMacPortSetter::wxMacPortSetter( const wxDC* dc ) : m_ph( (GrafPtr) dc->m_macPort ) { @@ -154,13 +151,6 @@ wxMacWindowStateSaver::~wxMacWindowStateSaver() SetThemeDrawingState( m_themeDrawingState , true ) ; } -//----------------------------------------------------------------------------- -// Local functions -//----------------------------------------------------------------------------- -static inline double dmin(double a, double b) { return a < b ? a : b; } -static inline double dmax(double a, double b) { return a > b ? a : b; } -static inline double DegToRad(double deg) { return (deg * M_PI) / 180.0; } - //----------------------------------------------------------------------------- // wxDC //----------------------------------------------------------------------------- @@ -1487,7 +1477,7 @@ void wxDC::DoDrawRotatedText(const wxString& str, wxCoord x, wxCoord y, wxMacUniCharBuffer unibuf( str ) ; UniCharCount chars = unibuf.GetChars() ; - + status = ::ATSUCreateTextLayoutWithTextPtr( unibuf.GetBuffer() , 0 , chars , chars , 1 , &chars , (ATSUStyle*) &m_macATSUIStyle , &atsuLayout ) ; @@ -1504,12 +1494,12 @@ void wxDC::DoDrawRotatedText(const wxString& str, wxCoord x, wxCoord y, ATSUTextMeasurement ascent, descent ; ATSLineLayoutOptions layoutOptions = kATSLineNoLayoutOptions ; - + if (m_font.GetNoAntiAliasing()) { layoutOptions |= kATSLineNoAntiAliasing ; } - + Fixed atsuAngle = IntToFixed( iAngle ) ; ATSUAttributeTag atsuTags[] = @@ -1517,28 +1507,28 @@ void wxDC::DoDrawRotatedText(const wxString& str, wxCoord x, wxCoord y, kATSULineLayoutOptionsTag , kATSULineRotationTag , } ; - + ByteCount atsuSizes[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] = { sizeof( ATSLineLayoutOptions ) , sizeof( Fixed ) , } ; - + ATSUAttributeValuePtr atsuValues[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] = { &layoutOptions , &atsuAngle , } ; - + status = ::ATSUSetLayoutControls(atsuLayout , sizeof(atsuTags)/sizeof(ATSUAttributeTag) - ( abs(iAngle) > 0.001 ? 0 : 1), atsuTags, atsuSizes, atsuValues ) ; status = ::ATSUMeasureText( atsuLayout, kATSUFromTextBeginning, kATSUToTextEnd, &textBefore , &textAfter, &ascent , &descent ); wxASSERT_MSG( status == noErr , wxT("couldn't measure the rotated text") ); - + if ( m_backgroundMode == wxSOLID ) - { + { // background painting must be done by hand, cannot be done by ATSUI wxCoord x2 , y2 ; PolyHandle polygon = OpenPoly(); @@ -1613,10 +1603,10 @@ void wxDC::DoGetTextExtent( const wxString &str, wxCoord *width, wxCoord *height OSStatus status = noErr ; ATSUTextLayout atsuLayout ; - + wxMacUniCharBuffer unibuf( str ) ; UniCharCount chars = unibuf.GetChars() ; - + status = ::ATSUCreateTextLayoutWithTextPtr( unibuf.GetBuffer() , 0 , chars , chars , 1 , &chars , (ATSUStyle*) &m_macATSUIStyle , &atsuLayout ) ; @@ -1626,30 +1616,30 @@ void wxDC::DoGetTextExtent( const wxString &str, wxCoord *width, wxCoord *height wxASSERT_MSG( status == noErr , wxT("couldn't setup transient font matching") ); ATSLineLayoutOptions layoutOptions = kATSLineNoLayoutOptions ; - + if (m_font.GetNoAntiAliasing()) { layoutOptions |= kATSLineNoAntiAliasing ; } - + ATSUAttributeTag atsuTags[] = { kATSULineLayoutOptionsTag , } ; - + ByteCount atsuSizes[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] = { sizeof( ATSLineLayoutOptions ) , } ; - + ATSUAttributeValuePtr atsuValues[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] = { &layoutOptions , } ; - + status = ::ATSUSetLayoutControls(atsuLayout , sizeof(atsuTags)/sizeof(ATSUAttributeTag) , atsuTags, atsuSizes, atsuValues ) ; - + ATSUTextMeasurement textBefore, textAfter ; ATSUTextMeasurement textAscent, textDescent ; @@ -1691,10 +1681,10 @@ bool wxDC::DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) con OSStatus status = noErr ; ATSUTextLayout atsuLayout ; - + wxMacUniCharBuffer unibuf( text ) ; UniCharCount chars = unibuf.GetChars() ; - + status = ::ATSUCreateTextLayoutWithTextPtr( unibuf.GetBuffer() , 0 , chars , chars , 1 , &chars , (ATSUStyle*) &m_macATSUIStyle , &atsuLayout ) ; @@ -1704,30 +1694,30 @@ bool wxDC::DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) con wxASSERT_MSG( status == noErr , wxT("couldn't setup transient font matching") ); ATSLineLayoutOptions layoutOptions = kATSLineNoLayoutOptions ; - + if (m_font.GetNoAntiAliasing()) { layoutOptions |= kATSLineNoAntiAliasing ; } - + ATSUAttributeTag atsuTags[] = { kATSULineLayoutOptionsTag , } ; - + ByteCount atsuSizes[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] = { sizeof( ATSLineLayoutOptions ) , } ; - + ATSUAttributeValuePtr atsuValues[sizeof(atsuTags)/sizeof(ATSUAttributeTag)] = { &layoutOptions , } ; - + status = ::ATSUSetLayoutControls(atsuLayout , sizeof(atsuTags)/sizeof(ATSUAttributeTag) , atsuTags, atsuSizes, atsuValues ) ; - + for ( int pos = 0; pos < (int)chars ; pos ++ ) { unsigned long actualNumberOfBounds = 0;