Ignore:
Timestamp:
Jul 24, 2006, 5:57:42 PM (15 years ago)
Author:
Eugene Romanenko
Message:

drawing fixes and improvements, djvu plugin fixes

File:
1 edited

Legend:

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

    r84 r86  
    3737
    3838#include "ludjvu.xih"
     39#ifdef __WATCOMC__
    3940#include <ddjvuapiw.h>
    40 
     41#else
     42#include <ddjvuapi.h>
     43#endif
    4144
    4245#define SCALE_FACTOR 0.2
     
    7679}
    7780
     81
     82static void djvu_handle_events( ddjvu_context_t *ctx )
     83{
     84    const ddjvu_message_t *msg;
     85
     86    if ( ctx == NULL ) {
     87        return;
     88    }
     89
     90    msg = ddjvu_message_wait( ctx );
     91    while ( ( msg = ddjvu_message_peek( ctx ) ) )
     92    {
     93        switch ( msg->m_any.tag )
     94        {
     95            case DDJVU_ERROR:
     96                // TODO: error message
     97            default:
     98                break;
     99        }
     100        ddjvu_message_pop( ctx );
     101    }
     102}
     103
    78104SOM_Scope boolean  SOMLINK loadFile(LuDjvuDocument *somSelf,
    79105                                     Environment *ev, string filename,
     
    97123
    98124    while ( !ddjvu_document_decoding_done( d->d_document ) ) {
    99         ddjvu_message_wait( d->d_context );
    100         ddjvu_message_pop( d->d_context );
     125        djvu_handle_events( d->d_context );
    101126    }
    102127
     
    133158
    134159    while ( ddjvu_document_get_pageinfo( d->d_document, pagenum, &info ) < DDJVU_JOB_OK ) {
    135         ddjvu_message_wait( d->d_context );
    136         ddjvu_message_pop( d->d_context );
     160        djvu_handle_events( d->d_context );
    137161    }
    138162
     
    167191
    168192    while ( !ddjvu_page_decoding_done( d_page ) ) {
    169         ddjvu_message_wait( d->d_context );
    170         ddjvu_message_pop( d->d_context );
     193        djvu_handle_events( d->d_context );
    171194    }
    172195
     
    189212    LuPixbuf *pb = new LuPixbuf( ev, prect.w, prect.h, bpp );
    190213    long pb_rowsize = pb->getRowSize( ev );
     214    long pb_height = pb->getHeight( ev );
    191215    char *pbbuf = (char *)pb->getDataPtr( ev );
    192216    ddjvu_page_render( d_page, DDJVU_RENDER_COLOR,
     
    196220    char *pixbuf_data = (char *)pixbuf->getDataPtr( ev );
    197221    char *src, *dst;
    198     int i, y, linesize = __min( pb_rowsize, pixbuf_rowsize );
    199     for ( y = (src_height-1), i = 0; i < src_height; y--, i++ )
     222    int i, y;
     223    int rowsize = __min( pb_rowsize, pixbuf_rowsize );
     224    int height = __min( pb_height, pixbuf_height );
     225    for ( y = (height-1), i = 0; i < height; y--, i++ )
    200226    {
    201227        src = pbbuf + (y * pb_rowsize);
    202228        dst = pixbuf_data + (i * pixbuf_rowsize);
    203         memcpy( dst, src, linesize );
     229        memcpy( dst, src, rowsize );
    204230    }
    205231    delete pb;
     
    236262
    237263    while ( ddjvu_thumbnail_status( d->d_document, pagenum, 1 ) < DDJVU_JOB_OK ) {
    238             ddjvu_message_wait( d->d_context );
    239             ddjvu_message_pop( d->d_context );
     264        djvu_handle_events( d->d_context );
    240265    }
    241266
Note: See TracChangeset for help on using the changeset viewer.