eGUI alias D4D  Release 3.0
Reference Manual
 All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Groups Pages
d4d_object.c
Go to the documentation of this file.
1 /**************************************************************************
2 *
3 * Copyright 2014 by Petr Gargulak. eGUI Community.
4 * Copyright 2009-2013 by Petr Gargulak. Freescale Semiconductor, Inc.
5 *
6 ***************************************************************************
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU Lesser General Public License Version 3
9 * or later (the "LGPL").
10 *
11 * As a special exception, the copyright holders of the eGUI project give you
12 * permission to link the eGUI sources with independent modules to produce an
13 * executable, regardless of the license terms of these independent modules,
14 * and to copy and distribute the resulting executable under terms of your
15 * choice, provided that you also meet, for each linked independent module,
16 * the terms and conditions of the license of that module.
17 * An independent module is a module which is not derived from or based
18 * on this library.
19 * If you modify the eGUI sources, you may extend this exception
20 * to your version of the eGUI sources, but you are not obligated
21 * to do so. If you do not wish to do so, delete this
22 * exception statement from your version.
23 *
24 * This program is distributed in the hope that it will be useful,
25 * but WITHOUT ANY WARRANTY; without even the implied warranty of
26 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
27 *
28 * You should have received a copy of the GNU General Public License
29 * and the GNU Lesser General Public License along with this program.
30 * If not, see <http://www.gnu.org/licenses/>.
31 *
32 ***************************************************************************/
46 #include "d4d.h"
48 
49 
50 /**************************************************************/
56 /******************************************************************************
57 * Begin of D4D_OBJECT public functions
58 */
62 /**************************************************************************/
72 {
74 
75  if(bComplete)
76  flags |= D4D_OBJECT_F_REDRAWC;
77 
78  D4D_SetObjectFlags((D4D_OBJECT*)pObject, flags, D4D_TRUE);
79 
80  if(pObject->pData->pScreen)
81  (pObject->pData->pScreen)->pData->flags |= D4D_SCR_FINT_CHECKOBJECTS;
82 }
83 
84 /**************************************************************************/
93 {
94  if(bShow)
95  {
96  pObject->pData->flags |= D4D_OBJECT_F_VISIBLE;
98  }
99  else
100  {
101  pObject->pData->flags &= ~D4D_OBJECT_F_VISIBLE;
102 
103  if(d4d_pKeysCapturer == pObject)
105 
106 
107  if((D4D_OBJECT*)pObject == D4D_GetFocusedObject(pObject->pData->pScreen))
109 
110  if(pObject->pRelations)
111  {
112  D4D_OBJECT* pParent = D4D_GetParentObject((D4D_OBJECT*)pObject);
113 
114  if(pParent)
115  D4D_InvalidateObject(pParent, D4D_TRUE);
116  else
118 
119  }else
121  }
122 }
123 
124 /**************************************************************************/
132 {
133  if(pThis == NULL)
134  return NULL;
135 
136  return pThis->userData;
137 }
138 
139 
140 /**************************************************************************/
151 void D4D_EnableTouchScreen(D4D_OBJECT_PTR pObj, D4D_BOOL bEnable, D4D_BOOL bFastTouch)
152 {
153  if(bEnable)
155  else
157 
158  if(bFastTouch)
160  else
162 
163 }
164 
165 /**************************************************************************/
173 {
174  if(bEnable)
176  else
177  pObj->pData->flags &= ~D4D_OBJECT_F_TIMETICK;
178 }
179 
180 /**************************************************************************/
191 {
192  // NOTE: we need to send message, but we may just be in the middle of
193  // message processing (very likely). This may cause problem with
194  // the global d4d_msg object as we are changing it...
195  // We better use the temporary memory to instanitate the message
196 
198 
199  if(d4d_pKeysCapturer == pObj)
200  return;
201 
202  pMsg->pScreen = D4D_GetActiveScreen();
203 
205  {
207 
208  pMsg->nMsgId = D4D_MSG_KILLCAPTURE;
209  pMsg->pObject = d4d_pKeysCapturer;
210  D4D_SendMessage(pMsg);
211 
213  }
214 
215  if(pObj != NULL)
216  {
218  {
219  if(D4D_IsEnabled((D4D_OBJECT*)pObj))
220  {
222 
223  d4d_pKeysCapturer = (D4D_OBJECT*) pObj;
224 
226 
227  pMsg->nMsgId = D4D_MSG_SETCAPTURE;
228  pMsg->pObject = d4d_pKeysCapturer;
229  D4D_SendMessage(pMsg);
230  }
231  }
232  }
233 }
234 
235 /**************************************************************************/
242 {
243  return d4d_pKeysCapturer;
244 }
245 
246 /**************************************************************************/
256 {
257  if(bEnable)
258  pObj->pData->flags |= D4D_OBJECT_F_TABSTOP;
259  else
260  pObj->pData->flags &= ~D4D_OBJECT_F_TABSTOP;
261 }
262 
263 /**************************************************************************/
274 {
275  //if(((pObj->pData->flags & D4D_OBJECT_F_ENABLED) && !bEnable) || (!(pObj->pData->flags & D4D_OBJECT_F_ENABLED) && bEnable))
276  if(D4D_LOG_EXOR((pObj->pData->flags & D4D_OBJECT_F_ENABLED), bEnable))
277  {
278  if(bEnable)
279  pObj->pData->flags |= D4D_OBJECT_F_ENABLED;
280  else
281  {
282  pObj->pData->flags &= ~D4D_OBJECT_F_ENABLED;
283 
284  if((D4D_OBJECT*)pObj == d4d_pKeysCapturer)
286 
287  if((D4D_OBJECT*)pObj == D4D_GetFocusedObject(pObj->pData->pScreen))
289  }
290 
292  }
293 }
294 
295 
296 /**************************************************************************/
304 {
305  if(!(pObject->pData->flags & D4D_OBJECT_F_ENABLED))
306  return D4D_FALSE;
307 
308  if(pObject->pRelations)
309  {
310  D4D_OBJECT* pParent = D4D_GetParentObject(pObject);
311  if(pParent)
312  return D4D_IsEnabled(pParent);
313  }
314 
315  return D4D_TRUE;
316 }
317 
318 /**************************************************************************/
326 {
327  if(!(pObject->pData->flags & D4D_OBJECT_F_VISIBLE))
328  return D4D_FALSE;
329 
330  if(pObject->pRelations)
331  {
332  D4D_OBJECT* pParent = D4D_GetParentObject(pObject);
333  if(pParent)
334  return D4D_IsVisible(pParent);
335  }
336 
337  return D4D_TRUE;
338 }
339 
340 
341 /**************************************************************************/
349 {
350  D4D_OBJECT * pFocused;
351 
352  if(pObject == NULL)
353  return D4D_FALSE;
354 
355  if((D4D_SCREEN*)(pObject->pData->pScreen) != D4D_GetActiveScreen())
356  return D4D_FALSE;
357 
358  pFocused = (D4D_OBJECT*)D4D_GetFocusedObject((D4D_SCREEN*)(pObject->pData->pScreen));
359 
360  if(pFocused == pObject)
361  return D4D_TRUE;
362 
363  if((pObject->pRelations) && (pFocused->pRelations))
364  {
365  // Lok for all parents - step by step
366  while(pFocused = D4D_GetParentObject(pFocused))
367  {
368  if(pObject == pFocused)
369  return D4D_TRUE;
370  }
371  }
372 
373  return D4D_FALSE;
374 }
375 
376 /**************************************************************************/
383 {
384  D4D_SIZE tmp_size = {0, 0};
385  D4D_SCREEN* pScreen = pObject->pData->pScreen;
386 
387 
388  if(pObject->pRelations)
389  {
391 
392  if(pParent)
393  {
394  tmp_size = pParent->size;
395  if(pParent->pMargin)
396  {
397  tmp_size.cx -= (D4D_COOR)(pParent->pMargin->left + pParent->pMargin->right);
398  tmp_size.cy -= (D4D_COOR)(pParent->pMargin->top + pParent->pMargin->bottom);
399  }
400  return tmp_size;
401  }
402  }
403 
404  if(pScreen == NULL)
405  {
406  return tmp_size;
407  }
408 
409  tmp_size.cx = pScreen->size.cx;
410  tmp_size.cy = pScreen->size.cy;
411 
412  if(pScreen->flags & D4D_SCR_F_BEVEL)
413  {
414  tmp_size.cx -= 2 * D4D_BEVEL_WIDTH;
415  tmp_size.cy -= 2 * D4D_BEVEL_WIDTH;
416  }
417  else if(pScreen->flags & D4D_SCR_F_OUTLINE)
418  {
419  tmp_size.cx -= 2;
420  tmp_size.cy -= 2;
421  }
422 
423  tmp_size.cy -= D4D_GetScrHeaderSize(pScreen);
424 
425  return tmp_size;
426 }
427 
428 /******************************************************************************
429 * End of public functions */
431 /******************************************************************************/
432 
433 /******************************************************************************
434 * Private functions *
435 ******************************************************************************/
436 
437 /**************************************************************/
444 {
445  if(pMsg->pObject)
446  {
447  if(pMsg->nMsgId == D4D_MSG_ONINIT)
448  pMsg->pObject->pData->flags &= ~D4D_OBJECT_F_NOTINIT; // just clear the non init flags for objects which doeasn't handle this message
449  }
450 
451 }
452 
453 /*******************************************************
454 *
455 * The object default check coordinators handler
456 *
457 *******************************************************/
458 
460 {
461 #if defined(D4D_LLD_TCH) || defined(D4D_LLD_MOUSE)
462  if((point.x >= pThis->position.x) && (point.y >= pThis->position.y))
463  {
464  if((point.x <= (pThis->position.x + pThis->size.cx)) && (point.y <= (pThis->position.y + pThis->size.cy)))
465  return D4D_TRUE;
466  }
467 #else
468  D4D_UNUSED(pThis);
469  D4D_UNUSED(point);
470 #endif
471  return D4D_FALSE;
472 }
473 
474 /**************************************************************/
480 {
481  if(pObject == NULL)
482  return D4D_FALSE;
483 
484  if(pObject->pRelations == NULL)
485  return D4D_FALSE;
486 
488  return D4D_FALSE;
489 
490  return D4D_TRUE;
491 }
492 
493 /**************************************************************/
499 {
500  if(pObject == NULL)
501  return NULL;
502 
503  if(pObject->pRelations == NULL)
504  return NULL;
505 
507 }
508 
509 /**************************************************************/
515 {
516  D4D_SCREEN* pScreen = pObject->pData->pScreen;
517  const D4D_OBJECT* const* pObjects = pScreen->pObjects;
518  LWord i = 0;
519  while(pObjects[i])
520  {
521  if(pObjects[i] == pObject)
522  {
523  if(pObjects[i+1])
524  return (D4D_OBJECT*)pObjects[i+1];
525  else
526  return (D4D_OBJECT*)pObjects[0];
527  }
528  i++;
529  }
530  // Error case
531  return NULL;
532 }
533 
534 /**************************************************************/
540 {
541  D4D_OBJECT* pParent;
542  // D4D_OBJECT* pSibling;
543 
544  pParent = D4D_GetParentObject(pObject);
545 
546  if(!pParent)
547  return D4D_FindNextObjectOnScreen(pObject);
548 
549  // return pointer on parent sibling object or null if there is no parent next sibling
550  return D4D_FindNextSiblingObject(pParent);
551 }
552 
553 /**************************************************************/
559 {
560  D4D_OBJECT* pParent;
562  pParent = D4D_GetParentObject(pObject);
563 
564  if(!pParent)
565  return D4D_FindNextObjectOnScreen(pObject);
566 
567  while(pParent->pRelations[i])
568  {
569  if(pParent->pRelations[i] == pObject)
570  {
571  if(pParent->pRelations[i+1])
572  return (D4D_OBJECT*)pParent->pRelations[i+1];
573  else
574  return NULL;
575  }
576  i++;
577  }
578 
579  return NULL;
580 }
581 
582 /**************************************************************/
588 {
589  D4D_OBJECT* pLocObject;
590 
591 
592  // Compatible mode - just only screen top level objects
593  if(pObject->pRelations == NULL)
594  return D4D_FindNextObjectOnScreen(pObject);
595 
596  if(childrenAlso)
597  if(pObject->pRelations[D4D_OBJECT_USR_DATA_CHILD_IX]) // Does I have childrens?
599 
600  // Does I have siblings?
601  pLocObject = D4D_FindNextSiblingObject(pObject);
602  if(pLocObject)
603  return pLocObject;
604 
605  // So my parent has to have siblings
606  do
607  {
608  pLocObject = D4D_FindNextParentSiblingObject(pObject);
609  if(pLocObject)
610  return pLocObject;
611 
612  pObject = D4D_GetParentObject(pObject);
613 
614  }while(1);
615 }
616 
617 /**************************************************************/
623 {
624  D4D_SCREEN* pScreen = pObject->pData->pScreen;
625  const D4D_OBJECT* const* pObjects = pScreen->pObjects;
626  LWord i = 0;
627 
628  while(pObjects[i])
629  {
630  if(pObjects[i] == pObject)
631  {
632  if(i)
633  return (D4D_OBJECT*)pObjects[i-1];
634  else
635  return D4D_GetLastObject(pObject->pData->pScreen);
636  }
637  i++;
638  }
639  // Error case
640  return NULL;
641 }
642 
643 /**************************************************************/
649 {
650  D4D_OBJECT* pParent;
651  // D4D_OBJECT* pSibling;
652 
653  pParent = D4D_GetParentObject(pObject);
654 
655  if(!pParent)
656  return D4D_FindPreviousObjectOnScreen(pObject);
657 
658  // return pointer on parent sibling object or null if there is no parent previous sibling
659  return D4D_FindPreviousSiblingObject(pParent);
660 }
661 
662 /**************************************************************/
668 {
669  D4D_OBJECT* pParent;
671  pParent = D4D_GetParentObject(pObject);
672 
673  if(!pParent)
674  return D4D_FindPreviousObjectOnScreen(pObject);
675 
676  while(pParent->pRelations[i])
677  {
678  if(pParent->pRelations[i] == pObject)
679  {
681  return (D4D_OBJECT*)pParent->pRelations[i-1];
682  else
683  return NULL;
684  }
685  i++;
686  }
687 
688  return NULL;
689 }
690 
691 
692 /**************************************************************/
698 {
699  D4D_OBJECT* pLocObject;
700 
701 
702  // Compatible mode - just only screen top level objects
703  if(pObject->pRelations == NULL)
704  {
705  pLocObject = D4D_FindPreviousObjectOnScreen(pObject);
706 
707  if(pLocObject->pRelations == NULL)
708  return pLocObject;
709 
710  }else
711  {
712  // find out the "latest child" of my previous sibling
713 
714  // Does I have siblings?
715  pLocObject = D4D_FindPreviousSiblingObject(pObject);
716  }
717 
718  if(childrenAlso)
719  {
720  while(pLocObject && pLocObject->pRelations)
721  {
722  D4D_OBJECT** pChild = (D4D_OBJECT**)&pLocObject->pRelations[D4D_OBJECT_USR_DATA_CHILD_IX];
723  //Check the children
724  if(*pChild)
725  { while(*(pChild + 1)) //Find out the last child
726  {
727  pChild++;
728  }
729  pLocObject = *pChild;
730  }else
731  return pLocObject;
732  }
733  }else if(pLocObject)
734  return pLocObject;
735 
736  pLocObject = D4D_GetParentObject(pObject);
737 
738  if(pLocObject)
739  return pLocObject;
740 
741  return D4D_FindPreviousObjectOnScreen(pObject);
742 }
743 
744 
745 /**************************************************************/
750 void D4D_SetObjectFlags(D4D_OBJECT* pObject, D4D_OBJECT_FLAGS flagsMask, D4D_BOOL alsoChildren)
751 {
752  pObject->pData->flags |= flagsMask;
753 
754  if(alsoChildren && (pObject->pRelations))
755  {
757 
758  while(*pChild)
759  {
760  D4D_SetObjectFlags(*pChild, flagsMask, D4D_TRUE);
761  pChild++;
762  }
763  }
764 
766  {
767  if(pObject->pData->pScreen)
768  (pObject->pData->pScreen)->pData->flags |= D4D_SCR_FINT_CHECKOBJECTS;
769  }
770 }
771 
772 /**************************************************************/
778 {
779  pObject->pData->pScreen = pScreen;
780 
781  if(pObject->pRelations)
782  {
784 
785  while(*pChild)
786  {
787  D4D_SetObjectScreenPointer(*pChild, pScreen);
788  pChild++;
789  }
790  }
791 }
#define D4D_OBJECT_F_TOUCHENABLE
Object has enabled touch screen capability.
Definition: d4d_object.h:75
D4D_BOOL D4D_IsMineFocus(D4D_OBJECT *pObject)
Function find out if the object (including compounded objects) is focused.
Definition: d4d_object.c:348
D4D_OBJECT * D4D_GetParentObject(D4D_OBJECT *pObject)
Definition: d4d_object.c:498
D4D_OBJECT * d4d_pKeysCapturer
Definition: d4d_base.c:69
void D4D_InvalidateScreen(const D4D_SCREEN *pScreen, D4D_BOOL bComplete)
The function mark the screen and its abject as &quot;redraw pending&quot;.
Definition: d4d_screen.c:238
void D4D_EnableTabStop(D4D_OBJECT_PTR pObj, D4D_BOOL bEnable)
Function enables TabStop on the object.
Definition: d4d_object.c:255
struct D4D_SCREEN_S * pScreen
pointer to object screen owner - it is placed in RAM bacause one object could be used in multiply scr...
Definition: d4d_object.h:146
Type definition of eGUI point structure.
Definition: d4d_types.h:223
const D4D_OBJECT *const * pObjects
NULL-terminated array of objects (may lay in ROM)
Definition: d4d_screen.h:165
D4D_COOR left
Margin of left side.
Definition: d4d_types.h:246
On Init message - is send for first time when the object is inicialized.
Definition: d4d_base.h:370
D4D object messages structure.
Definition: d4d_base.h:400
D4D_OBJECT_DATA_PTR pData
Pointer on runtime object data.
Definition: d4d_object.h:180
D4D_OBJECT * D4D_FindPreviousSiblingObject(D4D_OBJECT *pObject)
Definition: d4d_object.c:667
#define D4D_FALSE
This is definition of boolean operation value in eGUI - FALSE.
Definition: d4d_types.h:104
#define D4D_OBJECT_F_TABSTOP
Object can be focused.
Definition: d4d_object.h:74
#define D4D_OBJECT_F_REDRAWSTATE
Definition: d4d_object.h:112
D4D_OBJECT * D4D_GetLastObject(D4D_SCREEN *pScreen)
The function returns the pointer to last object in the screen.
Definition: d4d_screen.c:656
D4D_OBJECT * D4D_FindNextParentSiblingObject(D4D_OBJECT *pObject)
Definition: d4d_object.c:539
#define D4D_LOG_EXOR(a, b)
Macro that do logical EX-OR on the input variables.
Definition: d4d_base.h:497
#define D4D_OBJECT_F_TIMETICK
Object will gets the time tick events.
Definition: d4d_object.h:78
#define D4D_OBJECT_F_ENABLED
Object after initialization is enabled.
Definition: d4d_object.h:73
#define D4D_TRUE
This is definition of boolean operation value in eGUI - TRUE.
Definition: d4d_types.h:106
D4D_BOOL D4D_ObjectCheckCoordinates(D4D_OBJECT *pThis, D4D_POINT point)
Definition: d4d_object.c:459
D4D_SCREEN_FLAGS flags
Screen behaviour flags.
Definition: d4d_screen.h:182
struct D4D_OBJECT_S * pObject
Pointer to object who is receiver of this message. If the receiver is just screen this field must be ...
Definition: d4d_base.h:402
D4D Driver main header file.
#define D4D_OBJECT_F_REDRAW
Definition: d4d_object.h:110
D4D_COOR D4D_GetScrHeaderSize(D4D_SCREEN *pScreen)
Definition: d4d_screen.c:767
D4D_OBJECT_FLAGS flags
runtime object flags
Definition: d4d_object.h:145
D4D_OBJECT * D4D_FindNextSiblingObject(D4D_OBJECT *pObject)
Definition: d4d_object.c:558
D4D_OBJECT * D4D_FindNextObjectOnScreen(D4D_OBJECT *pObject)
Definition: d4d_object.c:514
D4D Driver private header file.
void D4D_SetObjectFlags(D4D_OBJECT *pObject, D4D_OBJECT_FLAGS flagsMask, D4D_BOOL alsoChildren)
Definition: d4d_object.c:750
void D4D_FocusNextObject(const D4D_SCREEN *pScreen, D4D_BOOL bInitialSearch)
The function change focus to the next object in the given screen.
Definition: d4d_screen.c:286
void D4D_EnableObject(D4D_OBJECT_PTR pObj, D4D_BOOL bEnable)
Function enables object.
Definition: d4d_object.c:273
D4D_COOR cx
Size in axis X (width)
Definition: d4d_types.h:232
Byte D4D_COOR
Type definition of eGUI coordination variables.
Definition: d4d_types.h:219
D4D_POINT position
Position on the screen/object.
Definition: d4d_object.h:169
D4D_OBJECT * D4D_FindPreviousObjectOnScreen(D4D_OBJECT *pObject)
Definition: d4d_object.c:622
LWord D4D_OBJECT_FLAGS
The object flags type. The masks are described here D4D OBJECT Defines masks of object behaviour flag...
Definition: d4d_object.h:128
#define D4D_OBJECT_USR_DATA_CHILD_IX
The relations object index to relation array for first child object.
Definition: d4d_object.h:103
D4D_COOR bottom
Margin of bottom side.
Definition: d4d_types.h:249
void D4D_ObjOnMessage(D4D_MESSAGE *pMsg)
Definition: d4d_object.c:443
void D4D_ShowObject(D4D_OBJECT_PTR pObject, D4D_BOOL bShow)
Function control visibility of object on screen.
Definition: d4d_object.c:92
D4D_COOR right
Margin of right side.
Definition: d4d_types.h:248
Byte d4d_scratchPad[D4D_SCRATCHPAD_SIZE]
Definition: d4d_base.c:56
void D4D_FocusSet(const D4D_SCREEN *pScreen, D4D_OBJECT_PTR pObject)
The function set the obejct focus to new object.
Definition: d4d_screen.c:430
#define NULL
Type definition of null pointer.
Definition: d4d_types.h:184
D4D_OBJECT_USR_DATA userData
The pointer on user data container (user pointer and optionaly parent/children).
Definition: d4d_object.h:176
unsigned long LWord
Type definition of LWord (unsigned 32-bit).
Definition: d4d_types.h:167
D4D_COOR y
Coordination in axis Y.
Definition: d4d_types.h:226
D4D_SCREEN * D4D_GetActiveScreen(void)
Returns pointer to current active screen.
Definition: d4d_screen.c:78
#define D4D_OBJECT_F_NOTINIT
Definition: d4d_object.h:113
D4D_OBJECT_PTR D4D_GetFocusedObject(const D4D_SCREEN *pScreen)
The function returns pointer to object that is focused in given screen.
Definition: d4d_screen.c:266
D4D_SIZE size
Screen size (standard screen has full size of physical screen)
Definition: d4d_screen.h:176
D4D_MSGID nMsgId
Type of message.
Definition: d4d_base.h:404
D4D_BOOL D4D_HasObjectChildren(D4D_OBJECT *pObject)
Definition: d4d_object.c:479
D4D_SIZE size
Size of the object.
Definition: d4d_object.h:170
D4D_OBJECT * D4D_FindPreviousParentSiblingObject(D4D_OBJECT *pObject)
Definition: d4d_object.c:648
#define D4D_OBJECT_USR_DATA_PARENT_IX
The relations object index to relation array for parent object.
Definition: d4d_object.h:101
D4D_BOOL D4D_IsVisible(D4D_OBJECT *pObject)
Function find out if the object is visible or not.
Definition: d4d_object.c:325
The object main structure type definition.
Definition: d4d_object.h:167
void D4D_CaptureKeys(D4D_OBJECT_PTR pObj)
Function switch on capturing the keys to objects.
Definition: d4d_object.c:190
#define D4D_BEVEL_WIDTH
D4D_BEVEL_WIDTH constant declaration - can&#39;t be changed!
void D4D_SetObjectScreenPointer(D4D_OBJECT *pObject, D4D_SCREEN *pScreen)
Definition: d4d_object.c:777
D4D_COOR cy
Size in axis Y (height)
Definition: d4d_types.h:233
void * D4D_GetUserPointer(D4D_OBJECT *pThis)
Function return the object user data.
Definition: d4d_object.c:131
D4D_OBJECT_RELATIONS pRelations
Relationship between the objects.
Definition: d4d_object.h:177
#define D4D_OBJECT_F_VISIBLE
Object after initialization is visible on the screen.
Definition: d4d_object.h:72
#define D4D_OBJECT_F_FASTTOUCH
Object has enabled fast touch screen capability. This option supports only a some objects (button...
Definition: d4d_object.h:76
LWord D4D_BOOL
Type definition of eGUI boolean.
Definition: d4d_types.h:204
#define D4D_UNUSED(x)
Macro used just for notify compiler that the input parameter is not used.
Definition: d4d_base.h:504
Type definition of eGUI size structure.
Definition: d4d_types.h:230
D4D_OBJECT * D4D_FindNextObject(D4D_OBJECT *pObject, D4D_BOOL childrenAlso)
Definition: d4d_object.c:587
Kill Capture message - is send when the object is losing capture keys status.
Definition: d4d_base.h:376
void D4D_EnableTimeTicks(D4D_OBJECT_PTR pObj, D4D_BOOL bEnable)
Function enable or diasble receiving timeticks for an OBJECT.
Definition: d4d_object.c:172
The screen structure type. The main screen structure that contains all needed data to run the eGUI sc...
Definition: d4d_screen.h:162
Set Capture message - is send when the object is getting capture keys status.
Definition: d4d_base.h:375
void D4D_InvalidateObject(D4D_OBJECT_PTR pObject, D4D_BOOL bComplete)
Function invalidate object to redraw on screen.
Definition: d4d_object.c:71
#define D4D_OBJECT_F_REDRAWC
Definition: d4d_object.h:111
D4D_MARGIN * pMargin
Object inner margin.
Definition: d4d_object.h:172
void D4D_SendMessage(D4D_MESSAGE *pMsg)
Definition: d4d_base.c:681
#define D4D_SCR_FINT_CHECKOBJECTS
Definition: d4d_screen.h:130
void D4D_EnableTouchScreen(D4D_OBJECT_PTR pObj, D4D_BOOL bEnable, D4D_BOOL bFastTouch)
Function enables touchs screen capability and sets also mode of touch event.
Definition: d4d_object.c:151
struct D4D_SCREEN_S * pScreen
Pointer to screen who is receiver of this message.
Definition: d4d_base.h:403
#define D4D_SCR_F_BEVEL
The screen has bevel.
Definition: d4d_screen.h:104
D4D_SIZE D4D_GetClientScreenSize(D4D_OBJECT *pObject)
The function return the real client size of object.
Definition: d4d_object.c:382
#define D4D_SCR_F_OUTLINE
The screen has out line.
Definition: d4d_screen.h:103
D4D_COOR top
Margin of top side.
Definition: d4d_types.h:247
D4D_COOR x
Coordination in axis X.
Definition: d4d_types.h:225
D4D_BOOL D4D_IsEnabled(D4D_OBJECT *pObject)
Function find out if the object is enabled or not.
Definition: d4d_object.c:303
D4D_OBJECT * D4D_FindPreviousObject(D4D_OBJECT *pObject, D4D_BOOL childrenAlso)
Definition: d4d_object.c:697
D4D_OBJECT * D4D_GetCapturedObject(void)
Function returns the current keys capturing object pointer.
Definition: d4d_object.c:241