static nsresult NSAPI handle_htmlevent(nsIDOMEventListener *iface, nsIDOMEvent *event) { nsEventListener *This = impl_from_nsIDOMEventListener(iface); HTMLDocumentNode *doc = This->This->doc; const PRUnichar *type; nsIDOMEventTarget *event_target; nsIDOMNode *nsnode; nsAString type_str; eventid_t eid; nsresult nsres; TRACE("%p\n", This->This); if(!doc) { WARN("NULL doc\n"); return NS_OK; } nsAString_Init(&type_str, NULL); nsIDOMEvent_GetType(event, &type_str); nsAString_GetData(&type_str, &type); eid = str_to_eid(type); nsAString_Finish(&type_str); nsres = nsIDOMEvent_GetTarget(event, &event_target); if(NS_FAILED(nsres) || !event_target) { ERR("GetEventTarget failed: %08x\n", nsres); return NS_OK; } nsres = nsIDOMEventTarget_QueryInterface(event_target, &IID_nsIDOMNode, (void**)&nsnode); nsIDOMEventTarget_Release(event_target); if(NS_FAILED(nsres)) { ERR("Could not get nsIDOMNode: %08x\n", nsres); return NS_OK; } fire_event(doc, eid, TRUE, nsnode, event, NULL); nsIDOMNode_Release(nsnode); return NS_OK; }
static nsresult NSAPI handle_load(nsIDOMEventListener *iface, nsIDOMEvent *event) { HTMLDocumentNode *doc = NSEVENTLIST_THIS(iface)->This->doc; nsIDOMHTMLElement *nsbody = NULL; HTMLDocumentObj *doc_obj = NULL; TRACE("(%p)\n", doc); if(!doc || !doc->basedoc.window) return NS_ERROR_FAILURE; if(doc->basedoc.doc_obj && doc->basedoc.doc_obj->basedoc.doc_node == doc) doc_obj = doc->basedoc.doc_obj; connect_scripts(doc->basedoc.window); if(doc_obj) handle_docobj_load(doc_obj); set_ready_state(doc->basedoc.window, READYSTATE_COMPLETE); if(doc_obj) { if(doc_obj->view_sink) IAdviseSink_OnViewChange(doc_obj->view_sink, DVASPECT_CONTENT, -1); set_statustext(doc_obj, IDS_STATUS_DONE, NULL); update_title(doc_obj); } if(!doc->nsdoc) { ERR("NULL nsdoc\n"); return NS_ERROR_FAILURE; } nsIDOMHTMLDocument_GetBody(doc->nsdoc, &nsbody); if(nsbody) { fire_event(doc, EVENTID_LOAD, TRUE, (nsIDOMNode*)nsbody, event); nsIDOMHTMLElement_Release(nsbody); } return NS_OK; }
mb_buf_ptr SimpleParser::parse_event(mb_buf_ptr buf_ptr) { if (len == 0) { //try again len_found = false; return buf_ptr; } //just keep moving bytes into the event buffer until it reaches len number of bytes unsigned int num_bytes_to_copy = (buf_ptr.m_Len > len - event_str.length()) ? len - event_str.length() : buf_ptr.m_Len; event_str.append((char*)buf_ptr.m_Ptr, num_bytes_to_copy); if (event_str.length() == len) fire_event(); //get rid of what we have used buf_ptr.m_Ptr += num_bytes_to_copy; buf_ptr.m_Len -= num_bytes_to_copy; return buf_ptr; }
HRESULT dispatch_event(HTMLDOMNode *node, const WCHAR *event_name, VARIANT *event_obj, VARIANT_BOOL *cancelled) { eventid_t eid; eid = attr_to_eid(event_name); if(eid == EVENTID_LAST) { WARN("unknown event %s\n", debugstr_w(event_name)); return E_INVALIDARG; } if(event_obj && V_VT(event_obj) != VT_EMPTY && V_VT(event_obj) != VT_ERROR) FIXME("event_obj not implemented\n"); if(!(event_info[eid].flags & EVENT_DEFAULTLISTENER)) { FIXME("not EVENT_DEFAULTEVENTHANDLER\n"); return E_NOTIMPL; } fire_event(node->doc, eid, TRUE, node->nsnode, NULL); *cancelled = VARIANT_TRUE; /* FIXME */ return S_OK; }
void Gamestate_II::on_event(const SDL_Event &event) { switch(event.type) { case SDL_JOYAXISMOTION: { float confidence = (float(event.jaxis.value) + 0.5f) / 32767.5f; const float ac = float(fabs(confidence)); const float nm = confidence < 0.0f ? -1.0f : 1.0f; confidence = nm * std::min(std::max(ac - m_joystick_min, 0.0f) / (m_joystick_max - m_joystick_min), 1.0f); fire_event(Zeni_Input_ID(SDL_JOYAXISMOTION, event.jaxis.axis, event.jaxis.which), confidence); } break; case SDL_JOYBALLMOTION: { const int ac = abs(event.jball.xrel); const int nm = event.jball.xrel < 0.0f ? -1 : 1; const float confidence = nm * std::min(std::max(float(ac - m_joyball_min), 0.0f) / (m_joyball_max - m_joyball_min), 1.0f); fire_event(Zeni_Input_ID(SDL_JOYBALLMOTION, event.jball.ball * 2 + 0, event.jball.which), confidence); } { const int ac = abs(event.jball.yrel); const int nm = event.jball.yrel < 0.0f ? -1 : 1; const float confidence = nm * std::min(std::max(float(ac - m_joyball_min), 0.0f) / (m_joyball_max - m_joyball_min), 1.0f); fire_event(Zeni_Input_ID(SDL_JOYBALLMOTION, event.jball.ball * 2 + 1, event.jball.which), confidence); } break; case SDL_JOYBUTTONDOWN: case SDL_JOYBUTTONUP: { const float confidence = event.jbutton.state == SDL_PRESSED ? 1.0f : 0.0f; fire_event(Zeni_Input_ID(SDL_JOYBUTTONDOWN, event.jbutton.button, event.jbutton.which), confidence); } break; case SDL_JOYHATMOTION: { float confidence; switch(event.jhat.value) { case SDL_HAT_LEFT: case SDL_HAT_LEFTDOWN: case SDL_HAT_LEFTUP: confidence = -1.0f; break; case SDL_HAT_RIGHT: case SDL_HAT_RIGHTDOWN: case SDL_HAT_RIGHTUP: confidence = 1.0f; break; case SDL_HAT_CENTERED: case SDL_HAT_DOWN: case SDL_HAT_UP: default: confidence = 0.0f; break; } fire_event(Zeni_Input_ID(SDL_JOYHATMOTION, 0, event.jhat.which), confidence); } { float confidence; switch(event.jhat.value) { case SDL_HAT_DOWN: case SDL_HAT_LEFTDOWN: case SDL_HAT_RIGHTDOWN: confidence = -1.0f; break; case SDL_HAT_UP: case SDL_HAT_LEFTUP: case SDL_HAT_RIGHTUP: confidence = 1.0f; break; case SDL_HAT_CENTERED: case SDL_HAT_LEFT: case SDL_HAT_RIGHT: default: confidence = 0.0f; break; } fire_event(Zeni_Input_ID(SDL_JOYHATMOTION, 1, event.jhat.which), confidence); } break; case SDL_KEYDOWN: case SDL_KEYUP: { const float confidence = event.key.state == SDL_PRESSED ? 1.0f : 0.0f; fire_event(Zeni_Input_ID(SDL_KEYDOWN, event.key.keysym.sym, 0 /*event.key.which*/), confidence); } break; case SDL_MOUSEMOTION: { const int ac = abs(event.motion.xrel); const int nm = event.motion.xrel < 0.0f ? -1 : 1; const float confidence = nm * std::min(std::max(float(ac - m_mouse_min), 0.0f) / (m_mouse_max - m_mouse_min), 1.0f); fire_event(Zeni_Input_ID(SDL_MOUSEMOTION, 0, 0 /*event.motion.which*/), confidence); } { const int ac = abs(event.motion.yrel); const int nm = event.motion.yrel < 0.0f ? -1 : 1; const float confidence = nm * std::min(std::max(float(ac - m_mouse_min), 0.0f) / (m_mouse_max - m_mouse_min), 1.0f); fire_event(Zeni_Input_ID(SDL_MOUSEMOTION, 1, 0 /*event.motion.which*/), confidence); } break; case SDL_MOUSEBUTTONDOWN: case SDL_MOUSEBUTTONUP: { const float confidence = event.button.state == SDL_PRESSED ? 1.0f : 0.0f; fire_event(Zeni_Input_ID(SDL_MOUSEBUTTONDOWN, event.button.button, 0 /*event.button.which*/), confidence); } break; default: Gamestate_Base::on_event(event); break; } }