📄 qt_transition.cpp
字号:
QRegion clip_region; paint.begin(qpm); paint.drawImage(L,T,img1,L,T,W,H); std::vector< rect >::iterator newrect; for(newrect=m_newrectlist.begin(); newrect != m_newrectlist.end(); newrect++) { rect corner_rect = *newrect; corner_rect.translate(m_dst->get_global_topleft()); corner_rect &= m_dst->get_clipped_screen_rect(); int L = corner_rect.left(), T = corner_rect.top(), W = corner_rect.width(), H = corner_rect.height(); AM_DBG logger::get_logger()->debug("qt_transition_blitclass_rectlist: (L,T,W,H)=(%d,%d,%d,%d)",L,T,W,H); QRegion newcorner(L,T,W,H); clip_region += newcorner; } paint.setClipRegion(clip_region); paint.drawImage(L,T,img2,L,T,W,H); paint.flush(); paint.end(); finalize_transition(m_outtrans, aqw, m_dst);}voidqt_transition_blitclass_poly::update(){ AM_DBG logger::get_logger()->debug("qt_transition_blitclass_poly::update(%f)", m_progress); ambulant_qt_window *aqw = (ambulant_qt_window *)m_dst->get_gui_window(); QPixmap *npm, *qpm; const lib::point& dst_global_topleft = m_dst->get_global_topleft(); setup_transition(m_outtrans, aqw, &qpm, &npm);// QImage img1 = qpm->convertToImage(); QImage img2 = npm->convertToImage(); QPointArray qpa; int idx = 0; std::vector<point>::iterator newpoint; for( newpoint=m_newpolygon.begin(); newpoint != m_newpolygon.end(); newpoint++) { point p = *newpoint + dst_global_topleft; qpa.putPoints(idx++, 1, p.x, p.y); } QRegion qreg(qpa, true); const rect& newrect_whole = m_dst->get_clipped_screen_rect(); int L = newrect_whole.left(), T = newrect_whole.top(), W = newrect_whole.width(), H = newrect_whole.height(); QPainter paint; paint.begin(qpm); AM_DBG logger::get_logger()->debug("qt_transition_blitclass_poly::update(): ltwh=(%d,%d,%d,%d)",L,T,W,H);// paint.drawImage(L,T,img1,L,T,W,H); paint.setClipRegion(qreg); paint.drawImage(L,T,img2,L,T,W,H); paint.flush(); paint.end(); finalize_transition(m_outtrans, aqw, m_dst);}voidqt_transition_blitclass_polylist::update(){ AM_DBG logger::get_logger()->debug("qt_transition_blitclass_polylist::update(%f)", m_progress); ambulant_qt_window *aqw = (ambulant_qt_window *)m_dst->get_gui_window(); QPixmap *npm, *qpm; const lib::point& dst_global_topleft = m_dst->get_global_topleft(); setup_transition(m_outtrans, aqw, &qpm, &npm);// QImage img1 = qpm->convertToImage(); QImage img2 = npm->convertToImage(); QRegion clip_region; AM_DBG logger::get_logger()->debug("qt_transition_blitclass_polylist: m_newpolygonlist.size()=%d", m_newpolygonlist.size()); std::vector< std::vector<point> >::iterator partpolygon; for (partpolygon=m_newpolygonlist.begin(); partpolygon!=m_newpolygonlist.end(); partpolygon++) { std::vector<point>::iterator newpoint; AM_DBG logger::get_logger()->debug("qt_transition_blitclass_polylist: partpolygon.size()=%d", partpolygon->size()); QPointArray qpa; int idx = 0; for( newpoint=partpolygon->begin(); newpoint != partpolygon->end(); newpoint++) { point p = *newpoint + dst_global_topleft; qpa.putPoints(idx++, 1, p.x, p.y); AM_DBG logger::get_logger()->debug("qt_transition_blitclass_polylist: idx=%d, p=(%d,%d)", idx, p.x, p.y); } QRegion qreg(qpa, true); clip_region += qreg; } const rect& newrect_whole = m_dst->get_clipped_screen_rect(); int L = newrect_whole.left(), T = newrect_whole.top(), W = newrect_whole.width(), H = newrect_whole.height(); AM_DBG logger::get_logger()->debug("qt_transition_blitclass_polylist::update() drawImage npm=0x%x ltwh=(%d,%d,%d,%d)",npm,L,T,W,H); QPainter paint; paint.begin(qpm);// paint.drawImage(L,T,img1,L,T,W,H); paint.setClipRegion(clip_region); paint.drawImage(L,T,img2,L,T,W,H); paint.flush(); paint.end(); finalize_transition(m_outtrans, aqw, m_dst);}smil2::transition_engine *qt_transition_engine(common::surface *dst, bool is_outtrans, const transition_info *info){ smil2::transition_engine *rv; AM_DBG logger::get_logger()->debug("qt_transition_engine: info=0x%x info->m_type=%d", info, info->m_type); switch(info->m_type) { // Series 1: edge wipes case barWipe: rv = new qt_transition_engine_barwipe(); break; case boxWipe: rv = new qt_transition_engine_boxwipe(); break; case fourBoxWipe: rv = new qt_transition_engine_fourboxwipe(); break; case barnDoorWipe: rv = new qt_transition_engine_barndoorwipe(); break; case diagonalWipe: rv = new qt_transition_engine_diagonalwipe(); break; case miscDiagonalWipe: rv = new qt_transition_engine_miscdiagonalwipe(); break; case veeWipe: rv = new qt_transition_engine_veewipe(); break; case barnVeeWipe: rv = new qt_transition_engine_barnveewipe(); break; case zigZagWipe: rv = new qt_transition_engine_zigzagwipe(); break; case barnZigZagWipe: rv = new qt_transition_engine_barnzigzagwipe(); break; case bowTieWipe: rv = new qt_transition_engine_bowtiewipe(); break; // series 2: iris wipes case irisWipe: rv = new qt_transition_engine_iriswipe(); break; case pentagonWipe: rv = new qt_transition_engine_pentagonwipe(); break; case arrowHeadWipe: rv = new qt_transition_engine_arrowheadwipe(); break; case triangleWipe: rv = new qt_transition_engine_trianglewipe(); break; case hexagonWipe: rv = new qt_transition_engine_hexagonwipe(); break; case eyeWipe: rv = new qt_transition_engine_eyewipe(); break; case roundRectWipe: rv = new qt_transition_engine_roundrectwipe(); break; case ellipseWipe: rv = new qt_transition_engine_ellipsewipe(); break; case starWipe: rv = new qt_transition_engine_starwipe(); break; case miscShapeWipe: rv = new qt_transition_engine_miscshapewipe(); break; // series 3: clock-type wipes case clockWipe: rv = new qt_transition_engine_clockwipe(); break; case singleSweepWipe: rv = new qt_transition_engine_singlesweepwipe(); break; case doubleSweepWipe: rv = new qt_transition_engine_doublesweepwipe(); break; case saloonDoorWipe: rv = new qt_transition_engine_saloondoorwipe(); break; case windshieldWipe: rv = new qt_transition_engine_windshieldwipe(); break; case fanWipe: rv = new qt_transition_engine_fanwipe(); break; case doubleFanWipe: rv = new qt_transition_engine_doublefanwipe(); break; case pinWheelWipe: rv = new qt_transition_engine_pinwheelwipe(); break; // series 4: matrix wipe types case snakeWipe: rv = new qt_transition_engine_snakewipe(); break; case waterfallWipe: rv = new qt_transition_engine_waterfallwipe(); break; case spiralWipe: rv = new qt_transition_engine_spiralwipe(); break; case parallelSnakesWipe: rv = new qt_transition_engine_parallelsnakeswipe(); break; case boxSnakesWipe: rv = new qt_transition_engine_boxsnakeswipe(); break; // series 5: SMIL-specific types case pushWipe: rv = new qt_transition_engine_pushwipe(); break; case slideWipe: rv = new qt_transition_engine_slidewipe(); break; case fade: rv = new qt_transition_engine_fade(); break; default: logger::get_logger()->warn("qt_transition_engine: transition type %s not yet implemented", repr(info->m_type).c_str()); rv = NULL; } if (rv) rv->init(dst, is_outtrans, info); return rv;}} // namespace qt} // namespace gui} //namespace ambulant
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -