Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

  1. /*
  2.  * This file is part of libdom.
  3.  * Licensed under the MIT License,
  4.  *                http://www.opensource.org/licenses/mit-license.php
  5.  * Copyright 2009 Bo Yang <struggleyb.nku@gmail.com>
  6.  */
  7.  
  8. #include <stdlib.h>
  9.  
  10. #include "events/mouse_multi_wheel_event.h"
  11. #include "events/keyboard_event.h"
  12. #include "core/document.h"
  13.  
  14. #include "utils/utils.h"
  15.  
  16. static void _virtual_dom_mouse_multi_wheel_event_destroy(
  17.                 struct dom_event *evt);
  18.  
  19. static struct dom_event_private_vtable _event_vtable = {
  20.         _virtual_dom_mouse_multi_wheel_event_destroy
  21. };
  22.  
  23. /* Constructor */
  24. dom_exception _dom_mouse_multi_wheel_event_create(struct dom_document *doc,
  25.                 struct dom_mouse_multi_wheel_event **evt)
  26. {
  27.         *evt = malloc(sizeof(dom_mouse_multi_wheel_event));
  28.         if (*evt == NULL)
  29.                 return DOM_NO_MEM_ERR;
  30.        
  31.         ((struct dom_event *) *evt)->vtable = &_event_vtable;
  32.  
  33.         return _dom_mouse_multi_wheel_event_initialise(doc, *evt);
  34. }
  35.  
  36. /* Destructor */
  37. void _dom_mouse_multi_wheel_event_destroy(
  38.                 struct dom_mouse_multi_wheel_event *evt)
  39. {
  40.         _dom_mouse_multi_wheel_event_finalise((dom_ui_event *) evt);
  41.  
  42.         free(evt);
  43. }
  44.  
  45. /* Initialise function */
  46. dom_exception _dom_mouse_multi_wheel_event_initialise(struct dom_document *doc,
  47.                 struct dom_mouse_multi_wheel_event *evt)
  48. {
  49.         return _dom_mouse_event_initialise(doc, (dom_mouse_event *) evt);
  50. }
  51.  
  52. /* The virtual destroy function */
  53. void _virtual_dom_mouse_multi_wheel_event_destroy(struct dom_event *evt)
  54. {
  55.         _dom_mouse_multi_wheel_event_destroy(
  56.                         (dom_mouse_multi_wheel_event *) evt);
  57. }
  58.  
  59. /*----------------------------------------------------------------------*/
  60. /* The public API */
  61.  
  62. /**
  63.  * Get wheelDeltaX
  64.  *
  65.  * \param evt  The Event object
  66.  * \param x    The returned wheelDeltaX
  67.  * \return DOM_NO_ERR.
  68.  */
  69. dom_exception _dom_mouse_multi_wheel_event_get_wheel_delta_x(
  70.                 dom_mouse_multi_wheel_event *evt, int32_t *x)
  71. {
  72.         *x = evt->x;
  73.  
  74.         return DOM_NO_ERR;
  75. }
  76.  
  77. /**
  78.  * Get wheelDeltaY
  79.  *
  80.  * \param evt  The Event object
  81.  * \param y    The returned wheelDeltaY
  82.  * \return DOM_NO_ERR.
  83.  */
  84. dom_exception _dom_mouse_multi_wheel_event_get_wheel_delta_y(
  85.                 dom_mouse_multi_wheel_event *evt, int32_t *y)
  86. {
  87.         *y = evt->y;
  88.  
  89.         return DOM_NO_ERR;
  90. }
  91.  
  92. /**
  93.  * Get wheelDeltaZ
  94.  *
  95.  * \param evt  The Event object
  96.  * \param z    The returned wheelDeltaZ
  97.  * \return DOM_NO_ERR.
  98.  */
  99. dom_exception _dom_mouse_multi_wheel_event_get_wheel_delta_z(
  100.                 dom_mouse_multi_wheel_event *evt, int32_t *z)
  101. {
  102.         *z = evt->z;
  103.  
  104.         return DOM_NO_ERR;
  105. }
  106.  
  107. /**
  108.  * Intialise this event with namespace
  109.  *
  110.  * \param evt            The Event object
  111.  * \param namespace      The namespace of this event
  112.  * \param type           The event's type
  113.  * \param bubble         Whether this is a bubbling event
  114.  * \param cancelable     Whether this is a cancelable event
  115.  * \param view           The AbstractView associated with this event
  116.  * \param detail         The detail information of this mouse event
  117.  * \param screen_x       The x position of the mouse pointer in screen
  118.  * \param screen_y       The y position of the mouse pointer in screen
  119.  * \param client_x       The x position of the mouse pointer in client window
  120.  * \param client_y       The y position of the mouse pointer in client window
  121.  * \param button         The mouse button pressed
  122.  * \param et             The related target of this event, may be NULL
  123.  * \param modifier_list  The string contains the modifier identifier strings
  124.  * \param wheel_delta_x  The wheelDeltaX
  125.  * \param wheel_delta_y  The wheelDeltaY
  126.  * \param wheel_delta_z  The wheelDeltaZ
  127.  * \return DOM_NO_ERR on success, appropriate dom_exception on failure.
  128.  */
  129. dom_exception _dom_mouse_multi_wheel_event_init_ns(
  130.                 dom_mouse_multi_wheel_event *evt, dom_string *namespace,
  131.                 dom_string *type,  bool bubble, bool cancelable,
  132.                 struct dom_abstract_view *view, int32_t detail, int32_t screen_x,
  133.                 int32_t screen_y, int32_t client_x, int32_t client_y,
  134.                 unsigned short button, dom_event_target *et,
  135.                 dom_string *modifier_list, int32_t wheel_delta_x,
  136.                 int32_t wheel_delta_y, int32_t wheel_delta_z)
  137. {
  138.         dom_exception err;
  139.         dom_mouse_event *e = (dom_mouse_event *) evt;
  140.  
  141.         evt->x = wheel_delta_x;
  142.         evt->y = wheel_delta_y;
  143.         evt->z = wheel_delta_z;
  144.  
  145.         err = _dom_parse_modifier_list(modifier_list, &e->modifier_state);
  146.         if (err != DOM_NO_ERR)
  147.                 return err;
  148.  
  149.         return _dom_mouse_event_init_ns(&evt->base, namespace, type, bubble,
  150.                         cancelable, view, detail ,screen_x, screen_y, client_x,
  151.                         client_y, false, false, false, false, button, et);
  152. }
  153.  
  154.