MessageHandler::Result ScriptMessageHandler::doHandle(Message &message, QString *reason) { Q_UNUSED(reason); if (message.isIncoming()) return MessageHandler::Accept; QLatin1Literal command("/script"); QString text = message.text(); if (text.size() < command.size() + 2 || !text.startsWith(QLatin1String(command.data())) || !text.at(command.size()).isSpace()) { static QRegExp regexp("\\[\\[(.*)\\]\\]", Qt::CaseInsensitive); Q_ASSERT(regexp.isValid()); int pos = 0; bool first = true; while ((pos = regexp.indexIn(text, pos)) != -1) { if (first) { first = false; openContext(message.chatUnit()); } QString result = m_engine->evaluate(regexp.cap(1)).toString(); debug() << regexp.cap(1) << result; text.replace(pos, regexp.matchedLength(), result); pos += result.length(); } if (!first) { closeContext(); message.setText(text); } return MessageHandler::Accept; } openContext(message.chatUnit()); m_engine->evaluate(message.text().mid(command.size() + 1)); closeContext(); return MessageHandler::Reject; }
void MediaEngine::DoState(PointerWrap &p) { p.Do(m_videoStream); p.Do(m_audioStream); p.DoArray(m_mpegheader, sizeof(m_mpegheader)); p.Do(m_ringbuffersize); u32 hasloadStream = m_pdata != NULL; p.Do(hasloadStream); if (hasloadStream && p.mode == p.MODE_READ) loadStream(m_mpegheader, 2048, m_ringbuffersize); u32 hasopencontext = m_pFormatCtx != NULL; p.Do(hasopencontext); if (hasopencontext && p.mode == p.MODE_READ) openContext(); if (m_pdata) m_pdata->DoState(p); if (m_demux) m_demux->DoState(p); p.Do(m_videopts); p.Do(m_audiopts); p.Do(m_isVideoEnd); p.Do(m_noAudioData); p.DoMarker("MediaEngine"); }
void MediaEngine::DoState(PointerWrap &p){ auto s = p.Section("MediaEngine", 1); if (!s) return; p.Do(m_videoStream); p.Do(m_audioStream); p.DoArray(m_mpegheader, sizeof(m_mpegheader)); p.Do(m_ringbuffersize); u32 hasloadStream = m_pdata != NULL; p.Do(hasloadStream); if (hasloadStream && p.mode == p.MODE_READ) loadStream(m_mpegheader, 2048, m_ringbuffersize); #ifdef USE_FFMPEG u32 hasopencontext = m_pFormatCtx != NULL; #else u32 hasopencontext = false; #endif p.Do(hasopencontext); if (hasopencontext && p.mode == p.MODE_READ) openContext(); if (m_pdata) m_pdata->DoState(p); if (m_demux) m_demux->DoState(p); p.Do(m_videopts); p.Do(m_audiopts); p.Do(m_isVideoEnd); p.Do(m_noAudioData); }
bool MediaEngine::loadFile(const char* filename) { PSPFileInfo info = pspFileSystem.GetFileInfo(filename); s64 infosize = info.size; u8* buf = new u8[infosize]; if (!buf) return false; u32 h = pspFileSystem.OpenFile(filename, (FileAccess) FILEACCESS_READ); pspFileSystem.ReadFile(h, buf, infosize); pspFileSystem.CloseFile(h); closeMedia(); // force to clear the useless FBO gpu->Resized(); m_videopts = 0; m_audiopts = 0; m_bufSize = 0x2000; m_decodePos = 0; m_readSize = infosize; m_streamSize = infosize; m_pdata = buf; if (m_readSize > 0x2000) openContext(); return true; }
int MediaEngine::addStreamData(u8* buffer, int addSize) { int size = std::min(addSize, m_streamSize - m_readSize); if (size > 0 && m_pdata) { memcpy(m_pdata + m_readSize, buffer, size); m_readSize += size; if (!m_pFormatCtx && m_readSize > 0x2000) openContext(); if (m_demux) { m_demux->setReadSize(m_readSize); m_demux->demux(); } } return size; }
void MediaEngine::DoState(PointerWrap &p){ auto s = p.Section("MediaEngine", 1, 3); if (!s) return; p.Do(m_videoStream); p.Do(m_audioStream); p.DoArray(m_mpegheader, sizeof(m_mpegheader)); p.Do(m_ringbuffersize); u32 hasloadStream = m_pdata != NULL; p.Do(hasloadStream); if (hasloadStream && p.mode == p.MODE_READ) reloadStream(); #ifdef USE_FFMPEG u32 hasopencontext = m_pFormatCtx != NULL; #else u32 hasopencontext = false; #endif p.Do(hasopencontext); if (hasopencontext && p.mode == p.MODE_READ) openContext(); if (m_pdata) m_pdata->DoState(p); if (m_demux) m_demux->DoState(p); p.Do(m_videopts); p.Do(m_audiopts); if (s >= 2) { p.Do(m_firstTimeStamp); p.Do(m_lastTimeStamp); } p.Do(m_isVideoEnd); bool noAudioDataRemoved; p.Do(noAudioDataRemoved); if (s >= 3) { p.Do(m_audioType); } else { m_audioType = PSP_CODEC_AT3PLUS; } }
int MediaEngine::addStreamData(u8* buffer, int addSize) { int size = addSize; if (size > 0 && m_pdata) { if (!m_pdata->push(buffer, size)) size = 0; if (m_demux) { m_demux->addStreamData(buffer, addSize); m_demux->demux(m_audioStream); } #ifdef USE_FFMPEG if (!m_pFormatCtx) { m_pdata->get_front(m_mpegheader, sizeof(m_mpegheader)); int mpegoffset = bswap32(*(int*)(m_mpegheader + 8)); m_pdata->pop_front(0, mpegoffset); openContext(); } #endif // USE_FFMPEG } return size; }
void XmlOutputStream::openContext( RefPtr< XmlObject > obj ) { // write the header and body of the input object first. That way the context // isn't modified if this operation fails. obj->printHeader( mOutput, mContextStack.size() ); obj->printTextContent( mOutput, mContextStack.size() ); // now push the object onto the context stack. mContextStack.push( obj ); if( obj->hasChildren() ) { // write the complete body of all but the final child to the stream XmlObject::ChildIterator finalChild = obj->endChildren(); --finalChild; std::for_each( obj->beginChildren(), finalChild, WriteFormattedXml( mOutput, mContextStack.size() ) ); // open a context for my final child openContext( *finalChild ); } }
bool MediaEngine::loadStream(u8* buffer, int readSize, int StreamSize) { closeMedia(); // force to clear the useless FBO gpu->Resized(); m_videopts = 0; m_audiopts = 0; m_bufSize = 0x2000; m_decodePos = 0; m_readSize = readSize; m_streamSize = StreamSize; m_pdata = new u8[StreamSize]; if (!m_pdata) return false; memcpy(m_pdata, buffer, m_readSize); if (readSize > 0x2000) openContext(); return true; }
int MediaEngine::addStreamData(const u8 *buffer, int addSize) { int size = addSize; if (size > 0 && m_pdata) { if (!m_pdata->push(buffer, size)) size = 0; if (m_demux) { m_demux->addStreamData(buffer, addSize); } #ifdef USE_FFMPEG if (!m_pFormatCtx && m_pdata->getQueueSize() >= 2048) { m_pdata->get_front(m_mpegheader, sizeof(m_mpegheader)); int mpegoffset = (int)(*(s32_be*)(m_mpegheader + 8)); m_pdata->pop_front(0, mpegoffset); openContext(); } #endif // USE_FFMPEG // We added data, so... not the end anymore? m_isVideoEnd = false; } return size; }
void main() { assert(line_line(line(vec2(0, 0), vec2(5, 5)), line(vec2(0, 5), vec2(5, 0))).result == true); assert(line_line(line(vec2(2.5, 0), vec2(2.5, 5)), line(vec2(0, 2.5), vec2(2.5, 5))).result == true); assert(line_rect(line(vec2(0,1),vec2(5,1)),rect(vec2(5,1),vec2(2,2))).result == true); assert(line_rect(line(vec2(1, 0), vec2(1, 5)), rect(vec2(1, 5), vec2(2, 2))).result == true); srand(time(NULL)); auto w = openContext(1280, 800); //size of window auto m = mat4::ortho(-25, 1280, -25, 800, 0, 100); //size of drawing area //drawing area is shrunk or stretchd to the size of the window Graph *g = Graph::genGrid(32,32,1280,800, 5); Solver dfs(g->getNumNodes(), g->getadjacencyMatrix(), g->getPos()); Entity e(200, g->getPos()[0]); Entity lala(100, vec2(400, 400)); float dt, current, total = 0; glfwSetTime(0); int lastGoal = 0; int newGoal = 0; bool newPath = true; std::vector<rect> obstacles; //used to keep track of the obstacles in the graph obstacles.push_back(rect(vec2( 165, 325), vec2( 50, 300))); //left side obstacles.push_back(rect(vec2(1115, 325), vec2( 50, 300))); //right top obstacles.push_back(rect(vec2( 640, 200), vec2(1000, 50))); //bottom obstacles.push_back(rect(vec2( 640, 800), vec2( 300, 300))); //top box obstacles.push_back(rect(vec2( 640, 0), vec2( 300, 150))); //bottom box for each(auto o in obstacles) g->addObstacle(o.min(), o.max()); //opens the game loop while (updateContext(w)) //calls the draw functions { current = glfwGetTime(); dt = current - total; total = current; if (dt > .16) dt = .16; if (newPath) { bool trying = true; lastGoal = newGoal; while (trying) { newGoal = rand() % g->getNumNodes(); //newGoal = 800; for (int i = 0; i < g->getNumNodes(); i++) if (g->getadjacencyMatrix()[newGoal][i] > 0) trying = false; } e.m_path = Solver::solve(g->getNumNodes(), g->getadjacencyMatrix(), g->getPos(), lastGoal, newGoal); e.m_path = dfs.smoothPath(e.m_path, obstacles); lala.m_path = Solver::solve(g->getNumNodes(), g->getadjacencyMatrix(), g->getPos(), lastGoal, newGoal); lala.m_path = dfs.smoothPath(e.m_path, obstacles); newPath = false; } e.update(dt); lala.update(dt); e.draw(m, 7, vec4(1,1,1,1)); lala.draw(m, 7, vec4(0,1,1,0)); for (int j = 0; j < obstacles.size(); j++) { draw_rect(m, rect(obstacles[j]), vec4(0, 0, 1, 0)); } for (int i = 1; i < e.m_path.size(); i++) //draw path { draw_line(m, line(e.m_path[i - 1], e.m_path[i]), vec4(0, 1, 0, 0)); } if (e.m_targetIndex == e.m_path.size()) { e.m_targetIndex = 0; newPath = true; } } //delete g; //closes the game loop closeContext(w); }
ErrorContext::ErrorContext(char *filename) { openContext(filename); }