bool KHTMLReader::parse_ul(DOM::Element e) { _list_depth++; bool popstateneeded = false; for (DOM::Node items = e.firstChild();!items.isNull();items = items.nextSibling()) { if (items.nodeName().string().toLower() == "li") { if (popstateneeded) { popState(); //popstateneeded = false; } pushNewState(); startNewLayout(); popstateneeded = true; _writer->layoutAttribute(state()->paragraph, "COUNTER", "numberingtype", "1"); _writer->layoutAttribute(state()->paragraph, "COUNTER", "righttext", "."); if (e.tagName().string().toLower() == "ol") { _writer->layoutAttribute(state()->paragraph, "COUNTER", "type", "1"); _writer->layoutAttribute(state()->paragraph, "COUNTER", "numberingtype", "1"); _writer->layoutAttribute(state()->paragraph, "COUNTER", "righttext", "."); } else { _writer->layoutAttribute(state()->paragraph, "COUNTER", "type", "10"); _writer->layoutAttribute(state()->paragraph, "COUNTER", "numberingtype", ""); _writer->layoutAttribute(state()->paragraph, "COUNTER", "righttext", ""); } _writer->layoutAttribute(state()->paragraph, "COUNTER", "depth", QString("%1").arg(_list_depth - 1)); } parseNode(items); } if (popstateneeded) popState(); _list_depth--; return false; }
void KHTMLReader::parseNode(DOM::Node node) { // check if this is a text node. DOM::Text t = node; if (!t.isNull()) { _writer->addText(state()->paragraph, t.data().string(), 1, state()->in_pre_mode); return; // no children anymore... } // is this really needed ? it can't do harm anyway. state()->format = _writer->currentFormat(state()->paragraph, true); state()->layout = _writer->currentLayout(state()->paragraph); pushNewState(); DOM::Element e = node; bool go_recursive = true; if (!e.isNull()) { // get the CSS information parseStyle(e); // get the tag information go_recursive = parseTag(e); } if (go_recursive) { for (DOM::Node q = node.firstChild(); !q.isNull(); q = q.nextSibling()) { parseNode(q); } } popState(); }
void CameraThread::handleEvent(UEvent* anEvent) { if(anEvent->getClassName().compare("ParamEvent") == 0) { if(this->isIdle()) { _stateMutex.lock(); _camera->parseParameters(((ParamEvent*)anEvent)->getParameters()); _stateMutex.unlock(); } else { ULOGGER_DEBUG("changing parameters"); pushNewState(kStateChangingParameters, ((ParamEvent*)anEvent)->getParameters()); } } }
bool KHTMLReader::parse_pre(DOM::Element e) { #if 0 // see Bug #74601 (normal): kword doesn't recognize PRE-tags in HTML //pushNewState(); /// \todo set fixed width font DOM::HTMLElement htmlelement(e); if (! htmlelement.isNull()) _writer->addText(state()->paragraph, htmlelement.innerHTML().string(), 1); startNewParagraph(); //popState(); return false; // children are already handled. #else pushNewState(); state()->in_pre_mode = true; for (DOM::Node q = e.firstChild(); !q.isNull(); q = q.nextSibling()) { parseNode(q); // parse everything... } popState(); return false; // children are already handled. #endif }
bool KHTMLReader::parse_table(DOM::Element e) { if (_writer->isInTable()) { // We are already inside of a table. Tables in tables are not supported // yet. So, just add that table-content as text. for (DOM::Node rows = e.firstChild().firstChild();!rows.isNull();rows = rows.nextSibling()) if (!rows.isNull() && rows.nodeName().string().toLower() == "tr") for (DOM::Node cols = rows.firstChild();!cols.isNull();cols = cols.nextSibling()) if (!cols.isNull()) parseNode(cols); return false; } DOM::Element table_body = e.firstChild(); if (table_body.isNull()) { // If the table_body is empty, we don't continue cause else // KHTML will throw a DOM::DOMException if we try to access // the null element. return true; } int tableno = _writer->createTable(); int nrow = 0; int ncol = 0; bool has_borders = false; QColor bgcolor = parsecolor("#FFFFFF"); if (!table_body.getAttribute("bgcolor").string().isEmpty()) bgcolor = parsecolor(table_body.getAttribute("bgcolor").string()); if ((e.getAttribute("border").string().toInt() > 0)) has_borders = true; // fixme rewrite this proper //(maybe using computed sizes from khtml if thats once exported) for (DOM::Node rowsnode = table_body.firstChild();!rowsnode.isNull();rowsnode = rowsnode.nextSibling()) { DOM::Element rows = rowsnode; if (!rows.isNull() && rows.tagName().string().toLower() == "tr") { QColor obgcolor = bgcolor; if (!rows.getAttribute("bgcolor").string().isEmpty()) bgcolor = parsecolor(rows.getAttribute("bgcolor").string()); ncol = 0; for (DOM::Node colsnode = rows.firstChild();!colsnode.isNull();colsnode = colsnode.nextSibling()) { DOM::Element cols = colsnode; const QString nodename = cols.isNull() ? QString() : cols.nodeName().string().toLower(); if (nodename == "td" || nodename == "th") { QColor bbgcolor = bgcolor; if (!cols.getAttribute("bgcolor").string().isEmpty()) bgcolor = parsecolor(cols.getAttribute("bgcolor").string()); pushNewState(); QRect colrect = cols.getRect(); state()->frameset = _writer->createTableCell(tableno, nrow, ncol, 1, colrect); state()->frameset.firstChild().toElement().setAttribute("bkRed", bgcolor.red()); state()->frameset.firstChild().toElement().setAttribute("bkGreen", bgcolor.green()); state()->frameset.firstChild().toElement().setAttribute("bkBlue", bgcolor.blue()); if (has_borders) { state()->frameset.firstChild().toElement().setAttribute("lWidth", 1); state()->frameset.firstChild().toElement().setAttribute("rWidth", 1); state()->frameset.firstChild().toElement().setAttribute("bWidth", 1); state()->frameset.firstChild().toElement().setAttribute("tWidth", 1); } // fixme don't guess. get it right. state()->paragraph = _writer->addParagraph(state()->frameset); parseNode(cols); _writer->cleanUpParagraph(state()->paragraph); popState(); ncol++; bgcolor = bbgcolor; } } nrow++; bgcolor = obgcolor; } } _writer->finishTable(tableno/*,0,0,r.right()-r.left(),r.bottom()-r.top()*/); // FIXME find something better. startNewParagraph(false, false); _writer->createInline(state()->paragraph, _writer->fetchTableCell(tableno, 0, 0)); startNewParagraph(false, false); return false; // we do our own recursion }
void RtabmapThread::handleEvent(UEvent* event) { if(this->isRunning() && event->getClassName().compare("CameraEvent") == 0) { UDEBUG("CameraEvent"); CameraEvent * e = (CameraEvent*)event; if(e->getCode() == CameraEvent::kCodeImage || e->getCode() == CameraEvent::kCodeImageDepth) { this->addData(e->data()); } } else if(event->getClassName().compare("OdometryEvent") == 0) { UDEBUG("OdometryEvent"); OdometryEvent * e = (OdometryEvent*)event; if(e->isValid()) { this->addData(e->data()); } } else if(event->getClassName().compare("RtabmapEventCmd") == 0) { RtabmapEventCmd * rtabmapEvent = (RtabmapEventCmd*)event; RtabmapEventCmd::Cmd cmd = rtabmapEvent->getCmd(); if(cmd == RtabmapEventCmd::kCmdInit) { ULOGGER_DEBUG("CMD_INIT"); ParametersMap parameters = ((RtabmapEventCmd*)event)->getParameters(); UASSERT(!rtabmapEvent->getStr().empty()); UASSERT(parameters.insert(ParametersPair("RtabmapThread/DatabasePath", rtabmapEvent->getStr())).second); pushNewState(kStateInit, parameters); } else if(cmd == RtabmapEventCmd::kCmdClose) { ULOGGER_DEBUG("CMD_CLOSE"); pushNewState(kStateClose); } else if(cmd == RtabmapEventCmd::kCmdResetMemory) { ULOGGER_DEBUG("CMD_RESET_MEMORY"); pushNewState(kStateReseting); } else if(cmd == RtabmapEventCmd::kCmdDumpMemory) { ULOGGER_DEBUG("CMD_DUMP_MEMORY"); pushNewState(kStateDumpingMemory); } else if(cmd == RtabmapEventCmd::kCmdDumpPrediction) { ULOGGER_DEBUG("CMD_DUMP_PREDICTION"); pushNewState(kStateDumpingPrediction); } else if(cmd == RtabmapEventCmd::kCmdGenerateDOTGraph) { UASSERT(!rtabmapEvent->getStr().empty()); ULOGGER_DEBUG("CMD_GENERATE_DOT_GRAPH"); ParametersMap param; param.insert(ParametersPair("path", rtabmapEvent->getStr())); pushNewState(kStateGeneratingDOTGraph, param); } else if(cmd == RtabmapEventCmd::kCmdGenerateDOTLocalGraph) { std::list<std::string> values = uSplit(rtabmapEvent->getStr(), ';'); UASSERT(values.size() == 3); ULOGGER_DEBUG("CMD_GENERATE_DOT_LOCAL_GRAPH"); ParametersMap param; param.insert(ParametersPair("path", *values.begin())); param.insert(ParametersPair("id", *(++values.begin()))); param.insert(ParametersPair("margin", *values.rbegin())); pushNewState(kStateGeneratingDOTLocalGraph, param); } else if(cmd == RtabmapEventCmd::kCmdGenerateTOROGraphLocal) { UASSERT(!rtabmapEvent->getStr().empty()); ULOGGER_DEBUG("CMD_GENERATE_TORO_GRAPH_LOCAL"); ParametersMap param; param.insert(ParametersPair("path", rtabmapEvent->getStr())); param.insert(ParametersPair("optimized", uNumber2Str(rtabmapEvent->getInt()))); pushNewState(kStateGeneratingTOROGraphLocal, param); } else if(cmd == RtabmapEventCmd::kCmdGenerateTOROGraphGlobal) { UASSERT(!rtabmapEvent->getStr().empty()); ULOGGER_DEBUG("CMD_GENERATE_TORO_GRAPH_GLOBAL"); ParametersMap param; param.insert(ParametersPair("path", rtabmapEvent->getStr())); param.insert(ParametersPair("optimized", uNumber2Str(rtabmapEvent->getInt()))); pushNewState(kStateGeneratingTOROGraphGlobal, param); } else if(cmd == RtabmapEventCmd::kCmdCleanDataBuffer) { ULOGGER_DEBUG("CMD_CLEAN_DATA_BUFFER"); pushNewState(kStateCleanDataBuffer); } else if(cmd == RtabmapEventCmd::kCmdPublish3DMapLocal) { ULOGGER_DEBUG("CMD_PUBLISH_MAP_LOCAL"); ParametersMap param; param.insert(ParametersPair("optimized", uNumber2Str(rtabmapEvent->getInt()))); pushNewState(kStatePublishingMapLocal, param); } else if(cmd == RtabmapEventCmd::kCmdPublish3DMapGlobal) { ULOGGER_DEBUG("CMD_PUBLISH_MAP_GLOBAL"); ParametersMap param; param.insert(ParametersPair("optimized", uNumber2Str(rtabmapEvent->getInt()))); pushNewState(kStatePublishingMapGlobal, param); } else if(cmd == RtabmapEventCmd::kCmdPublishTOROGraphLocal) { ULOGGER_DEBUG("CMD_PUBLISH_TORO_GRAPH_LOCAL"); ParametersMap param; param.insert(ParametersPair("optimized", uNumber2Str(rtabmapEvent->getInt()))); pushNewState(kStatePublishingTOROGraphLocal, param); } else if(cmd == RtabmapEventCmd::kCmdPublishTOROGraphGlobal) { ULOGGER_DEBUG("CMD_PUBLISH_TORO_GRAPH_GLOBAL"); ParametersMap param; param.insert(ParametersPair("optimized", uNumber2Str(rtabmapEvent->getInt()))); pushNewState(kStatePublishingTOROGraphGlobal, param); } else if(cmd == RtabmapEventCmd::kCmdTriggerNewMap) { ULOGGER_DEBUG("CMD_TRIGGER_NEW_MAP"); pushNewState(kStateTriggeringMap); } else if(cmd == RtabmapEventCmd::kCmdPause) { ULOGGER_DEBUG("CMD_PAUSE"); _paused = !_paused; } else { UWARN("Cmd %d unknown!", cmd); } } else if(event->getClassName().compare("ParamEvent") == 0) { ULOGGER_DEBUG("changing parameters"); pushNewState(kStateChangingParameters, ((ParamEvent*)event)->getParameters()); } }