WebRadioApp  0.1
_CoreRoot.h
Go to the documentation of this file.
1 /*******************************************************************************
2 *
3 * E M B E D D E D W I Z A R D P R O J E C T
4 *
5 * Copyright (c) TARA Systems GmbH
6 * written by Paul Banach and Manfred Schweyer
7 *
8 ********************************************************************************
9 *
10 * This file was generated automatically by Embedded Wizard Studio.
11 *
12 * Please do not make any modifications of this file! The modifications are lost
13 * when the file is generated again by Embedded Wizard Studio!
14 *
15 * The template of this heading text can be found in the file 'head.ewt' in the
16 * directory 'Platforms' of your Embedded Wizard installation directory. If you
17 * wish to adapt this text, please copy the template file 'head.ewt' into your
18 * project directory and edit the copy only. Please avoid any modifications of
19 * the original template file!
20 *
21 * Version : 10.00
22 * Profile : STM32H747
23 * Platform : STM.STM32.RGB565
24 *
25 *******************************************************************************/
26 
27 #ifndef _CoreRoot_H
28 #define _CoreRoot_H
29 
30 #ifdef __cplusplus
31  extern "C"
32  {
33 #endif
34 
35 #include "ewrte.h"
36 #if EW_RTE_VERSION != 0x000A0000
37  #error Wrong version of Embedded Wizard Runtime Environment.
38 #endif
39 
40 #include "ewgfx.h"
41 #if EW_GFX_VERSION != 0x000A0000
42  #error Wrong version of Embedded Wizard Graphics Engine.
43 #endif
44 
45 #include "_CoreGroup.h"
46 #include "_CoreTimer.h"
47 
48 /* Forward declaration of the class Core::CursorEvent */
49 #ifndef _CoreCursorEvent_
50  EW_DECLARE_CLASS( CoreCursorEvent )
51 #define _CoreCursorEvent_
52 #endif
53 
54 /* Forward declaration of the class Core::CursorGrabEvent */
55 #ifndef _CoreCursorGrabEvent_
56  EW_DECLARE_CLASS( CoreCursorGrabEvent )
57 #define _CoreCursorGrabEvent_
58 #endif
59 
60 /* Forward declaration of the class Core::DialogContext */
61 #ifndef _CoreDialogContext_
62  EW_DECLARE_CLASS( CoreDialogContext )
63 #define _CoreDialogContext_
64 #endif
65 
66 /* Forward declaration of the class Core::DragEvent */
67 #ifndef _CoreDragEvent_
68  EW_DECLARE_CLASS( CoreDragEvent )
69 #define _CoreDragEvent_
70 #endif
71 
72 /* Forward declaration of the class Core::Event */
73 #ifndef _CoreEvent_
74  EW_DECLARE_CLASS( CoreEvent )
75 #define _CoreEvent_
76 #endif
77 
78 /* Forward declaration of the class Core::KeyPressHandler */
79 #ifndef _CoreKeyPressHandler_
80  EW_DECLARE_CLASS( CoreKeyPressHandler )
81 #define _CoreKeyPressHandler_
82 #endif
83 
84 /* Forward declaration of the class Core::LayoutContext */
85 #ifndef _CoreLayoutContext_
86  EW_DECLARE_CLASS( CoreLayoutContext )
87 #define _CoreLayoutContext_
88 #endif
89 
90 /* Forward declaration of the class Core::ModalContext */
91 #ifndef _CoreModalContext_
92  EW_DECLARE_CLASS( CoreModalContext )
93 #define _CoreModalContext_
94 #endif
95 
96 /* Forward declaration of the class Core::Root */
97 #ifndef _CoreRoot_
98  EW_DECLARE_CLASS( CoreRoot )
99 #define _CoreRoot_
100 #endif
101 
102 /* Forward declaration of the class Core::TaskQueue */
103 #ifndef _CoreTaskQueue_
104  EW_DECLARE_CLASS( CoreTaskQueue )
105 #define _CoreTaskQueue_
106 #endif
107 
108 /* Forward declaration of the class Core::View */
109 #ifndef _CoreView_
110  EW_DECLARE_CLASS( CoreView )
111 #define _CoreView_
112 #endif
113 
114 /* Forward declaration of the class Effects::Fader */
115 #ifndef _EffectsFader_
117 #define _EffectsFader_
118 #endif
119 
120 /* Forward declaration of the class Graphics::Canvas */
121 #ifndef _GraphicsCanvas_
122  EW_DECLARE_CLASS( GraphicsCanvas )
123 #define _GraphicsCanvas_
124 #endif
125 
126 
127 /* The class Core::Root provides the base functionality for the entire GUI application.
128  Due to its ancestry, the application provides the entire set of functionality
129  implemented in the Core::Group class. It serves as the root container for all
130  GUI components, menus, panels, etc.
131  The application also provides an interface to the underlying target system and
132  to the screen. The coordinate system of the application corresponds therefore
133  to the coordinate system of the screen. Every Embedded Wizard application needs
134  one application object.
135  The interface of the Core::Root class provides several methods and properties
136  to control the application and to coordinate the screen update and the event
137  dispatching. For example:
138  The property @Keyboard allows the management of virtual keyboard components.
139  A keyboard component is an ordinary GUI component you can design and fill e.g.
140  with buttons. Its job is to generate keyboard events in response to other user
141  interaction events, like the touch event. For this purpose the application will
142  provide the virtual keyboard component with all necessary touch events before
143  these are passed to the remaining parts of the GUI. Additionally, the application
144  ensures that the virtual keyboard always remains visible on the top of the screen.
145  - The methods @BeginAnimation() and @EndAnimation() allow you to temporarily
146  deactivate the handling of keyboard and mouse/touch panel events. This is useful
147  during animated screen transitions to avoid interferences with user interactions.
148  - The methods @BeginModal() and @EndModal() are useful to temporarily limit the
149  event delivery to a particular component. In this manner the component will become
150  'modal'. The event delivery limitation ensures that the user will interact with
151  the given component only whereas the remaining GUI parts are not available. Modal
152  GUI components are very common in all GUI applications.
153  - The methods @CaptureCursor(), @DeflectCursor() and @RetargetCursor() affect
154  the flow of touch events. They are used in special cases, when e.g. after receiving
155  a touch event the component needs to redirect the events to other component.
156  - The methods @DriveCursorHitting(), @DriveCursorMovement(), @DriveMultiTouchHitting(),
157  @DriveMultiTouchMovement() and @DriveKeyboardHitting() are for the integration
158  purpose with the underlaying target system. You will never need to invoke these
159  methods from the GUI application. But if you are responsible for the integration
160  of the GUI application with your target system, you may need to feed these methods
161  with events from your touch screen or hardware keyboard.
162  - The properties @Language and @Styles reflect the currently selected language
163  and the active styles. These may determine the visual aspect of the GUI application.
164  The properties cover the underlaying Chora variables 'language' and 'styles'
165  and broadcast Core::LanguageEvent or Core::StylesEvent in case of their modification. */
166 EW_DEFINE_FIELDS( CoreRoot, CoreGroup )
167  EW_VARIABLE( keyLastTarget, XObject )
168  EW_VARIABLE( modalGroups, CoreModalContext )
169  EW_VARIABLE( cursorCaptureView, CoreView )
170  EW_ARRAY ( cursorTargetView, CoreView, [10])
171  EW_VARIABLE( canvas, GraphicsCanvas )
172  EW_PROPERTY( VirtualKeyboard, CoreGroup )
173  EW_OBJECT ( cursorHoldTimer, CoreTimer )
174  EW_VARIABLE( updateLock, XInt32 )
175  EW_VARIABLE( animationLock, XInt32 )
176  EW_VARIABLE( currentEventTimestamp, XUInt32 )
177  EW_ARRAY ( cursorSequelCounter, XInt32, [10])
178  EW_ARRAY ( cursorSequelArea, XRect, [10])
179  EW_ARRAY ( cursorHoldPeriod, XInt32, [10])
180  EW_ARRAY ( cursorHittingPos, XPoint, [10])
181  EW_ARRAY ( cursorHittingTime, XUInt32, [10])
182  EW_ARRAY ( cursorCurrentPos, XPoint, [10])
183  EW_ARRAY ( cursorHitOffset, XPoint, [10])
184  EW_ARRAY ( cursorLastPos, XPoint, [10])
185  EW_ARRAY ( cursorFirstPos, XPoint, [10])
186  EW_VARIABLE( cursorFinger, XInt32 )
187  EW_VARIABLE( fpsTime, XUInt32 )
188  EW_VARIABLE( fpsCounter, XInt32 )
189  EW_ARRAY ( lastRegions, XRect, [3])
190  EW_VARIABLE( noOfLastRegions, XInt32 )
191  EW_ARRAY ( regionsArea, XInt32, [4])
192  EW_ARRAY ( regions, XRect, [4])
193  EW_VARIABLE( noOfRegions, XInt32 )
194  EW_PROPERTY( CursorDragLimit, XInt32 )
195  EW_PROPERTY( CursorSequelDelay, XInt32 )
196  EW_VARIABLE( keyLastCode, XEnum )
197  EW_VARIABLE( keyLastCharCode, XChar )
198  EW_VARIABLE( hasRootFocus, XBool )
199  EW_VARIABLE( keyLastLocked, XBool )
200 EW_END_OF_FIELDS( CoreRoot )
201 
202 /* Virtual Method Table (VMT) for the class : 'Core::Root' */
203 EW_DEFINE_METHODS( CoreRoot, CoreGroup )
204  EW_METHOD( initLayoutContext, void )( CoreRectView _this, XRect aBounds, CoreOutline
205  aOutline )
206  EW_METHOD( GetRoot, CoreRoot )( CoreRoot _this )
207  EW_METHOD( Draw, void )( CoreRoot _this, GraphicsCanvas aCanvas,
209  EW_METHOD( HandleEvent, XObject )( CoreView _this, CoreEvent aEvent )
210  EW_METHOD( CursorHitTest, CoreCursorHit )( CoreGroup _this, XRect aArea, XInt32
211  aFinger, XInt32 aStrikeCount, CoreView aDedicatedView, XSet aRetargetReason )
212  EW_METHOD( ArrangeView, XPoint )( CoreRectView _this, XRect aBounds, XEnum
213  aFormation )
214  EW_METHOD( MoveView, void )( CoreRectView _this, XPoint aOffset, XBool
215  aFastMove )
216  EW_METHOD( GetExtent, XRect )( CoreRectView _this )
217  EW_METHOD( ChangeViewState, void )( CoreRoot _this, XSet aSetState, XSet aClearState )
218  EW_METHOD( OnSetBounds, void )( CoreGroup _this, XRect value )
219  EW_METHOD( drawContent, void )( CoreGroup _this, GraphicsCanvas aCanvas,
221  EW_METHOD( OnSetFocus, void )( CoreRoot _this, CoreView value )
222  EW_METHOD( OnSetBuffered, void )( CoreRoot _this, XBool value )
223  EW_METHOD( OnSetOpacity, void )( CoreRoot _this, XInt32 value )
224  EW_METHOD( IsDialog, XBool )( CoreRoot _this, XBool aRecursive )
225  EW_METHOD( DispatchEvent, XObject )( CoreRoot _this, CoreEvent aEvent )
226  EW_METHOD( BroadcastEvent, XObject )( CoreRoot _this, CoreEvent aEvent, XSet
227  aFilter )
228  EW_METHOD( UpdateLayout, void )( CoreGroup _this, XPoint aSize )
229  EW_METHOD( UpdateViewState, void )( CoreGroup _this, XSet aState )
230  EW_METHOD( InvalidateArea, void )( CoreRoot _this, XRect aArea )
231 EW_END_OF_METHODS( CoreRoot )
232 
233 /* The method GetRoot() delivers the application object, this view belongs to. The
234  application object represents the entire screen of the GUI application. Thus
235  in the views hierarchy, the application object serves as the root view.
236  This method can fail and return null if the view still doesn't belong to any
237  owner group. */
238 CoreRoot CoreRoot_GetRoot( CoreRoot _this );
239 
240 /* The method Draw() is invoked automatically if parts of the view should be redrawn
241  on the screen. This can occur when e.g. the view has been moved or the appearance
242  of the view has changed before.
243  Draw() is invoked automatically by the framework, you never will need to invoke
244  this method directly. However you can request an invocation of this method by
245  calling the method InvalidateArea() of the views @Owner. Usually this is also
246  unnecessary unless you are developing your own view.
247  The passed parameters determine the drawing destination aCanvas and the area
248  to redraw aClip in the coordinate space of the canvas. The parameter aOffset
249  contains the displacement between the origin of the views owner and the origin
250  of the canvas. You will need it to convert views coordinates into these of the
251  canvas.
252  The parameter aOpacity contains the opacity descended from this view's @Owner.
253  It lies in range 0 .. 255. If the view implements its own 'Opacity', 'Color',
254  etc. properties, the Draw() method should calculate the resulting real opacity
255  by mixing the values of these properties with the one passed in aOpacity parameter.
256  The parameter aBlend contains the blending mode descended from this view's @Owner.
257  It determines, whether the view should be drawn with alpha-blending active or
258  not. If aBlend is false, the outputs of the view should overwrite the corresponding
259  pixel in the drawing destination aCanvas. If aBlend is true, the outputs should
260  be mixed with the pixel already stored in aCanvas. For this purpose all Graphics
261  Engine functions provide a parameter to specify the mode for the respective drawing
262  operation. If the view implements its own 'Blend' property, the Draw() method
263  should calculate the resulting real blend mode by using logical AND operation
264  of the value of the property and the one passed in aBlend parameter. */
265 void CoreRoot_Draw( CoreRoot _this, GraphicsCanvas aCanvas, XRect aClip, XPoint
267 
268 /* The method ChangeViewState() modifies the current state of the view. The state
269  is a set of switches determining whether a view is visible, whether it can react
270  to user inputs or whether it is just performing some update operations, etc.
271  The modification is controlled by the the both parameters. The first aSetState
272  contains the switches to activate within the view state. The second aClearState
273  determines all switches to disable.
274  Depending on the state alteration the method will perform different operations,
275  e.g. in response to the clearing of the visible state, the method will request
276  a screen redraw to make disappear the view from the screen.
277  ChangeViewState() is invoked automatically by the framework, so you never should
278  need to invoke it directly. All relevant states are available as properties e.g.
279  the property Visible in derived classes reflects the visible state of the view. */
280 void CoreRoot_ChangeViewState( CoreRoot _this, XSet aSetState, XSet aClearState );
281 
282 /* 'C' function for method : 'Core::Root.OnSetFocus()' */
283 void CoreRoot_OnSetFocus( CoreRoot _this, CoreView value );
284 
285 /* 'C' function for method : 'Core::Root.OnSetBuffered()' */
286 void CoreRoot_OnSetBuffered( CoreRoot _this, XBool value );
287 
288 /* 'C' function for method : 'Core::Root.OnSetOpacity()' */
289 void CoreRoot_OnSetOpacity( CoreRoot _this, XInt32 value );
290 
291 /* The method IsDialog() verifies whether 'this' component serves actually as a
292  dialog. The component is considered as a dialog if it has been presented by a
293  preceding invocation of the method @PresentDialog() or @SwitchToDialog() without
294  the corresponding @DismissDialog() invocation. If the parameter aRecursive is
295  'true', the owner in context of which 'this' component actually exists and all
296  superior owners have also to be valid dialogs or the owner has to be the application
297  root component.
298  If the component has not been presented by preceding @PresentDialog() or @SwitchToDialog()
299  invocation or it has been dismissed by using the method @DismissDialog() the
300  method returns 'false'. Similarly, if the parameter aRecursive is 'true' and
301  the owner of the component is itself not a dialog, the method returns 'false'. */
302 XBool CoreRoot_IsDialog( CoreRoot _this, XBool aRecursive );
303 
304 /* The method DispatchEvent() feeds the component with the event passed in the parameter
305  aEvent and propagates it along the so-called focus path. This focus path leads
306  to the currently selected keyboard event receiver view. If the event is rejected
307  by the view, the same operation is repeated for the next superior view. This
308  permits the hierarchical event dispatching until a willing view has handled the
309  event or all views in the focus path have been evaluated. If the event remains
310  still unhandled, it will be passed to the component itself.
311  The focus path is established by the property @Focus.
312  DispatchEvent() returns the value returned by the @HandleEvent() method of the
313  view which has handled the event. In the case, the event was not handled, the
314  method returns 'null'. */
315 XObject CoreRoot_DispatchEvent( CoreRoot _this, CoreEvent aEvent );
316 
317 /* The method BroadcastEvent() feeds the component with the event passed in the
318  parameter aEvent and propagates it to all views enclosed within the component
319  until the event has been handled or all views are evaluated. If the event remains
320  still unhandled, it will be passed to the component itself.
321  The additional parameter aFilter can be used to limit the operation to special
322  views only, e.g. to visible and touchable views. To broadcast the event to all
323  views pass in the parameter aFilter the value 'Core::ViewState[]'.
324  BroadcastEvent() is very useful to provide all views with one and the same event
325  in order e.g. to inform all views about an important global state alteration.
326  To send events to views enclosing a given position use the method @BroadcastEventAtPosition().
327  BroadcastEvent() returns the value returned by the @HandleEvent() method of the
328  view which has handled the event. In the case, the event was not handled, the
329  method returns 'null'. */
330 XObject CoreRoot_BroadcastEvent( CoreRoot _this, CoreEvent aEvent, XSet aFilter );
331 
332 /* The method InvalidateArea() declares the given area of the component as invalid,
333  this means this area should be redrawn at the next screen update. */
334 void CoreRoot_InvalidateArea( CoreRoot _this, XRect aArea );
335 
336 /* 'C' function for method : 'Core::Root.createDragEvent()' */
337 CoreDragEvent CoreRoot_createDragEvent( CoreRoot _this );
338 
339 /* 'C' function for method : 'Core::Root.createCursorEvent()' */
340 CoreCursorEvent CoreRoot_createCursorEvent( CoreRoot _this );
341 
342 /* 'C' function for method : 'Core::Root.createCursorGrabEvent()' */
343 CoreCursorGrabEvent CoreRoot_createCursorGrabEvent( CoreRoot _this );
344 
345 /* 'C' function for method : 'Core::Root.cursorHoldTimerProc()' */
346 void CoreRoot_cursorHoldTimerProc( CoreRoot _this, XObject sender );
347 
348 /* The method GetFPS() returns the screen update performance expressed in frames
349  per second. The performance is estimated for the period between the current and
350  the preceding invocation of the GetFPS() method. */
351 XInt32 CoreRoot_GetFPS( CoreRoot _this );
352 
353 /* Wrapper function for the non virtual method : 'Core::Root.GetFPS()' */
354 XInt32 CoreRoot__GetFPS( void* _this );
355 
356 /* The following define announces the presence of the method Core::Root.GetFPS(). */
357 #define _CoreRoot__GetFPS_
358 
359 /* The method Update() exists for the integration purpose with the underlying target
360  system. You will never need to invoke this method directly from your GUI application.
361  The method is responsible for the redrawing of invalid screen areas.
362  This method forces the redraw of all affected views and returns the position
363  and the size of the redrawn area. If there is no invalid area to redraw, */
364 XRect CoreRoot_Update( CoreRoot _this );
365 
366 /* Wrapper function for the non virtual method : 'Core::Root.Update()' */
367 XRect CoreRoot__Update( void* _this );
368 
369 /* The following define announces the presence of the method Core::Root.Update(). */
370 #define _CoreRoot__Update_
371 
372 /* The method UpdateGE20() exists for the integration purpose with the underlying
373  target system. You will never need to invoke this method directly from your GUI
374  application. The method is responsible for the redrawing of invalid screen areas.
375  This method forces the redraw of all affected views into the given drawing destination
376  aCanvas and returns the position and the size of the redrawn area. If there is
377  no invalid area to redraw, UpdateGE20() returns an empty rectangle. This method
378  is intended to work with the new Graphics Engine 2.0 only. */
379 XRect CoreRoot_UpdateGE20( CoreRoot _this, GraphicsCanvas aCanvas );
380 
381 /* Wrapper function for the non virtual method : 'Core::Root.UpdateGE20()' */
382 XRect CoreRoot__UpdateGE20( void* _this, GraphicsCanvas aCanvas );
383 
384 /* The following define announces the presence of the method Core::Root.UpdateGE20(). */
385 #define _CoreRoot__UpdateGE20_
386 
387 /* The method EndUpdate() belongs to an interface required for integration purpose
388  with the underlying target system. You will never need to invoke this method
389  directly from your GUI application.
390  Calling this method finalizes the screen update cycle initiated by the preceding
391  @BeginUpdate() invocation. */
392 void CoreRoot_EndUpdate( CoreRoot _this );
393 
394 /* Wrapper function for the non virtual method : 'Core::Root.EndUpdate()' */
395 void CoreRoot__EndUpdate( void* _this );
396 
397 /* The following define announces the presence of the method Core::Root.EndUpdate(). */
398 #define _CoreRoot__EndUpdate_
399 
400 /* The method UpdateCanvas() belongs to an interface required for integration purpose
401  with the underlying target system. You will never need to invoke this method
402  directly from your GUI application.
403  This method redraws all invalid screen regions into the canvas passed in the
404  parameter aCanvas. The parameter aOffset determines the origin where to map the
405  top-left corner of the canvas on the screen. All update areas lying outside the
406  canvas are clipped.
407  The method returns the position and the size of the resulting area within the
408  canvas affected by the update. If there is no intersection between the canvas
409  and any of the invalid areas, UpdateCanvas() returns an empty rectangle. */
410 XRect CoreRoot_UpdateCanvas( CoreRoot _this, GraphicsCanvas aCanvas, XPoint aOffset );
411 
412 /* Wrapper function for the non virtual method : 'Core::Root.UpdateCanvas()' */
413 XRect CoreRoot__UpdateCanvas( void* _this, GraphicsCanvas aCanvas, XPoint aOffset );
414 
415 /* The following define announces the presence of the method Core::Root.UpdateCanvas(). */
416 #define _CoreRoot__UpdateCanvas_
417 
418 /* The method GetUpdateRegion() belongs to an interface required for integration
419  purpose with the underlying target system. You will never need to invoke this
420  method directly from your GUI application.
421  This method returns the position and the size of the invalid region with the
422  number specified in the parameter aRegionNo. If the desired region does not exist,
423  the method returns an empty area. */
424 XRect CoreRoot_GetUpdateRegion( CoreRoot _this, XInt32 aRegionNo );
425 
426 /* Wrapper function for the non virtual method : 'Core::Root.GetUpdateRegion()' */
427 XRect CoreRoot__GetUpdateRegion( void* _this, XInt32 aRegionNo );
428 
429 /* The following define announces the presence of the method Core::Root.GetUpdateRegion(). */
430 #define _CoreRoot__GetUpdateRegion_
431 
432 /* The method BeginUpdate() belongs to an interface required for integration purpose
433  with the underlying target system. You will never need to invoke this method
434  directly from your GUI application.
435  Calling this method initiates a new screen update cycle. Subsequently the method
436  @UpdateCanvas() can be called in order to perform all waiting drawing operations.
437  If necessary UpdateCanvas() can be called multiple times in order to draw multiple
438  screen areas individually. Finally the update cycle is terminated by calling
439  the method @EndUpdate().
440  The method BeginUpdate() returns the number of invalid regions waiting currently
441  for the update. If there is nothing to update, the method returns 0 (zero). The
442  position and the size of the invalid regions can be queried by using the method
443  @GetUpdateRegion(). */
444 XInt32 CoreRoot_BeginUpdate( CoreRoot _this );
445 
446 /* Wrapper function for the non virtual method : 'Core::Root.BeginUpdate()' */
447 XInt32 CoreRoot__BeginUpdate( void* _this );
448 
449 /* The following define announces the presence of the method Core::Root.BeginUpdate(). */
450 #define _CoreRoot__BeginUpdate_
451 
452 /* The method DoesNeedUpdate() returns a value indicating whether an area of the
453  application needs an update. If there is no invalid area to redraw, DoesNeedUpdate()
454  returns 'false'. */
455 XBool CoreRoot_DoesNeedUpdate( CoreRoot _this );
456 
457 /* Wrapper function for the non virtual method : 'Core::Root.DoesNeedUpdate()' */
458 XBool CoreRoot__DoesNeedUpdate( void* _this );
459 
460 /* The following define announces the presence of the method Core::Root.DoesNeedUpdate(). */
461 #define _CoreRoot__DoesNeedUpdate_
462 
463 /* The method Initialize() exists for the integration purpose with the underlying
464  target system. You will never need to invoke this method directly from your GUI
465  application. The method is responsible for the preparation of the application
466  object to work with a screen with the given size aSize. */
467 CoreRoot CoreRoot_Initialize( CoreRoot _this, XPoint aSize );
468 
469 /* Wrapper function for the non virtual method : 'Core::Root.Initialize()' */
470 CoreRoot CoreRoot__Initialize( void* _this, XPoint aSize );
471 
472 /* The following define announces the presence of the method Core::Root.Initialize(). */
473 #define _CoreRoot__Initialize_
474 
475 /* 'C' function for method : 'Core::Root.SetRootFocus()' */
476 XBool CoreRoot_SetRootFocus( CoreRoot _this, XBool aHasRootFocus );
477 
478 /* Wrapper function for the non virtual method : 'Core::Root.SetRootFocus()' */
479 XBool CoreRoot__SetRootFocus( void* _this, XBool aHasRootFocus );
480 
481 /* The following define announces the presence of the method Core::Root.SetRootFocus(). */
482 #define _CoreRoot__SetRootFocus_
483 
484 /* The method 'SetUserInputTimestamp()' exists for optional purpose to provide the
485  exact timestamp when the last user interaction took place. With this exact information
486  the GUI application can calculate better interactions like touch screen gestures,
487  etc. The time is expressed in milliseconds.
488  Usually the method will be invoked in response to user input events received
489  in the main() message loop from the target specific keyboard or touch screen
490  driver. The method should be called before the event is fed to the GUI system. */
491 void CoreRoot_SetUserInputTimestamp( CoreRoot _this, XUInt32 aTimestamp );
492 
493 /* Wrapper function for the non virtual method : 'Core::Root.SetUserInputTimestamp()' */
494 void CoreRoot__SetUserInputTimestamp( void* _this, XUInt32 aTimestamp );
495 
496 /* The following define announces the presence of the method Core::Root.SetUserInputTimestamp(). */
497 #define _CoreRoot__SetUserInputTimestamp_
498 
499 /* The method DriveKeyboardHitting() exists for the integration purpose with the
500  underlying target system. Usually the method will be invoked in response to events
501  received in the main() message loop from the target specific hardware keyboard
502  driver.
503  The parameters passed to the method determine the event. aDown determines whether
504  the user has pressed (== 'true') or released (== 'false') a key. The parameters
505  aCode and aCharCode are used exclusively. They determine the affected key. If
506  the method is called with a valid aCode then aCharCode should be '\0'. If the
507  method is called with a valid aCharCode then aCode should be Core::KeyCode.NoKey. */
508 XBool CoreRoot_DriveKeyboardHitting( CoreRoot _this, XEnum aCode, XChar aCharCode,
509  XBool aDown );
510 
511 /* Wrapper function for the non virtual method : 'Core::Root.DriveKeyboardHitting()' */
512 XBool CoreRoot__DriveKeyboardHitting( void* _this, XEnum aCode, XChar aCharCode,
513  XBool aDown );
514 
515 /* The following define announces the presence of the method Core::Root.DriveKeyboardHitting(). */
516 #define _CoreRoot__DriveKeyboardHitting_
517 
518 /* The method DriveCursorMovement() exists for the integration purpose with the
519  underlying target system. Usually the method will be invoked in response to to
520  drag events received in the main() message loop from the target specific touch
521  screen driver.
522  The method expects only one parameter aPos. This parameter determines the current
523  cursor (or finger in the touch screen analogy) position. aPos lies relative to
524  the top-left corner of the application coordinate system.
525  Please note, this method is limited to process a single touch (or mouse) event
526  at the same time. When integrating with a target system supporting multi-touch
527  please use the method @DriveMultiTouchMovement(). */
528 XBool CoreRoot_DriveCursorMovement( CoreRoot _this, XPoint aPos );
529 
530 /* Wrapper function for the non virtual method : 'Core::Root.DriveCursorMovement()' */
531 XBool CoreRoot__DriveCursorMovement( void* _this, XPoint aPos );
532 
533 /* The following define announces the presence of the method Core::Root.DriveCursorMovement(). */
534 #define _CoreRoot__DriveCursorMovement_
535 
536 /* The method DriveMultiTouchMovement() exists for the integration purpose with
537  the underlying target system. Usually the method will be invoked in response
538  to to drag events received in the main() message loop from the target specific
539  touch screen driver.
540  The parameter aPos determines the current cursor (or finger in the touch screen
541  analogy) position. aPos lies relative to the top-left corner of the application
542  coordinate system. The number of the finger is specified in the parameter aFinger.
543  The first finger has the number 0, the second 1, and so far till 9.
544  Please note, unlike the method @DriveCursorMovement() this method is able to
545  process and dispatch several multi-touch events simultaneously. */
546 XBool CoreRoot_DriveMultiTouchMovement( CoreRoot _this, XInt32 aFinger, XPoint aPos );
547 
548 /* Wrapper function for the non virtual method : 'Core::Root.DriveMultiTouchMovement()' */
549 XBool CoreRoot__DriveMultiTouchMovement( void* _this, XInt32 aFinger, XPoint aPos );
550 
551 /* The following define announces the presence of the method Core::Root.DriveMultiTouchMovement(). */
552 #define _CoreRoot__DriveMultiTouchMovement_
553 
554 /* The method DriveCursorHitting() exists for the integration purpose with the underlying
555  target system. Usually the method will be invoked in response to to touch events
556  received in the main() message loop from the target specific touch screen driver.
557  The parameters passed to the method determine the event. aDown determines whether
558  the user has pressed (== 'true') or released (== 'false') his finger at the position
559  aPos relative to the top-left origin of the GUI application area. The parameter
560  aFinger specifies the finger (or mouse button) the user pressed for this operation.
561  The first finger (mouse button) has the number 0, the second 1, and so far.
562  Please note, this method is limited to process a single touch (or mouse) event
563  at the same time. When integrating with a target system supporting multi-touch
564  please use the method @DriveMultiTouchHitting(). */
565 XBool CoreRoot_DriveCursorHitting( CoreRoot _this, XBool aDown, XInt32 aFinger,
566  XPoint aPos );
567 
568 /* Wrapper function for the non virtual method : 'Core::Root.DriveCursorHitting()' */
569 XBool CoreRoot__DriveCursorHitting( void* _this, XBool aDown, XInt32 aFinger, XPoint
570  aPos );
571 
572 /* The following define announces the presence of the method Core::Root.DriveCursorHitting(). */
573 #define _CoreRoot__DriveCursorHitting_
574 
575 /* The method DriveMultiTouchHitting() exists for the integration purpose with the
576  underlying target system. Usually the method will be invoked in response to touch
577  events received in the main() message loop from the target specific touch screen
578  driver.
579  The parameters passed to the method determine the event. aDown determines whether
580  the user has pressed (== 'true') or released (== 'false') his finger at the position
581  aPos relative to the top-left origin of the GUI application area. The parameter
582  aFinger identifies the associated finger. The first finger has the number 0,
583  the second 1 and so far till 9.
584  Please note, unlike the method @DriveCursorHitting() this method is able to process
585  and dispatch several multi-touch events simultaneously. */
586 XBool CoreRoot_DriveMultiTouchHitting( CoreRoot _this, XBool aDown, XInt32 aFinger,
587  XPoint aPos );
588 
589 /* Wrapper function for the non virtual method : 'Core::Root.DriveMultiTouchHitting()' */
590 XBool CoreRoot__DriveMultiTouchHitting( void* _this, XBool aDown, XInt32 aFinger,
591  XPoint aPos );
592 
593 /* The following define announces the presence of the method Core::Root.DriveMultiTouchHitting(). */
594 #define _CoreRoot__DriveMultiTouchHitting_
595 
596 /* The method RetargetCursorWithReason() changes the currently active cursor event
597  target view. Usually, the target view is determined when the user presses the
598  finger on the touch screen. Once determined, the target view remains active until
599  the user has released the finger. In the meantime the framework will provide
600  this target view with all cursor events. This entire cycle is called 'grab cycle'.
601  The method RetargetCursorWithReason() allows you to select a new target view
602  without the necessity to wait until the user has released the touch screen and
603  thus has finalized the grab cycle.
604  Except the additional parameter aRetargetReason, this method works similarly
605  to @RetargetCursor(). At first the method asks the new potential target view
606  aNewTarget whether it or one of its sub-views is willing to continue processing
607  the cursor events for the gesture specified in aRetargetReason. If successful,
608  the method hands over the cursor event flow to this determined view. If there
609  is no view willing to handle these events, the method hands over the event flow
610  directly to the view specified in the parameter aFallbackTarget. If no willing
611  view could be found and no fall-back view was given, the current grab cycle is
612  finalized as if the user had released the touch screen.
613  Unlike the method @DeflectCursor() this RetargetCursorWithReason() method performs
614  the cursor hit test for all views of the new potential target. This is as if
615  the user had tapped the screen and the framework tries to determine the view
616  affected by this interaction. This search operation is limited to views at the
617  current cursor position. Unlike @RetargetCursor(), this method limits additionally
618  to candidates willing to handle the gesture specified in the parameter aRetargetReason.
619  When switching the target view, the framework provides the old and the new target
620  views with cursor events. The old view will receive a Core::CursorEvent with
621  variables Down == 'false' and AutoDeflected == 'true' - this simulates the release
622  operations. The new target view will receive a Core::CursorEvent with the variable
623  Down == 'true' as if it had been just touched by the user.
624  If the application is running within a multi-touch environment, the invocation
625  of the RetargetCursor() method does affect the event flow corresponding only
626  to the finger which has lastly generated touch events. */
627 void CoreRoot_RetargetCursorWithReason( CoreRoot _this, CoreView aNewTarget, CoreView
628  aFallbackTarget, XSet aRetargetReason );
629 
630 /* The method RetargetCursor() changes the currently active cursor event target
631  view. Usually, the target view is determined when the user presses the finger
632  on the touch screen. Once determined, the target view remains active until the
633  user has released the finger. In the meantime the framework will provide this
634  target view with all cursor events. This entire cycle is called 'grab cycle'.
635  The method RetargetCursor() allows you to select a new target view without the
636  necessity to wait until the user has released the touch screen and thus has finalized
637  the grab cycle.
638  At first the method asks the new potential target view aNewTarget whether it
639  or one of its sub-views is willing to handle the cursor events. If successful,
640  the method hands over the cursor event flow to this determined view. If there
641  is no view willing to handle these events, the method hands over the event flow
642  directly to the view specified in the parameter aFallbackTarget. If no willing
643  view could be found and no fall-back view was given, the current grab cycle is
644  finalized as if the user had released the touch screen.
645  Unlike the method @DeflectCursor() this RetargetCursor() method performs the
646  cursor hit test for all views of the new potential target. This is as if the
647  user had tapped the screen and the framework tries to determine the view affected
648  by this interaction. This search operation is limited to views at the current
649  cursor position.
650  When switching the target view, the framework provides the old and the new target
651  views with cursor events. The old view will receive a Core::CursorEvent with
652  variables Down == 'false' and AutoDeflected == 'true' - this simulates the release
653  operations. The new target view will receive a Core::CursorEvent with the variable
654  Down == 'true' as if it had been just touched by the user.
655  If the application is running within a multi-touch environment, the invocation
656  of the RetargetCursor() method does affect the event flow corresponding only
657  to the finger which has lastly generated touch events.
658  Please note the alternative version of this method @RetargetCursorWithReason(). */
659 void CoreRoot_RetargetCursor( CoreRoot _this, CoreView aNewTarget, CoreView aFallbackTarget );
660 
661 /* The method DeflectCursor() changes the currently active cursor event target view.
662  Usually, the target view is determined when the user presses the finger on the
663  touch screen. Once determined, the target view remains active until the user
664  has released the finger. In the meantime the framework will provide this target
665  view with all cursor events. This entire cycle is called 'grab cycle'. The method
666  DeflectCursor() allows you to select a new target view without the necessity
667  to wait until the user has released the touch screen and thus has finalized the
668  grab cycle.
669  Unlike the method @RetargetCursor() this @DeflectCursor() method hands over the
670  cursor event flow to the new target regardless its position or state. If no new
671  target view has been specified, the current grab cycle is finalized as if the
672  user had released the touch screen.
673  When switching the target view, the framework provides the old and the new target
674  views with cursor events. The old view will receive a Core::CursorEvent with
675  variables Down == 'false' and AutoDeflected == 'true' - this simulates the release
676  operations. The new target view will receive a Core::CursorEvent with the variable
677  Down == 'true' as if it had been just touched by the user.
678  If the application is running within a multi-touch environment, the invocation
679  of the DeflectCursor() method does affect the event flow corresponding only to
680  the finger which has lastly generated touch events. */
681 void CoreRoot_DeflectCursor( CoreRoot _this, CoreView aNewTarget, XPoint aHitOffset );
682 
683 #ifdef __cplusplus
684  }
685 #endif
686 
687 #endif /* _CoreRoot_H */
688 
689 /* Embedded Wizard */
CoreRoot__SetUserInputTimestamp
void CoreRoot__SetUserInputTimestamp(void *_this, XUInt32 aTimestamp)
Definition: Core.c:4346
CoreRoot_RetargetCursorWithReason
void CoreRoot_RetargetCursorWithReason(CoreRoot _this, CoreView aNewTarget, CoreView aFallbackTarget, XSet aRetargetReason)
Definition: Core.c:4790
CoreRoot_createDragEvent
CoreDragEvent CoreRoot_createDragEvent(CoreRoot _this)
Definition: Core.c:3886
CoreRoot_OnSetOpacity
void CoreRoot_OnSetOpacity(CoreRoot _this, XInt32 value)
Definition: Core.c:3653
ewrte.h
_CoreTimer.h
EW_ARRAY
#define EW_ARRAY(aName, aType, aArraySize)
Definition: ewrte.h:470
EW_METHOD
EW_METHOD(initLayoutContext, void)(CoreRectView _this
CoreRoot_InvalidateArea
void CoreRoot_InvalidateArea(CoreRoot _this, XRect aArea)
Definition: Core.c:3775
CoreRoot_OnSetBuffered
void CoreRoot_OnSetBuffered(CoreRoot _this, XBool value)
Definition: Core.c:3641
_CoreGroup.h
CoreRoot_DeflectCursor
void CoreRoot_DeflectCursor(CoreRoot _this, CoreView aNewTarget, XPoint aHitOffset)
Definition: Core.c:4873
CoreRoot__GetFPS
XInt32 CoreRoot__GetFPS(void *_this)
Definition: Core.c:4010
EW_END_OF_FIELDS
#define EW_END_OF_FIELDS(aClass)
Definition: ewrte.h:460
CoreRoot_BeginUpdate
XInt32 CoreRoot_BeginUpdate(CoreRoot _this)
Definition: Core.c:4175
CoreRoot_IsDialog
XBool CoreRoot_IsDialog(CoreRoot _this, XBool aRecursive)
Definition: Core.c:3675
EW_DECLARE_CLASS
#define EW_DECLARE_CLASS(aClass)
Definition: ewrte.h:393
CoreRoot_DispatchEvent
XObject CoreRoot_DispatchEvent(CoreRoot _this, CoreEvent aEvent)
Definition: Core.c:3695
CoreRoot_RetargetCursor
void CoreRoot_RetargetCursor(CoreRoot _this, CoreView aNewTarget, CoreView aFallbackTarget)
Definition: Core.c:4848
CoreRoot_GetRoot
CoreRoot CoreRoot_GetRoot(CoreRoot _this)
Definition: Core.c:3562
EW_VARIABLE
#define EW_VARIABLE(aName, aType)
Definition: ewrte.h:464
ewgfx.h
CoreRoot__DriveKeyboardHitting
XBool CoreRoot__DriveKeyboardHitting(void *_this, XEnum aCode, XChar aCharCode, XBool aDown)
Definition: Core.c:4450
_obj_XObject
Definition: ewrte.h:281
XChar
unsigned short XChar
Definition: ewrte.h:1596
CoreRoot_GetUpdateRegion
XRect CoreRoot_GetUpdateRegion(CoreRoot _this, XInt32 aRegionNo)
Definition: Core.c:4134
CoreRoot__UpdateCanvas
XRect CoreRoot__UpdateCanvas(void *_this, GraphicsCanvas aCanvas, XPoint aOffset)
Definition: Core.c:4123
aOutline
XRect CoreOutline aOutline XRect CoreOutline aOutline
Definition: _CoreQuadView.h:109
XInt32
signed long XInt32
Definition: ewrte.h:1586
value
XRect CoreOutline aOutline XPoint value
Definition: _ViewsWarpView.h:137
CoreRoot_Initialize
CoreRoot CoreRoot_Initialize(CoreRoot _this, XPoint aSize)
Definition: Core.c:4274
CoreRoot_ChangeViewState
void CoreRoot_ChangeViewState(CoreRoot _this, XSet aSetState, XSet aClearState)
Definition: Core.c:3619
XBool
char XBool
Definition: ewrte.h:1592
XEnum
unsigned long XEnum
Definition: ewrte.h:1593
EW_DEFINE_METHODS
#define EW_DEFINE_METHODS(aClass, aSuperClass)
Definition: ewrte.h:524
CoreRoot__DriveCursorHitting
XBool CoreRoot__DriveCursorHitting(void *_this, XBool aDown, XInt32 aFinger, XPoint aPos)
Definition: Core.c:4578
XRect
Definition: ewrte.h:1639
CoreRoot__UpdateGE20
XRect CoreRoot__UpdateGE20(void *_this, GraphicsCanvas aCanvas)
Definition: Core.c:4056
CoreRoot_Draw
void CoreRoot_Draw(CoreRoot _this, GraphicsCanvas aCanvas, XRect aClip, XPoint aOffset, XInt32 aOpacity, XBool aBlend)
Definition: Core.c:3592
CoreRoot_Update
XRect CoreRoot_Update(CoreRoot _this)
Definition: Core.c:4020
EffectsFader
EffectsFader(EffectsShowHideTransition _this) EW_METHOD(CreateRestoreFader
XSet
unsigned long XSet
Definition: ewrte.h:1594
CoreRoot_DriveCursorMovement
XBool CoreRoot_DriveCursorMovement(CoreRoot _this, XPoint aPos)
Definition: Core.c:4466
CoreRoot__EndUpdate
void CoreRoot__EndUpdate(void *_this)
Definition: Core.c:4076
CoreRoot_DriveKeyboardHitting
XBool CoreRoot_DriveKeyboardHitting(CoreRoot _this, XEnum aCode, XChar aCharCode, XBool aDown)
Definition: Core.c:4360
aOpacity
XRect CoreOutline aOutline GraphicsCanvas XRect XPoint XInt32 aOpacity
Definition: _CoreOutline.h:172
CoreRoot__DriveMultiTouchHitting
XBool CoreRoot__DriveMultiTouchHitting(void *_this, XBool aDown, XInt32 aFinger, XPoint aPos)
Definition: Core.c:4753
CoreRoot__DoesNeedUpdate
XBool CoreRoot__DoesNeedUpdate(void *_this)
Definition: Core.c:4265
CoreRoot_EndUpdate
void CoreRoot_EndUpdate(CoreRoot _this)
Definition: Core.c:4066
CoreRoot_createCursorEvent
CoreCursorEvent CoreRoot_createCursorEvent(CoreRoot _this)
Definition: Core.c:3899
CoreRoot__BeginUpdate
XInt32 CoreRoot__BeginUpdate(void *_this)
Definition: Core.c:4240
CoreRoot_createCursorGrabEvent
CoreCursorGrabEvent CoreRoot_createCursorGrabEvent(CoreRoot _this)
Definition: Core.c:3912
CoreRoot_UpdateGE20
XRect CoreRoot_UpdateGE20(CoreRoot _this, GraphicsCanvas aCanvas)
Definition: Core.c:4043
CoreRoot__GetUpdateRegion
XRect CoreRoot__GetUpdateRegion(void *_this, XInt32 aRegionNo)
Definition: Core.c:4158
CoreRoot__Initialize
CoreRoot CoreRoot__Initialize(void *_this, XPoint aSize)
Definition: Core.c:4289
CoreRoot__DriveMultiTouchMovement
XBool CoreRoot__DriveMultiTouchMovement(void *_this, XInt32 aFinger, XPoint aPos)
Definition: Core.c:4555
aClip
XRect CoreOutline aOutline GraphicsCanvas XRect aClip
Definition: _CoreOutline.h:171
CoreRoot_SetRootFocus
XBool CoreRoot_SetRootFocus(CoreRoot _this, XBool aHasRootFocus)
Definition: Core.c:4295
CoreRoot_DriveMultiTouchMovement
XBool CoreRoot_DriveMultiTouchMovement(CoreRoot _this, XInt32 aFinger, XPoint aPos)
Definition: Core.c:4487
sender
XRect CoreOutline aOutline XObject sender
Definition: _ApplicationRadioInterface.h:186
CoreRoot__Update
XRect CoreRoot__Update(void *_this)
Definition: Core.c:4031
CoreRoot_cursorHoldTimerProc
void CoreRoot_cursorHoldTimerProc(CoreRoot _this, XObject sender)
Definition: Core.c:3925
XPoint
Definition: ewrte.h:1616
EW_PROPERTY
#define EW_PROPERTY(aName, aType)
Definition: ewrte.h:466
aOffset
XRect CoreOutline aOutline GraphicsCanvas XRect XPoint aOffset
Definition: _CoreOutline.h:172
CoreRoot_UpdateCanvas
XRect CoreRoot_UpdateCanvas(CoreRoot _this, GraphicsCanvas aCanvas, XPoint aOffset)
Definition: Core.c:4091
EW_OBJECT
#define EW_OBJECT(aName, aObjectClass)
Definition: ewrte.h:468
XUInt32
unsigned long XUInt32
Definition: ewrte.h:1590
CoreRoot_DoesNeedUpdate
XBool CoreRoot_DoesNeedUpdate(CoreRoot _this)
Definition: Core.c:4248
CoreRoot__SetRootFocus
XBool CoreRoot__SetRootFocus(void *_this, XBool aHasRootFocus)
Definition: Core.c:4328
CoreRoot__DriveCursorMovement
XBool CoreRoot__DriveCursorMovement(void *_this, XPoint aPos)
Definition: Core.c:4472
aCanvas
XRect CoreOutline aOutline GraphicsCanvas aCanvas
Definition: _CoreOutline.h:171
CoreRoot_DriveMultiTouchHitting
XBool CoreRoot_DriveMultiTouchHitting(CoreRoot _this, XBool aDown, XInt32 aFinger, XPoint aPos)
Definition: Core.c:4595
CoreRoot_DriveCursorHitting
XBool CoreRoot_DriveCursorHitting(CoreRoot _this, XBool aDown, XInt32 aFinger, XPoint aPos)
Definition: Core.c:4571
CoreRoot_SetUserInputTimestamp
void CoreRoot_SetUserInputTimestamp(CoreRoot _this, XUInt32 aTimestamp)
Definition: Core.c:4340
EW_END_OF_METHODS
#define EW_END_OF_METHODS(aClass)
Definition: ewrte.h:539
aBounds
XRect aBounds
Definition: _CoreRoot.h:204
CoreCursorHit
XRect CoreOutline aOutline CoreCursorHit(CoreGroup _this, XRect aArea, XInt32 aFinger, XInt32 aStrikeCount, CoreView aDedicatedView, XSet aRetargetReason) EW_METHOD(ArrangeView
CoreRoot_OnSetFocus
void CoreRoot_OnSetFocus(CoreRoot _this, CoreView value)
Definition: Core.c:3634
aBlend
XRect CoreOutline aOutline GraphicsCanvas XRect XPoint XInt32 XBool aBlend
Definition: _CoreOutline.h:172
CoreRoot_BroadcastEvent
XObject CoreRoot_BroadcastEvent(CoreRoot _this, CoreEvent aEvent, XSet aFilter)
Definition: Core.c:3756
CoreRoot_GetFPS
XInt32 CoreRoot_GetFPS(CoreRoot _this)
Definition: Core.c:3994
EW_DEFINE_FIELDS
#define EW_DEFINE_FIELDS(aClass, aSuperClass)
Definition: ewrte.h:451