Carbon Display Resolution APIs

Posted on Updated on

void RecoverResolution()
{
if ( g_hOldDisplayMode != CGDisplayCurrentMode( kCGDirectMainDisplay) )
CGDisplaySwitchToMode(kCGDirectMainDisplay,g_hOldDisplayMode) ;
}

void ChangeResolution()
{
size_t bitsPerPixel = g_wpp->m_Cap.ubCurDispBPP ;
size_t width = g_wpp->m_Cap.unCurDispWidth ;
size_t height = g_wpp->m_Cap.unCurDispHeight ;
CFDictionaryRef bestMode ;
boolean_t exactMatch ;
bestMode = CGDisplayBestModeForParameters
(kCGDirectMainDisplay,bitsPerPixel,width,height,&exactMatch) ;
CGDisplaySwitchToMode(kCGDirectMainDisplay, bestMode) ;
}

bool CheckResolution( UInt16 width , UInt16 height, UInt8 bpp)

{
CFDictionaryRef mode ;
CFNumberRef currWidth, currHeight, currBPP ;
SInt16 cw, ch, cb ;

mode = CGDisplayCurrentMode(kCGDirectMainDisplay ) ;

currWidth = (CFNumberRef) CFDictionaryGetValue( mode , kCGDisplayWidth) ;
currHeight = (CFNumberRef) CFDictionaryGetValue( mode , kCGDisplayHeight) ;
currBPP = (CFNumberRef) CFDictionaryGetValue( mode , kCGDisplayBitsPerPixel) ;

CFNumberGetValue(currWidth,kCFNumberSInt16Type,(void*) &cw) ;
CFNumberGetValue(currHeight,kCFNumberSInt16Type,(void*) &ch) ;
CFNumberGetValue(currBPP,kCFNumberSInt16Type,(void*) &cb) ;

if ( cw > width || ch >= height ) //|| cb != bpp )
return false ;
return true ;
}

廣告

發表迴響

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s