-#include "wx/dc.h"
-#include "wx/mac/uma.h"
-#include "wx/mac/aga.h"
-
-#if !TARGET_CARBON
-
-#include <extcdef.h>
-#include <PictUtils.h>
-
-pascal SInt32 AGAProgressBarDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param);
-pascal SInt32 AGAPlacardDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param);
-pascal SInt32 AGAStaticTextDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param) ;
-pascal SInt32 AGAListControlDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param) ;
-pascal SInt32 AGAEditTextDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param) ;
-pascal SInt32 AGAStaticGroupBoxTextDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param) ;
-
-#define B 13
-#define W 0
-
-SInt16 kAGARootControlProcID ;
-int gAGABackgroundColor = 0 ;
-
-const RGBColor gAGAColorArray[] = {
- {0xFFFF, 0xFFFF, 0xFFFF}, // W
- {0xEEEE, 0xEEEE, 0xEEEE}, // 1
- {0xDDDD, 0xDDDD, 0xDDDD}, // 2
- {0xCCCC, 0xCCCC, 0xCCCC}, // 3
- {0xBBBB, 0xBBBB, 0xBBBB}, // 4
- {0xAAAA, 0xAAAA, 0xAAAA}, // 5
- {0x9999, 0x9999, 0x9999}, // 6
- {0x8888, 0x8888, 0x8888}, // 7
- {0x7777, 0x7777, 0x7777}, // 8
- {0x6666, 0x6666, 0x6666}, // 9
- {0x5555, 0x5555, 0x5555}, // 10
- {0x4444, 0x4444, 0x4444}, // 11
- {0x2222, 0x2222, 0x2222}, // 12
- {0x0000, 0x0000, 0x0000} // B
-};
-
-char LAGADefaultOutline_mCorners[4][5][5] = {
- // topleft
- {
- { -1, -1, -1, 12, B },
- { -1, -1, B, 2, 2 },
- { -1, B, 2, 2, 5 },
- { 12, 2, 2, 2, 8 },
- { B, 2, 5, 8, -1 }
- },
- // topright
- {
- { B, 12, -1, -1, -1 },
- { 2, 3, B, -1, -1 },
- { 5, 5, 4, B, -1 },
- { 8, 5, 5, 7, 12 },
- { -1, 8, 5, 8, B }
- },
- // bottomleft
- {
- { B, 2, 5, 8, -1 },
- { 12, 3, 5, 5, 8 },
- { -1, B, 4, 5, 5 },
- { -1, -1, B, 7, 8 },
- { -1, -1, -1, 12, B }
- },
- // bottomright
- {
- { -1, 8, 5, 8, B },
- { 8, 5, 7, 8, 12 },
- { 5, 7, 8, B, -1 },
- { 8, 8, B, -1, -1 },
- { B, 12, -1, -1, -1 }
- }
-};
-
-char LAGAPushButton_mCorners[3][4][4][4] = {
- // Enabled
- {
- // topleft
- {
- { -1, -1, 12, B },
- { -1, B, 4, 2 },
- { 12, 4, W, W },
- { B, 2, W, W }
- },
- // topright
- {
- { B, 12, -1, -1 },
- { 2, 4, B, -1 },
- { W, 2, 5, 12 },
- { 2, 5, 8, B }
- },
- // bottomleft
- {
- { B, 2, W, 2 },
- { 12, 4, 2, 5 },
- { -1, B, 4, 8 },
- { -1, -1, 12, B }
- },
- // bottomright
- {
- { 5, 5, 8, B },
- { 5, 8, 8, 12 },
- { 8, 8, B, -1 },
- { B, 12, -1, -1 }
- }
- },
- // Pressed
- {
- // topleft
- {
- { -1, -1, 12, B },
- { -1, B, 10, 8 },
- { 12, 10, 8, 4 },
- { B, 8, 4, 4 }
- },
- // topright
- {
- { B, 12, -1, -1 },
- { 8, 10, B, -1 },
- { 4, 4, 8, 12 },
- { 4, 4, 4, B }
- },
- // bottomleft
- {
- { B, 8, 4, 4 },
- { 12, 10, 4, 4 },
- { -1, B, 10, 4 },
- { -1, -1, 12, B }
- },
- // bottomright
- {
- { 4, 4, 4, B },
- { 4, 4, 10, 12 },
- { 4, 10, B, -1 },
- { B, 12, -1, -1 }
- }
- },
- // Disabled
- {
- // topleft
- {
- { -1, -1, 7, 7 },
- { -1, 7, 4, 2 },
- { 7, 4, 1, 1 },
- { 7, 2, 1, 1 }
- },
- // topright
- {
- { 7, 7, -1, -1 },
- { 2, 4, 7, -1 },
- { 1, 2, 4, 7 },
- { 2, 4, 5, 7 }
- },
- // bottomleft
- {
- { 7, 2, 1, 2 },
- { 7, 4, 2, 4 },
- { -1, 7, 4, 5 },
- { -1, -1, 7, 7 }
- },
- // bottomright
- {
- { 4, 4, 5, 7 },
- { 4, 5, 5, 7 },
- { 5, 5, 7, -1 },
- { 7, 7, -1, -1 }
- }
- }
-};
-
-RGBColor gAGARamp[] =
-{
- /* black */
- { 0 , 0 , 0 } ,
- /* white */
- { 65535 , 65535 , 65535 } ,
- /* 1 */
- { 61166 , 61166 , 61166 } ,
- /* 2 */
- { 56797 , 56797 , 56797 } ,
- /* 3 */
- { 52428 , 52428 , 52428 } ,
- /* 4 */
- { 48059 , 48059 , 48059 } ,
- /* 5 */
- { 43690 , 43690 , 43690 } ,
- /* 6 */
- { 39321 , 39321 , 39321 } ,
- /* 7 */
- { 34952 , 34952 , 34952 } ,
- /* 8 */
- { 30583 , 30583 , 30583 } ,
- /* 9 */
- { 26214 , 26214 , 26214 } ,
- /* 10 */
- { 21845 , 21845 , 21845 } ,
- /* 11 */
- { 17476 , 17476 , 17476 } ,
- /* 12 */
- { 13107 , 13107 , 13107 } ,
- /* A1 */
- { 8738 , 8738 , 8738 } ,
- /* A2 */
- { 4369 , 4369 , 4369 } ,
-
-} ;
-
-RGBColor gAGABlueRamp[] =
-{
- /* black */
- { 0 , 0 , 0 } ,
- /* white */
- { 65535 , 65535 , 65535 } ,
- /* 1 */
- { 61166 , 61166 , 65535 } ,
- /* 2 */
- { 56797 , 56797 , 65535 } ,
- /* 3 */
- { 52428 , 52428 , 65535 } ,
- /* 4 */
- { 48059 , 48059 , 65535 } ,
- /* 5 */
- { 43690 , 43690 , 65535 } ,
- /* 6 */
- { 39321 , 39321 , 65535 } ,
- /* 7 */
- { 34952 , 34952 , 65535 } ,
- /* 8 */
- { 30583 , 30583 , 65535 } ,
- /* 9 */
- { 26214 , 26214 , 65535 } ,
- /* 10 */
- { 21845 , 21845 , 65535 } ,
- /* 11 */
- { 17476 , 17476 , 65535 } ,
- /* 12 */
- { 13107 , 13107 , 65535 } ,
- /* A1 */
- { 8738 , 8738 , 65535 } ,
- /* A2 */
- { 4369 , 4369 , 65535 } ,
-
-} ;
-
-enum eAGARampColor {
- kAGATransparent = -1 ,
- kAGABlack = 0 ,
- kAGAWhite = 1 ,
- kAGA1 = 2 ,
- kAGA2 = 3 ,
- kAGA3 = 4 ,
- kAGA4 = 5 ,
- kAGA5 = 6 ,
- kAGA6 = 7 ,
- kAGA7 = 8 ,
- kAGA8 = 9 ,
- kAGA9 = 10 ,
- kAGA10 = 11 ,
- kAGA11 = 12 ,
- kAGA12 = 13 ,
- kAGAA1 = 14 ,
- kAGAA2 = 15 ,
-} ;
-// defprocs
-
-enum eAGAState {
- kAGAStateEnabled = 0 ,
- kAGAStatePressed = 1 ,
- kAGAStateDisabled = 2 ,
- kAGAStateInactive = 3
-} ;
-
-/*
-typedef struct sControlData
-{
- ControlPartCode m_part ;
- ResType m_tag ;
- Size m_size ;
-} ;
-
-OSErr AGAFindControlData( ControlHandle inControl , ControlPartCode inPart , ResType inTagName , long *outOffset) ;
-OSErr AGAFindControlData( ControlHandle inControl , ControlPartCode inPart , ResType inTagName , long *outOffset)
-{
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**inControl).contrlRfCon ;
- long offset = 0 ;
- long size = GetHandleSize( info->data ) ;
- char* data = *(info->data) ;
- sControlData* current ;
- while( offset + sizeof( sControlData ) <= size )
- {
- current = (sControlData*) (data+offset ) ;
- if ( ( inPart == kControlEntireControl || inPart == current->m_part ) && inTagName == current->m_tag )
- {
- *outOffset = offset ;
- return noErr ;
- }
- }
- return errDataNotSupported ; // nothing found
-}
-
-OSErr AGARemoveControlData( ControlHandle inControl , ControlPartCode inPart , ResType inTagName ) ;
-OSErr AGARemoveControlData( ControlHandle inControl , ControlPartCode inPart , ResType inTagName )
-{
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**inControl).contrlRfCon ;
- long offset = 0 ;
- long size = GetHandleSize( info->data ) ;
- char* data = *(info->data) ;
- sControlData* current ;
- while( offset + sizeof( sControlData ) <= size )
- {
- current = (sControlData*) (data+offset ) ;
- if ( ( inPart == kControlEntireControl || inPart == current->m_part ) && inTagName == current->m_tag )
- {
- long chunkSize = current->m_size + sizeof ( sControlData ) ;
- memcpy( data + offset , data + offset + chunkSize , size - offset - chunkSize ) ;
- SetHandleSize( info->data , size - chunkSize ) ;
- return noErr ;
- }
- }
- return noErr ;
-}
-
-OSErr AGAAddControlData( ControlHandle inControl , ControlPartCode inPart , ResType inTagName , Size inSize, Ptr inData) ;
-OSErr AGAAddControlData( ControlHandle inControl , ControlPartCode inPart , ResType inTagName , Size inSize, Ptr inData)
-{
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**inControl).contrlRfCon ;
- long offset = 0 ;
- long size = GetHandleSize( info->data ) ;
- SetHandleSize( info->data , size + sizeof( sControlData ) + inSize ) ;
- if ( MemError() == noErr )
- {
- char* data = *(info->data) ;
- sControlData* current = (sControlData*)( data + size ) ;
- current->m_tag = inTagName ;
- current->m_part = inPart ;
- current->m_size = inSize ;
- memcpy( data + size + sizeof( sControlData ) , inData , inSize ) ;
- return noErr ;
- }
- return errDataNotSupported ;
-}
-
-
-OSErr AGAGetControlDataSize (ControlHandle inControl,
- ControlPartCode inPart,
- ResType inTagName,
- Size * outMaxSize)
-{
- long offset ;
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**inControl).contrlRfCon ;
- char* data = *(info->data) ;
-
- OSErr err = AGAFindControlData( inControl , inPart , inTagName , &offset ) ;
- if ( !err )
- {
- sControlData* current = (sControlData*) (data+offset ) ;
- *outMaxSize = current->m_size ;
- }
- return err ;
-}
-
-OSErr AGAGetControlData (ControlHandle inControl,
- ControlPartCode inPart,
- ResType inTagName,
- Size inBufferSize,
- Ptr outBuffer,
- Size * outActualSize)
-{
- long offset ;
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**inControl).contrlRfCon ;
- char* data = *(info->data) ;
-
- OSErr err = AGAFindControlData( inControl , inPart , inTagName , &offset ) ;
- if ( !err )
- {
- sControlData* current = (sControlData*) (data+offset ) ;
- *outActualSize = current->m_size ;
- if ( outBuffer )
- {
- if ( inBufferSize <= current->m_size )
- memcpy( outBuffer , data + offset + sizeof( sControlData ) , current->m_size ) ;
- else
- err = errDataNotSupported ;
- }
- }
- return err ;
-}
-
-OSErr AGASetControlData (ControlHandle inControl,
- ControlPartCode inPart,
- ResType inTagName,
- Size inSize,
- Ptr inData)
-{
- long offset ;
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**inControl).contrlRfCon ;
- char* data = *(info->data) ;
-
- OSErr err = AGAFindControlData( inControl , inPart , inTagName , &offset ) ;
- if ( !err )
- {
- sControlData* current = (sControlData*) (data+offset ) ;
- if ( current->m_size == inSize )
- {
- memcpy( data + offset + sizeof( sControlData ) , inData , inSize) ;
- }
- else
- {
- AGARemoveControlData( inControl , inPart , inTagName ) ;
- AGAAddControlData( inControl , inPart , inTagName , inSize , inData ) ;
- }
- }
- else
- {
- AGAAddControlData( inControl , inPart , inTagName , inSize , inData ) ;
- }
- return err ;
-}
-*/
-
-OSErr AGASetControlFontStyle (ControlHandle inControl,
- const ControlFontStyleRec * inStyle)
-{
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**inControl).contrlRfCon ;
- if ( inStyle->flags == 0 )
- {
- // back to defaults
- }
- else
- {
- if ( inStyle->flags & kControlUseFontMask )
- {
- info->fontStyle.font = inStyle->font ;
- }
- if ( inStyle->flags & kControlUseSizeMask )
- {
- info->fontStyle.size = inStyle->size ;
- }
- if ( inStyle->flags & kControlUseFaceMask )
- {
- info->fontStyle.style = inStyle->style ;
- }
- if ( inStyle->flags & kControlUseModeMask )
- {
- info->fontStyle.mode = inStyle->mode ;
- }
- if ( inStyle->flags & kControlUseJustMask )
- {
- info->fontStyle.just = inStyle->just ;
- }
- if ( inStyle->flags & kControlUseForeColorMask )
- {
- info->fontStyle.foreColor = inStyle->foreColor ;
- }
- if ( inStyle->flags & kControlUseBackColorMask )
- {
- info->fontStyle.backColor = inStyle->backColor ;
- }
- }
- return noErr ;
-}
-
-OSErr AGASetControlData (ControlHandle inControl,
- ControlPartCode inPart,
- ResType inTagName,
- Size inSize,
- Ptr inData)
-{
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**inControl).contrlRfCon ;
- ControlDataAccessRec rec ;
-
- rec.tag = inTagName ;
- rec.part = inPart ;
- rec.size = inSize ;
- rec.dataPtr = inData ;
-
- return info->defProc( info->procID , inControl , kControlMsgSetData , (long) &rec ) ;
-}
-
-SInt16 AGAHandleControlKey (ControlHandle inControl,
- SInt16 inKeyCode,
- SInt16 inCharCode,
- SInt16 inModifiers)
-{
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**inControl).contrlRfCon ;
- ControlKeyDownRec rec ;
-
- rec.modifiers = inModifiers ;
- rec.keyCode = inKeyCode ;
- rec.charCode = inCharCode ;
-
- return info->defProc( info->procID , inControl , kControlMsgKeyDown , (long) &rec ) ;
-}
-
-ControlPartCode AGAHandleControlClick (ControlHandle inControl,
- Point inWhere,
- SInt16 inModifiers,
- ControlActionUPP inAction)
-{
- return TrackControl( inControl , inWhere , inAction ) ;
-}
-
-Boolean AGATestForNewControl( ControlHandle inControl )
-{
- if ( (**inControl).contrlRfCon > 0x100 && !( (**inControl).contrlRfCon % 2 ) )
- {
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**inControl).contrlRfCon ;
- return info->magic == kExtCDEFMagic ;
- }
- return FALSE ;
-}
-void AGAIdleControls (WindowPtr inWindow)
-{
- ControlHandle iter = (ControlHandle) ((WindowPeek)inWindow)->controlList ;
- while ( iter )
- {
- if ( AGATestForNewControl( iter ) )
- {
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**iter).contrlRfCon ;
- if ( info->defProc( info->procID , iter , kControlMsgTestNewMsgSupport , 0 ) == kControlSupportsNewMessages )
- {
- if ( info->defProc( info->procID , iter , kControlMsgGetFeatures , 0 ) & kControlWantsIdle )
- {
- info->defProc( info->procID , iter , kControlMsgIdle , 0 ) ;
- }
- }
- }
-
- iter = (**iter).nextControl ;
- }
-}
-
-void AGAUpdateOneControl( ControlHandle control , RgnHandle inRgn )
-{
- DrawOneControl( control ) ;
- ControlHandle iter = (ControlHandle) ((WindowPeek)(**control).contrlOwner)->controlList ;
- while ( iter )
- {
- if ( AGATestForNewControl( iter ) )
- {
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**iter).contrlRfCon ;
- if ( info->containerControl == control )
- {
- AGAUpdateOneControl( iter , inRgn ) ;
- }
- }
-
- iter = (**iter).nextControl ;
- }
-}
-
-void AGAUpdateControls( WindowPtr inWindow , RgnHandle inRgn )
-{
- ControlHandle root ;
- AGAGetRootControl( inWindow , &root ) ;
- AGAUpdateOneControl( root , inRgn ) ;
-
- // and then all others
-
- ControlHandle iter = (ControlHandle) ((WindowPeek)inWindow)->controlList ;
- while ( iter )
- {
- if ( AGATestForNewControl( iter ) )
- {
- }
- else
- {
- DrawOneControl( iter ) ;
- }
-
- iter = (**iter).nextControl ;
- }
-}
-
-OSErr AGAGetRootControl( WindowPtr inWindow , ControlHandle *outControl )
-{
- ControlHandle iter = (ControlHandle) ((WindowPeek)inWindow)->controlList ;
- while ( iter )
- {
- if ( AGATestForNewControl( iter ) )
- {
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**iter).contrlRfCon ;
- if ( info->procID == kAGARootControlProcID )
- {
- *outControl = iter ;
- return noErr ;
- }
- }
-
- iter = (**iter).nextControl ;
- }
- return -1 ;
-}
-
-void AGADeactivateControl( ControlHandle inControl )
-{
- if ( AGATestForNewControl( inControl ) )
- {
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**inControl).contrlRfCon ;
- if ( info->defProc( info->procID , inControl , kControlMsgTestNewMsgSupport , 0 ) == kControlSupportsNewMessages )
- {
- if ( info->defProc( info->procID , inControl , kControlMsgGetFeatures , 0 ) & kControlWantsActivate )
- {
- info->defProc( info->procID , inControl , kControlMsgActivate , 0 ) ;
- }
- }
- }
- else
- {
- ::HiliteControl( inControl , 255 ) ;
- }
-}
-
-void AGAActivateControl( ControlHandle inControl )
-{
- if ( AGATestForNewControl( inControl ) )
- {
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**inControl).contrlRfCon ;
- if ( info->defProc( info->procID , inControl , kControlMsgTestNewMsgSupport , 0 ) == kControlSupportsNewMessages )
- {
- if ( info->defProc( info->procID , inControl , kControlMsgGetFeatures , 0 ) & kControlWantsActivate )
- {
- info->defProc( info->procID , inControl , kControlMsgActivate , 1 ) ;
- }
- }
- }
- else
- {
- ::HiliteControl( inControl , 0 ) ;
- }
-}
-
-OSErr AGASetKeyboardFocus (WindowPtr inWindow,
- ControlHandle inControl,
- ControlFocusPart inPart)
-{
- if ( AGATestForNewControl( inControl ) )
- {
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**inControl).contrlRfCon ;
- if ( info->defProc( info->procID , inControl , kControlMsgTestNewMsgSupport , 0 ) == kControlSupportsNewMessages )
- {
- if ( info->defProc( info->procID , inControl , kControlMsgGetFeatures , 0 ) & kControlSupportsFocus )
- {
- return info->defProc( info->procID , inControl , kControlMsgFocus , inPart ) ;
- }
- }
- }
- return errControlDoesntSupportFocus ;
-}
-
-OSErr AGAGetBestControlRect (ControlHandle inControl,
- Rect * outRect,
- SInt16 * outBaseLineOffset)
-{
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**inControl).contrlRfCon ;
- ControlCalcSizeRec rec ;
- rec.width = (**inControl).contrlRect.right - (**inControl).contrlRect.left ;
- rec.height = (**inControl).contrlRect.bottom - (**inControl).contrlRect.top ;
- rec.baseLine = 0;
-
- OSErr err = info->defProc( info->procID , inControl , kControlMsgCalcBestRect , (long) &rec ) ;
- if ( !err )
- {
- outRect->left = outRect->top = 0 ;
- outRect->right = rec. width ;
- outRect->bottom = rec. height ;
- *outBaseLineOffset = rec. baseLine ;
- }
- return err ;
-}
-
-
-OSErr AGAGetControlData (ControlHandle inControl,
- ControlPartCode inPart,
- ResType inTagName,
- Size inBufferSize,
- Ptr outBuffer,
- Size * outActualSize)
-{
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**inControl).contrlRfCon ;
- ControlDataAccessRec rec ;
-
- rec.tag = inTagName ;
- rec.part = inPart ;
- rec.size = inBufferSize ;
- rec.dataPtr = outBuffer ;
-
- OSErr err = info->defProc( info->procID , inControl , kControlMsgGetData , (long) &rec ) ;
- *outActualSize = rec.size ;
- return err ;
-}
-
-OSErr AGAGetControlDataSize (ControlHandle inControl,
- ControlPartCode inPart,
- ResType inTagName,
- Size * outMaxSize)
-{
- return AGAGetControlData( inControl , inPart , inTagName , 0 , NULL , outMaxSize ) ;
-}
-
-
-void NewExtCDEFInfo( ControlHandle theControl , ControlDefProcPtr defproc , SInt16 procID , long refcon )
-{
- ExtCDEFInfo* info = (ExtCDEFInfo* ) malloc( sizeof( ExtCDEFInfo ) ) ;
- info->defProc = defproc ;
- info->hasFocus = false ;
- info->magic = kExtCDEFMagic ;
- info->contrlRfCon = refcon ;
- info->procID = procID ;
- info->containerControl = NULL ;
- info->children = NewHandle(0) ;
- info->fontStyle.flags = 0 ;
- info->fontStyle.font = 0 ;
- info->fontStyle.size = 12 ;
- info->fontStyle.style = 0 ;
- info->fontStyle.mode = 0 ;
- info->fontStyle.just = 0 ;
- info->fontStyle.foreColor = gAGARamp[ kAGABlack ] ;
- info->fontStyle.backColor = gAGARamp[ kAGA2 ] ;
- (**theControl).contrlRfCon = (long) info ;
- defproc( info->procID, theControl, initCntl, 0) ;
-}
-
-void DisposeExtCDEFInfo( ControlHandle theControl)
-{
- if ( AGATestForNewControl( theControl ) )
- {
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**theControl).contrlRfCon ;
- if ( info )
- {
- DisposeHandle( info->children ) ;
- info->children = NULL ;
- free( (void*) (**theControl).contrlRfCon ) ;
- (**theControl).contrlRfCon = NULL ;
- }
- }
-}
-
-const short kAGAProgressHeight = 14 ;
-
-void AGADrawRectPlacard( const Rect *inRect , eAGAState inState , bool fill = false ) ;
-void AGADrawRectProgress( const Rect *inRect , eAGAState inState , double percentage ) ;
-
-void AGADrawRectPlacard( const Rect *inRect , eAGAState inState , bool fill )
-{
- Rect rect = *inRect ;
- RGBColor pixelColor ;
- if ( inState == kAGAStateInactive )
- {
- RGBForeColor( &gAGARamp[ kAGA10 ] ) ;
- FrameRect( &rect ) ;
- if ( fill )
- {
- InsetRect( &rect , 1 , 1 ) ;
- RGBForeColor( &gAGARamp[ kAGA1 ] ) ;
- PaintRect( &rect ) ;
- }
- return ;
- }
-
- RGBForeColor( &gAGARamp[ kAGABlack ] ) ;
- FrameRect( &rect ) ;
- InsetRect( &rect , 1 , 1 ) ;
-
- if ( inState == kAGAStateEnabled || inState == kAGAStateDisabled )
- RGBForeColor( &gAGARamp[ kAGAWhite ] ) ;
- else
- RGBForeColor( &gAGARamp[ kAGABlack ] ) ;
-
- MoveTo( rect.left , rect.bottom - 1 -1 ) ;
- LineTo( rect.left , rect.top ) ;
- LineTo( rect.right-1-1 , rect.top ) ;
-
- if ( inState == kAGAStateEnabled || inState == kAGAStateDisabled )
- pixelColor = gAGARamp[ kAGA2 ] ;
- else
- pixelColor = gAGARamp[ kAGA8 ] ;
-
- SetCPixel( rect.right-1 , rect.top , &pixelColor ) ;
- SetCPixel( rect.left , rect.bottom-1 , &pixelColor ) ;
-
- if ( inState == kAGAStateEnabled )
- RGBForeColor( &gAGARamp[ kAGA5 ] ) ;
- else if ( inState == kAGAStateDisabled )
- RGBForeColor( &gAGARamp[ kAGA4 ] ) ;
- else
- RGBForeColor( &gAGARamp[ kAGA6 ] ) ;
-
- MoveTo( rect.left + 1 , rect.bottom-1 ) ;
- LineTo( rect.right-1 , rect.bottom-1 ) ;
- LineTo( rect.right-1 , rect.top-1 ) ;
-
- if ( fill )
- {
- InsetRect( &rect , 1 , 1 ) ;
- if ( inState == kAGAStateEnabled || inState == kAGAStateDisabled )
- RGBForeColor( &gAGARamp[ kAGA2 ] ) ;
- else
- RGBForeColor( &gAGARamp[ kAGA8 ] ) ;
- PaintRect( &rect ) ;
- }
-}
-
-void AGADrawRectProgress( const Rect *inRect , eAGAState inState , double percentage )
-{
- Rect rect = *inRect ;
- rect.bottom = rect.top + 14 ;
- RGBColor pixelColor ;
-
- RGBForeColor( &gAGARamp[ kAGA5 ]) ;
- MoveTo( rect.left , rect.bottom - 1 -1 ) ;
- LineTo( rect.left , rect.top ) ;
- LineTo( rect.right-1-1 , rect.top ) ;
-
- RGBForeColor( &gAGARamp[ kAGAWhite ] ) ;
- MoveTo( rect.left + 1 , rect.bottom -1 ) ;
- LineTo( rect.right-1 , rect.bottom -1 ) ;
- LineTo( rect.right-1 , rect.top-1 ) ;
-
- InsetRect( &rect , 1 , 1 ) ;
- RGBForeColor( &gAGARamp[ kAGABlack ] ) ;
-
- Rect barLeft = rect , barRight = rect ;
-
- int position = percentage * ( rect.right - rect.left ) ;
- barLeft.right = barLeft.left + position ;
- barRight.left = barLeft.left + position ;
- FrameRect( &barLeft ) ;
- FrameRect( &barRight ) ;
-
- InsetRect( &barLeft , 1 , 1 ) ;
-
- InsetRect( &barRight , 1 , 1 ) ;
-
- if ( !EmptyRect( &barRight ) )
- {
- RGBForeColor( &gAGARamp[ kAGA10 ] ) ;
- MoveTo( barRight.left , barRight.bottom -1 ) ;
- LineTo( barRight.left , barRight.top ) ;
- barRight.left += 1 ;
- if ( !EmptyRect( &barRight ) )
- {
- RGBForeColor( &gAGARamp[ kAGA7 ] ) ;
- MoveTo( barRight.left , barRight.bottom-1 ) ;
- LineTo( barRight.left , barRight.top ) ;
- LineTo( barRight.right-1-1 , barRight.top ) ;
- RGBForeColor( &gAGARamp[ kAGA2 ] ) ;
- MoveTo( barRight.left + 1 , barRight.bottom -1 ) ;
- LineTo( barRight.right-1 , barRight.bottom -1 ) ;
- LineTo( barRight.right-1 , barRight.top - 1) ;
- pixelColor = gAGARamp[ kAGA4 ] ;
- SetCPixel( barRight.right-1 , barRight.top , &pixelColor ) ;
- InsetRect( &barRight , 1 , 1) ;
- if ( !EmptyRect( &barRight ) )
- {
- RGBForeColor( &gAGARamp[ kAGA4 ] ) ;
- PaintRect( &barRight ) ;
- }
- }
- if ( !EmptyRect( &barLeft ) )
- {
- RGBForeColor( &gAGABlueRamp[ kAGA8 ] ) ;
- MoveTo( barLeft.left , barLeft.bottom -1 ) ;
- LineTo( barLeft.left , barLeft.top ) ;
- LineTo( barLeft.left+1 , barLeft.top ) ;
- RGBForeColor( &gAGABlueRamp[ kAGA12 ] ) ;
- MoveTo( barLeft.left + 2, barLeft.bottom-1 ) ;
- LineTo( barLeft.right-1 , barLeft.bottom-1 ) ;
- LineTo( barLeft.right-1 , barLeft.top -1 ) ;
- RGBForeColor( &gAGABlueRamp[ kAGA10 ] ) ;
- MoveTo( barLeft.left + 2, barLeft.top ) ;
- LineTo( barLeft.right-1 , barLeft.top ) ;
- pixelColor = gAGABlueRamp[ kAGA10] ;
- SetCPixel( barLeft.left + 1, barLeft.bottom-1 , &pixelColor ) ;
- InsetRect( &barLeft , 1 , 1 ) ;
- if ( !EmptyRect( &barLeft ) )
- {
- // do more here
- RGBForeColor( &gAGABlueRamp[ kAGA3 ] ) ;
- PaintRect( &barLeft ) ;
- }
- }
- }
-}
-
-SInt32 AGAGetDataHelper( ControlDataAccessRec *rec , Size size , Ptr data ) ;
-SInt32 AGAGetDataHelper( ControlDataAccessRec *rec , Size size , Ptr data )
-{
- if ( rec->dataPtr == NULL )
- {
- rec->size = size ;
- return noErr ;
- }
- else
- {
- if ( rec->size < size )
- return errDataSizeMismatch ;
-
- rec->size = size ;
- memcpy( rec->dataPtr , data , size ) ;
- return noErr ;
- }
-}
-
-void AGASetFontStyle( ControlFontStyleRec *fontstyle ) ;
-void AGASetFontStyle( ControlFontStyleRec *fontstyle )
-{
- if( fontstyle->font >= 0 )
- {
- ::TextFont( fontstyle->font ) ;
- ::TextSize( fontstyle->size ) ;
- ::TextFace( fontstyle->style ) ;
- }
- else
- {
- switch( fontstyle->font )
- {
- case kControlFontBigSystemFont :
- ::TextFont( systemFont ) ;
- ::TextSize( 12 ) ;
- ::TextFace( 0 ) ;
- break ;
- case kControlFontSmallSystemFont :
- ::TextFont( kFontIDGeneva ) ;
- ::TextSize( 10 ) ;
- ::TextFace( 0 ) ;
- break ;
- case kControlFontSmallBoldSystemFont :
- ::TextFont( kFontIDGeneva ) ;
- ::TextSize( 10 ) ;
- ::TextFace( bold ) ;
- break ;
- }
- }
- ::RGBForeColor( &fontstyle->foreColor ) ;
- ::RGBBackColor( &fontstyle->backColor ) ;
-} ;
-
-pascal SInt32 AGAProgressBarDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param)
-{
- switch( message )
- {
- case drawCntl :
- {
- if (!(**theControl).contrlVis)
- return 0 ;
- PenState oldPenState;
- RGBColor oldForeColor ;
- RGBColor oldBackColor ;
- RGBColor backColor ;
- RGBColor foreColor ;
-
- GetPenState( &oldPenState ) ;
- GetBackColor( &oldBackColor ) ;
- GetForeColor( &oldForeColor ) ;
-
- {
- int theValue = GetControlValue(theControl) ;
- int theMinimum = GetControlMinimum(theControl) ;
- int theMaximum = GetControlMaximum(theControl) ;
-
- AGADrawRectProgress( &(**theControl).contrlRect , kAGAStateEnabled , (( double )( theValue - theMinimum )) / ( theMaximum-theMinimum ) ) ;
- }
-
- RGBForeColor(&oldForeColor);
- RGBBackColor(&oldBackColor);
- SetPenState(&oldPenState);
- }
- break ;
- case calcCntlRgn :
- RectRgn((RgnHandle) param , &(**theControl).contrlRect ) ;
- break ;
- default :
- break ;
- }
-
- return 0 ;
-}
-
-
-pascal SInt32 AGAPlacardDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param)
-{
- switch( message )
- {
- case drawCntl :
- {
- if (!(**theControl).contrlVis)
- return 0 ;
- PenState oldPenState;
- RGBColor oldForeColor ;
- RGBColor oldBackColor ;
- RGBColor backColor ;
- RGBColor foreColor ;
-
- GetPenState( &oldPenState ) ;
- GetBackColor( &oldBackColor ) ;
- GetForeColor( &oldForeColor ) ;
-
- {
- AGADrawRectPlacard( &(**theControl).contrlRect , kAGAStateEnabled , true ) ;
- }
-
- RGBForeColor(&oldForeColor);
- RGBBackColor(&oldBackColor);
- SetPenState(&oldPenState);
- }
- break ;
- default :
- break ;
- }
-
- return 0 ;
-}
-
-pascal SInt32 AGABevelButtonDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param)
-{
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**theControl).contrlRfCon ;
- switch( message )
- {
- case initCntl :
- info->privateData = (long) malloc( sizeof( ControlButtonContentInfo ) ) ;
- memset( (char*) info->privateData , 0 , sizeof( ControlButtonContentInfo ) ) ;
- break ;
- case dispCntl :
- free( (void*) info->privateData ) ;
- break ;
- case kControlMsgSetData :
- {
- ControlDataAccessRec *rec = (ControlDataAccessRec *) param ;
- if ( rec->tag == kControlBevelButtonContentTag )
- {
- memcpy( (char*) info->privateData , rec->dataPtr , rec->size ) ;
- return noErr ;
- }
- return errDataNotSupported ;
- }
- case kControlMsgCalcBestRect :
- {
- ControlCalcSizeRec *rec = (ControlCalcSizeRec *) param ;
- rec->width = 0 ;
- rec->height = 20 ;
- rec->baseLine = 0;
- }
- break ;
- case drawCntl :
- {
- if (!(**theControl).contrlVis)
- return 0 ;
-
- {
- AGAPortHelper help((**theControl).contrlOwner) ;
- AGASetFontStyle( &info->fontStyle ) ;
- Boolean mRadioBehavior = false ;
-
- int mValue = GetControlValue( theControl ) ;
- long theValue = (mRadioBehavior ? mValue : 0);
- Boolean inPushed = (**theControl).contrlHilite ;
- Boolean down = inPushed || (theValue != 0);
- Boolean hasColor = 1;
- int mEnabled = 1 ;
- int triState_Off = 3 ;
- Boolean disabled = (mEnabled == triState_Off);
-
- Rect frame = (**theControl).contrlRect ;
-
- // Draw the black frame;
- ::MoveTo(frame.left + 1, frame.top);
- ::LineTo(frame.right - 2, frame.top);
- ::MoveTo(frame.right - 1, frame.top + 1);
- ::LineTo(frame.right - 1, frame.bottom - 2);
- ::MoveTo(frame.right - 2, frame.bottom - 1);
- ::LineTo(frame.left + 1, frame.bottom - 1);
- ::MoveTo(frame.left, frame.bottom - 2);
- ::LineTo(frame.left, frame.top + 1);
-
- // Draw the inside (w/o the Icon)
- ::InsetRect(&frame, 1, 1);
- if (hasColor)
- {
- AGASetFontStyle( &info->fontStyle ) ;
- if (down)
- ::RGBBackColor(&gAGAColorArray[4]);
- }
- ::EraseRect(&frame);
-
- // Draw the shadows
- if (hasColor)
- {
- ::RGBForeColor(&gAGAColorArray[7]);
- if (down)
- {
- ::MoveTo(frame.left, frame.bottom - 1);
- ::LineTo(frame.left, frame.top);
- ::LineTo(frame.right - 1, frame.top);
- }
- else
- {
- ::MoveTo(frame.right - 1, frame.top);
- ::LineTo(frame.right - 1, frame.bottom - 1);
- ::LineTo(frame.left, frame.bottom - 1);
- ::MoveTo(frame.right - 2, frame.top + 1);
- ::LineTo(frame.right - 2, frame.bottom - 2);
- ::LineTo(frame.left + 1, frame.bottom - 2);
- ::ForeColor(whiteColor);
- ::MoveTo(frame.left, frame.bottom - 2);
- ::LineTo(frame.left, frame.top);
- ::LineTo(frame.right - 2, frame.top);
- }
- }
-
- // Draw the Icon
-
- frame = (**theControl).contrlRect ;
- PictInfo theInfo ;
- PicHandle thePict = ((ControlButtonContentInfo*) info->privateData)->u.picture ;
- if ( thePict )
- {
- GetPictInfo( thePict , &theInfo , 0 , 0 , systemMethod , 0 ) ;
- Rect bitmaprect = { 0 , 0 , theInfo.sourceRect.bottom - theInfo.sourceRect.top ,
- theInfo.sourceRect.right - theInfo.sourceRect.left } ;
- ::OffsetRect( &bitmaprect , (frame.right + frame.left)/2 - bitmaprect.right / 2 , (frame.bottom + frame.top) / 2 - bitmaprect.bottom / 2 ) ;
- if (inPushed)
- ::OffsetRect( &bitmaprect , 1 , 1 ) ;
- ::DrawPicture( thePict , &bitmaprect ) ;
- }
- }
- }
- break ;
- case testCntl :
- {
- Point pt ;
- pt.h = LoWord( param ) ;
- pt.v = HiWord( param ) ;
- if ( PtInRect( pt , &(**theControl).contrlRect ) )
- return kControlButtonPart ;
- else
- return NULL ;
- }
- break ;
- case calcCntlRgn :
- RectRgn((RgnHandle) param , &(**theControl).contrlRect ) ;
- break ;
- case posCntl :
- {
- Point pt ;
- pt.h = LoWord( param ) ;
- pt.v = HiWord( param ) ;
- if ( PtInRect( pt , &(**theControl).contrlRect ) )
- return kControlButtonPart ;
- else
- return NULL ;
- }
- break ;
- default :
- break ;
- }
-
- return 0 ;
-}
-
-pascal SInt32 AGAButtonDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param)
-{
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**theControl).contrlRfCon ;
- switch( message )
- {
- case initCntl :
- (**theControl).contrlData = NULL ;
- break ;
- case kControlMsgSetData :
- {
- ControlDataAccessRec *rec = (ControlDataAccessRec *) param ;
- Boolean isDefault = *((Boolean*)rec->dataPtr ) ;
- (**theControl).contrlData = (Handle) isDefault ;
- return noErr ;
- }
- break ;
- case kControlMsgCalcBestRect :
- {
- ControlCalcSizeRec *rec = (ControlCalcSizeRec *) param ;
- rec->width = 0 ;
- rec->height = 20 ;
- rec->baseLine = 0;
- }
- break ;
- case drawCntl :
- {
- if (!(**theControl).contrlVis)
- return 0 ;
-
- {
- AGAPortHelper help((**theControl).contrlOwner) ;
- AGASetFontStyle( &info->fontStyle ) ;
- Boolean mRadioBehavior = false ;
-
- Rect frame, tempRect;
- int mValue = GetControlValue( theControl ) ;
- long theValue = (mRadioBehavior ? mValue : 0);
- Boolean inPushed = (**theControl).contrlHilite ;
- Boolean down = inPushed || (theValue != 0);
- Boolean hasColor = 1;
- int mEnabled = 1 ;
- int triState_Off = 3 ;
- Boolean disabled = (mEnabled == triState_Off);
-
-// theState.Normalize();
-// CalcLocalFrameRect(frame);
- frame= (**theControl).contrlRect ;
-
- if ( (**theControl).contrlData )
- {
- InsetRect( &frame , -3 , -3 ) ;
- {
- ::MoveTo(frame.left + 3, frame.top);
- ::LineTo(frame.right - 4, frame.top);
- ::LineTo(frame.right - 1, frame.top + 3);
- ::LineTo(frame.right - 1, frame.bottom - 4);
- ::LineTo(frame.right - 4, frame.bottom - 1);
- ::LineTo(frame.left + 3, frame.bottom - 1);
- ::LineTo(frame.left, frame.bottom - 4);
- ::LineTo(frame.left, frame.top + 3);
- ::LineTo(frame.left + 3, frame.top);
-
- if (hasColor)
- {
- const RGBColor *col = gAGAColorArray;
- for (int i = 0; i < 5; i++)
- for (int j = 0; j < 5; j++)
- {
- if (LAGADefaultOutline_mCorners[0][i][j] != -1)
- ::SetCPixel(frame.left + j, frame.top + i, &col[LAGADefaultOutline_mCorners[0][i][j]]);
- if (LAGADefaultOutline_mCorners[1][i][j] != -1)
- ::SetCPixel(frame.right - 5 + j, frame.top + i, &col[LAGADefaultOutline_mCorners[1][i][j]]);
- if (LAGADefaultOutline_mCorners[2][i][j] != -1)
- ::SetCPixel(frame.left + j, frame.bottom - 5 + i, &col[LAGADefaultOutline_mCorners[2][i][j]]);
- if (LAGADefaultOutline_mCorners[3][i][j] != -1)
- ::SetCPixel(frame.right - 5 + j, frame.bottom - 5 + i, &col[LAGADefaultOutline_mCorners[3][i][j]]);
- }
-
- ::RGBForeColor(&gAGAColorArray[2]);
- ::MoveTo(frame.left + 1, frame.top + 5);
- ::LineTo(frame.left + 1, frame.bottom - 6);
- ::MoveTo(frame.left + 5, frame.top + 1);
- ::LineTo(frame.right - 6, frame.top + 1);
-
- ::RGBForeColor(&gAGAColorArray[5]);
- ::MoveTo(frame.left + 4, frame.top + 2);
- ::LineTo(frame.right - 5, frame.top + 2);
- ::LineTo(frame.right - 3, frame.top + 4);
- ::LineTo(frame.right - 3, frame.bottom - 5);
- ::LineTo(frame.right - 5, frame.bottom - 3);
- ::LineTo(frame.left + 4, frame.bottom - 3);
- ::LineTo(frame.left + 2, frame.bottom - 5);
- ::LineTo(frame.left + 2, frame.top + 4);
- ::LineTo(frame.left + 4, frame.top + 2);
-
- ::RGBForeColor(&gAGAColorArray[8]);
- ::MoveTo(frame.right - 2, frame.top + 5);
- ::LineTo(frame.right - 2, frame.bottom - 6);
- ::MoveTo(frame.left + 5, frame.bottom - 2);
- ::LineTo(frame.right - 6, frame.bottom - 2);
- }
- }
- }
-
- AGASetFontStyle( &info->fontStyle ) ;
- frame= (**theControl).contrlRect ;
-
- tempRect = frame;
- ::InsetRect(&tempRect, 1, 1);
- if (hasColor)
- {
- if (down)
- ::RGBBackColor(&gAGAColorArray[4]);
- }
- EraseRect(&tempRect);
-
- // Draw the frame;
- if (disabled)
- {
- if (hasColor)
- ::RGBForeColor(&gAGAColorArray[7]);
- else
- ::PenPat(&qd.gray);
- }
- ::MoveTo(frame.left + 2, frame.top);
- ::LineTo(frame.right - 3, frame.top);
- ::LineTo(frame.right - 1, frame.top + 2);
- ::LineTo(frame.right - 1, frame.bottom - 3);
- ::LineTo(frame.right - 3, frame.bottom - 1);
- ::LineTo(frame.left + 2, frame.bottom - 1);
- ::LineTo(frame.left, frame.bottom - 3);
- ::LineTo(frame.left, frame.top + 2);
- ::LineTo(frame.left + 2, frame.top);
- if (disabled && !hasColor)
- ::PenNormal();
-
- // Draw the four corners around
- if (hasColor)
- {
- short pattern = (disabled ? 2 : (down ? 1 : 0));
- const RGBColor *col = gAGAColorArray;
- for (int i = 0; i < 4; i++)
- for (int j = 0; j < 4; j++)
- {
- if (LAGAPushButton_mCorners[pattern][0][i][j] != -1)
- ::SetCPixel(frame.left + j, frame.top + i, &col[LAGAPushButton_mCorners[pattern][0][i][j]]);
- if (LAGAPushButton_mCorners[pattern][1][i][j] != -1)
- ::SetCPixel(frame.right - 4 + j, frame.top + i, &col[LAGAPushButton_mCorners[pattern][1][i][j]]);
- if (LAGAPushButton_mCorners[pattern][2][i][j] != -1)
- ::SetCPixel(frame.left + j, frame.bottom - 4 + i, &col[LAGAPushButton_mCorners[pattern][2][i][j]]);
- if (LAGAPushButton_mCorners[pattern][3][i][j] != -1)
- ::SetCPixel(frame.right - 4 + j, frame.bottom - 4 + i, &col[LAGAPushButton_mCorners[pattern][3][i][j]]);
- }
-
- if (down)
- ::RGBForeColor(&gAGAColorArray[8]);
- else
- ::RGBForeColor(&gAGAColorArray[2]);
- ::MoveTo(frame.left + 1, frame.top + 4);
- ::LineTo(frame.left + 1, frame.bottom - 5);
- ::MoveTo(frame.left + 4, frame.top + 1);
- ::LineTo(frame.right - 5, frame.top + 1);
-
- if (!down)
- {
- if (disabled)
- ::RGBForeColor(&gAGAColorArray[1]);
- else
- ::ForeColor(whiteColor);
- ::MoveTo(frame.left + 2, frame.bottom - 5);
- ::LineTo(frame.left + 2, frame.top + 2);
- ::LineTo(frame.right - 5, frame.top + 2);
-
- if (disabled)
- ::RGBForeColor(&gAGAColorArray[5]);
- else
- ::RGBForeColor(&gAGAColorArray[8]);
- ::MoveTo(frame.left + 4, frame.bottom - 2);
- ::LineTo(frame.right - 5, frame.bottom - 2);
- ::MoveTo(frame.right - 2, frame.bottom - 5);
- ::LineTo(frame.right - 2, frame.top + 4);
-
- if (disabled)
- ::RGBForeColor(&gAGAColorArray[4]);
- else
- ::RGBForeColor(&gAGAColorArray[5]);
- ::MoveTo(frame.left + 4, frame.bottom - 3);
- ::LineTo(frame.right - 5, frame.bottom - 3);
- ::MoveTo(frame.right - 3, frame.bottom - 5);
- ::LineTo(frame.right - 3, frame.top + 4);
- }
- }
- AGASetFontStyle( &info->fontStyle ) ;
- int x = ( (**theControl).contrlRect.left + (**theControl).contrlRect.right ) / 2 ;
- int y = ( (**theControl).contrlRect.top + (**theControl).contrlRect.bottom ) / 2 ;
- FontInfo fi ;
- ::GetFontInfo( &fi ) ;
-
- y += fi.ascent / 2 ;
- int length = (**theControl).contrlTitle[0] ;
- if ( length )
- {
- int width = TextWidth( &(**theControl).contrlTitle[1] , 0, length ) ;
- x -= width / 2 ;
- ::MoveTo( x , y );
- ::DrawText( &(**theControl).contrlTitle[1] , 0, length);
- }
-
- }
- }
- break ;
- case testCntl :
- {
- Point pt ;
- pt.h = LoWord( param ) ;
- pt.v = HiWord( param ) ;
- if ( PtInRect( pt , &(**theControl).contrlRect ) )
- return kControlButtonPart ;
- else
- return NULL ;
- }
- break ;
- case calcCntlRgn :
- RectRgn((RgnHandle) param , &(**theControl).contrlRect ) ;
- break ;
- case posCntl :
- {
- Point pt ;
- pt.h = LoWord( param ) ;
- pt.v = HiWord( param ) ;
- if ( PtInRect( pt , &(**theControl).contrlRect ) )
- return kControlButtonPart ;
- else
- return NULL ;
- }
- break ;
- default :
- break ;
- }
-
- return 0 ;
-}
-
-const int kAGACheckBoxWidth = 12 ;
-const int kAGACheckBoxHeigth = 12 ;
-
-pascal SInt32 AGACheckBoxDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param)
-{
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**theControl).contrlRfCon ;
- switch( message )
- {
- case drawCntl :
- {
- if (!(**theControl).contrlVis)
- return 0 ;
- PenState oldPenState;
- RGBColor oldForeColor ;
- RGBColor oldBackColor ;
- RGBColor backColor ;
- RGBColor foreColor ;
-
-
- {
- if (!(**theControl).contrlVis)
- return 0 ;
-
- {
- AGAPortHelper help((**theControl).contrlOwner) ;
- Rect frame = (**theControl).contrlRect ;
- Boolean hasColor = true;
- Boolean disabled = (*theControl)->contrlHilite == 255 ;
- int mValue = GetControlValue( theControl ) ;
- Boolean inPushed = (**theControl).contrlHilite ;
- int mEnabled = 1 ;
- int triState_Off = 3 ;
-
- frame.right = frame.left + kAGACheckBoxWidth;
- frame.bottom = frame.top + kAGACheckBoxHeigth;
-
- // Draw the frame of the checkbox
- if (disabled)
- if (hasColor)
- ::RGBForeColor(&gAGAColorArray[7]);
- else
- PenPat(&qd.gray);
-
- ::FrameRect(&frame);
-
- if (!hasColor)
- PenNormal();
-
- ::InsetRect(&frame, 1, 1);
- if (hasColor)
- ::RGBBackColor(inPushed ? &gAGAColorArray[8] : &gAGAColorArray[2]);
- ::EraseRect(&frame);
-
- if (hasColor)
- {
- if (inPushed)
- ::RGBForeColor(&gAGAColorArray[10]);
- else
- ForeColor(whiteColor);
- ::MoveTo(frame.left, frame.bottom - 2);
- ::LineTo(frame.left, frame.top);
- ::LineTo(frame.right - 2, frame.top);
-
- if (inPushed)
- ::RGBForeColor(&gAGAColorArray[6]);
- else
- ::RGBForeColor(mEnabled != triState_Off ? &gAGAColorArray[7] : &gAGAColorArray[5]);
- ::MoveTo(frame.left + 1, frame.bottom - 1);
- ::LineTo(frame.right - 1, frame.bottom - 1);
- ::LineTo(frame.right - 1, frame.top + 1);
- }
-
- if (mValue)
- {
- if (mValue == 1)
- {
- // Checked state
- if (hasColor)
- {
- ::RGBForeColor(inPushed ? &gAGAColorArray[10] : &gAGAColorArray[5]);
- ::MoveTo(frame.left + 3, frame.bottom - 2);
- ::LineTo(frame.right - 2, frame.top + 3);
- ::MoveTo(frame.right - 2, frame.bottom - 2);
- ::LineTo(frame.right - 2, frame.bottom - 2);
-
- if (mEnabled != triState_Off)
- ::RGBForeColor(inPushed ? &gAGAColorArray[11] : &gAGAColorArray[8]);
- ::MoveTo(frame.left + 3, frame.bottom - 3);
- ::LineTo(frame.right - 2, frame.top + 2);
- ::MoveTo(frame.right - 2, frame.bottom - 3);
- ::LineTo(frame.right - 2, frame.bottom - 3);
-
- if (mEnabled != triState_Off)
- ::ForeColor(blackColor);
- else
- ::RGBForeColor(&gAGAColorArray[7]);
- }
- ::MoveTo(frame.left + 2, frame.top + 1);
- ::LineTo(frame.right - 3, frame.bottom - 4);
- ::MoveTo(frame.left + 2, frame.top + 2);
- ::LineTo(frame.right - 3, frame.bottom - 3);
- ::MoveTo(frame.left + 2, frame.bottom - 4);
- ::LineTo(frame.right - 3, frame.top + 1);
- ::MoveTo(frame.left + 2, frame.bottom - 3);
- ::LineTo(frame.right - 3, frame.top + 2);
- }
- else
- {
- // Mixed state
- if (hasColor)
- {
- ::RGBForeColor(inPushed ? &gAGAColorArray[10] : &gAGAColorArray[5]);
- ::MoveTo(frame.left + 3, frame.top + 6);
- ::LineTo(frame.right - 2, frame.top + 6);
- ::LineTo(frame.right - 2, frame.top + 4);
-
- if (mEnabled != triState_Off)
- ::ForeColor(blackColor);
- else
- ::RGBForeColor(&gAGAColorArray[7]);
- }
- ::MoveTo(frame.left + 2, frame.top + 4);
- ::LineTo(frame.right - 3, frame.top + 4);
- ::MoveTo(frame.left + 2, frame.top + 5);
- ::LineTo(frame.right - 3, frame.top + 5);
- }
- }
-
- if (inPushed && !hasColor)
- InvertRect(&frame);
-
- AGASetFontStyle( &info->fontStyle ) ;
- int x = (**theControl).contrlRect.left + kAGACheckBoxWidth + 5 ;
- int y = ( (**theControl).contrlRect.top + (**theControl).contrlRect.bottom ) / 2 ;
- FontInfo fi ;
- ::GetFontInfo( &fi ) ;
-
- y += fi.ascent / 2 ;
- ::MoveTo( x , y );
- int length = (**theControl).contrlTitle[0] ;
- if ( length )
- {
- ::DrawText( &(**theControl).contrlTitle[1] , 0, length);
- }
- }
- }
-
- }
- break ;
- case testCntl :
- {
- Point pt ;
- pt.h = LoWord( param ) ;
- pt.v = HiWord( param ) ;
- if ( PtInRect( pt , &(**theControl).contrlRect ) && ((*theControl)->contrlVis != 0) && ((*theControl)->contrlHilite != 255) )
- return kControlCheckBoxPart ;
- else
- return NULL ;
- }
- break ;
- case posCntl :
- {
- Point pt ;
- pt.h = LoWord( param ) ;
- pt.v = HiWord( param ) ;
- if ( PtInRect( pt , &(**theControl).contrlRect ) )
- {
- if ( (**theControl).contrlValue )
- (**theControl).contrlValue = 0 ;
- else
- (**theControl).contrlValue = 1 ;
-
- return 0 ;
- }
- else
- return 0 ;
- }
- break ;
- case calcThumbRgn :
- case calcCntlRgn :
- if ( !EmptyRect(&(**theControl).contrlRect ) )
- RectRgn((RgnHandle) param , &(**theControl).contrlRect ) ;
- break ;
- case kControlMsgCalcBestRect :
- {
- ControlCalcSizeRec *rec = (ControlCalcSizeRec *) param ;
- rec->width = (**theControl).contrlRect.right - (**theControl).contrlRect.left ;
- rec->height = kAGACheckBoxHeigth ;
- rec->baseLine = 0;
- }
- break ;
- default :
- break ;
- }
-
- return 0 ;
-}
-
-pascal SInt32 AGARadioButtonDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param)
-{
-//TO DO
-/* ExtCDEFInfo* info = (ExtCDEFInfo* ) (**theControl).contrlRfCon ;
- switch( message )
- {
- case drawCntl :
- {
- if (!(**theControl).contrlVis)
- return 0 ;
- PenState oldPenState;
- RGBColor oldForeColor ;
- RGBColor oldBackColor ;
- RGBColor backColor ;
- RGBColor foreColor ;
-
-
- {
- if (!(**theControl).contrlVis)
- return 0 ;
-
- {
- AGAPortHelper help() ;
- Rect frame = (**theControl).contrlRect ;
- Boolean hasColor = true;
- Boolean disabled = (*theControl)->contrlHilite == 255 ;
- int mValue = GetControlValue( theControl ) ;
- Boolean inPushed = (**theControl).contrlHilite ;
- int mEnabled = 1 ;
- int triState_Off = 3 ;
-
- frame.right = frame.left + kAGACheckBoxWidth;
- frame.bottom = frame.top + kAGACheckBoxHeigth;
-
- // Draw the frame of the checkbox
- if (disabled)
- if (hasColor)
- ::RGBForeColor(&gAGAColorArray[7]);
- else
- PenPat(&qd.gray);
-
- ::FrameRect(&frame);
-
- if (!hasColor)
- PenNormal();
-
- ::InsetRect(&frame, 1, 1);
- if (hasColor)
- ::RGBBackColor(inPushed ? &gAGAColorArray[8] : &gAGAColorArray[2]);
- ::EraseRect(&frame);
-
- if (hasColor)
- {
- if (inPushed)
- ::RGBForeColor(&gAGAColorArray[10]);
- else
- ForeColor(whiteColor);
- ::MoveTo(frame.left, frame.bottom - 2);
- ::LineTo(frame.left, frame.top);
- ::LineTo(frame.right - 2, frame.top);
-
- if (inPushed)
- ::RGBForeColor(&gAGAColorArray[6]);
- else
- ::RGBForeColor(mEnabled != triState_Off ? &gAGAColorArray[7] : &gAGAColorArray[5]);
- ::MoveTo(frame.left + 1, frame.bottom - 1);
- ::LineTo(frame.right - 1, frame.bottom - 1);
- ::LineTo(frame.right - 1, frame.top + 1);
- }
-
- if (mValue)
- {
- if (mValue == 1)
- {
- // Checked state
- if (hasColor)
- {
- ::RGBForeColor(inPushed ? &gAGAColorArray[10] : &gAGAColorArray[5]);
- ::MoveTo(frame.left + 3, frame.bottom - 2);
- ::LineTo(frame.right - 2, frame.top + 3);
- ::MoveTo(frame.right - 2, frame.bottom - 2);
- ::LineTo(frame.right - 2, frame.bottom - 2);
-
- if (mEnabled != triState_Off)
- ::RGBForeColor(inPushed ? &gAGAColorArray[11] : &gAGAColorArray[8]);
- ::MoveTo(frame.left + 3, frame.bottom - 3);
- ::LineTo(frame.right - 2, frame.top + 2);
- ::MoveTo(frame.right - 2, frame.bottom - 3);
- ::LineTo(frame.right - 2, frame.bottom - 3);
-
- if (mEnabled != triState_Off)
- ::ForeColor(blackColor);
- else
- ::RGBForeColor(&gAGAColorArray[7]);
- }
- ::MoveTo(frame.left + 2, frame.top + 1);
- ::LineTo(frame.right - 3, frame.bottom - 4);
- ::MoveTo(frame.left + 2, frame.top + 2);
- ::LineTo(frame.right - 3, frame.bottom - 3);
- ::MoveTo(frame.left + 2, frame.bottom - 4);
- ::LineTo(frame.right - 3, frame.top + 1);
- ::MoveTo(frame.left + 2, frame.bottom - 3);
- ::LineTo(frame.right - 3, frame.top + 2);
- }
- else
- {
- // Mixed state
- if (hasColor)
- {
- ::RGBForeColor(inPushed ? &gAGAColorArray[10] : &gAGAColorArray[5]);
- ::MoveTo(frame.left + 3, frame.top + 6);
- ::LineTo(frame.right - 2, frame.top + 6);
- ::LineTo(frame.right - 2, frame.top + 4);
-
- if (mEnabled != triState_Off)
- ::ForeColor(blackColor);
- else
- ::RGBForeColor(&gAGAColorArray[7]);
- }
- ::MoveTo(frame.left + 2, frame.top + 4);
- ::LineTo(frame.right - 3, frame.top + 4);
- ::MoveTo(frame.left + 2, frame.top + 5);
- ::LineTo(frame.right - 3, frame.top + 5);
- }
- }
-
- if (inPushed && !hasColor)
- InvertRect(&frame);
-
- AGASetFontStyle( &info->fontStyle ) ;
- int x = (**theControl).contrlRect.left + kAGACheckBoxWidth + 5 ;
- int y = ( (**theControl).contrlRect.top + (**theControl).contrlRect.bottom ) / 2 ;
- FontInfo fi ;
- ::GetFontInfo( &fi ) ;
-
- y += fi.ascent / 2 ;
- ::MoveTo( x , y );
- int length = (**theControl).contrlTitle[0] ;
- if ( length )
- {
- ::DrawText( &(**theControl).contrlTitle[1] , 0, length);
- }
- }
- }
-
- }
- break ;
- case testCntl :
- {
- Point pt ;
- pt.h = LoWord( param ) ;
- pt.v = HiWord( param ) ;
- if ( PtInRect( pt , &(**theControl).contrlRect ) && ((*theControl)->contrlVis != 0) && ((*theControl)->contrlHilite != 255) )
- return kControlCheckBoxPart ;
- else
- return NULL ;
- }
- break ;
- case posCntl :
- {
- Point pt ;
- pt.h = LoWord( param ) ;
- pt.v = HiWord( param ) ;
- if ( PtInRect( pt , &(**theControl).contrlRect ) )
- {
- if ( (**theControl).contrlValue )
- (**theControl).contrlValue = 0 ;
- else
- (**theControl).contrlValue = 1 ;
-
- return 0 ;
- }
- else
- return 0 ;
- }
- break ;
- case calcThumbRgn :
- case calcCntlRgn :
- if ( !EmptyRect(&(**theControl).contrlRect ) )
- RectRgn((RgnHandle) param , &(**theControl).contrlRect ) ;
- break ;
- case kControlMsgCalcBestRect :
- {
- ControlCalcSizeRec *rec = (ControlCalcSizeRec *) param ;
- rec->width = (**theControl).contrlRect.right - (**theControl).contrlRect.left ;
- rec->height = kAGACheckBoxHeigth ;
- rec->baseLine = 0;
- }
- break ;
- default :
- break ;
- }
- */
- return 0 ;
-}
-
-pascal SInt32 AGAStaticGroupBoxTextDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param)
-{
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**theControl).contrlRfCon ;
-
- switch( message )
- {
- case initCntl :
- break ;
- case dispCntl :
- break ;
- case drawCntl :
- {
- if (!(**theControl).contrlVis)
- return 0 ;
-
- {
- bool disabled = false ;
- bool hasColor = true ;
- AGAPortHelper help((**theControl).contrlOwner) ;
- AGASetFontStyle( &info->fontStyle ) ;
- FontInfo fi ;
- ::GetFontInfo( &fi ) ;
-
- Rect labelRect = (**theControl).contrlRect ;
- Rect theFrame = (**theControl).contrlRect ;
- int width = StringWidth((**theControl).contrlTitle) ;
- theFrame.top += fi.ascent + fi.leading >> 1 ;
- labelRect.bottom = theFrame.top + 8 ;
- labelRect.left += 10 ;
- labelRect.right =labelRect.left + width + 6 ;
-
- theFrame.bottom--;
- theFrame.right--;
-
- if (disabled)
- {
- RGBForeColor( &gAGAColorArray[4] ) ;
- }
- else
- {
- RGBForeColor( &gAGAColorArray[7] ) ;
- }
- FrameRect( &theFrame ) ;
-
- if (disabled)
- ::RGBForeColor(&gAGAColorArray[1]);
- else
- ::ForeColor(whiteColor);
- ::MoveTo(theFrame.left + 1, theFrame.bottom - 2);
- ::LineTo(theFrame.left + 1, theFrame.top + 1);
- ::LineTo(theFrame.right - 2, theFrame.top + 1);
- ::MoveTo(theFrame.left , theFrame.bottom);
- ::LineTo(theFrame.right, theFrame.bottom);
- ::LineTo(theFrame.right, theFrame.top);
-
- AGASetFontStyle( &info->fontStyle ) ;
- ::EraseRect( &labelRect ) ;
- ::MoveTo(labelRect.left + 3, labelRect.top + fi.ascent + (fi.leading >> 1));
- ::DrawString((**theControl).contrlTitle);
- }
- }
- break ;
- case kControlMsgCalcBestRect :
- {
- ControlCalcSizeRec *rec = (ControlCalcSizeRec *) param ;
- rec->width = (**theControl).contrlRect.right - (**theControl).contrlRect.left ;
- rec->height = (**theControl).contrlRect.bottom - (**theControl).contrlRect.top ;
- rec->baseLine = 0;
- }
- break ;
- case kControlMsgSetData :
- break ;
- case calcCntlRgn :
- RectRgn((RgnHandle) param , &(**theControl).contrlRect ) ;
- break ;
- default :
- break ;
- }
-
- return 0 ;
-}
-
-pascal SInt32 AGAStaticTextDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param)
-{
- Handle macText = (**theControl).contrlData ;
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**theControl).contrlRfCon ;
-
- switch( message )
- {
- case initCntl :
- {
- macText = NewHandle(0) ;
- (**theControl).contrlData = (Handle) macText ;
- }
- break ;
- case dispCntl :
- DisposeHandle( macText ) ;
- break ;
- case drawCntl :
- {
- if (!(**theControl).contrlVis)
- return 0 ;
-
- {
- AGAPortHelper help((**theControl).contrlOwner) ;
- AGASetFontStyle( &info->fontStyle ) ;
- int x = (**theControl).contrlRect.left ;
- int y = (**theControl).contrlRect.top ;
- int lineheight ;
- FontInfo fi ;
- ::GetFontInfo( &fi ) ;
-
- y += fi.ascent ;
- lineheight = fi.ascent + fi.descent + fi.leading ;
- int length = GetHandleSize( macText ) ;
- if ( length )
- {
- int laststop = 0 ;
- int i = 0 ;
- HLock( macText ) ;
- RGBColor gray = { 0xDDDD , 0xDDDD, 0xDDDD } ;
- ::RGBBackColor( &gray ) ;
- while( i < length )
- {
- if ( (*macText)[i] == 0x0d )
- {
- ::MoveTo( x , y );
- ::DrawText( *macText , laststop, i-laststop);
- laststop = i+1 ;
- y += lineheight ;
- }
- i++ ;
- }
- ::MoveTo( x , y );
- ::DrawText( *macText , laststop, i-laststop);
- laststop = i+1 ;
- HUnlock( macText ) ;
- }
- }
- }
- break ;
- case kControlMsgCalcBestRect :
- {
- ControlCalcSizeRec *rec = (ControlCalcSizeRec *) param ;
- rec->width = (**theControl).contrlRect.right - (**theControl).contrlRect.left ;
- rec->height = (**theControl).contrlRect.bottom - (**theControl).contrlRect.top ;
- rec->baseLine = 0;
- }
- break ;
- case kControlMsgSetData :
- {
- ControlDataAccessRec *rec = (ControlDataAccessRec *) param ;
- if ( rec->tag == kControlStaticTextTextTag )
- {
- SetHandleSize( macText , rec->size ) ;
- memcpy( *macText , rec->dataPtr , rec->size ) ;
- return noErr ;
- }
- return errDataNotSupported ;
- }
- default :
- break ;
- }
-
- return 0 ;
-}
-
-void AGAMoveControl(ControlHandle inControl , short x , short y )
-{
- if ( AGATestForNewControl( inControl ) )
- {
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**inControl).contrlRfCon ;
- if ( info->magic == kExtCDEFMagic )
- {
- if ( info->procID == kControlEditTextProc)
- {
- int dx ;
- int dy ;
-
- dx= x - (**inControl).contrlRect.left ;
- dy= y - (**inControl).contrlRect.top ;
-
- MoveControl( inControl , x ,y ) ;
- TEHandle macTE ;
-
- macTE = (TEHandle) (**inControl).contrlData ;
- (**macTE).destRect.left += dx ;
- (**macTE).destRect.top += dy ;
- (**macTE).destRect.right += dx ;
- (**macTE).destRect.bottom += dy ;
- (**macTE).viewRect.left += dx ;
- (**macTE).viewRect.top += dy ;
- (**macTE).viewRect.right += dx ;
- (**macTE).viewRect.bottom += dy ;
- return ;
- }
- if ( info->procID == kControlListBoxProc)
- {
- int dx ;
- int dy ;
-
- dx= x - (**inControl).contrlRect.left ;
- dy= y - (**inControl).contrlRect.top ;
-
- MoveControl( inControl , x ,y ) ;
- ListHandle macList ;
-
- macList = (ListHandle) (**inControl).contrlData ;
- (**macList).rView.left += dx ;
- (**macList).rView.top += dy ;
- (**macList).rView.right += dx ;
- (**macList).rView.bottom += dy ;
- return ;
- }
- }
- }
- MoveControl( inControl , x ,y ) ;
-}
-
-void AGASizeControl(ControlHandle inControl , short x , short y )
-{
- if ( AGATestForNewControl( inControl ) )
- {
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**inControl).contrlRfCon ;
- if ( info->magic == kExtCDEFMagic )
- {
- if ( info->procID == kControlEditTextProc)
- {
- int dx ;
- int dy ;
-
- dx= x - ( (**inControl).contrlRect.right - (**inControl).contrlRect.left ) ;
- dy= y - ( (**inControl).contrlRect.bottom - (**inControl).contrlRect.top ) ;
-
- SizeControl( inControl , x ,y ) ;
- TEHandle macTE ;
-
- macTE = (TEHandle) (**inControl).contrlData ;
- (**macTE).destRect.right += dx ;
- (**macTE).destRect.bottom += dy ;
- (**macTE).viewRect.right += dx ;
- (**macTE).viewRect.bottom += dy ;
- return ;
- }
- if ( info->procID == kControlListBoxProc)
- {
- int dx ;
- int dy ;
-
- dx= x - ( (**inControl).contrlRect.right - (**inControl).contrlRect.left ) ;
- dy= y - ( (**inControl).contrlRect.bottom - (**inControl).contrlRect.top ) ;
-
- SizeControl( inControl , x ,y ) ;
- ListHandle macList ;
-
- macList = (ListHandle) (**inControl).contrlData ;
- (**macList).rView.right += dx ;
- (**macList).rView.bottom += dy ;
- return ;
- }
- }
- }
- SizeControl( inControl , x ,y ) ;
-}
-
-pascal SInt32 AGARootControlDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param)
-{
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**theControl).contrlRfCon ;
-
- switch( message )
- {
- case initCntl :
- break ;
- case dispCntl :
- break ;
- case drawCntl :
- break ;
- case kControlMsgCalcBestRect :
- break ;
- case kControlMsgSetData :
- default :
- break ;
- }
-
- return 0 ;
-}
-
-pascal SInt32 AGAEditTextDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param)
-{
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**theControl).contrlRfCon ;
- Size result ;
- TEHandle macTE ;
-
- macTE = (TEHandle) (**theControl).contrlData ;
-
- switch( message )
- {
- case initCntl :
- {
- AGAPortHelper help((**theControl).contrlOwner) ;
- SetPort( (**theControl).contrlOwner ) ;
- ::TextFont( kFontIDGeneva ) ;
- ::TextSize( 10 ) ;
- ::TextFace( 0 ) ;
- RGBBackColor( &gAGARamp[ kAGAWhite ] ) ;
- RGBForeColor( &gAGARamp[ kAGABlack ] ) ;
- Rect bounds = (**theControl).contrlRect ;
- InsetRect( &bounds , 4 , 1 ) ;
- FontInfo fi ;
- ::GetFontInfo( &fi ) ;
-
- bounds.top = bounds.bottom - abs( fi.descent ) - fi.ascent - 3;
- macTE = TENew( &bounds , &bounds) ;
- (**theControl).contrlData = (Handle) macTE ;
- }
- break ;
- case dispCntl :
- TEDispose( macTE ) ;
- break ;
- case drawCntl :
- {
- AGAPortHelper help((**theControl).contrlOwner) ;
- AGASetFontStyle( &info->fontStyle ) ;
- SetPort( (**theControl).contrlOwner ) ;
- RGBBackColor( &gAGARamp[ kAGAWhite ] ) ;
- RGBForeColor( &gAGARamp[ kAGABlack ] ) ;
- EraseRect( &(**theControl).contrlRect ) ;
- FrameRect( &(**theControl).contrlRect ) ;
- TEUpdate( &(**theControl).contrlRect , macTE ) ;
- }
- break ;
- case testCntl :
- {
- Point pt ;
- pt.h = LoWord( param ) ;
- pt.v = HiWord( param ) ;
- if ( PtInRect( pt , &(**theControl).contrlRect ) )
- return kControlButtonPart ;
- else
- return NULL ;
- }
- break ;
- case posCntl :
- {
- Point pt ;
- pt.h = LoWord( param ) ;
- pt.v = HiWord( param ) ;
- if ( PtInRect( pt , &(**theControl).contrlRect ) )
- {
- TEClick( pt , false , macTE ) ;
- }
- }
- break ;
- case kControlMsgGetData :
- {
- ControlDataAccessRec *rec = (ControlDataAccessRec *) param ;
- if ( rec->tag == kControlEditTextTEHandleTag )
- {
- return AGAGetDataHelper( rec , sizeof( TEHandle ) , (char*) &macTE ) ;
- }
- else if ( rec->tag == kControlEditTextTextTag )
- {
- return AGAGetDataHelper( rec , (**macTE).teLength , (char*) *(**macTE).hText ) ;
- }
- else if ( rec->tag == kControlEditTextSelectionTag )
- {
- }
- return errDataNotSupported ;
- }
- break ;
- case kControlMsgSetData :
- {
- ControlDataAccessRec *rec = (ControlDataAccessRec *) param ;
- if ( rec->tag == kControlEditTextTextTag )
- {
- TESetText( rec->dataPtr , rec->size , macTE ) ;
- return noErr ;
- }
- return errDataNotSupported ;
- }
- case kControlMsgCalcBestRect :
- {
- ControlCalcSizeRec *rec = (ControlCalcSizeRec *) param ;
- rec->width = (**theControl).contrlRect.right - (**theControl).contrlRect.left ;
- rec->height = (**theControl).contrlRect.bottom - (**theControl).contrlRect.top ;
- rec->baseLine = 0;
- }
- case kControlMsgFocus :
- {
- if ( param == kControlFocusNoPart )
- {
- info->hasFocus = false ;
- TEDeactivate( macTE ) ;
- return kControlFocusNoPart ;
- }
- else if ( param == kControlFocusNextPart || param == kControlFocusPrevPart )
- {
- if ( info->hasFocus )
- {
- info->hasFocus = false ;
- TEDeactivate( macTE ) ;
- return kControlFocusNoPart ;
- }
- else
- {
- info->hasFocus = true ;
- TEActivate( macTE ) ;
- return kControlEditTextPart ;
- }
- }
- else if ( param == kControlEditTextPart )
- {
- if ( !info->hasFocus )
- {
- info->hasFocus = true ;
- TEActivate( macTE ) ;
- return kControlEditTextPart ;
- }
- }
- }
- break ;
- case kControlMsgIdle :
- {
- TEIdle( macTE ) ;
- }
- break ;
- case kControlMsgKeyDown :
- {
- AGAPortHelper help( (**theControl).contrlOwner ) ;
- AGASetFontStyle( &info->fontStyle ) ;
- RGBBackColor( &gAGARamp[ kAGAWhite ] ) ;
- RGBForeColor( &gAGARamp[ kAGABlack ] ) ;
- ControlKeyDownRec * rec = (ControlKeyDownRec*) param ;
- TEKey( rec->charCode , macTE ) ;
- }
- break ;
- case kControlMsgActivate :
- {
- /*
- if ( param )
- TEActivate( macTE ) ;
- else
- TEDeactivate( macTE ) ;
- */
- }
- break ;
- case calcCntlRgn :
- RectRgn((RgnHandle) param , &(**theControl).contrlRect ) ;
- break ;
- case kControlMsgTestNewMsgSupport :
- return kControlSupportsNewMessages ;
- case kControlMsgGetFeatures :
- return
-// kControlSupportsGhosting |
-// kControlSupportsEmbedding |
- kControlSupportsFocus |
- kControlWantsIdle |
- kControlWantsActivate |
-// kControlHandlesTracking |
- kControlSupportsDataAccess |
-// kControlHasSpecialBackground |
-// kControlGetsFocusOnClick |
- kControlSupportsCalcBestRect |
-// kControlSupportsLiveFeedback |
-// kControlHasRadioBehavior |
- 0 ;
- default :
- break ;
- }
-
- return 0 ;
-}
-
-pascal SInt32 AGAListControlDefProc (SInt16 procID, ControlHandle theControl, ControlDefProcMessage message, SInt32 param)
-{
- Size result ;
- ListHandle macList ;
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**theControl).contrlRfCon ;
-
- macList = (ListHandle) (**theControl).contrlData ;
-
- static inLoop = false ;
- static lastClick = NULL ;
-
- switch( message )
- {
- case initCntl :
- {
- Rect databounds = { 0,0,0,0} ;
- Point cellsize = { 0,0} ;
- Rect listBounds = (**theControl).contrlRect ;
-
- InsetRect( &listBounds , 1 , 1 ) ;
-
- macList = LNew( &listBounds , &databounds , cellsize , 128 ,
- (**theControl).contrlOwner , false /*drawit*/ , false /*hasGrow*/,
- false /* horzScroll */, true /*vertScroll*/ ) ;
- (**theControl).contrlData = (Handle) macList ;
- info->privateData = NULL ;
- }
- break ;
- case dispCntl :
- (**macList).vScroll = NULL ; // will be disposed by the window itself
- (**macList).hScroll = NULL ; // will be disposed by the window itself
- LDispose( macList ) ;
- break ;
- case calcCntlRgn :
- RectRgn((RgnHandle) param , &(**theControl).contrlRect ) ;
- break ;
- case testCntl :
- {
- Point pt ;
- pt.h = LoWord( param ) ;
- pt.v = HiWord( param ) ;
- Rect listRect ;
- Rect allRect = (**theControl).contrlRect ;
- listRect = allRect ;
- if ( !inLoop )
- allRect.right += 16 ;
- if ( PtInRect( pt , &allRect ) )
- {
- if ( !inLoop && StillDown() )
- {
- inLoop = true ;
- LActivate( true , macList ) ;
- Boolean doubleClick = LClick( pt , 0 /* todo modifiers*/ , macList ) ;
- info->privateData = doubleClick ;
- inLoop = false ;
- }
- return kControlListBoxPart ;
- }
- else
- return NULL ;
- }
- break ;
- case drawCntl :
- {
- AGAPortHelper help((**theControl).contrlOwner) ;
- AGASetFontStyle( &info->fontStyle ) ;
- RGBBackColor( &gAGARamp[ kAGAWhite ] ) ;
- EraseRect( &(**theControl).contrlRect ) ;
- FrameRect( &(**theControl).contrlRect ) ;
- RgnHandle controlRgn = NewRgn() ;
- SetRectRgn( controlRgn, (**theControl).contrlRect.left ,
- (**theControl).contrlRect.top,
- (**theControl).contrlRect.right,
- (**theControl).contrlRect.bottom ) ;
- LUpdate( controlRgn, macList ) ;
- }
- break ;
- case posCntl :
- {
- Point pt ;
- pt.h = LoWord( param ) ;
- pt.v = HiWord( param ) ;
- Rect listRect ;
- Rect allRect = (**theControl).contrlRect ;
- listRect = allRect ;
- allRect.right += 16 ;
- if ( PtInRect( pt , &listRect ) )
- {
- if ( !inLoop && StillDown() )
- {
- inLoop = true ;
- LActivate( true , macList ) ;
- Boolean doubleClick = LClick( pt , 0 /* todo modifiers*/ , macList ) ;
- info->privateData = doubleClick ;
- inLoop = false ;
- }
- return kControlListBoxPart ;
- }
- else if ( PtInRect( pt , &allRect ) )
- {
- if ( !inLoop && StillDown() )
- {
- inLoop = true ;
- // LActivate( true , macList ) ;
- Boolean doubleClick = LClick( pt , 0 /* todo modifiers*/ , macList ) ;
- info->privateData = doubleClick ;
- inLoop = false ;
- }
- return kControlPageDownPart ;
- }
- else
- return NULL ;
- }
- break ;
- case kControlMsgGetData :
- {
- ControlDataAccessRec *rec = (ControlDataAccessRec *) param ;
- if ( rec->tag == kControlListBoxListHandleTag )
- {
- return AGAGetDataHelper( rec , sizeof( ListHandle ) , (char*) &macList ) ;
- }
- else if ( rec->tag == kControlListBoxDoubleClickTag )
- {
- Boolean doubleClick = info->privateData ;
- return AGAGetDataHelper( rec , sizeof( Boolean ) , (char*) &doubleClick ) ;
- }
- return errDataNotSupported ;
- }
- break ;
- default :
- break ;
- }
-
- return 0 ;
-}
-
-OSErr AGACreateRootControl (WindowPtr inWindow,
- ControlHandle * outControl)
-{
- ControlHandle theControl = NULL ;
-
- SInt16 extCDEFID = kExtCDEFID << 4 + 0 ;
-
- theControl = NewControl( inWindow , &inWindow->portRect , "\p" , true ,
- 0 , 0 , 1 , extCDEFID , 0 ) ;
- NewExtCDEFInfo( theControl , AGARootControlDefProc , kAGARootControlProcID , 0 ) ;
-
- *outControl = theControl ;
- return noErr ;
-}
-
-OSErr AGAEmbedControl (ControlHandle inControl,
- ControlHandle inContainer)
-{
- if ( AGATestForNewControl( inControl ) )
- {
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**inControl).contrlRfCon ;
- info->containerControl = inContainer ;
- }
- return noErr ;
-}
-
-void AGADrawControl( ControlHandle control )
-{
- DrawOneControl( control ) ;
- ControlHandle iter = (ControlHandle) ((WindowPeek)(**control).contrlOwner)->controlList ;
- while ( iter )
- {
- if ( AGATestForNewControl( iter ) )
- {
- ExtCDEFInfo* info = (ExtCDEFInfo* ) (**iter).contrlRfCon ;
- if ( info->containerControl == control )
- {
- AGADrawControl( iter ) ;
- }
- }
-
- iter = (**iter).nextControl ;
- }
-}
-
-
-ControlHandle AGANewControl(WindowPtr owningWindow,
- const Rect * bounds,
- ConstStr255Param controlTitle,
- Boolean initiallyVisible,
- SInt16 initialValue,
- SInt16 minimumValue,
- SInt16 maximumValue,
- SInt16 procID,
- SInt32 controlReference)
-{
- ControlHandle theControl = NULL ;
- Rect boundsRect = *bounds ;
- SInt16 extCDEFID = kExtCDEFID << 4 + 0 ;
- SInt16 oldProcID = extCDEFID ;
- switch( procID )
- {
- case kControlScrollBarProc :
- case kControlScrollBarLiveProc :
- oldProcID = scrollBarProc ;
- break ;
- case kControlListBoxProc :
- initialValue = 0 ;
- default :
- break ;
- }
- if ( oldProcID == extCDEFID && procID == kControlListBoxProc )
- {
- boundsRect.right -= 16 ;
- }
- theControl = NewControl( owningWindow , &boundsRect , controlTitle , initiallyVisible ,
- initialValue , minimumValue , maximumValue , oldProcID , controlReference ) ;
- if ( oldProcID == extCDEFID )
- {
- ControlDefProcPtr theProcPtr = NULL ;
- SInt16 theVarCode = 0 ;
- switch( procID )
- {
- case kControlPushButtonProc :
- theProcPtr = AGAButtonDefProc ;
- break ;
- case kControlCheckBoxProc :
- theProcPtr = AGACheckBoxDefProc ;
- break ;
- case kControlRadioButtonProc :
- theProcPtr = AGARadioButtonDefProc ;
- break ;
- case kControlProgressBarProc :
- theProcPtr = AGAProgressBarDefProc ;
- break ;
- case kControlPlacardProc :
- theProcPtr = AGAPlacardDefProc ;
- break ;
- case kControlStaticTextProc :
- theProcPtr = AGAStaticTextDefProc ;
- break ;
- case kControlListBoxProc :
- theProcPtr = AGAListControlDefProc ;
- break ;
- case kControlEditTextProc :
- theProcPtr = AGAEditTextDefProc ;
- break ;
- case kControlGroupBoxTextTitleProc :
- theProcPtr = AGAStaticGroupBoxTextDefProc ;
- break ;
- case kControlBevelButtonNormalBevelProc :
- theProcPtr = AGABevelButtonDefProc ;
- break ;
- }
-
- if ( theProcPtr )
- {
- NewExtCDEFInfo( theControl , theProcPtr , procID , controlReference ) ;
- }
- }
- return theControl ;
-}
-
-void AGASetThemeWindowBackground (WindowRef inWindow,
- ThemeBrush inBrush,
- Boolean inUpdate)
-{
- GrafPtr port ;
- GetPort( &port ) ;
- SetPort( inWindow ) ;
- if ( inBrush == kThemeBrushDialogBackgroundActive )
- {
- gAGABackgroundColor = 2 ;
- }
- else
- {
- gAGABackgroundColor = 0 ;
- }
- RGBBackColor( &gAGAColorArray[gAGABackgroundColor] ) ;
- SetPort( port ) ;
-}
-
-void AGAApplyThemeBackground(ThemeBackgroundKind inKind,
- const Rect * bounds,
- ThemeDrawState inState,
- SInt16 inDepth,
- Boolean inColorDev)
-{
-}
-
-#endif // !TARGET_CARBON
-
-AGAPortHelper::AGAPortHelper( GrafPtr newport)
-{
- GetPort( &port ) ;
- SetPort( newport ) ;
-// wxASSERT( newport->portRect.left == 0 && newport->portRect.top == 0 ) ;
- GetPenState( &oldPenState ) ;
- GetBackColor( &oldBackColor ) ;
- GetForeColor( &oldForeColor ) ;
-
- clip = NewRgn() ;
- GetClip( clip );
- font = GetPortTextFont( newport);
- size = GetPortTextSize( newport);
- style = GetPortTextFace( newport);
- mode = GetPortTextMode( newport);
- nport = newport ;
-
-}
-AGAPortHelper::AGAPortHelper()
-{
- clip = NULL ;
-}
-void AGAPortHelper::Setup( GrafPtr newport )
-{
- GetPort( &port ) ;
- SetPort( newport ) ;
-// wxASSERT( newport->portRect.left == 0 && newport->portRect.top == 0 ) ;
- GetPenState( &oldPenState ) ;
- GetBackColor( &oldBackColor ) ;
- GetForeColor( &oldForeColor ) ;
-
- clip = NewRgn() ;
- GetClip( clip );
- font = GetPortTextFont( newport);
- size = GetPortTextSize( newport);
- style = GetPortTextFace( newport);
- mode = GetPortTextMode( newport);
- nport = newport ;
-}
-void AGAPortHelper::Clear()
-{
- if ( clip )
- {
- DisposeRgn( clip ) ;
- clip = NULL ;
- }
-}
-AGAPortHelper::~AGAPortHelper()
-{
- if ( clip )
- {
- SetPort( nport ) ;
- SetClip( clip ) ;
- DisposeRgn( clip ) ;
- RGBForeColor(&oldForeColor);
- RGBBackColor(&oldBackColor);
- SetPenState(&oldPenState);
-
- TextFont( font );
- TextSize( size );
- TextFace( style );
- TextMode( mode );
- SetOrigin( 0 , 0 ) ;
- SetPort( port ) ;
- wxDC::MacInvalidateSetup() ;
- }
-}