Difference between revisions of "Mac OS X Implementing HIView"

From Apache OpenOffice Wiki
Jump to: navigation, search
(Events)
(Handlers)
Line 39: Line 39:
 
=== Handlers ===
 
=== Handlers ===
  
[FIXME]
+
The Handler is OSStatus type, and is used when events are detected.
 +
 
 +
e.g.  : we created HandleHIViewEvent()
 +
 
 +
using GetEventParameter, itself using the parameters described in Apple documentation.
 +
 
 +
Code sample :
 +
<pre>
 +
OSStatus HandleHIViewEvent(EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void* inUserData)
 +
{
 +
    ImplSalYieldMutexAcquire();
 +
    OSStatus status = noErr;
 +
    CGContextRef mrContext;
 +
    HIRect bounds;  // 1
 +
    status = GetEventParameter (inEvent,
 +
                                kEventParamCGContextRef,
 +
                                typeCGContextRef,
 +
                                NULL,
 +
                                sizeof (CGContextRef),
 +
                                NULL,
 +
                                &mrContext);
 +
   
 +
    //require_noerr(status, CantGetGraphicsContext); // 2
 +
    HIViewGetBounds ((HIViewRef) inUserData, &bounds);
 +
    //require_noerr(status, CantGetBoundingRectangle);
 +
    ImplSalYieldMutexRelease();
 +
   
 +
    return status; 
 +
}
 +
</pre>
  
 
=== Controls ===
 
=== Controls ===

Revision as of 16:03, 12 March 2007

Contributors

Eric Bachard[ericb]

Sébastien Plisson [plipli]

Introduction

This page is part of [Native Controls Implementation] and the objective is to use HIView for HIComboboxes or other HI* controls.

Current code implementation

Events

Two sorts of events are needed:

  • for objects (ClasskEventClassHIObject )  :
kEventHIObjectConstruct

kEventHIObjectInitialize

kEventHIObjectDestruct
  • for controls themselves ( Class kEventClassControl ) :
kEventControlDraw 

kEventControlInitialize

kEventControlHitTest

kEventControlGetPartRegion

kEventControlBoundsChanged

Current implementation : see vcl/aqua/aquavclevents.hxx for more informations about the syntax.

Handlers

The Handler is OSStatus type, and is used when events are detected.

e.g.  : we created HandleHIViewEvent()

using GetEventParameter, itself using the parameters described in Apple documentation.

Code sample :

OSStatus HandleHIViewEvent(EventHandlerCallRef inHandlerCallRef, EventRef inEvent, void* inUserData)
{ 
    ImplSalYieldMutexAcquire();
    OSStatus status = noErr;
    CGContextRef mrContext; 
    HIRect bounds;  // 1
    status = GetEventParameter (inEvent, 
                                kEventParamCGContextRef, 
                                typeCGContextRef, 
                                NULL, 
                                sizeof (CGContextRef), 
                                NULL, 
                                &mrContext); 
    
    //require_noerr(status, CantGetGraphicsContext); // 2
    HIViewGetBounds ((HIViewRef) inUserData, &bounds); 
    //require_noerr(status, CantGetBoundingRectangle);
    ImplSalYieldMutexRelease();
    
    return status;  
} 

Controls

[FIXME]

Usefull Links

Reference

HIVIew  : [reference]

or : [same in .pdf format]

Code sample

Personal tools