Ignore:
Timestamp:
Sep 17, 2006, 7:38:51 AM (15 years ago)
Author:
Eugene Romanenko
Message:

Prevent getLinkMapping() call on every redraw if no links on page.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Lucide/SOURCE/plugins/lupoppler/lupoppler.cpp

    r123 r126  
    595595{
    596596    LuDocument_LuLinkMapSequence *mapping = NULL;
     597    mapping = (LuDocument_LuLinkMapSequence *)SOMMalloc( sizeof( LuDocument_LuLinkMapSequence ) );
     598    mapping->_maximum = 0;
     599    mapping->_length = 0;
     600    mapping->_buffer = NULL;
    597601
    598602    LuPopplerDocumentData *somThis = LuPopplerDocumentGetData(somSelf);
     
    605609    obj.free();
    606610
    607     if ( links == NULL ) {
    608         return NULL;
     611    if ( links == NULL ) {  // No links, return empty LuLinkMapSequence
     612        return mapping;
    609613    }
    610614
     
    614618    int len = links->getNumLinks();
    615619
    616     if ( len > 0 )
    617     {
    618         mapping = (LuDocument_LuLinkMapSequence *)SOMMalloc( sizeof( LuDocument_LuLinkMapSequence ) );
    619         mapping->_maximum = len;
    620         mapping->_length = len;
     620    mapping->_maximum = len;
     621    mapping->_length = len;
     622    if ( len != 0 ) {
    621623        mapping->_buffer = (LuLinkMapping *)SOMMalloc( sizeof( LuLinkMapping ) * len );
    622 
    623         for ( int i = 0; i < len; i++ )
    624         {
    625             Link *link = links->getLink( i );
    626             LinkAction *link_action = link->getAction();
    627             build_link( document->doc, &(mapping->_buffer[ i ].link), NULL, link_action );
    628 
    629             link->getRect( &(mapping->_buffer[ i ].area.x1),
    630                            &(mapping->_buffer[ i ].area.y1),
    631                            &(mapping->_buffer[ i ].area.x2),
    632                            &(mapping->_buffer[ i ].area.y2) );
    633 
    634             mapping->_buffer[ i ].area.x1 -= page->page->getCropBox()->x1;
    635             mapping->_buffer[ i ].area.x2 -= page->page->getCropBox()->x1;
    636             mapping->_buffer[ i ].area.y1 -= page->page->getCropBox()->y1;
    637             mapping->_buffer[ i ].area.y2 -= page->page->getCropBox()->y1;
    638 
    639             double y1 = mapping->_buffer[ i ].area.y1;
    640             double y2 = mapping->_buffer[ i ].area.y2;
    641             mapping->_buffer[ i ].area.y1 = height - y2;
    642             mapping->_buffer[ i ].area.y2 = height - y1;
    643         }
     624    }
     625
     626    for ( int i = 0; i < len; i++ )
     627    {
     628        Link *link = links->getLink( i );
     629        LinkAction *link_action = link->getAction();
     630        build_link( document->doc, &(mapping->_buffer[ i ].link), NULL, link_action );
     631
     632        link->getRect( &(mapping->_buffer[ i ].area.x1),
     633                       &(mapping->_buffer[ i ].area.y1),
     634                       &(mapping->_buffer[ i ].area.x2),
     635                       &(mapping->_buffer[ i ].area.y2) );
     636
     637        mapping->_buffer[ i ].area.x1 -= page->page->getCropBox()->x1;
     638        mapping->_buffer[ i ].area.x2 -= page->page->getCropBox()->x1;
     639        mapping->_buffer[ i ].area.y1 -= page->page->getCropBox()->y1;
     640        mapping->_buffer[ i ].area.y2 -= page->page->getCropBox()->y1;
     641
     642        double y1 = mapping->_buffer[ i ].area.y1;
     643        double y2 = mapping->_buffer[ i ].area.y2;
     644        mapping->_buffer[ i ].area.y1 = height - y2;
     645        mapping->_buffer[ i ].area.y2 = height - y1;
    644646    }
    645647
Note: See TracChangeset for help on using the changeset viewer.